diff options
author | cvs2svn <cvs2svn@FreeBSD.org> | 2007-04-04 21:17:34 +0000 |
---|---|---|
committer | cvs2svn <cvs2svn@FreeBSD.org> | 2007-04-04 21:17:34 +0000 |
commit | 0f85a5972c3a70e1a4024620327cbe4c7b87fc7a (patch) | |
tree | 1eed957aa8eb4b4e465b3b81d1e11a7eac76577c | |
parent | af20afd05a3b7dae955cb0dd0f2cc7d7bc19a478 (diff) |
Notes
311 files changed, 0 insertions, 103307 deletions
diff --git a/contrib/tcpdump/.cvsignore b/contrib/tcpdump/.cvsignore deleted file mode 100644 index 791f14cdb7cf8..0000000000000 --- a/contrib/tcpdump/.cvsignore +++ /dev/null @@ -1,12 +0,0 @@ -version.c -Makefile -Makefile-devel.in -config.status -config.log -config.cache -config.h -.devel -stamp-h -stamp-h.in -tcpdump -autom4te.cache diff --git a/contrib/tcpdump/CHANGES b/contrib/tcpdump/CHANGES deleted file mode 100644 index c2363384c9833..0000000000000 --- a/contrib/tcpdump/CHANGES +++ /dev/null @@ -1,790 +0,0 @@ -$Header: /tcpdump/master/tcpdump/CHANGES,v 1.87.2.11 2005/09/20 06:05:34 guy Exp $ - -Mon. September 19, 2005. ken@xelerance.com. Summary for 3.9.4 tcpdump release - Decoder support for more Juniper link-layer types - Fix a potential buffer overflow (although it can't occur in - practice). - Fix the handling of unknown management frame types in the 802.11 - printer. - Add FRF.16 support, fix various Frame Relay bugs. - Add support for RSVP integrity objects, update fast-reroute - object printer to latest spec. - Clean up documentation of vlan filter expression, document mpls - filter expression. - Document new pppoed and pppoes filter expressions. - Update diffserver-TE codepoints as per RFC 4124. - Spelling fixes in ICMPv6. - Don't require any fields other than flags to be present in IS-IS - restart signaling TLVs, and only print the system ID in - those TLVs as system IDs, not as node IDs. - Support for DCCP. - -Tue. July 5, 2005. ken@xelerance.com. Summary for 3.9.3 tcpdump release - - Option to chroot() when dropping privs - Fixes for compiling on nearly every platform, - including improved 64bit support - Many new testcases - Support for sending packets - Many compliation fixes on most platforms - Fixes for recent version of GCC to eliminate warnings - Improved Unicode support - - Decoders & DLT Changes, Updates and New: - AES ESP support - Juniper ATM, FRF.15, FRF.16, PPPoE, - ML-FR, ML-PIC, ML-PPP, PL-PPP, LS-PIC - GGSN,ES,MONITOR,SERVICES - L2VPN - Axent Raptor/Symantec Firewall - TCP-MD5 (RFC 2385) - ESP-in-UDP (RFC 3948) - ATM OAM - LMP, LMP Service Discovery - IP over FC - IP over IEEE 1394 - BACnet MS/TP - SS7 - LDP over TCP - LACP, MARKER as per 802.3ad - PGM (RFC 3208) - LSP-PING - G.7041/Y.1303 Generic Framing Procedure - EIGRP-IP, EIGRP-IPX - ICMP6 - Radio - via radiotap - DHCPv6 - HDLC over PPP - -Tue. March 30, 2004. mcr@sandelman.ottawa.on.ca. Summary for 3.8.3 release - - No changes from 3.8.2. Version bumped only to maintain consistency - with libpcap 0.8.3. - -Mon. March 29, 2004. mcr@sandelman.ottawa.on.ca. Summary for 3.8.2 release - - Fixes for print-isakmp.c CVE: CAN-2004-0183, CAN-2004-0184 - http://www.rapid7.com/advisories/R7-0017.html - IP-over-IEEE1394 printing. - some MINGW32 changes. - updates for autoconf 2.5 - fixes for print-aodv.c - check for too short packets - formatting changes to print-ascii for hex output. - check for too short packets: print-bgp.c, print-bootp.c, print-cdp.c, - print-chdlc.c, print-domain.c, print-icmp.c, print-icmp6.c, - print-ip.c, print-lwres.c, print-ospf.c, print-pim.c, - print-ppp.c,print-pppoe.c, print-rsvp.c, print-wb.c - print-ether.c - better handling of unknown types. - print-isoclns.c - additional decoding of types. - print-llc.c - strings for LLC names added. - print-pfloc.c - various enhancements - print-radius.c - better decoding to strings. - -Wed. November 12, 2003. mcr@sandelman.ottawa.on.ca. Summary for 3.8 release - - changed syntax of -E argument so that multiple SAs can be decrypted - fixes for Digital Unix headers and Documentation - __attribute__ fixes - CDP changes from Terry Kennedy <terry@tmk.com>. - IPv6 mobility updates from Kazushi Sugyo <sugyo@pb.jp.nec.com> - Fixes for ASN.1 decoder for 2.100.3 forms. - Added a count of packets received and processed to clarify numbers. - Incorporated WinDUMP patches for Win32 builds. - PPPoE payload length headers. - Fixes for HP C compiler builds. - Use new pcap_breakloop() and pcap_findalldevs() if we can. - BGP output split into multiple lines. - Fixes to 802.11 decoding. - Fixes to PIM decoder. - SuperH is a CPU that can't handle unaligned access. Many fixes for - unaligned access work. - Fixes to Frame-Relay decoder for Q.933/922 frames. - Clarified when Solaris can do captures as non-root. - Added tests/ subdir for examples/regression tests. - New -U flag. -flush stdout after every packet - New -A flag -print ascii only - support for decoding IS-IS inside Cisco HDLC Frames - more verbosity for tftp decoder - mDNS decoder - new BFD decoder - cross compilation patches - RFC 3561 AODV support. - UDP/TCP pseudo-checksum properly for source-route options. - sanitized all files to modified BSD license - Add support for RFC 2625 IP-over-Fibre Channel. - fixes for DECnet support. - Support RFC 2684 bridging of Ethernet, 802.5 Token Ring, and FDDI. - RFC 2684 encapsulation of BPDUs. - -Tuesday, February 25, 2003. fenner@research.att.com. 3.7.2 release - - Fixed infinite loop when parsing malformed isakmp packets. - (reported by iDefense; already fixed in CVS) - Fixed infinite loop when parsing malformed BGP packets. - Fixed buffer overflow with certain malformed NFS packets. - Pretty-print unprintable network names in 802.11 printer. - Handle truncated nbp (appletalk) packets. - Updated DHCPv6 printer to match draft-ietf-dhc-dhcpv6-22.txt - Print IP protocol name even if we don't have a printer for it. - Print IP protocol name or number for fragments. - Print the whole MPLS label stack, not just the top label. - Print request header and file handle for NFS v3 FSINFO and PATHCONF - requests. - Fix NFS packet truncation checks. - Handle "old" DR-Priority and Bidir-Capable PIM HELLO options. - Handle unknown RADIUS attributes properly. - Fix an ASN.1 parsing error that would cause e.g. the OID - 2.100.3 to be misrepresented as 4.20.3 . - -Monday, January 21, 2002. mcr@sandelman.ottawa.on.ca. Summary for 3.7 release -see http://www.tcpdump.org/cvs-log/2002-01-21.10:16:48.html for commit log. - keyword "ipx" added. - Better OSI/802.2 support on Linux. - IEEE 802.11 support, from clenahan@fortresstech.com, achirica@ttd.net. - LLC SAP support for FDDI/token ring/RFC-1483 style ATM - BXXP protocol was replaced by the BEEP protocol; - improvements to SNAP demux. - Changes to "any" interface documentation. - Documentation on pcap_stats() counters. - Fix a memory leak found by Miklos Szeredi - pcap_ether_aton(). - Added MPLS encapsulation decoding per RFC3032. - DNS dissector handles TKEY, TSIG and IXFR. - adaptive SLIP interface patch from Igor Khristophorov <igor@atdot.org> - SMB printing has much improved bounds checks - OUI 0x0000f8 decoded as encapsulated ethernet for Cisco-custom bridging - Zephyr support, from Nickolai Zeldovich <kolya@MIT.EDU>. - Solaris - devices with digits in them. Stefan Hudson <hudson@mbay.net> - IPX socket 0x85be is for Cisco EIGRP over IPX. - Improvements to fragmented ESP handling. - SCTP support from Armando L. Caro Jr. <acaro@mail.eecis.udel.edu> - Linux ARPHDR_ATM support fixed. - Added a "netbeui" keyword, which selects NetBEUI packets. - IPv6 ND improvements, MobileIP dissector, 2292bis-02 for RA option. - Handle ARPHDR_HDLC from Marcus Felipe Pereira <marcus@task.com.br>. - Handle IPX socket 0x553 -> NetBIOS-over-IPX socket, "nwlink-dgm" - Better Linux libc5 compat. - BIND9 lwres dissector added. - MIPS and SPARC get strict alignment macros (affects print-bgp.c) - Apple LocalTalk LINKTYPE_ reserved. - New time stamp formats documented. - DHCP6 updated to draft-22.txt spec. - ICMP types/codes now accept symbolic names. - Add SIGINFO handler from LBL - encrypted CIPE tunnels in IRIX, from Franz Schaefer <schaefer@mond.at>. - now we are -Wstrict-prototype clean. - NetBSD DLT_PPP_ETHER; adapted from Martin Husemann <martin@netbsd.org>. - PPPoE dissector cleaned up. - Support for LocalTalk hardware, from Uns Lider <unslider@miranda.org>. - In dissector, now the caller prints the IP addresses rather than proto. - cjclark@alum.mit.edu: print the IP proto for non-initial fragments. - LLC frames with a DSAP and LSAP of 0xe0 are IPX frames. - Linux cooked frames with a type value of LINUX_SLL_P_802_3 are IPX. - captures on the "any" device won't be done in promiscuous mode - Token Ring support on DLPI - Onno van der Linden <onno@simplex.nl> - ARCNet support, from NetBSD. - HSRP dissector, from Julian Cowley <julian@lava.net>. - Handle (GRE-encapsulated) PPTP - added -C option to rotate save file every optarg * 1,000,000 bytes. - support for "vrrp" name - NetBSD, by Klaus Klein <kleink@netbsd.org>. - PPTP support, from Motonori Shindo <mshindo@mshindo.net>. - IS-IS over PPP support, from Hannes Gredler <hannes@juniper.net>. - CNFP support for IPv6,format. Harry Raaymakers <harryr@connect.com.au>. - ESP printing updated to RFC2406. - HP-UX can now handle large number of PPAs. - MSDP printer added. - L2TP dissector improvements from Motonori Shindo. - -Tuesday January 9, 2001. mcr@sandelman.ottawa.on.ca. Summary for 3.6 release - Cleaned up documentation. - Promisc mode fixes for Linux - IPsec changes/cleanups. - Alignment fixes for picky architectures - - Removed dependency on native headers for packet dissectors. - Removed Linux specific headers that were shipped - - libpcap changes provide for exchanging capture files between - systems. Save files now have well known PACKET_ values instead of - depending upon system dependant mappings of DLT_* types. - - Support for computing/checking IP and UDP/TCP checksums. - - Updated autoconf stock files. - - IPv6 improvements: dhcp (draft-15), mobile-ip6, ppp, ospf6, - - Added dissector support for: ISOCLNS, Token Ring, IGMPv3, bxxp, - timed, vrrp, radius, chdlc, cnfp, cdp, IEEE802.1d, raw-AppleTalk - - Added filtering support for: VLANs, ESIS, ISIS - - Improvements to: print-telnet, IPTalk, bootp/dhcp, ECN, PPP, - L2TP, PPPoE - - HP-UX 11.0 -- find the right dlpi device. - Solaris 8 - IPv6 works - Linux - Added support for an "any" device to capture on all interfaces - - Security fixes: buffer overrun audit done. Strcpy replaced with - strlcpy, sprintf replaced with snprintf. - Look for lex problems, and warn about them. - - -v3.5 Fri Jan 28 18:00:00 PST 2000 - -Bill Fenner <fenner@research.att.com> -- switch to config.h for autoconf -- unify RCSID strings -- Updated PIMv1, PIMv2, DVMRP, IGMP parsers, add Cisco Auto-RP parser -- Really fix the RIP printer -- Fix MAC address -> name translation. -- some -Wall -Wformat fixes -- update makemib to parse much of SMIv2 -- Print TCP sequence # with -vv even if you normally wouldn't -- Print as much of IP/TCP/UDP headers as possible even if truncated. - -itojun@iijlab.net -- -X will make a ascii dump. from netbsd. -- telnet command sequence decoder (ff xx xx). from netbsd. -- print-bgp.c: improve options printing. ugly code exists for - unaligned option parsing (need some fix). -- const poisoning in SMB decoder. -- -Wall -Werror clean checks. -- bring in KAME IPv6/IPsec decoding code. - -Assar Westerlund <assar@sics.se> -- SNMPv2 and SNMPv3 printer -- If compiled with libsmi, tcpdump can load MIBs on the fly to decode - SNMP packets. -- Incorporate NFS parsing code from NetBSD. Adds support for nfsv3. -- portability fixes -- permit building in different directories. - -Ken Hornstein <kenh@cmf.nrl.navy.mil> -- bring in code at - /afs/transarc.com/public/afs-contrib/tools/tcpdump for parsing - AFS3 packets - -Andrew Tridgell <tridge@linuxcare.com> -- SMB printing code - -Love <lha@stacken.kth.se> -- print-rx.c: add code for printing MakeDir and StoreStatus. Also - change date format to the right one. - -Michael C. Richardson <mcr@sandelman.ottawa.on.ca> -- Created tcpdump.org repository - -v3.4 Sat Jul 25 12:40:55 PDT 1998 - -- Hardwire Linux slip support since it's too hard to detect. - -- Redo configuration of "network" libraries (-lsocket and -lnsl) to - deal with IRIX. Thanks to John Hawkinson (jhawk@mit.edu) - -- Added -a which tries to translate network and broadcast addresses to - names. Suggested by Rob van Nieuwkerk (robn@verdi.et.tudelft.nl) - -- Added a configure option to disable gcc. - -- Added a "raw" packet printer. - -- Not having an interface address is no longer fatal. Requested by John - Hawkinson. - -- Rework signal setup to accommodate Linux. - -- OSPF truncation check fix. Also display the type of OSPF packets - using MD5 authentication. Thanks to Brian Wellington - (bwelling@tis.com) - -- Fix truncation check bugs in the Kerberos printer. Reported by Ezra - Peisach (epeisach@mit.edu) - -- Don't catch SIGHUP when invoked with nohup(1). Thanks to Dave Plonka - (plonka@mfa.com) - -- Specify full install target as a way of detecting if install - directory does not exist. Thanks to Dave Plonka. - -- Bit-swap FDDI addresses for BSD/OS too. Thanks to Paul Vixie - (paul@vix.com) - -- Fix off-by-one bug when testing size of ethernet packets. Thanks to - Marty Leisner (leisner@sdsp.mc.xerox.com) - -- Add a local autoconf macro to check for routines in libraries; the - autoconf version is broken (it only puts the library name in the - cache variable name). Thanks to John Hawkinson. - -- Add a local autoconf macro to check for types; the autoconf version - is broken (it uses grep instead of actually compiling a code fragment). - -- Modified to support the new BSD/OS 2.1 PPP and SLIP link layer header - formats. - -- Extend OSF ip header workaround to versions 1 and 2. - -- Fix some signed problems in the nfs printer. As reported by David - Sacerdote (davids@silence.secnet.com) - -- Detect group wheel and use it as the default since BSD/OS' install - can't hack numeric groups. Reported by David Sacerdote. - -- AIX needs special loader options. Thanks to Jonathan I. Kamens - (jik@cam.ov.com) - -- Fixed the nfs printer to print port numbers in decimal. Thanks to - Kent Vander Velden (graphix@iastate.edu) - -- Find installed libpcap in /usr/local/lib when not using gcc. - -- Disallow network masks with non-network bits set. - -- Attempt to detect "egcs" versions of gcc. - -- Add missing closing double quotes when displaying bootp strings. - Reported by Viet-Trung Luu (vluu@picard.math.uwaterloo.ca) - -v3.3 Sat Nov 30 20:56:27 PST 1996 - -- Added Linux support. - -- GRE encapsulated packet printer thanks to John Hawkinson - (jhawk@mit.edu) - -- Rewrite gmt2local() to avoid problematic os dependencies. - -- Suppress nfs truncation message on errors. - -- Add missing m4 quoting in AC_LBL_UNALIGNED_ACCESS autoconf macro. - Reported by Joachim Ott (ott@ardala.han.de) - -- Enable "ip_hl vs. ip_vhl" workaround for OSF4 too. - -- Print arp hardware type in host order. Thanks to Onno van der Linden - (onno@simplex.nl) - -- Avoid solaris compiler warnings. Thanks to Bruce Barnett - (barnett@grymoire.crd.ge.com) - -- Fix rip printer to not print one more route than is actually in the - packet. Thanks to Jean-Luc Richier (Jean-Luc.Richier@imag.fr) and - Bill Fenner (fenner@parc.xerox.com) - -- Use autoconf endian detection since BYTE_ORDER isn't defined on all systems. - -- Fix dvmrp printer truncation checks and add a dvmrp probe printer. - Thanks to Danny J. Mitzel (mitzel@ipsilon.com) - -- Rewrite ospf printer to improve truncation checks. - -- Don't parse tcp options past the EOL. As noted by David Sacerdote - (davids@secnet.com). Also, check tcp options to make sure they ar - actually in the tcp header (in addition to the normal truncation - checks). Fix the SACK code to print the N blocks (instead of the - first block N times). - -- Don't say really small UDP packets are truncated just because they - aren't big enough to be a RPC. As noted by David Sacerdote. - -v3.2.1 Sun Jul 14 03:02:26 PDT 1996 - -- Added rfc1716 icmp codes as suggested by Martin Fredriksson - (martin@msp.se) - -- Print mtu for icmp unreach need frag packets. Thanks to John - Hawkinson (jhawk@mit.edu) - -- Decode icmp router discovery messages. Thanks to Jeffrey Honig - (jch@bsdi.com) - -- Added a printer entry for DLT_IEEE802 as suggested by Tak Kushida - (kushida@trl.ibm.co.jp) - -- Check igmp checksum if possible. Thanks to John Hawkinson. - -- Made changes for SINIX. Thanks to Andrej Borsenkow - (borsenkow.msk@sni.de) - -- Use autoconf's idea of the top level directory in install targets. - Thanks to John Hawkinson. - -- Avoid infinite loop in tcp options printing code. Thanks to Jeffrey - Mogul (mogul@pa.dec.com) - -- Avoid using -lsocket in IRIX 5.2 and earlier since it breaks snoop. - Thanks to John Hawkinson. - -- Added some more packet truncation checks. - -- On systems that have it, use sigset() instead of signal() since - signal() has different semantics on these systems. - -- Fixed some more alignment problems on the alpha. - -- Add code to massage unprintable characters in the domain and ipx - printers. Thanks to John Hawkinson. - -- Added explicit netmask support. Thanks to Steve Nuchia - (steve@research.oknet.com) - -- Add "sca" keyword (for DEC cluster services) as suggested by Terry - Kennedy (terry@spcvxa.spc.edu) - -- Add "atalk" keyword as suggested by John Hawkinson. - -- Added an igrp printer. Thanks to Francis Dupont - (francis.dupont@inria.fr) - -- Print IPX net numbers in hex a la Novell Netware. Thanks to Terry - Kennedy (terry@spcvxa.spc.edu) - -- Fixed snmp extended tag field parsing bug. Thanks to Pascal Hennequin - (pascal.hennequin@hugo.int-evry.fr) - -- Added some ETHERTYPEs missing on some systems. - -- Added truncated packet macros and various checks. - -- Fixed endian problems with the DECnet printer. - -- Use $CC when checking gcc version. Thanks to Carl Lindberg - (carl_lindberg@blacksmith.com) - -- Fixes for AIX (although this system is not yet supported). Thanks to - John Hawkinson. - -- Fix bugs in the autoconf misaligned accesses code fragment. - -- Include sys/param.h to get BYTE_ORDER in a few places. Thanks to - Pavlin Ivanov Radoslavov (pavlin@cs.titech.ac.jp) - -v3.2 Sun Jun 23 02:28:10 PDT 1996 - -- Print new icmp unreachable codes as suggested by Martin Fredriksson - (martin@msp.se). Also print code value when unknown for icmp redirect - and time exceeded. - -- Fix an alignment endian bug in getname(). Thanks to John Hawkinson. - -- Define "new" domain record types if not found in arpa/nameserv.h. - Resulted from a suggestion from John Hawkinson (jhawk@mit.edu). Also - fixed an endian bug when printing mx record and added some new record - types. - -- Added RIP V2 support. Thanks to Jeffrey Honig (jch@bsdi.com) - -- Added T/TCP options printing. As suggested by Richard Stevens - (rstevens@noao.edu) - -- Use autoconf to detect architectures that can't handle misaligned - accesses. - -v3.1 Thu Jun 13 20:59:32 PDT 1996 - -- Changed u_int32/int32 to u_int32_t/int32_t to be consistent with bsd - and bind (as suggested by Charles Hannum). - -- Port to GNU autoconf. - -- Add support for printing DVMRP and PIM traffic thanks to - Havard Eidnes (Havard.Eidnes@runit.sintef.no). - -- Fix AppleTalk, IPX and DECnet byte order problems due to wrong endian - define being referenced. Reported by Terry Kennedy. - -- Minor fixes to the man page thanks to Mark Andrews. - -- Endian fixes to RTP and vat packet dumpers, thanks to Bruce Mah - (bmah@cs.berkeley.edu). - -- Added support for new dns types, thanks to Rainer Orth. - -- Fixed tftp_print() to print the block number for ACKs. - -- Document -dd and -ddd. Resulted from a bug report from Charlie Slater - (cslater@imatek.com). - -- Check return status from malloc/calloc/etc. - -- Check return status from pcap_loop() so we can print an error and - exit with a bad status if there were problems. - -- Bail if ip option length is <= 0. Resulted from a bug report from - Darren Reed (darrenr@vitruvius.arbld.unimelb.edu.au). - -- Print out a little more information for sun rpc packets. - -- Add suport for Kerberos 4 thanks to John Hawkinson (jhawk@mit.edu). - -- Fixed the Fix EXTRACT_SHORT() and EXTRACT_LONG() macros (which were - wrong on little endian machines). - -- Fixed alignment bug in ipx_decode(). Thanks to Matt Crawford - (crawdad@fnal.gov). - -- Fix ntp_print() to not print garbage when the stratum is - "unspecified." Thanks to Deus Ex Machina (root@belle.bork.com). - -- Rewrote tcp options printer code to check for truncation. Added - selective acknowledgment case. - -- Fixed an endian bug in the ospf printer. Thanks to Jeffrey C Honig - (jch@bsdi.com) - -- Fix rip printer to handle 4.4 BSD sockaddr struct which only uses one - octet for the sa_family member. Thanks to Yoshitaka Tokugawa - (toku@dit.co.jp) - -- Don't checksum ip header if we don't have all of it. Thanks to John - Hawkinson (jhawk@mit.edu). - -- Print out hostnames if possible in egp printer. Thanks to Jeffrey - Honig (jhc@bsdi.com) - - -v3.1a1 Wed May 3 19:21:11 PDT 1995 - -- Include time.h when SVR4 is defined to avoid problems under Solaris - 2.3. - -- Fix etheraddr_string() in the ETHER_SERVICE to return the saved - strings, not the local buffer. Thanks to Stefan Petri - (petri@ibr.cs.tu-bs.de). - -- Detect when pcap raises the snaplen (e.g. with snit). Print a warning - that the selected value was not used. Thanks to Pascal Hennequin - (Pascal.Hennequin@hugo.int-evry.fr). - -- Add a truncated packet test to print-nfs.c. Thanks to Pascal Hennequin. - -- BYTEORDER -> BYTE_ORDER Thanks to Terry Kennedy (terry@spcvxa.spc.edu). - -v3.0.3 Sun Oct 1 18:35:00 GMT 1995 - -- Although there never was a 3.0.3 release, the linux boys cleverly - "released" one in late 1995. - -v3.0.2 Thu Apr 20 21:28:16 PDT 1995 - -- Change configuration to not use gcc v2 flags with gcc v1. - -- Redo gmt2local() so that it works under BSDI (which seems to return - an empty timezone struct from gettimeofday()). Based on report from - Terry Kennedy (terry@spcvxa.spc.edu). - -- Change configure to recognize IP[0-9]* as "mips" SGI hardware. Based - on report from Mark Andrews (mandrews@alias.com). - -- Don't pass cc flags to gcc. Resulted from a bug report from Rainer - Orth (ro@techfak.uni-bielefeld.de). - -- Fixed printout of connection id for uncompressed tcp slip packets. - Resulted from a bug report from Richard Stevens (rstevens@noao.edu). - -- Hack around deficiency in Ultrix's make. - -- Add ETHERTYPE_TRAIL define which is missing from irix5. - -v3.0.1 Wed Aug 31 22:42:26 PDT 1994 - -- Fix problems with gcc2 vs. malloc() and read() prototypes under SunOS 4. - -v3.0 Mon Jun 20 19:23:27 PDT 1994 - -- Added support for printing tcp option timestamps thanks to - Mark Andrews (mandrews@alias.com). - -- Reorganize protocol dumpers to take const pointers to packets so they - never change the contents (i.e., they used to do endian conversions - in place). Previously, whenever more than one pass was taken over - the packet, the packet contents would be dumped incorrectly (i.e., - the output form -x would be wrong on little endian machines because - the protocol dumpers would modify the data). Thanks to Charles Hannum - (mycroft@gnu.ai.mit.edu) for reporting this problem. - -- Added support for decnet protocol dumping thanks to Jeff Mogul - (mogul@pa.dec.com). - -- Fix bug that caused length of packet to be incorrectly printed - (off by ether header size) for unknown ethernet types thanks - to Greg Miller (gmiller@kayak.mitre.org). - -- Added support for IPX protocol dumping thanks to Brad Parker - (brad@fcr.com). - -- Added check to verify IP header checksum under -v thanks to - Brad Parker (brad@fcr.com). - -- Move packet capture code to new libpcap library (which is - packaged separately). - -- Prototype everything and assume an ansi compiler. - -- print-arp.c: Print hardware ethernet addresses if they're not - what we expect. - -- print-bootp.c: Decode the cmu vendor field. Add RFC1497 tags. - Many helpful suggestions from Gordon Ross (gwr@jericho.mc.com). - -- print-fddi.c: Improvements. Thanks to Jeffrey Mogul - (mogul@pa.dec.com). - -- print-icmp.c: Byte swap netmask before printing. Thanks to - Richard Stevens (rstevens@noao.edu). Print icmp type when unknown. - -- print-ip.c: Print the inner ip datagram of ip-in-ip encapsulated packets. - By default, only the inner packet is dumped, appended with the token - "(encap)". Under -v, both the inner and output packets are dumped - (on the same line). Note that the filter applies to the original packet, - not the encapsulated packet. So if you run tcpdump on a net with an - IP Multicast tunnel, you cannot filter out the datagrams using the - conventional syntax. (You can filter away all the ip-in-ip traffic - with "not ip proto 4".) - -- print-nfs.c: Keep pending rpc's in circular table. Add generic - nfs header and remove os dependences. Thanks to Jeffrey Mogul. - -- print-ospf.c: Improvements. Thanks to Jeffrey Mogul. - -- tcpdump.c: Add -T flag allows interpretation of "vat", "wb", "rpc" - (sunrpc) and rtp packets. Added "inbound" and "outbound" keywords - Add && and || operators - -v2.2.1 Tue Jun 6 17:57:22 PDT 1992 - -- Fix bug with -c flag. - -v2.2 Fri May 22 17:19:41 PDT 1992 - -- savefile.c: Remove hack that shouldn't have been exported. Add - truncate checks. - -- Added the 'icmp' keyword. For example, 'icmp[0] != 8 and icmp[0] != 0' - matches non-echo/reply ICMP packets. - -- Many improvements to filter code optimizer. - -- Added 'multicast' keyword and extended the 'broadcast' keyword can now be - so that protocol qualifications are allowed. For example, "ip broadcast" - and "ether multicast" are valid filters. - -- Added support for monitoring the loopback interface (i.e. 'tcpdump -i lo'). - Jeffrey Honig (jch@MITCHELL.CIT.CORNELL.EDU) contributed the kernel - patches to netinet/if_loop.c. - -- Added support for the Ungermann-Bass Ethernet on IBM/PC-RTs running AOS. - Contact Jeffrey Honig (jch@MITCHELL.CIT.CORNELL.EDU) for the diffs. - -- Added EGP and OSPF printers, thanks to Jeffrey Honig. - -v2.1 Tue Jan 28 11:00:14 PST 1992 - -- Internal release (never publically exported). - -v2.0.1 Sun Jan 26 21:10:10 PDT - -- Various byte ordering fixes. - -- Add truncation checks. - -- inet.c: Support BSD style SIOCGIFCONF. - -- nametoaddr.c: Handle multi addresses for single host. - -- optimize.c: Rewritten. - -- pcap-bpf.c: don't choke when we get ptraced. only set promiscuous - for broadcast nets. - -- print-atal.c: Fix an alignment bug (thanks to - stanonik@nprdc.navy.mil) Add missing printf() argument. - -- print-bootp.c: First attempt at decoding the vendor buffer. - -- print-domain.c: Fix truncation checks. - -- print-icmp.c: Calculate length of packets from the ip header. - -- print-ip.c: Print frag id in decimal (so it's easier to match up - with non-frags). Add support for ospf, egp and igmp. - -- print-nfs.c: Lots of changes. - -- print-ntp.c: Make some verbose output depend on -v. - -- print-snmp.c: New version from John LoVerso. - -- print-tcp.c: Print rfc1072 tcp options. - -- tcpdump.c: Print "0x" prefix for %x formats. Always print 6 digits - (microseconds) worth of precision. Fix uid bugs. - -- A packet dumper has been added (thanks to Jeff Mogul of DECWRL). - With this option, you can create an architecture independent binary - trace file in real time, without the overhead of the packet printer. - At a later time, the packets can be filtered (again) and printed. - -- BSD is supported. You must have BPF in your kernel. - Since the filtering is now done in the kernel, fewer packets are - dropped. In fact, with BPF and the packet dumper option, a measly - Sun 3/50 can keep up with a busy network. - -- Compressed SLIP packets can now be dumped, provided you use our - SLIP software and BPF. These packets are dumped as any other IP - packet; the compressed headers are dumped with the '-e' option. - -- Machines with little-endian byte ordering are supported (thanks to - Jeff Mogul). - -- Ultrix 4.0 is supported (also thanks to Jeff Mogul). - -- IBM RT and Stanford Enetfilter support has been added by - Rayan Zachariassen <rayan@canet.ca>. Tcpdump has been tested under - both the vanilla Enetfilter interface, and the extended interface - (#ifdef'd by IBMRTPC) present in the MERIT version of the Enetfilter. - -- TFTP packets are now printed (requests only). - -- BOOTP packets are now printed. - -- SNMP packets are now printed. (thanks to John LoVerso of Xylogics). - -- Sparc architectures, including the Sparcstation-1, are now - supported thanks to Steve McCanne and Craig Leres. - -- SunOS 4 is now supported thanks to Micky Liu of Columbia - University (micky@cunixc.cc.columbia.edu). - -- IP options are now printed. - -- RIP packets are now printed. - -- There's a -v flag that prints out more information than the - default (e.g., it will enable printing of IP ttl, tos and id) - and -q flag that prints out less (e.g., it will disable - interpretation of AppleTalk-in-UDP). - -- The grammar has undergone substantial changes (if you have an - earlier version of tcpdump, you should re-read the manual - entry). - - The most useful change is the addition of an expression - syntax that lets you filter on arbitrary fields or values in the - packet. E.g., "ip[0] > 0x45" would print only packets with IP - options, "tcp[13] & 3 != 0" would print only TCP SYN and FIN - packets. - - The most painful change is that concatenation no longer means - "and" -- e.g., you have to say "host foo and port bar" instead - of "host foo port bar". The up side to this down is that - repeated qualifiers can be omitted, making most filter - expressions shorter. E.g., you can now say "ip host foo and - (bar or baz)" to look at ip traffic between hosts foo and bar or - between hosts foo and baz. [The old way of saying this was "ip - host foo and (ip host bar or ip host baz)".] - -v2.0 Sun Jan 13 12:20:40 PST 1991 - -- Initial public release. diff --git a/contrib/tcpdump/CREDITS b/contrib/tcpdump/CREDITS deleted file mode 100644 index 4923d496d235d..0000000000000 --- a/contrib/tcpdump/CREDITS +++ /dev/null @@ -1,139 +0,0 @@ -This file lists people who have contributed to tcpdump: - -The current maintainers: - Bill Fenner <fenner@research.att.com> - David Young <dyoung@pobox.com> - Fulvio Risso <risso@polito.it> - Guy Harris <guy@alum.mit.edu> - Hannes Gredler <hannes@juniper.net> - Jun-ichiro itojun Hagino <itojun@iijlab.net> - Michael Richardson <mcr@sandelman.ottawa.on.ca> - -Additional people who have contributed patches: - - Alfredo Andres <aandres@s21sec.com> - Albert Chin <china@thewrittenword.com> - Andrew Brown <atatat@atatdot.net> - Andrew Church <andrew@users.sourceforge.net> - Andrew Hintz <adhintz@users.sourceforge.net> - Andrew Tridgell <tridge@linuxcare.com> - Andy Heffernan <ahh@juniper.net> - Arkadiusz Miskiewicz <misiek@pld.org.pl> - Armando L. Caro Jr. <acaro@mail.eecis.udel.edu> - Arnaldo Carvalho de Melo <acme@ghostprotocols.net> - Atsushi Onoe <onoe@netbsd.org> - Ben Smithurst <ben@scientia.demon.co.uk> - Brent L. Bates <blbates@vigyan.com> - Brian Ginsbach <ginsbach@cray.com> - Bruce M. Simpson <bms@spc.org> - Carles Kishimoto Bisbe <ckishimo@ac.upc.es> - Charlie Lenahan <clenahan@fortresstech.com> - Charles M. Hannum <mycroft@netbsd.org> - Chris Cogdon <chris@cogdon.org> - Chris G. Demetriou <cgd@netbsd.org> - Chris Jepeway <jepeway@blasted-heath.com> - Craig Rodrigues <rodrigc@mediaone.net> - Crist J. Clark <cjclark@alum.mit.edu> - Daniel Hagerty <hag@ai.mit.edu> - Darren Reed <darrenr@reed.wattle.id.au> - David Binderman <d.binderman@virgin.net> - David Smith <dsmith@redhat.com> - David Young <dyoung@ojctech.com> - Eddie Kohler <xexd@sourceforge.net> - Francis Dupont <Francis.Dupont@enst-bretagne.fr> - Francisco Matias Cuenca-Acuna <mcuenca@george.rutgers.edu> - Frank Volf <volf@oasis.IAEhv.nl> - Fulvio Risso <risso@polito.it> - George Bakos <gbakos@ists.dartmouth.edu> - Gerald Combs <gerald@ethereal.com> - Gert Doering <gert@greenie.muc.de> - Greg Stark <gsstark@mit.edu> - Gilbert Ramirez Jr. <gram@xiexie.org> - Gisle Vanem <giva@bgnett.no> - Hannes Viertel <hviertel@juniper.net> - Hank Leininger <tcpdump-workers@progressive-comp.com> - Harry Raaymakers <harryr@connect.com.au> - Heinz-Ado Arnolds <Ado.Arnolds@dhm-systems.de> - Hendrik Scholz <hendrik@scholz.net> - Ian McDonald <imcdnzl@gmail.com> - Jakob Schlyter <jakob@openbsd.org> - Jan Oravec <wsx@wsx6.net> - Jason R. Thorpe <thorpej@netbsd.org> - Jefferson Ogata <jogata@nodc.noaa.gov> - Jeffrey Hutzelman <jhutz@cmu.edu> - Jesper Peterson <jesper@endace.com> - Jim Hutchins <jim@ca.sandia.gov> - Jonathan Heusser <jonny@drugphish.ch> - Tatuya Jinmei <jinmei@kame.net> - Jørgen Thomsen <jth@jth.net> - Julian Cowley <julian@lava.net> - Kaarthik Sivakumar <kaarthik@torrentnet.com> - Kazushi Sugyo <sugyo@pb.jp.nec.com> - Kelly Carmichael <kcarmich@ipapp.com> - Ken Hornstein <kenh@cmf.nrl.navy.mil> - Kevin Steves <stevesk@pobox.com> - Klaus Klein <kleink@reziprozitaet.de> - Kris Kennaway <kris@freebsd.org> - Krzysztof Halasa <khc@pm.waw.pl> - Larry Lile <lile@stdio.com> - Lennert Buytenhek <buytenh@gnu.org> - Loris Degioanni <loris@netgroup-serv.polito.it> - Love Hörnquist-Åstrand <lha@stacken.kth.se> - Maciej W. Rozycki <macro@ds2.pg.gda.pl> - Manu Pathak <mapathak@cisco.com> - Marc A. Lehmann <pcg@goof.com> - Mark Ellzey Thomas <mark@ackers.net> - Marko Kiiskila <carnil@cs.tut.fi> - Marshall Rose <mrose@dbc.mtview.ca.us> - Martin Husemann <martin@netbsd.org> - Michael Madore <mmadore@turbolinux.com> - Michael Shalayeff <mickey@openbsd.org> - Michael Shields <shields@msrl.com> - Michael T. Stolarchuk <mts@off.to> - Michele "mydecay" Marchetto <smarchetto1@tin.it> - Monroe Williams <monroe@pobox.com> - Motonori Shindo <mshindo@mshindo.net> - Nathan J. Williams <nathanw@MIT.EDU> - Nathaniel Couper-Noles <Nathaniel@isi1.tccisi.com> - Neil T. Spring <bluehal@users.sourceforge.net> - Niels Provos <provos@openbsd.org> - Nickolai Zeldovich <kolya@MIT.EDU> - Nicolas Ferrero <toorop@babylo.net> - Noritoshi Demizu <demizu@users.sourceforge.net> - Olaf Kirch <okir@caldera.de> - Onno van der Linden <onno@simplex.nl> - Pascal Hennequin <pascal.hennequin@int-evry.fr> - Pasvorn Boonmark <boonmark@juniper.net> - Paul Mundt <lethal@linux-sh.org> - Paul S. Traina <pst@freebsd.org> - Pavlin Radoslavov <pavlin@icir.org> - Pekka Savola <pekkas@netcore.fi> - Peter Fales <peter@fales-lorenz.net> - Peter Jeremy <peter.jeremy@alcatel.com.au> - Phil Wood <cpw@lanl.gov> - Rafal Maszkowski <rzm@icm.edu.pl> - Raphael Raimbault <raphael.raimbault@netasq.com> - Rick Jones <rick.jones2@hp.com> - Rick Watson <watsonrick@users.sourceforge.net> - Rob Braun <bbraun@synack.net> - Roderick Schertler <roderick@argon.org> - Sami Farin <safari@iki.fi> - Scott Rose <syberpunk@users.sourceforge.net> - Sebastian Krahmer <krahmer@cs.uni-potsdam.de> - Sebastien Vincent <svincent@idems.fr> - Seth Webster <swebster@sst.ll.mit.edu> - Shinsuke Suzuki <suz@kame.net> - Steinar Haug <sthaug@nethelp.no> - Takashi Yamamoto <yamt@mwd.biglobe.ne.jp> - Terry Kennedy <terry@tmk.com> - Timo Koskiahde - Tony Li <tli@procket.com> - Uns Lider <unslider@miranda.org> - Wilbert de Graaf <wilbertdg@hetnet.nl> - Yen Yen Lim - Yoshifumi Nishida - -The original LBL crew: - Steve McCanne - Craig Leres - Van Jacobson diff --git a/contrib/tcpdump/FILES b/contrib/tcpdump/FILES deleted file mode 100644 index d6c110b21ef21..0000000000000 --- a/contrib/tcpdump/FILES +++ /dev/null @@ -1,248 +0,0 @@ -CHANGES -CREDITS -FILES -INSTALL -LICENSE -Makefile.in -README -Readme.Win32 -VERSION -acconfig.h -aclocal.m4 -addrtoname.c -addrtoname.h -ah.h -aodv.h -appletalk.h -arcnet.h -atime.awk -atm.h -atmuni31.h -bootp.h -bpf_dump.c -bgp.h -chdlc.h -config.guess -config.h.in -config.sub -configure -configure.in -cpack.c -cpack.h -dccp.h -decnet.h -decode_prefix.h -enc.h -esp.h -ether.h -ethertype.h -extract.h -fddi.h -gmpls.c -gmpls.h -gmt2local.c -gmt2local.h -icmp6.h -ieee802_11.h -ieee802_11_radio.h -igrp.h -install-sh -interface.h -ip.h -ip6.h -ipfc.h -ipproto.c -ipproto.h -ipsec_doi.h -ipx.h -isakmp.h -l2tp.h -l2vpn.c -l2vpn.h -lane.h -lbl/os-osf4.h -lbl/os-solaris2.h -lbl/os-sunos4.h -lbl/os-ultrix4.h -llc.h -machdep.c -machdep.h -makemib -mib.h -missing/addrinfo.h -missing/addrsize.h -missing/bittypes.h -missing/dlnames.c -missing/datalinks.c -missing/getaddrinfo.c -missing/getnameinfo.c -missing/inet_aton.c -missing/inet_ntop.c -missing/inet_pton.c -missing/resolv6.h -missing/resolv_ext.h -missing/snprintf.c -missing/sockstorage.h -missing/strdup.c -missing/strlcat.c -missing/strlcpy.c -missing/strsep.c -mkdep -mpls.h -nameser.h -netbios.h -netdissect.h -nfs.h -nfsfh.h -nlpid.c -nlpid.h -ntp.h -oakley.h -ospf.h -ospf6.h -oui.c -oui.h -packetdat.awk -parsenfsfh.c -pcap_dump_ftell.c -pcap-missing.h -pf.h -pmap_prot.h -ppp.h -print-802_11.c -print-ah.c -print-aodv.c -print-ap1394.c -print-arcnet.c -print-arp.c -print-ascii.c -print-atalk.c -print-atm.c -print-beep.c -print-bfd.c -print-bgp.c -print-bootp.c -print-cdp.c -print-chdlc.c -print-cip.c -print-cnfp.c -print-dccp.c -print-decnet.c -print-dhcp6.c -print-domain.c -print-dvmrp.c -print-eap.c -print-egp.c -print-enc.c -print-esp.c -print-eigrp.c -print-ether.c -print-fddi.c -print-fr.c -print-frag6.c -print-gre.c -print-hsrp.c -print-icmp.c -print-icmp6.c -print-igmp.c -print-igrp.c -print-ip.c -print-ip6.c -print-ip6opts.c -print-ipcomp.c -print-ipfc.c -print-ipx.c -print-isakmp.c -print-isoclns.c -print-juniper.c -print-krb.c -print-l2tp.c -print-lane.c -print-ldp.c -print-llc.c -print-lmp.c -print-lspping.c -print-lwres.c -print-mobile.c -print-mobility.c -print-mpls.c -print-msdp.c -print-netbios.c -print-nfs.c -print-ntp.c -print-null.c -print-ospf.c -print-ospf6.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-ripng.c -print-rsvp.c -print-rt6.c -print-rx.c -print-sctp.c -print-sip.c -print-sl.c -print-sll.c -print-slow.c -print-smb.c -print-snmp.c -print-stp.c -print-sunatm.c -print-sunrpc.c -print-symantec.c -print-syslog.c -print-tcp.c -print-telnet.c -print-tftp.c -print-timed.c -print-token.c -print-udp.c -print-vjc.c -print-vrrp.c -print-wb.c -print-zephyr.c -route6d.h -rpc_auth.h -rpc_msg.h -rx.h -sctpConstants.h -sctpHeader.h -send-ack.awk -setsignal.c -setsignal.h -slcompress.h -slip.h -sll.h -smb.h -smbutil.c -stime.awk -strcasecmp.c -tcp.h -tcpdump.1 -tcpdump.c -tcpdump-stdinc.h -telnet.h -timed.h -token.h -udp.h -util.c -vfprintf.c -win32/Include/Arpa/tftp.h -win32/Include/errno.h -win32/Include/getopt.h -win32/Include/inetprivate.h -win32/Include/telnet.h -win32/Include/w32_fzs.h -win32/Include/Netinet/in_systm.h -win32/Include/Netinet/ip.h -win32/Src/getopt.c -win32/prj/GNUmakefile -win32/prj/WinDump.dsp -win32/prj/WinDump.dsw diff --git a/contrib/tcpdump/INSTALL b/contrib/tcpdump/INSTALL deleted file mode 100644 index c55f2d041c6fd..0000000000000 --- a/contrib/tcpdump/INSTALL +++ /dev/null @@ -1,251 +0,0 @@ -@(#) $Header: /tcpdump/master/tcpdump/INSTALL,v 1.63.2.4 2005/09/20 06:05:35 guy Exp $ (LBL) - -If you have not built libpcap, do so first. See the README -file in this directory for the ftp location. - -You will need an ANSI C compiler to build tcpdump. The configure script -will abort if your compiler is not ANSI compliant. If this happens, use -the GNU C compiler, available via anonymous ftp: - - ftp://ftp.gnu.org/pub/gnu/gcc/ - -After libpcap has been built (either install it with "make install" or -make sure both the libpcap and tcpdump source trees are in the same -directory), run ./configure (a shell script). "configure" will -determine your system attributes and generate an appropriate Makefile -from Makefile.in. Now build tcpdump by running "make". - -If everything builds ok, su and type "make install". This will install -tcpdump and the manual entry. By default, tcpdump is installed with -group execute permissions. The group used depends on your os. In -addition, BPF packet access is controlled by permissions to -/dev/bpf0. In any case, DO NOT give untrusted users the capability of -running tcpdump. Tcpdump can capture any traffic on your net, -including passwords. - -Note that most systems ship tcpdump, but usually an older version. -Remember to remove or rename the installed binary when upgrading. - -If you use Linux, this version of libpcap is known to compile and run -with 2.0.25 and more modern, and 2.2 and later, kernels. It is -guaranteed not to work with 1.X kernels. - -If your system is not one which we have tested tcpdump on, you may have -to modify the configure script and Makefile.in. Please send us patches -for any modifications you need to make. - -Please see "PLATFORMS" for notes about tested platforms. - - -FILES ------ -CHANGES - description of differences between releases -CREDITS - people that have helped tcpdump along -FILES - list of files exported as part of the distribution -INSTALL - this file -LICENSE - the license under which tcpdump is distributed -Makefile.in - compilation rules (input to the configure script) -README - description of distribution -Readme.Win32 - notes on building tcpdump on Win32 systems (with WinPcap) -VERSION - version of this release -acconfig.h - autoconf input -aclocal.m4 - autoconf macros -addrtoname.c - address to hostname routines -addrtoname.h - address to hostname definitions -ah.h - IPSEC Authentication Header definitions -aodv.h - AODV definitions -appletalk.h - AppleTalk definitions -arcnet.h - ARCNET definitions -atime.awk - TCP ack awk script -atm.h - ATM traffic type definitions -atmuni31.h - ATM Q.2931 definitions -bgp.h - BGP declarations -bootp.h - BOOTP definitions -bpf_dump.c - BPF program printing routines, in case libpcap doesn't - have them -chdlc.h - Cisco HDLC definitions -cpack.c - functions to extract packed data -cpack.h - declarations of functions to extract packed data -config.guess - autoconf support -config.h.in - autoconf input -config.sub - autoconf support -configure - configure script (run this first) -configure.in - configure script source -dccp.h - DCCP definitions -decnet.h - DECnet definitions -decode_prefix.h - Declarations of "decode_prefix{4,6}()" -enc.h - OpenBSD IPsec encapsulation BPF layer definitions -esp.h - IPSEC Encapsulating Security Payload definitions -ether.h - Ethernet definitions -ethertype.h - Ethernet type value definitions -extract.h - alignment definitions -fddi.h - Fiber Distributed Data Interface definitions -gmpls.c - GMPLS definitions -gmpls.h - GMPLS declarations -gmt2local.c - time conversion routines -gmt2local.h - time conversion prototypes -icmp6.h - ICMPv6 definitiions -ieee802_11.h - IEEE 802.11 definitions -ieee802_11_radio.h - radiotap header definitions -igrp.h - Interior Gateway Routing Protocol definitions -install-sh - BSD style install script -interface.h - globals, prototypes and definitions -ip.h - IP definitions -ip6.h - IPv6 definitions -ipfc.h - IP-over-Fibre Channel definitions -ipproto.c - IP protocol type value-to-name table -ipproto.h - IP protocol type value definitions -ipsec_doi.h - ISAKMP packet definitions - RFC2407 -ipx.h - IPX definitions -isakmp.h - ISAKMP packet definitions - RFC2408 -l2vpn.c - L2VPN encapsulation value-to-name table -l2vpn.h - L2VPN encapsulation definitions -l2tp.h - Layer Two Tunneling Protocol definitions -lane.h - ATM LANE definitions -lbl/os-*.h - OS-dependent defines and prototypes -llc.h - LLC definitions -machdep.c - machine dependent routines -machdep.h - machine dependent definitions -makemib - mib to header script -mib.h - mib definitions -missing/* - replacements for missing library functions -mkdep - construct Makefile dependency list -mpls.h - MPLS definitions -nameser.h - DNS definitions -netbios.h - NETBIOS definitions -netdissect.h - definitions and declarations for tcpdump-as-library - (under development) -nfs.h - Network File System V2 definitions -nfsfh.h - Network File System file handle definitions -nlpid.c - OSI NLPID value-to-name table -nlpid.h - OSI NLPID definitions -ntp.h - Network Time Protocol definitions -oakley.h - ISAKMP packet definitions - RFC2409 -ospf.h - Open Shortest Path First definitions -ospf6.h - IPv6 Open Shortest Path First definitions -packetdat.awk - TCP chunk summary awk script -parsenfsfh.c - Network File System file parser routines -pcap_dump_ftell.c - pcap_dump_ftell() implementation, in case libpcap - doesn't have it -pcap-missing.h - declarations of functions possibly missing from libpcap -pf.h - OpenBSD PF definitions -pmap_prot.h - definitions for ONC RPC portmapper protocol -ppp.h - Point to Point Protocol definitions -print-802_11.c - IEEE 802.11 printer routines -print-ap1394.c - Apple IP-over-IEEE 1394 printer routines -print-ah.c - IPSEC Authentication Header printer routines -print-aodv.c - AODV printer routines -print-arcnet.c - ARCNET printer routines -print-arp.c - Address Resolution Protocol printer routines -print-ascii.c - ASCII packet dump routines -print-atalk.c - AppleTalk printer routines -print-atm.c - ATM printer routines -print-bgp.c - Border Gateway Protocol printer routines -print-bootp.c - BOOTP and IPv4 DHCP printer routines -print-beep.c - BEEP printer routines -print-cdp.c - Cisco Discovery Protocol printer routines -print-chdlc.c - Cisco HDLC printer routines -print-cip.c - Classical-IP over ATM routines -print-cnfp.c - Cisco NetFlow printer routines -print-dccp.c - DCCP printer routines -print-decnet.c - DECnet printer routines -print-dhcp6.c - IPv6 DHCP printer routines -print-domain.c - Domain Name System printer routines -print-dvmrp.c - Distance Vector Multicast Routing Protocol printer routines -print-eap.c - EAP printer routines -print-enc.c - OpenBSD IPsec encapsulation BPF layer printer routines -print-egp.c - External Gateway Protocol printer routines -print-esp.c - IPSEC Encapsulating Security Payload printer routines -print-ether.c - Ethernet printer routines -print-fddi.c - Fiber Distributed Data Interface printer routines -print-fr.c - Frame Relay printer routines -print-frag6.c - IPv6 fragmentation header printer routines -print-gre.c - Generic Routing Encapsulation printer routines -print-hsrp.c - Cisco Hot Standby Router Protocol printer routines -print-icmp.c - Internet Control Message Protocol printer routines -print-icmp6.c - IPv6 Internet Control Message Protocol printer routines -print-igmp.c - Internet Group Management Protocol printer routines -print-igrp.c - Interior Gateway Routing Protocol printer routines -print-ip.c - IP printer routines -print-ip6.c - IPv6 printer routines -print-ip6opts.c - IPv6 header option printer routines -print-ipcomp.c - IP Payload Compression Protocol printer routines -print-ipx.c - IPX printer routines -print-isakmp.c - Internet Security Association and Key Management Protocol -print-isoclns.c - ISO CLNS, ESIS, and ISIS printer routines -print-krb.c - Kerberos printer routines -print-l2tp.c - Layer Two Tunneling Protocol printer routines -print-lane.c - ATM LANE printer routines -print-llc.c - IEEE 802.2 LLC printer routines -print-lspping.c - LSPPING printer routines -print-lwres.c - Lightweight Resolver protocol printer routines -print-mobile.c - IPv4 mobility printer routines -print-mobility.c - IPv6 mobility printer routines -print-mpls.c - Multi-Protocol Label Switching printer routines -print-msdp.c - Multicast Source Discovery Protocol printer routines -print-netbios.c - NetBIOS frame protocol printer routines -print-nfs.c - Network File System printer routines -print-ntp.c - Network Time Protocol printer routines -print-null.c - BSD loopback device printer routines -print-ospf.c - Open Shortest Path First printer routines -print-ospf6.c - IPv6 Open Shortest Path First printer routines -print-pflog.c - OpenBSD packet filter log file printer routines -print-pgm.c - Pragmatic General Multicast printer routines -print-pim.c - Protocol Independent Multicast printer routines -print-ppp.c - Point to Point Protocol printer routines -print-pppoe.c - PPP-over-Ethernet printer routines -print-pptp.c - Point-to-Point Tunnelling Protocol printer routines -print-radius.c - Radius protocol printer routines -print-raw.c - Raw IP printer routines -print-rip.c - Routing Information Protocol printer routines -print-ripng.c - IPv6 Routing Information Protocol printer routines -print-rsvp.c - Resource reSerVation Protocol (RSVP) printer routines -print-rt6.c - IPv6 routing header printer routines -print-rx.c - AFS RX printer routines -print-sctp.c - Stream Control Transmission Protocol printer routines -print-sip.c - SIP printer routines -print-sl.c - Compressed Serial Line Internet Protocol printer routines -print-sll.c - Linux "cooked" capture printer routines -print-slow.c - IEEE "slow protocol" (802.3ad) printer routines -print-smb.c - SMB/CIFS printer routines -print-snmp.c - Simple Network Management Protocol printer routines -print-stp.c - IEEE 802.1d spanning tree protocol printer routines -print-sunatm.c - SunATM DLPI capture printer routines -print-sunrpc.c - Sun Remote Procedure Call printer routines -print-symantec.c - Symantec Enterprise Firewall printer routines -print-tcp.c - TCP printer routines -print-telnet.c - Telnet option printer routines -print-tftp.c - Trivial File Transfer Protocol printer routines -print-timed.c - BSD time daemon protocol printer routines -print-token.c - Token Ring printer routines -print-udp.c - UDP printer routines -print-vjc.c - PPP Van Jacobson compression (RFC1144) printer routines -print-vrrp.c - Virtual Router Redundancy Protocol -print-wb.c - White Board printer routines -print-zephyr.c - Zephyr printer routines -route6d.h - packet definition for IPv6 Routing Information Protocol -rpc_auth.h - definitions for ONC RPC authentication -rpc_msg.h - definitions for ONC RPC messages -rx.h - AFS RX definitions -sctpConstants.h - Stream Control Transmission Protocol constant definitions -sctpHeader.h - Stream Control Transmission Protocol packet definitions -send-ack.awk - unidirectional tcp send/ack awk script -setsignal.c - OS-independent signal routines -setsignal.h - OS-independent signal prototypes -slcompress.h - SLIP/PPP Van Jacobson compression (RFC1144) definitions -slip.h - SLIP definitions -sll.h - Linux "cooked" capture definitions -smb.h - SMB/CIFS definitions -smbutil.c - SMB/CIFS utility routines -stime.awk - TCP send awk script -strcasecmp.c - missing routine -tcp.h - TCP definitions -tcpdump.1 - manual entry -tcpdump.c - main program -telnet.h - Telnet definitions -timed.h - BSD time daemon protocol definitions -token.h - Token Ring definitions -udp.h - UDP definitions -util.c - utility routines -vfprintf.c - emulation routine -win32 - headers and routines for building on Win32 systems diff --git a/contrib/tcpdump/LICENSE b/contrib/tcpdump/LICENSE deleted file mode 100644 index dea5f7d54d6b1..0000000000000 --- a/contrib/tcpdump/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -License: BSD - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - 3. The names of the authors may not be used to endorse or promote - products derived from this software without specific prior - written permission. - -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. diff --git a/contrib/tcpdump/Makefile-devel-adds b/contrib/tcpdump/Makefile-devel-adds deleted file mode 100644 index 512a1199795c2..0000000000000 --- a/contrib/tcpdump/Makefile-devel-adds +++ /dev/null @@ -1,22 +0,0 @@ -# -# Auto-regenerate configure script or Makefile when things change. -# From autoconf.info . Works best with GNU Make. -# -${srcdir}/configure: configure.in - cd ${srcdir} && autoconf - -# autoheader might not change config.h.in, so touch a stamp file. -${srcdir}/config.h.in: ${srcdir}/stamp-h.in -${srcdir}/stamp-h.in: configure.in acconfig.h - cd ${srcdir} && autoheader - echo timestamp > ${srcdir}/stamp-h.in - -config.h: stamp-h -stamp-h: ${srcdir}/config.h.in config.status - ./config.status - -Makefile: Makefile.in config.status - ./config.status - -config.status: ${srcdir}/configure - ./config.status --recheck diff --git a/contrib/tcpdump/Makefile.in b/contrib/tcpdump/Makefile.in deleted file mode 100644 index c96d877764754..0000000000000 --- a/contrib/tcpdump/Makefile.in +++ /dev/null @@ -1,201 +0,0 @@ -# Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 -# The Regents of the University of California. All rights reserved. -# -# 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, (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, and (3) all advertising materials mentioning -# features or use of this software display the following acknowledgement: -# ``This product includes software developed by the University of California, -# Lawrence Berkeley Laboratory and its contributors.'' Neither the name of -# the University nor the names of its contributors may be used to endorse -# or promote products derived from this software without specific prior -# written permission. -# 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. -# -# @(#) $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) -# - -# Top level hierarchy -prefix = @prefix@ -exec_prefix = @exec_prefix@ -# Pathname of directory to install the binary -sbindir = @sbindir@ -# Pathname of directory to install the man page -mandir = @mandir@ - -# VPATH -srcdir = @srcdir@ -VPATH = @srcdir@ - -# -# You shouldn't need to edit anything below here. -# - -CC = @CC@ -PROG = tcpdump -CCOPT = @V_CCOPT@ -INCLS = -I. @V_INCLS@ -DEFS = @DEFS@ @CPPFLAGS@ @V_DEFS@ - -# Standard CFLAGS -CFLAGS = $(CCOPT) $(DEFS) $(INCLS) - -# Standard LDFLAGS -LDFLAGS = @LDFLAGS@ - -# Standard LIBS -LIBS = @LIBS@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -# Explicitly define compilation rule since SunOS 4's make doesn't like gcc. -# Also, gcc does not remove the .o before forking 'as', which can be a -# problem if you don't own the file but can write to the directory. -.c.o: - @rm -f $@ - $(CC) $(CFLAGS) -c $(srcdir)/$*.c - -CSRC = addrtoname.c cpack.c gmpls.c oui.c gmt2local.c ipproto.c \ - nlpid.c l2vpn.c machdep.c parsenfsfh.c \ - print-802_11.c print-ap1394.c print-ah.c print-arcnet.c \ - print-aodv.c print-arp.c print-ascii.c print-atalk.c print-atm.c \ - print-beep.c print-bfd.c print-bgp.c print-bootp.c print-cdp.c \ - print-chdlc.c print-cip.c print-cnfp.c print-dccp.c print-decnet.c \ - print-domain.c print-dvmrp.c print-enc.c print-egp.c \ - print-eap.c print-eigrp.c\ - print-esp.c print-ether.c print-fddi.c print-fr.c \ - print-gre.c print-hsrp.c print-icmp.c print-igmp.c \ - print-igrp.c print-ip.c print-ipcomp.c print-ipfc.c \ - print-ipx.c print-isakmp.c print-isoclns.c print-juniper.c print-krb.c \ - print-l2tp.c print-lane.c print-ldp.c print-llc.c \ - print-lmp.c print-lspping.c \ - print-lwres.c print-mobile.c print-mpls.c print-msdp.c \ - print-nfs.c print-ntp.c print-null.c print-ospf.c \ - print-pflog.c print-pgm.c print-pim.c print-ppp.c print-pppoe.c \ - print-pptp.c print-radius.c print-raw.c print-rip.c \ - print-rsvp.c print-rx.c print-sctp.c print-sip.c print-sl.c print-sll.c \ - print-slow.c print-snmp.c print-stp.c print-sunatm.c print-sunrpc.c \ - print-symantec.c print-syslog.c print-tcp.c print-telnet.c print-tftp.c \ - print-timed.c print-token.c print-udp.c print-vjc.c print-vrrp.c \ - print-wb.c print-zephyr.c setsignal.c tcpdump.c util.c - -LOCALSRC = @LOCALSRC@ -GENSRC = version.c -LIBOBJS = @LIBOBJS@ - -SRC = $(CSRC) $(GENSRC) $(LOCALSRC) - -# We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot -# hack the extra indirection -OBJ = $(CSRC:.c=.o) $(GENSRC:.c=.o) $(LOCALSRC:.c=.o) $(LIBOBJS) -HDR = addrtoname.h appletalk.h bootp.h cpack.h dccp.h decnet.h \ - ethertype.h extract.h fddi.h gmt2local.h igrp.h interface.h \ - ipx.h llc.h machdep.h mib.h nfsfh.h nfsv2.h ntp.h ospf.h \ - setsignal.h \ - gnuc.h ipsec_doi.h isakmp.h l2tp.h nameser.h \ - netbios.h oakley.h ospf6.h pf.h ppp.h route6d.h - -TAGHDR = \ - /usr/include/arpa/tftp.h \ - /usr/include/net/if_arp.h \ - /usr/include/net/slip.h \ - /usr/include/netinet/if_ether.h \ - /usr/include/netinet/in.h \ - /usr/include/netinet/ip_icmp.h \ - /usr/include/netinet/tcp.h \ - /usr/include/netinet/udp.h \ - /usr/include/protocols/routed.h - -TAGFILES = $(SRC) $(HDR) $(TAGHDR) - -CLEANFILES = $(PROG) $(OBJ) $(GENSRC) - -all: $(PROG) - -$(PROG): $(OBJ) @V_PCAPDEP@ - @rm -f $@ - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) - -datalinks.o: $(srcdir)/missing/datalinks.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/datalinks.c -dlnames.o: $(srcdir)/missing/dlnames.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/dlnames.c -getnameinfo.o: $(srcdir)/missing/getnameinfo.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/getnameinfo.c -getaddrinfo.o: $(srcdir)/missing/getaddrinfo.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/getaddrinfo.c -inet_pton.o: $(srcdir)/missing/inet_pton.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/inet_pton.c -inet_ntop.o: $(srcdir)/missing/inet_ntop.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/inet_ntop.c -inet_aton.o: $(srcdir)/missing/inet_aton.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/inet_aton.c -snprintf.o: $(srcdir)/missing/snprintf.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/snprintf.c -strlcat.o: $(srcdir)/missing/strlcat.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/strlcat.c -strlcpy.o: $(srcdir)/missing/strlcpy.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/strlcpy.c -strsep.o: $(srcdir)/missing/strsep.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/strsep.c - -version.o: version.c - $(CC) $(CFLAGS) -c version.c - -version.c: $(srcdir)/VERSION - @rm -f $@ - sed -e 's/.*/char version[] = "&";/' $(srcdir)/VERSION > $@ - -install: - [ -d $(DESTDIR)$(sbindir) ] || \ - (mkdir -p $(DESTDIR)$(sbindir); chmod 755 $(DESTDIR)$(sbindir)) - $(INSTALL_PROGRAM) $(PROG) $(DESTDIR)$(sbindir)/$(PROG) - [ -d $(DESTDIR)$(mandir)/man1 ] || \ - (mkdir -p $(DESTDIR)$(mandir)/man1; chmod 755 $(DESTDIR)$(mandir)/man1) - $(INSTALL_DATA) $(srcdir)/$(PROG).1 $(DESTDIR)$(mandir)/man1/$(PROG).1 - -uninstall: - rm -f $(DESTDIR)$(sbindir)/$(PROG) - rm -f $(DESTDIR)$(mandir)/man1/$(PROG).1 - -lint: $(GENSRC) - lint -hbxn $(SRC) | \ - grep -v 'struct/union .* never defined' | \ - grep -v 'possible pointer alignment problem' - -clean: - rm -f $(CLEANFILES) - -distclean: - rm -f $(CLEANFILES) Makefile config.cache config.log config.status \ - config.h gnuc.h os-proto.h stamp-h stamp-h.in - -tags: $(TAGFILES) - ctags -wtd $(TAGFILES) - -tar: - @cwd=`pwd` ; dir=`basename $$cwd` ; name=$(PROG)-`cat VERSION` ; \ - list="" ; tar="tar chf" ; \ - for i in `cat FILES` ; do list="$$list $$name/$$i" ; done; \ - echo \ - "rm -f ../$$name; ln -s $$dir ../$$name" ; \ - rm -f ../$$name; ln -s $$dir ../$$name ; \ - echo \ - "(cd .. ; $$tar - [lots of files]) | compress > /tmp/$$name.tar.Z" ; \ - (cd .. ; $$tar - $$list) | compress > /tmp/$$name.tar.Z ; \ - echo \ - "rm -f ../$$name" ; \ - rm -f ../$$name - -depend: $(GENSRC) - ${srcdir}/mkdep -c $(CC) $(DEFS) $(INCLS) $(SRC) diff --git a/contrib/tcpdump/PLATFORMS b/contrib/tcpdump/PLATFORMS deleted file mode 100644 index 2e1aedf773d4c..0000000000000 --- a/contrib/tcpdump/PLATFORMS +++ /dev/null @@ -1,9 +0,0 @@ -== Tested platforms == -NetBSD 1.5/i386 (mcr - 2002/1/1) -Debian Linux (woody/i386) (mcr - 2002/1/1) - ---- -RedHat Linux 6.1/i386 (assar) -FreeBSD 2.2.8/i386 (itojun) - - diff --git a/contrib/tcpdump/README b/contrib/tcpdump/README deleted file mode 100644 index 17df49d4db8f8..0000000000000 --- a/contrib/tcpdump/README +++ /dev/null @@ -1,234 +0,0 @@ -@(#) $Header: /tcpdump/master/tcpdump/README,v 1.65 2004/10/12 02:01:59 guy Exp $ (LBL) - -TCPDUMP 3.9 -Now maintained by "The Tcpdump Group" -See www.tcpdump.org - -Please send inquiries/comments/reports to tcpdump-workers@tcpdump.org - -Anonymous CVS is available via: - cvs -d :pserver:cvs.tcpdump.org:/tcpdump/master login - (password "anoncvs") - cvs -d :pserver:cvs.tcpdump.org:/tcpdump/master checkout tcpdump - -Version 3.9 of TCPDUMP can be retrived with the CVS tag "tcpdump_3_9rel1": - cvs -d :pserver:cvs.tcpdump.org:/tcpdump/master checkout -r tcpdump_3_9rel1 tcpdump - -Please send patches against the master copy to patches@tcpdump.org. - -formerly from Lawrence Berkeley National Laboratory - Network Research Group <tcpdump@ee.lbl.gov> - ftp://ftp.ee.lbl.gov/tcpdump.tar.Z (3.4) - -This directory contains source code for tcpdump, a tool for network -monitoring and data acquisition. This software was originally -developed by the Network Research Group at the Lawrence Berkeley -National Laboratory. The original distribution is available via -anonymous ftp to ftp.ee.lbl.gov, in tcpdump.tar.Z. More recent -development is performed at tcpdump.org, http://www.tcpdump.org/ - -Tcpdump uses libpcap, a system-independent interface for user-level -packet capture. Before building tcpdump, you must first retrieve and -build libpcap, also originally from LBL and now being maintained by -tcpdump.org; see http://www.tcpdump.org/ . - -Once libpcap is built (either install it or make sure it's in -../libpcap), you can build tcpdump using the procedure in the INSTALL -file. - -The program is loosely based on SMI's "etherfind" although none of the -etherfind code remains. It was originally written by Van Jacobson as -part of an ongoing research project to investigate and improve tcp and -internet gateway performance. The parts of the program originally -taken from Sun's etherfind were later re-written by Steven McCanne of -LBL. To insure that there would be no vestige of proprietary code in -tcpdump, Steve wrote these pieces from the specification given by the -manual entry, with no access to the source of tcpdump or etherfind. - -Over the past few years, tcpdump has been steadily improved by the -excellent contributions from the Internet community (just browse -through the CHANGES file). We are grateful for all the input. - -Richard Stevens gives an excellent treatment of the Internet protocols -in his book ``TCP/IP Illustrated, Volume 1''. If you want to learn more -about tcpdump and how to interpret its output, pick up this book. - -Some tools for viewing and analyzing tcpdump trace files are available -from the Internet Traffic Archive: - - http://www.acm.org/sigcomm/ITA/ - -Another tool that tcpdump users might find useful is tcpslice: - - ftp://ftp.ee.lbl.gov/tcpslice.tar.Z - -It is a program that can be used to extract portions of tcpdump binary -trace files. See the above distribution for further details and -documentation. - -Problems, bugs, questions, desirable enhancements, etc. should be sent -to the address "tcpdump-workers@tcpdump.org". Bugs, support requests, -and feature requests may also be submitted on the SourceForge site for -tcpdump at - - http://sourceforge.net/projects/tcpdump/ - -Source code contributions, etc. should be sent to the email address -"patches@tcpdump.org", or submitted as patches on the SourceForge site -for tcpdump. - -Current versions can be found at www.tcpdump.org, or the SourceForge -site for tcpdump. - - - The TCPdump team - -original text by: Steve McCanne, Craig Leres, Van Jacobson - -------------------------------------- -This directory also contains some short awk programs intended as -examples of ways to reduce tcpdump data when you're tracking -particular network problems: - -send-ack.awk - Simplifies the tcpdump trace for an ftp (or other unidirectional - tcp transfer). Since we assume that one host only sends and - the other only acks, all address information is left off and - we just note if the packet is a "send" or an "ack". - - There is one output line per line of the original trace. - Field 1 is the packet time in decimal seconds, relative - to the start of the conversation. Field 2 is delta-time - from last packet. Field 3 is packet type/direction. - "Send" means data going from sender to receiver, "ack" - means an ack going from the receiver to the sender. A - preceding "*" indicates that the data is a retransmission. - A preceding "-" indicates a hole in the sequence space - (i.e., missing packet(s)), a "#" means an odd-size (not max - seg size) packet. Field 4 has the packet flags - (same format as raw trace). Field 5 is the sequence - number (start seq. num for sender, next expected seq number - for acks). The number in parens following an ack is - the delta-time from the first send of the packet to the - ack. A number in parens following a send is the - delta-time from the first send of the packet to the - current send (on duplicate packets only). Duplicate - sends or acks have a number in square brackets showing - the number of duplicates so far. - - Here is a short sample from near the start of an ftp: - 3.00 0.20 send . 512 - 3.20 0.20 ack . 1024 (0.20) - 3.20 0.00 send P 1024 - 3.40 0.20 ack . 1536 (0.20) - 3.80 0.40 * send . 0 (3.80) [2] - 3.82 0.02 * ack . 1536 (0.62) [2] - Three seconds into the conversation, bytes 512 through 1023 - were sent. 200ms later they were acked. Shortly thereafter - bytes 1024-1535 were sent and again acked after 200ms. - Then, for no apparent reason, 0-511 is retransmitted, 3.8 - seconds after its initial send (the round trip time for this - ftp was 1sec, +-500ms). Since the receiver is expecting - 1536, 1536 is re-acked when 0 arrives. - -packetdat.awk - Computes chunk summary data for an ftp (or similar - unidirectional tcp transfer). [A "chunk" refers to - a chunk of the sequence space -- essentially the packet - sequence number divided by the max segment size.] - - A summary line is printed showing the number of chunks, - the number of packets it took to send that many chunks - (if there are no lost or duplicated packets, the number - of packets should equal the number of chunks) and the - number of acks. - - Following the summary line is one line of information - per chunk. The line contains eight fields: - 1 - the chunk number - 2 - the start sequence number for this chunk - 3 - time of first send - 4 - time of last send - 5 - time of first ack - 6 - time of last ack - 7 - number of times chunk was sent - 8 - number of times chunk was acked - (all times are in decimal seconds, relative to the start - of the conversation.) - - As an example, here is the first part of the output for - an ftp trace: - - # 134 chunks. 536 packets sent. 508 acks. - 1 1 0.00 5.80 0.20 0.20 4 1 - 2 513 0.28 6.20 0.40 0.40 4 1 - 3 1025 1.16 6.32 1.20 1.20 4 1 - 4 1561 1.86 15.00 2.00 2.00 6 1 - 5 2049 2.16 15.44 2.20 2.20 5 1 - 6 2585 2.64 16.44 2.80 2.80 5 1 - 7 3073 3.00 16.66 3.20 3.20 4 1 - 8 3609 3.20 17.24 3.40 5.82 4 11 - 9 4097 6.02 6.58 6.20 6.80 2 5 - - This says that 134 chunks were transferred (about 70K - since the average packet size was 512 bytes). It took - 536 packets to transfer the data (i.e., on the average - each chunk was transmitted four times). Looking at, - say, chunk 4, we see it represents the 512 bytes of - sequence space from 1561 to 2048. It was first sent - 1.86 seconds into the conversation. It was last - sent 15 seconds into the conversation and was sent - a total of 6 times (i.e., it was retransmitted every - 2 seconds on the average). It was acked once, 140ms - after it first arrived. - -stime.awk -atime.awk - Output one line per send or ack, respectively, in the form - <time> <seq. number> - where <time> is the time in seconds since the start of the - transfer and <seq. number> is the sequence number being sent - or acked. I typically plot this data looking for suspicious - patterns. - - -The problem I was looking at was the bulk-data-transfer -throughput of medium delay network paths (1-6 sec. round trip -time) under typical DARPA Internet conditions. The trace of the -ftp transfer of a large file was used as the raw data source. -The method was: - - - On a local host (but not the Sun running tcpdump), connect to - the remote ftp. - - - On the monitor Sun, start the trace going. E.g., - tcpdump host local-host and remote-host and port ftp-data >tracefile - - - On local, do either a get or put of a large file (~500KB), - preferably to the null device (to minimize effects like - closing the receive window while waiting for a disk write). - - - When transfer is finished, stop tcpdump. Use awk to make up - two files of summary data (maxsize is the maximum packet size, - tracedata is the file of tcpdump tracedata): - awk -f send-ack.awk packetsize=avgsize tracedata >sa - awk -f packetdat.awk packetsize=avgsize tracedata >pd - - - While the summary data files are printing, take a look at - how the transfer behaved: - awk -f stime.awk tracedata | xgraph - (90% of what you learn seems to happen in this step). - - - Do all of the above steps several times, both directions, - at different times of day, with different protocol - implementations on the other end. - - - Using one of the Unix data analysis packages (in my case, - S and Gary Perlman's Unix|Stat), spend a few months staring - at the data. - - - Change something in the local protocol implementation and - redo the steps above. - - - Once a week, tell your funding agent that you're discovering - wonderful things and you'll write up that research report - "real soon now". diff --git a/contrib/tcpdump/Readme.Win32 b/contrib/tcpdump/Readme.Win32 deleted file mode 100644 index fdf8b12bc767b..0000000000000 --- a/contrib/tcpdump/Readme.Win32 +++ /dev/null @@ -1,24 +0,0 @@ -To build tcpdump under Windows, you need: - -- version 6 (or higher) of Microsoft Visual Studio or the Cygnus gnu -C compiler. -- The November 2001 (or later) edition of Microsoft Platform -Software Development Kit (SDK), that contains some necessary includes -for IPv6 support. You can download it from http://www.microsoft.com/sdk -- the WinPcap source code, that includes libpcap for win32. Download it -from http://winpcap.polito.it or download libpcap sources from -http://www.tcpdump.org and follow the instructions in the README.Win32 -file. - -First, extract tcpdump and WinPcap in the same folder, and build WinPcap. - -The Visual Studio project and the cygwin makefile are in the Win32\prj -folder. - -From Visual Studio, open windump.dsw and build the program. The release -version of the WinDump.exe executable file will be created in the -windump\win32\prj\release directory . The debug version will be generated -in windump\win32\prj\debug. - -From cygnus, go to windump\win32\prj\ and type "make". WinDump.exe will be -created in the same directory.
\ No newline at end of file diff --git a/contrib/tcpdump/TODO b/contrib/tcpdump/TODO deleted file mode 100644 index 12c8b3f519466..0000000000000 --- a/contrib/tcpdump/TODO +++ /dev/null @@ -1,6 +0,0 @@ -1. update credits -2. review "FILES" -3. search for version info -4. get PLATFORMS filled in -5. update CHANGES file -6. do same for libpcap diff --git a/contrib/tcpdump/VERSION b/contrib/tcpdump/VERSION deleted file mode 100644 index e0d61b5b06265..0000000000000 --- a/contrib/tcpdump/VERSION +++ /dev/null @@ -1 +0,0 @@ -3.9.4 diff --git a/contrib/tcpdump/acconfig.h b/contrib/tcpdump/acconfig.h deleted file mode 100644 index f28d52c23043d..0000000000000 --- a/contrib/tcpdump/acconfig.h +++ /dev/null @@ -1,136 +0,0 @@ -/* "generated automatically" means DO NOT MAKE CHANGES TO config.h.in -- - * make them to acconfig.h and rerun autoheader */ -@TOP@ - -/* Define if you have SSLeay 0.9.0b with the buggy cast128. */ -#undef HAVE_BUGGY_CAST128 - -/* Define if you enable IPv6 support */ -#undef INET6 - -/* Define if you enable support for the libsmi. */ -#undef LIBSMI - -/* Define if you have the <smi.h> header file. */ -#undef HAVE_SMI_H - -/* define if you have struct __res_state_ext */ -#undef HAVE_RES_STATE_EXT - -/* define if your struct __res_state has the nsort member */ -#undef HAVE_NEW_RES_STATE - -/* - * define if struct ether_header.ether_dhost is a struct with ether_addr_octet - */ -#undef ETHER_HEADER_HAS_EA - -/* define if struct ether_arp contains arp_xsha */ -#undef ETHER_ARP_HAS_X - -/* define if you have the addrinfo function. */ -#undef HAVE_ADDRINFO - -/* define if you need to include missing/addrinfoh.h. */ -#undef NEED_ADDRINFO_H - -/* define ifyou have the h_errno variable. */ -#undef HAVE_H_ERRNO - -/* define if IN6ADDRSZ is defined (XXX not used!) */ -#undef HAVE_IN6ADDRSZ - -/* define if INADDRSZ is defined (XXX not used!) */ -#undef HAVE_INADDRSZ - -/* define if this is a development version, to use additional prototypes. */ -#undef HAVE_OS_PROTO_H - -/* define if <unistd.h> defines __P() */ -#undef HAVE_PORTABLE_PROTOTYPE - -/* define if RES_USE_INET6 is defined */ -#undef HAVE_RES_USE_INET6 - -/* define if struct sockaddr has the sa_len member */ -#undef HAVE_SOCKADDR_SA_LEN - -/* define if you have struct sockaddr_storage */ -#undef HAVE_SOCKADDR_STORAGE - -/* define if you have both getipnodebyname() and getipnodebyaddr() */ -#undef USE_GETIPNODEBY - -/* define if you have ether_ntohost() and it works */ -#undef USE_ETHER_NTOHOST - -/* define if libpcap has pcap_version */ -#undef HAVE_PCAP_VERSION - -/* define if libpcap has pcap_debug */ -#undef HAVE_PCAP_DEBUG - -/* define if libpcap has yydebug */ -#undef HAVE_YYDEBUG - -/* define if libpcap has pcap_list_datalinks() */ -#undef HAVE_PCAP_LIST_DATALINKS - -/* define if libpcap has pcap_set_datalink() */ -#undef HAVE_PCAP_SET_DATALINK - -/* define if libpcap has pcap_datalink_name_to_val() */ -#undef HAVE_PCAP_DATALINK_NAME_TO_VAL - -/* define if libpcap has pcap_datalink_val_to_description() */ -#undef HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION - -/* define if libpcap has pcap_dump_ftell() */ -#undef HAVE_PCAP_DUMP_FTELL - -/* define if you have getrpcbynumber() */ -#undef HAVE_GETRPCBYNUMBER - -/* define if unaligned memory accesses fail */ -#undef LBL_ALIGN - -/* The successful return value from signal (?)XXX */ -#undef RETSIGVAL - -/* Define this on IRIX */ -#undef _BSD_SIGNALS - -/* For HP/UX ANSI compiler? */ -#undef _HPUX_SOURCE - -/* AIX hack. */ -#undef _SUN - -/* Workaround for missing 64-bit formats */ -#undef PRId64 -#undef PRIo64 -#undef PRIx64 -#undef PRIu64 - -/* Whether or not to include the possibly-buggy SMB printer */ -#undef TCPDUMP_DO_SMB - -/* Long story short: aclocal.m4 depends on autoconf 2.13 - * implementation details wrt "const"; newer versions - * have different implementation details so for now we - * put "const" here. This may cause duplicate definitions - * in config.h but that should be OK since they're the same. - */ -#undef const - -/* Define if you have the dnet_htoa function. */ -#undef HAVE_DNET_HTOA - -/* Define if you have a dnet_htoa declaration in <netdnet/dnetdb.h>. */ -#undef HAVE_NETDNET_DNETDB_H_DNET_HTOA - -/* define if should drop privileges by default */ -#undef WITH_USER - -/* define if should chroot when dropping privileges */ -#undef WITH_CHROOT diff --git a/contrib/tcpdump/aclocal.m4 b/contrib/tcpdump/aclocal.m4 deleted file mode 100644 index 38076b6f0b303..0000000000000 --- a/contrib/tcpdump/aclocal.m4 +++ /dev/null @@ -1,1256 +0,0 @@ -dnl @(#) $Header: /tcpdump/master/tcpdump/aclocal.m4,v 1.106.2.6 2005/06/03 22:10:16 guy Exp $ (LBL) -dnl -dnl Copyright (c) 1995, 1996, 1997, 1998 -dnl The Regents of the University of California. All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that: (1) source code distributions -dnl retain the above copyright notice and this paragraph in its entirety, (2) -dnl distributions including binary code include the above copyright notice and -dnl this paragraph in its entirety in the documentation or other materials -dnl provided with the distribution, and (3) all advertising materials mentioning -dnl features or use of this software display the following acknowledgement: -dnl ``This product includes software developed by the University of California, -dnl Lawrence Berkeley Laboratory and its contributors.'' Neither the name of -dnl the University nor the names of its contributors may be used to endorse -dnl or promote products derived from this software without specific prior -dnl written permission. -dnl THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED -dnl WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -dnl -dnl LBL autoconf macros -dnl - -dnl -dnl Determine which compiler we're using (cc or gcc) -dnl If using gcc, determine the version number -dnl If using cc, require that it support ansi prototypes -dnl If using gcc, use -O2 (otherwise use -O) -dnl If using cc, explicitly specify /usr/local/include -dnl -dnl usage: -dnl -dnl AC_LBL_C_INIT(copt, incls) -dnl -dnl results: -dnl -dnl $1 (copt set) -dnl $2 (incls set) -dnl CC -dnl LDFLAGS -dnl ac_cv_lbl_gcc_vers -dnl LBL_CFLAGS -dnl -AC_DEFUN(AC_LBL_C_INIT, - [AC_PREREQ(2.12) - AC_BEFORE([$0], [AC_PROG_CC]) - AC_BEFORE([$0], [AC_LBL_FIXINCLUDES]) - AC_BEFORE([$0], [AC_LBL_DEVEL]) - AC_ARG_WITH(gcc, [ --without-gcc don't use gcc]) - $1="-O" - $2="" - if test "${srcdir}" != "." ; then - $2="-I\$(srcdir)" - fi - if test "${CFLAGS+set}" = set; then - LBL_CFLAGS="$CFLAGS" - fi - if test -z "$CC" ; then - case "$host_os" in - - bsdi*) - AC_CHECK_PROG(SHLICC2, shlicc2, yes, no) - if test $SHLICC2 = yes ; then - CC=shlicc2 - export CC - fi - ;; - esac - fi - if test -z "$CC" -a "$with_gcc" = no ; then - CC=cc - export CC - fi - AC_PROG_CC - if test "$GCC" = yes ; then - if test "$SHLICC2" = yes ; then - ac_cv_lbl_gcc_vers=2 - $1="-O2" - else - AC_MSG_CHECKING(gcc version) - AC_CACHE_VAL(ac_cv_lbl_gcc_vers, - ac_cv_lbl_gcc_vers=`$CC -v 2>&1 | \ - sed -e '/^gcc version /!d' \ - -e 's/^gcc version //' \ - -e 's/ .*//' -e 's/^[[[^0-9]]]*//' \ - -e 's/\..*//'`) - AC_MSG_RESULT($ac_cv_lbl_gcc_vers) - if test $ac_cv_lbl_gcc_vers -gt 1 ; then - $1="-O2" - fi - fi - else - AC_MSG_CHECKING(that $CC handles ansi prototypes) - AC_CACHE_VAL(ac_cv_lbl_cc_ansi_prototypes, - AC_TRY_COMPILE( - [#include <sys/types.h>], - [int frob(int, char *)], - ac_cv_lbl_cc_ansi_prototypes=yes, - ac_cv_lbl_cc_ansi_prototypes=no)) - AC_MSG_RESULT($ac_cv_lbl_cc_ansi_prototypes) - if test $ac_cv_lbl_cc_ansi_prototypes = no ; then - case "$host_os" in - - hpux*) - AC_MSG_CHECKING(for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)) - savedcflags="$CFLAGS" - CFLAGS="-Aa -D_HPUX_SOURCE $CFLAGS" - AC_CACHE_VAL(ac_cv_lbl_cc_hpux_cc_aa, - AC_TRY_COMPILE( - [#include <sys/types.h>], - [int frob(int, char *)], - ac_cv_lbl_cc_hpux_cc_aa=yes, - ac_cv_lbl_cc_hpux_cc_aa=no)) - AC_MSG_RESULT($ac_cv_lbl_cc_hpux_cc_aa) - if test $ac_cv_lbl_cc_hpux_cc_aa = no ; then - AC_MSG_ERROR(see the INSTALL doc for more info) - fi - CFLAGS="$savedcflags" - V_CCOPT="-Aa $V_CCOPT" - AC_DEFINE(_HPUX_SOURCE) - ;; - - *) - AC_MSG_ERROR(see the INSTALL doc for more info) - ;; - esac - fi - $2="$$2 -I/usr/local/include" - LDFLAGS="$LDFLAGS -L/usr/local/lib" - - case "$host_os" in - - irix*) - V_CCOPT="$V_CCOPT -xansi -signed -O" - ;; - - osf*) - V_CCOPT="$V_CCOPT -std1 -O" - ;; - - ultrix*) - AC_MSG_CHECKING(that Ultrix $CC hacks const in prototypes) - AC_CACHE_VAL(ac_cv_lbl_cc_const_proto, - AC_TRY_COMPILE( - [#include <sys/types.h>], - [struct a { int b; }; - void c(const struct a *)], - ac_cv_lbl_cc_const_proto=yes, - ac_cv_lbl_cc_const_proto=no)) - AC_MSG_RESULT($ac_cv_lbl_cc_const_proto) - if test $ac_cv_lbl_cc_const_proto = no ; then - AC_DEFINE(const,) - fi - ;; - esac - fi -]) - - -# -# Try compiling a sample of the type of code that appears in -# gencode.c with "inline", "__inline__", and "__inline". -# -# Autoconf's AC_C_INLINE, at least in autoconf 2.13, isn't good enough, -# as it just tests whether a function returning "int" can be inlined; -# at least some versions of HP's C compiler can inline that, but can't -# inline a function that returns a struct pointer. -# -AC_DEFUN(AC_LBL_C_INLINE, - [AC_MSG_CHECKING(for inline) - AC_CACHE_VAL(ac_cv_lbl_inline, [ - ac_cv_lbl_inline="" - ac_lbl_cc_inline=no - for ac_lbl_inline in inline __inline__ __inline - do - AC_TRY_COMPILE( - [#define inline $ac_lbl_inline - static inline struct iltest *foo(void); - struct iltest { - int iltest1; - int iltest2; - }; - - static inline struct iltest * - foo() - { - static struct iltest xxx; - - return &xxx; - }],,ac_lbl_cc_inline=yes,) - if test "$ac_lbl_cc_inline" = yes ; then - break; - fi - done - if test "$ac_lbl_cc_inline" = yes ; then - ac_cv_lbl_inline=$ac_lbl_inline - fi]) - if test ! -z "$ac_cv_lbl_inline" ; then - AC_MSG_RESULT($ac_cv_lbl_inline) - else - AC_MSG_RESULT(no) - fi - AC_DEFINE_UNQUOTED(inline, $ac_cv_lbl_inline, [Define as token for inline if inlining supported])]) - -dnl -dnl Use pfopen.c if available and pfopen() not in standard libraries -dnl Require libpcap -dnl Look for libpcap in .. -dnl Use the installed libpcap if there is no local version -dnl -dnl usage: -dnl -dnl AC_LBL_LIBPCAP(pcapdep, incls) -dnl -dnl results: -dnl -dnl $1 (pcapdep set) -dnl $2 (incls appended) -dnl LIBS -dnl LBL_LIBS -dnl -AC_DEFUN(AC_LBL_LIBPCAP, - [AC_REQUIRE([AC_LBL_LIBRARY_NET]) - dnl - dnl save a copy before locating libpcap.a - dnl - LBL_LIBS="$LIBS" - pfopen=/usr/examples/packetfilter/pfopen.c - if test -f $pfopen ; then - AC_CHECK_FUNCS(pfopen) - if test $ac_cv_func_pfopen = "no" ; then - AC_MSG_RESULT(Using $pfopen) - LIBS="$LIBS $pfopen" - fi - fi - AC_MSG_CHECKING(for local pcap library) - libpcap=FAIL - lastdir=FAIL - places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \ - egrep '/libpcap-[[0-9]]*.[[0-9]]*(.[[0-9]]*)?([[ab]][[0-9]]*)?$'` - for dir in $places $srcdir/../libpcap $srcdir/libpcap ; do - basedir=`echo $dir | sed -e 's/[[ab]][[0-9]]*$//'` - if test $lastdir = $basedir ; then - dnl skip alphas when an actual release is present - continue; - fi - lastdir=$dir - if test -r $dir/libpcap.a ; then - libpcap=$dir/libpcap.a - d=$dir - dnl continue and select the last one that exists - fi - done - if test $libpcap = FAIL ; then - AC_MSG_RESULT(not found) - AC_CHECK_LIB(pcap, main, libpcap="-lpcap") - if test $libpcap = FAIL ; then - AC_MSG_ERROR(see the INSTALL doc for more info) - fi - dnl - dnl Good old Red Hat Linux puts "pcap.h" in - dnl "/usr/include/pcap"; had the LBL folks done so, - dnl that would have been a good idea, but for - dnl the Red Hat folks to do so just breaks source - dnl compatibility with other systems. - dnl - dnl We work around this by assuming that, as we didn't - dnl find a local libpcap, libpcap is in /usr/lib or - dnl /usr/local/lib and that the corresponding header - dnl file is under one of those directories; if we don't - dnl find it in either of those directories, we check to - dnl see if it's in a "pcap" subdirectory of them and, - dnl if so, add that subdirectory to the "-I" list. - dnl - AC_MSG_CHECKING(for extraneous pcap header directories) - if test \( ! -r /usr/local/include/pcap.h \) -a \ - \( ! -r /usr/include/pcap.h \); then - if test -r /usr/local/include/pcap/pcap.h; then - d="/usr/local/include/pcap" - elif test -r /usr/include/pcap/pcap.h; then - d="/usr/include/pcap" - fi - fi - if test -z "$d" ; then - AC_MSG_RESULT(not found) - else - $2="-I$d $$2" - AC_MSG_RESULT(found -- -I$d added) - fi - else - $1=$libpcap - places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \ - egrep '/libpcap-[[0-9]]*.[[0-9]]*(.[[0-9]]*)?([[ab]][[0-9]]*)?$'` - if test -r $d/pcap.h; then - $2="-I$d $$2" - elif test -r $places/pcap.h; then - $2="-I$places $$2" - else - AC_MSG_ERROR(cannot find pcap.h, see INSTALL) - fi - AC_MSG_RESULT($libpcap) - fi - LIBS="$libpcap $LIBS" - case "$host_os" in - - aix*) - pseexe="/lib/pse.exp" - AC_MSG_CHECKING(for $pseexe) - if test -f $pseexe ; then - AC_MSG_RESULT(yes) - LIBS="$LIBS -I:$pseexe" - fi - # - # We need "-lodm" and "-lcfg", as libpcap requires them on - # AIX, and we just build a static libpcap.a and thus can't - # arrange that when you link with libpcap you automatically - # link with those libraries. - # - LIBS="$LIBS -lodm -lcfg" - ;; - esac - - dnl - dnl Check for "pcap_list_datalinks()", "pcap_set_datalink()", - dnl and "pcap_datalink_name_to_val()", and use substitute versions - dnl if they're not present. - dnl - AC_CHECK_FUNC(pcap_list_datalinks, - AC_DEFINE(HAVE_PCAP_LIST_DATALINKS), - [ - AC_LIBOBJ(datalinks) - ]) - AC_CHECK_FUNC(pcap_set_datalink, - AC_DEFINE(HAVE_PCAP_SET_DATALINK)) - AC_CHECK_FUNC(pcap_datalink_name_to_val, - [ - AC_DEFINE(HAVE_PCAP_DATALINK_NAME_TO_VAL) - AC_CHECK_FUNC(pcap_datalink_val_to_description, - AC_DEFINE(HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION), - [ - AC_LIBOBJ(dlnames) - ]) - ], - [ - AC_LIBOBJ(dlnames) - ]) - - dnl - dnl Check for "pcap_breakloop()"; you can't substitute for it if - dnl it's absent (it has hooks into the live capture routines), - dnl so just define the HAVE_ value if it's there. - dnl - AC_CHECK_FUNCS(pcap_breakloop) - - dnl - dnl Check for "pcap_dump_ftell()" and use a substitute version - dnl if it's not present. - AC_CHECK_FUNC(pcap_dump_ftell, - AC_DEFINE(HAVE_PCAP_DUMP_FTELL), - [ - AC_LIBOBJ(pcap_dump_ftell) - ]) -]) - -dnl -dnl Define RETSIGTYPE and RETSIGVAL -dnl -dnl usage: -dnl -dnl AC_LBL_TYPE_SIGNAL -dnl -dnl results: -dnl -dnl RETSIGTYPE (defined) -dnl RETSIGVAL (defined) -dnl -AC_DEFUN(AC_LBL_TYPE_SIGNAL, - [AC_BEFORE([$0], [AC_LBL_LIBPCAP]) - AC_TYPE_SIGNAL - if test "$ac_cv_type_signal" = void ; then - AC_DEFINE(RETSIGVAL,) - else - AC_DEFINE(RETSIGVAL,(0)) - fi - case "$host_os" in - - irix*) - AC_DEFINE(_BSD_SIGNALS) - ;; - - *) - dnl prefer sigaction() to sigset() - AC_CHECK_FUNCS(sigaction) - if test $ac_cv_func_sigaction = no ; then - AC_CHECK_FUNCS(sigset) - fi - ;; - esac]) - -dnl -dnl If using gcc, make sure we have ANSI ioctl definitions -dnl -dnl usage: -dnl -dnl AC_LBL_FIXINCLUDES -dnl -AC_DEFUN(AC_LBL_FIXINCLUDES, - [if test "$GCC" = yes ; then - AC_MSG_CHECKING(for ANSI ioctl definitions) - AC_CACHE_VAL(ac_cv_lbl_gcc_fixincludes, - AC_TRY_COMPILE( - [/* - * This generates a "duplicate case value" when fixincludes - * has not be run. - */ -# include <sys/types.h> -# include <sys/time.h> -# include <sys/ioctl.h> -# ifdef HAVE_SYS_IOCCOM_H -# include <sys/ioccom.h> -# endif], - [switch (0) { - case _IO('A', 1):; - case _IO('B', 1):; - }], - ac_cv_lbl_gcc_fixincludes=yes, - ac_cv_lbl_gcc_fixincludes=no)) - AC_MSG_RESULT($ac_cv_lbl_gcc_fixincludes) - if test $ac_cv_lbl_gcc_fixincludes = no ; then - # Don't cache failure - unset ac_cv_lbl_gcc_fixincludes - AC_MSG_ERROR(see the INSTALL for more info) - fi - fi]) - -dnl -dnl Check for flex, default to lex -dnl Require flex 2.4 or higher -dnl Check for bison, default to yacc -dnl Default to lex/yacc if both flex and bison are not available -dnl Define the yy prefix string if using flex and bison -dnl -dnl usage: -dnl -dnl AC_LBL_LEX_AND_YACC(lex, yacc, yyprefix) -dnl -dnl results: -dnl -dnl $1 (lex set) -dnl $2 (yacc appended) -dnl $3 (optional flex and bison -P prefix) -dnl -AC_DEFUN(AC_LBL_LEX_AND_YACC, - [AC_ARG_WITH(flex, [ --without-flex don't use flex]) - AC_ARG_WITH(bison, [ --without-bison don't use bison]) - if test "$with_flex" = no ; then - $1=lex - else - AC_CHECK_PROGS($1, flex, lex) - fi - if test "$$1" = flex ; then - # The -V flag was added in 2.4 - AC_MSG_CHECKING(for flex 2.4 or higher) - AC_CACHE_VAL(ac_cv_lbl_flex_v24, - if flex -V >/dev/null 2>&1; then - ac_cv_lbl_flex_v24=yes - else - ac_cv_lbl_flex_v24=no - fi) - AC_MSG_RESULT($ac_cv_lbl_flex_v24) - if test $ac_cv_lbl_flex_v24 = no ; then - s="2.4 or higher required" - AC_MSG_WARN(ignoring obsolete flex executable ($s)) - $1=lex - fi - fi - if test "$with_bison" = no ; then - $2=yacc - else - AC_CHECK_PROGS($2, bison, yacc) - fi - if test "$$2" = bison ; then - $2="$$2 -y" - fi - if test "$$1" != lex -a "$$2" = yacc -o "$$1" = lex -a "$$2" != yacc ; then - AC_MSG_WARN(don't have both flex and bison; reverting to lex/yacc) - $1=lex - $2=yacc - fi - if test "$$1" = flex -a -n "$3" ; then - $1="$$1 -P$3" - $2="$$2 -p $3" - fi]) - -dnl -dnl Checks to see if union wait is used with WEXITSTATUS() -dnl -dnl usage: -dnl -dnl AC_LBL_UNION_WAIT -dnl -dnl results: -dnl -dnl DECLWAITSTATUS (defined) -dnl -AC_DEFUN(AC_LBL_UNION_WAIT, - [AC_MSG_CHECKING(if union wait is used) - AC_CACHE_VAL(ac_cv_lbl_union_wait, - AC_TRY_COMPILE([ -# include <sys/types.h> -# include <sys/wait.h>], - [int status; - u_int i = WEXITSTATUS(status); - u_int j = waitpid(0, &status, 0);], - ac_cv_lbl_union_wait=no, - ac_cv_lbl_union_wait=yes)) - AC_MSG_RESULT($ac_cv_lbl_union_wait) - if test $ac_cv_lbl_union_wait = yes ; then - AC_DEFINE(DECLWAITSTATUS,union wait) - else - AC_DEFINE(DECLWAITSTATUS,int) - fi]) - -dnl -dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member -dnl -dnl usage: -dnl -dnl AC_LBL_SOCKADDR_SA_LEN -dnl -dnl results: -dnl -dnl HAVE_SOCKADDR_SA_LEN (defined) -dnl -AC_DEFUN(AC_LBL_SOCKADDR_SA_LEN, - [AC_MSG_CHECKING(if sockaddr struct has sa_len member) - AC_CACHE_VAL(ac_cv_lbl_sockaddr_has_sa_len, - AC_TRY_COMPILE([ -# include <sys/types.h> -# include <sys/socket.h>], - [u_int i = sizeof(((struct sockaddr *)0)->sa_len)], - ac_cv_lbl_sockaddr_has_sa_len=yes, - ac_cv_lbl_sockaddr_has_sa_len=no)) - AC_MSG_RESULT($ac_cv_lbl_sockaddr_has_sa_len) - if test $ac_cv_lbl_sockaddr_has_sa_len = yes ; then - AC_DEFINE(HAVE_SOCKADDR_SA_LEN) - fi]) - -dnl -dnl Checks to see if -R is used -dnl -dnl usage: -dnl -dnl AC_LBL_HAVE_RUN_PATH -dnl -dnl results: -dnl -dnl ac_cv_lbl_have_run_path (yes or no) -dnl -AC_DEFUN(AC_LBL_HAVE_RUN_PATH, - [AC_MSG_CHECKING(for ${CC-cc} -R) - AC_CACHE_VAL(ac_cv_lbl_have_run_path, - [echo 'main(){}' > conftest.c - ${CC-cc} -o conftest conftest.c -R/a1/b2/c3 >conftest.out 2>&1 - if test ! -s conftest.out ; then - ac_cv_lbl_have_run_path=yes - else - ac_cv_lbl_have_run_path=no - fi - rm -f conftest*]) - AC_MSG_RESULT($ac_cv_lbl_have_run_path) - ]) - -dnl -dnl Check whether a given format can be used to print 64-bit integers -dnl -AC_DEFUN(AC_LBL_CHECK_64BIT_FORMAT, - [ - AC_MSG_CHECKING([whether %$1x can be used to format 64-bit integers]) - AC_RUN_IFELSE( - [ - AC_LANG_SOURCE( - [[ -# ifdef HAVE_INTTYPES_H - #include <inttypes.h> -# endif -# ifdef HAVE_SYS_BITYPES_H - #include <sys/bitypes.h> -# endif - #include <stdio.h> - #include <sys/types.h> - - main() - { - u_int64_t t = 1; - char strbuf[16+1]; - sprintf(strbuf, "%016$1x", t << 32); - if (strcmp(strbuf, "0000000100000000") == 0) - exit(0); - else - exit(1); - } - ]]) - ], - [ - AC_DEFINE(PRId64, "$1d") - AC_DEFINE(PRIo64, "$1o") - AC_DEFINE(PRIx64, "$1x") - AC_DEFINE(PRIu64, "$1u") - AC_MSG_RESULT(yes) - ], - [ - AC_MSG_RESULT(no) - $2 - ]) - ]) - -dnl -dnl Checks to see if unaligned memory accesses fail -dnl -dnl usage: -dnl -dnl AC_LBL_UNALIGNED_ACCESS -dnl -dnl results: -dnl -dnl LBL_ALIGN (DEFINED) -dnl -AC_DEFUN(AC_LBL_UNALIGNED_ACCESS, - [AC_MSG_CHECKING(if unaligned accesses fail) - AC_CACHE_VAL(ac_cv_lbl_unaligned_fail, - [case "$host_cpu" in - - # - # These are CPU types where: - # - # the CPU faults on an unaligned access, but at least some - # OSes that support that CPU catch the fault and simulate - # the unaligned access (e.g., Alpha/{Digital,Tru64} UNIX) - - # the simulation is slow, so we don't want to use it; - # - # the CPU, I infer (from the old - # - # XXX: should also check that they don't do weird things (like on arm) - # - # comment) doesn't fault on unaligned accesses, but doesn't - # do a normal unaligned fetch, either (e.g., presumably, ARM); - # - # for whatever reason, the test program doesn't work - # (this has been claimed to be the case for several of those - # CPUs - I don't know what the problem is; the problem - # was reported as "the test program dumps core" for SuperH, - # but that's what the test program is *supposed* to do - - # it dumps core before it writes anything, so the test - # for an empty output file should find an empty output - # file and conclude that unaligned accesses don't work). - # - # This run-time test won't work if you're cross-compiling, so - # in order to support cross-compiling for a particular CPU, - # we have to wire in the list of CPU types anyway, as far as - # I know, so perhaps we should just have a set of CPUs on - # which we know it doesn't work, a set of CPUs on which we - # know it does work, and have the script just fail on other - # cpu types and update it when such a failure occurs. - # - alpha*|arm*|hp*|mips*|sh*|sparc*|ia64|nv1) - ac_cv_lbl_unaligned_fail=yes - ;; - - *) - cat >conftest.c <<EOF -# include <sys/types.h> -# include <sys/wait.h> -# include <stdio.h> - unsigned char a[[5]] = { 1, 2, 3, 4, 5 }; - main() { - unsigned int i; - pid_t pid; - int status; - /* avoid "core dumped" message */ - pid = fork(); - if (pid < 0) - exit(2); - if (pid > 0) { - /* parent */ - pid = waitpid(pid, &status, 0); - if (pid < 0) - exit(3); - exit(!WIFEXITED(status)); - } - /* child */ - i = *(unsigned int *)&a[[1]]; - printf("%d\n", i); - exit(0); - } -EOF - ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \ - conftest.c $LIBS >/dev/null 2>&1 - if test ! -x conftest ; then - dnl failed to compile for some reason - ac_cv_lbl_unaligned_fail=yes - else - ./conftest >conftest.out - if test ! -s conftest.out ; then - ac_cv_lbl_unaligned_fail=yes - else - ac_cv_lbl_unaligned_fail=no - fi - fi - rm -f conftest* core core.conftest - ;; - esac]) - AC_MSG_RESULT($ac_cv_lbl_unaligned_fail) - if test $ac_cv_lbl_unaligned_fail = yes ; then - AC_DEFINE(LBL_ALIGN) - fi]) - -dnl -dnl If using gcc and the file .devel exists: -dnl Compile with -g (if supported) and -Wall -dnl If using gcc 2 or later, do extra prototype checking and some other -dnl checks -dnl If an os prototype include exists, symlink os-proto.h to it -dnl -dnl usage: -dnl -dnl AC_LBL_DEVEL(copt) -dnl -dnl results: -dnl -dnl $1 (copt appended) -dnl HAVE_OS_PROTO_H (defined) -dnl os-proto.h (symlinked) -dnl -AC_DEFUN(AC_LBL_DEVEL, - [rm -f os-proto.h - if test "${LBL_CFLAGS+set}" = set; then - $1="$$1 ${LBL_CFLAGS}" - fi - if test -f .devel ; then - if test "$GCC" = yes ; then - if test "${LBL_CFLAGS+set}" != set; then - if test "$ac_cv_prog_cc_g" = yes ; then - $1="-g $$1" - fi - $1="$$1 -Wall" - if test $ac_cv_lbl_gcc_vers -gt 1 ; then - $1="$$1 -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -W" - fi - fi - else - case "$host_os" in - - irix6*) - V_CCOPT="$V_CCOPT -n32" - ;; - - *) - ;; - esac - fi - os=`echo $host_os | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]].*$/\1/'` - name="lbl/os-$os.h" - if test -f $name ; then - ln -s $name os-proto.h - AC_DEFINE(HAVE_OS_PROTO_H) - else - AC_MSG_WARN(can't find $name) - fi - fi]) - -dnl -dnl Improved version of AC_CHECK_LIB -dnl -dnl Thanks to John Hawkinson (jhawk@mit.edu) -dnl -dnl usage: -dnl -dnl AC_LBL_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [, -dnl ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]]) -dnl -dnl results: -dnl -dnl LIBS -dnl -dnl XXX - "AC_LBL_LIBRARY_NET" was redone to use "AC_SEARCH_LIBS" -dnl rather than "AC_LBL_CHECK_LIB", so this isn't used any more. -dnl We keep it around for reference purposes in case it's ever -dnl useful in the future. -dnl - -define(AC_LBL_CHECK_LIB, -[AC_MSG_CHECKING([for $2 in -l$1]) -dnl Use a cache variable name containing the library, function -dnl name, and extra libraries to link with, because the test really is -dnl for library $1 defining function $2, when linked with potinal -dnl library $5, not just for library $1. Separate tests with the same -dnl $1 and different $2's or $5's may have different results. -ac_lib_var=`echo $1['_']$2['_']$5 | sed 'y%./+- %__p__%'` -AC_CACHE_VAL(ac_cv_lbl_lib_$ac_lib_var, -[ac_save_LIBS="$LIBS" -LIBS="-l$1 $5 $LIBS" -AC_TRY_LINK(dnl -ifelse([$2], [main], , dnl Avoid conflicting decl of main. -[/* Override any gcc2 internal prototype to avoid an error. */ -]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus -extern "C" -#endif -])dnl -[/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $2(); -]), - [$2()], - eval "ac_cv_lbl_lib_$ac_lib_var=yes", - eval "ac_cv_lbl_lib_$ac_lib_var=no") -LIBS="$ac_save_LIBS" -])dnl -if eval "test \"`echo '$ac_cv_lbl_lib_'$ac_lib_var`\" = yes"; then - AC_MSG_RESULT(yes) - ifelse([$3], , -[changequote(, )dnl - ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \ - -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` -changequote([, ])dnl - AC_DEFINE_UNQUOTED($ac_tr_lib) - LIBS="-l$1 $LIBS" -], [$3]) -else - AC_MSG_RESULT(no) -ifelse([$4], , , [$4 -])dnl -fi -]) - -dnl -dnl AC_LBL_LIBRARY_NET -dnl -dnl This test is for network applications that need socket() and -dnl gethostbyname() -ish functions. Under Solaris, those applications -dnl need to link with "-lsocket -lnsl". Under IRIX, they need to link -dnl with "-lnsl" but should *not* link with "-lsocket" because -dnl libsocket.a breaks a number of things (for instance: -dnl gethostbyname() under IRIX 5.2, and snoop sockets under most -dnl versions of IRIX). -dnl -dnl Unfortunately, many application developers are not aware of this, -dnl and mistakenly write tests that cause -lsocket to be used under -dnl IRIX. It is also easy to write tests that cause -lnsl to be used -dnl under operating systems where neither are necessary (or useful), -dnl such as SunOS 4.1.4, which uses -lnsl for TLI. -dnl -dnl This test exists so that every application developer does not test -dnl this in a different, and subtly broken fashion. - -dnl It has been argued that this test should be broken up into two -dnl seperate tests, one for the resolver libraries, and one for the -dnl libraries necessary for using Sockets API. Unfortunately, the two -dnl are carefully intertwined and allowing the autoconf user to use -dnl them independantly potentially results in unfortunate ordering -dnl dependancies -- as such, such component macros would have to -dnl carefully use indirection and be aware if the other components were -dnl executed. Since other autoconf macros do not go to this trouble, -dnl and almost no applications use sockets without the resolver, this -dnl complexity has not been implemented. -dnl -dnl The check for libresolv is in case you are attempting to link -dnl statically and happen to have a libresolv.a lying around (and no -dnl libnsl.a). -dnl -AC_DEFUN(AC_LBL_LIBRARY_NET, [ - # Most operating systems have gethostbyname() in the default searched - # libraries (i.e. libc): - # Some OSes (eg. Solaris) place it in libnsl - # Some strange OSes (SINIX) have it in libsocket: - AC_SEARCH_LIBS(gethostbyname, nsl socket resolv) - # Unfortunately libsocket sometimes depends on libnsl and - # AC_SEARCH_LIBS isn't up to the task of handling dependencies like this. - if test "$ac_cv_search_gethostbyname" = "no" - then - AC_CHECK_LIB(socket, gethostbyname, - LIBS="-lsocket -lnsl $LIBS", , -lnsl) - fi - AC_SEARCH_LIBS(socket, socket, , - AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl)) - # DLPI needs putmsg under HPUX so test for -lstr while we're at it - AC_SEARCH_LIBS(putmsg, str) - ]) - -dnl Copyright (c) 1999 WIDE Project. All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that the following conditions -dnl are met: -dnl 1. Redistributions of source code must retain the above copyright -dnl notice, this list of conditions and the following disclaimer. -dnl 2. Redistributions in binary form must reproduce the above copyright -dnl notice, this list of conditions and the following disclaimer in the -dnl documentation and/or other materials provided with the distribution. -dnl 3. Neither the name of the project nor the names of its contributors -dnl may be used to endorse or promote products derived from this software -dnl without specific prior written permission. -dnl -dnl THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND -dnl ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -dnl IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -dnl ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE -dnl FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -dnl OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -dnl HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -dnl LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -dnl OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -dnl SUCH DAMAGE. - -dnl -dnl Checks to see if AF_INET6 is defined -AC_DEFUN(AC_CHECK_AF_INET6, [ - AC_MSG_CHECKING(for AF_INET6) - AC_CACHE_VAL($1, - AC_TRY_COMPILE([ -# include <sys/types.h> -# include <sys/socket.h>], - [int a = AF_INET6], - $1=yes, - $1=no)) - AC_MSG_RESULT($$1) - if test $$1 = yes ; then - AC_DEFINE(HAVE_AF_INET6) - fi -]) - -dnl -dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member -dnl borrowed from LBL libpcap -AC_DEFUN(AC_CHECK_SA_LEN, [ - AC_MSG_CHECKING(if sockaddr struct has sa_len member) - AC_CACHE_VAL($1, - AC_TRY_COMPILE([ -# include <sys/types.h> -# include <sys/socket.h>], - [u_int i = sizeof(((struct sockaddr *)0)->sa_len)], - $1=yes, - $1=no)) - AC_MSG_RESULT($$1) - if test $$1 = yes ; then - AC_DEFINE(HAVE_SOCKADDR_SA_LEN) - fi -]) - -dnl -dnl Checks for portable prototype declaration macro -AC_DEFUN(AC_CHECK_PORTABLE_PROTO, [ - AC_MSG_CHECKING(for __P) - AC_CACHE_VAL($1, - AC_TRY_COMPILE([ -# include <unistd.h>], - [int f __P(())], - $1=yes, - $1=no)) - AC_MSG_RESULT($$1) - if test $$1 = yes; then - AC_DEFINE(HAVE_PORTABLE_PROTOTYPE) - fi -]) - -dnl checks for u_intXX_t -AC_DEFUN(AC_CHECK_BITTYPES, [ - $1=yes -dnl check for u_int8_t - AC_MSG_CHECKING(for u_int8_t) - AC_CACHE_VAL(ac_cv_u_int8_t, - AC_TRY_COMPILE([ -# include <sys/types.h>], - [u_int8_t i], - ac_cv_u_int8_t=yes, - ac_cv_u_int8_t=no)) - AC_MSG_RESULT($ac_cv_u_int8_t) - if test $ac_cv_u_int8_t = yes; then - AC_DEFINE(HAVE_U_INT8_T) - else - $1=no - fi -dnl check for u_int16_t - AC_MSG_CHECKING(for u_int16_t) - AC_CACHE_VAL(ac_cv_u_int16_t, - AC_TRY_COMPILE([ -# include <sys/types.h>], - [u_int16_t i], - ac_cv_u_int16_t=yes, - ac_cv_u_int16_t=no)) - AC_MSG_RESULT($ac_cv_u_int16_t) - if test $ac_cv_u_int16_t = yes; then - AC_DEFINE(HAVE_U_INT16_T) - else - $1=no - fi -dnl check for u_int32_t - AC_MSG_CHECKING(for u_int32_t) - AC_CACHE_VAL(ac_cv_u_int32_t, - AC_TRY_COMPILE([ -# include <sys/types.h>], - [u_int32_t i], - ac_cv_u_int32_t=yes, - ac_cv_u_int32_t=no)) - AC_MSG_RESULT($ac_cv_u_int32_t) - if test $ac_cv_u_int32_t = yes; then - AC_DEFINE(HAVE_U_INT32_T) - else - $1=no - fi -dnl check for u_int64_t - AC_MSG_CHECKING(for u_int64_t) - AC_CACHE_VAL(ac_cv_u_int64_t, - AC_TRY_COMPILE([ -# include <sys/types.h>], - [u_int64_t i], - ac_cv_u_int64_t=yes, - ac_cv_u_int64_t=no)) - AC_MSG_RESULT($ac_cv_u_int64_t) - if test $ac_cv_u_int64_t = yes; then - AC_DEFINE(HAVE_U_INT64_T) - else - $1=no - fi -]) - -dnl -dnl Checks for addrinfo structure -AC_DEFUN(AC_STRUCT_ADDRINFO, [ - AC_MSG_CHECKING(for addrinfo) - AC_CACHE_VAL($1, - AC_TRY_COMPILE([ -# include <netdb.h>], - [struct addrinfo a], - $1=yes, - $1=no)) - AC_MSG_RESULT($$1) - if test $$1 = yes; then - AC_DEFINE(HAVE_ADDRINFO) - else - AC_DEFINE(NEED_ADDRINFO_H) - fi -]) - -dnl -dnl Checks for NI_MAXSERV -AC_DEFUN(AC_NI_MAXSERV, [ - AC_MSG_CHECKING(for NI_MAXSERV) - AC_CACHE_VAL($1, - AC_EGREP_CPP(yes, [#include <netdb.h> -#ifdef NI_MAXSERV -yes -#endif], - $1=yes, - $1=no)) - AC_MSG_RESULT($$1) - if test $$1 != yes; then - AC_DEFINE(NEED_ADDRINFO_H) - fi -]) - -dnl -dnl Checks for NI_NAMEREQD -AC_DEFUN(AC_NI_NAMEREQD, [ - AC_MSG_CHECKING(for NI_NAMEREQD) - AC_CACHE_VAL($1, - AC_EGREP_CPP(yes, [#include <netdb.h> -#ifdef NI_NOFQDN -yes -#endif], - $1=yes, - $1=no)) - AC_MSG_RESULT($$1) - if test $$1 != yes; then - AC_DEFINE(NEED_ADDRINFO_H) - fi -]) - -dnl -dnl Checks for sockaddr_storage structure -AC_DEFUN(AC_STRUCT_SA_STORAGE, [ - AC_MSG_CHECKING(for sockaddr_storage) - AC_CACHE_VAL($1, - AC_TRY_COMPILE([ -# include <sys/types.h> -# include <sys/socket.h>], - [struct sockaddr_storage s], - $1=yes, - $1=no)) - AC_MSG_RESULT($$1) - if test $$1 = yes; then - AC_DEFINE(HAVE_SOCKADDR_STORAGE) - fi -]) - -dnl -dnl Checks for macro of IP address size -AC_DEFUN(AC_CHECK_ADDRSZ, [ - $1=yes -dnl check for INADDRSZ - AC_MSG_CHECKING(for INADDRSZ) - AC_CACHE_VAL(ac_cv_inaddrsz, - AC_TRY_COMPILE([ -# include <arpa/nameser.h>], - [int a = INADDRSZ], - ac_cv_inaddrsz=yes, - ac_cv_inaddrsz=no)) - AC_MSG_RESULT($ac_cv_inaddrsz) - if test $ac_cv_inaddrsz = yes; then - AC_DEFINE(HAVE_INADDRSZ) - else - $1=no - fi -dnl check for IN6ADDRSZ - AC_MSG_CHECKING(for IN6ADDRSZ) - AC_CACHE_VAL(ac_cv_in6addrsz, - AC_TRY_COMPILE([ -# include <arpa/nameser.h>], - [int a = IN6ADDRSZ], - ac_cv_in6addrsz=yes, - ac_cv_in6addrsz=no)) - AC_MSG_RESULT($ac_cv_in6addrsz) - if test $ac_cv_in6addrsz = yes; then - AC_DEFINE(HAVE_IN6ADDRSZ) - else - $1=no - fi -]) - -dnl -dnl check for RES_USE_INET6 -AC_DEFUN(AC_CHECK_RES_USE_INET6, [ - AC_MSG_CHECKING(for RES_USE_INET6) - AC_CACHE_VAL($1, - AC_TRY_COMPILE([ -# include <sys/types.h> -# include <netinet/in.h> -# include <resolv.h>], - [int a = RES_USE_INET6], - $1=yes, - $1=no)) - AC_MSG_RESULT($$1) - if test $$1 = yes; then - AC_DEFINE(HAVE_RES_USE_INET6) - fi -]) - -dnl -dnl check for AAAA -AC_DEFUN(AC_CHECK_AAAA, [ - AC_MSG_CHECKING(for AAAA) - AC_CACHE_VAL($1, - AC_TRY_COMPILE([ -# include <sys/types.h> -# include <arpa/nameser.h>], - [int a = T_AAAA], - $1=yes, - $1=no)) - AC_MSG_RESULT($$1) - if test $$1 = yes; then - AC_DEFINE(HAVE_AAAA) - fi -]) - -dnl -dnl check for struct res_state_ext -AC_DEFUN(AC_STRUCT_RES_STATE_EXT, [ - AC_MSG_CHECKING(for res_state_ext) - AC_CACHE_VAL($1, - AC_TRY_COMPILE([ -# include <sys/types.h> -# include <netinet/in.h> -# include <netinet6/in6.h> -# include <resolv.h>], - [struct __res_state_ext e], - $1=yes, - $1=no)) - AC_MSG_RESULT($$1) - if test $$1 = yes; then - AC_DEFINE(HAVE_RES_STATE_EXT) - fi -]) - -dnl -dnl check for struct res_state_ext -AC_DEFUN(AC_STRUCT_RES_STATE, [ - AC_MSG_CHECKING(for nsort in res_state) - AC_CACHE_VAL($1, - AC_TRY_COMPILE([ -# include <sys/types.h> -# include <netinet/in.h> -# include <netinet6/in6.h> -# include <resolv.h>], - [struct __res_state e; e.nsort = 0], - $1=yes, - $1=no)) - AC_MSG_RESULT($$1) - if test $$1 = yes; then - AC_DEFINE(HAVE_NEW_RES_STATE) - fi -]) - -dnl -dnl check for h_errno -AC_DEFUN(AC_VAR_H_ERRNO, [ - AC_MSG_CHECKING(for h_errno) - AC_CACHE_VAL(ac_cv_var_h_errno, - AC_TRY_COMPILE([ -# include <sys/types.h> -# include <netdb.h>], - [int foo = h_errno;], - ac_cv_var_h_errno=yes, - ac_cv_var_h_errno=no)) - AC_MSG_RESULT($ac_cv_var_h_errno) - if test "$ac_cv_var_h_errno" = "yes"; then - AC_DEFINE(HAVE_H_ERRNO) - fi -]) - -dnl -dnl Test for __attribute__ -dnl - -AC_DEFUN(AC_C___ATTRIBUTE__, [ -AC_MSG_CHECKING(for __attribute__) -AC_CACHE_VAL(ac_cv___attribute__, [ -AC_COMPILE_IFELSE( - AC_LANG_SOURCE([[ -#include <stdlib.h> - -static void foo(void) __attribute__ ((noreturn)); - -static void -foo(void) -{ - exit(1); -} - -int -main(int argc, char **argv) -{ - foo(); -} - ]]), -ac_cv___attribute__=yes, -ac_cv___attribute__=no)]) -if test "$ac_cv___attribute__" = "yes"; then - AC_DEFINE(HAVE___ATTRIBUTE__, 1, [define if your compiler has __attribute__]) - V_DEFS="$V_DEFS -D_U_=\"__attribute__((unused))\"" -else - V_DEFS="$V_DEFS -D_U_=\"\"" -fi -AC_MSG_RESULT($ac_cv___attribute__) -]) diff --git a/contrib/tcpdump/acsite.m4 b/contrib/tcpdump/acsite.m4 deleted file mode 100644 index 746faf1e1a4fe..0000000000000 --- a/contrib/tcpdump/acsite.m4 +++ /dev/null @@ -1,505 +0,0 @@ -dnl @(#) $Header: acsite.m4,v 1.41 96/11/29 15:30:40 leres Exp $ (LBL) -dnl -dnl Copyright (c) 1995, 1996 -dnl The Regents of the University of California. All rights reserved. -dnl -dnl Redistribution and use in source and binary forms, with or without -dnl modification, are permitted provided that: (1) source code distributions -dnl retain the above copyright notice and this paragraph in its entirety, (2) -dnl distributions including binary code include the above copyright notice and -dnl this paragraph in its entirety in the documentation or other materials -dnl provided with the distribution, and (3) all advertising materials mentioning -dnl features or use of this software display the following acknowledgement: -dnl ``This product includes software developed by the University of California, -dnl Lawrence Berkeley Laboratory and its contributors.'' Neither the name of -dnl the University nor the names of its contributors may be used to endorse -dnl or promote products derived from this software without specific prior -dnl written permission. -dnl THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED -dnl WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF -dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -dnl -dnl LBL autoconf macros -dnl - -dnl -dnl Determine which compiler we're using (cc or gcc) -dnl If using gcc, determine the version number -dnl If using cc, require that it support ansi prototypes -dnl If using gcc, use -O2 (otherwise use -O) -dnl If using cc, explicitly specify /usr/local/include -dnl -dnl usage: -dnl -dnl AC_LBL_C_INIT(copt, incls) -dnl -dnl results: -dnl -dnl $1 (copt set) -dnl $2 (incls set) -dnl CC -dnl ac_cv_gcc_vers -dnl LBL_CFLAGS -dnl -dnl XXX need to add test to make sure ac_prog_cc hasn't been called -AC_DEFUN(AC_LBL_C_INIT, - [AC_PREREQ(2.12) - $1=-O - $2="" - if test "${CFLAGS+set}" = set; then - LBL_CFLAGS="$CFLAGS" - fi - if test -z "$CC" ; then - case "$target_os" in - - bsdi*) - AC_CHECK_PROG(SHLICC2, shlicc2, yes, no) - if test $SHLICC2 = yes ; then - CC=shlicc2 - export CC - fi - ;; - esac - fi - AC_PROG_CC - if test $ac_cv_prog_gcc = yes ; then - if test "$SHLICC2" = yes ; then - ac_cv_gcc_vers=2 - $1=-O2 - else - AC_MSG_CHECKING(gcc version) - AC_CACHE_VAL(ac_cv_gcc_vers, - ac_cv_gcc_vers=`$CC -v 2>&1 | \ - sed -n -e '$s/.* //' -e '$s/\..*//p'`) - AC_MSG_RESULT($ac_cv_gcc_vers) - if test $ac_cv_gcc_vers -gt 1 ; then - $1=-O2 - fi - fi - else - AC_MSG_CHECKING(that $CC handles ansi prototypes) - AC_CACHE_VAL(ac_cv_cc_ansi_prototypes, - AC_TRY_COMPILE( - [#include <sys/types.h>], - [int frob(int, char *)], - ac_cv_cc_ansi_prototypes=yes, - ac_cv_cc_ansi_prototypes=no)) - AC_MSG_RESULT($ac_cv_cc_ansi_prototypes) - if test $ac_cv_cc_ansi_prototypes = no ; then - case "$target_os" in - - hpux*) - AC_MSG_CHECKING(for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)) - savedcflags="$CFLAGS" - CFLAGS="-Aa -D_HPUX_SOURCE $CFLAGS" - AC_CACHE_VAL(ac_cv_cc_hpux_cc_aa, - AC_TRY_COMPILE( - [#include <sys/types.h>], - [int frob(int, char *)], - ac_cv_cc_hpux_cc_aa=yes, - ac_cv_cc_hpux_cc_aa=no)) - AC_MSG_RESULT($ac_cv_cc_hpux_cc_aa) - if test $ac_cv_cc_hpux_cc_aa = no ; then - AC_MSG_ERROR(see the INSTALL for more info) - fi - CFLAGS="$savedcflags" - V_CCOPT="-Aa $V_CCOPT" - AC_DEFINE(_HPUX_SOURCE) - ;; - - *) - AC_MSG_ERROR(see the INSTALL for more info) - ;; - esac - fi - $2=-I/usr/local/include - - case "$target_os" in - - irix*) - V_CCOPT="$V_CCOPT -xansi -signed -g3" - ;; - - osf*) - V_CCOPT="$V_CCOPT -g3" - ;; - - ultrix*) - AC_MSG_CHECKING(that Ultrix $CC hacks const in prototypes) - AC_CACHE_VAL(ac_cv_cc_const_proto, - AC_TRY_COMPILE( - [#include <sys/types.h>], - [struct a { int b; }; - void c(const struct a *)], - ac_cv_cc_const_proto=yes, - ac_cv_cc_const_proto=no)) - AC_MSG_RESULT($ac_cv_cc_const_proto) - if test $ac_cv_cc_const_proto = no ; then - AC_DEFINE(const,) - fi - ;; - esac - fi -]) - -dnl -dnl Use pfopen.c if available and pfopen() not in standard libraries -dnl Require libpcap -dnl Look for libpcap in .. -dnl Use the installed libpcap if there is no local version -dnl -dnl usage: -dnl -dnl AC_LBL_LIBPCAP(pcapdep, incls) -dnl -dnl results: -dnl -dnl $1 (pcapdep set) -dnl $2 (incls appended) -dnl LIBS -dnl -AC_DEFUN(AC_LBL_LIBPCAP, - [pfopen=/usr/examples/packetfilter/pfopen.c - if test -f $pfopen ; then - AC_CHECK_FUNCS(pfopen) - if test $ac_cv_func_pfopen = "no" ; then - AC_MSG_RESULT(Using $pfopen) - LIBS="$LIBS $pfopen" - fi - fi - AC_MSG_CHECKING(for local pcap library) - libpcap=FAIL - lastdir=FAIL - places=`ls .. | sed -e 's,/$,,' -e 's,^,../,' | \ - egrep '/libpcap-[[0-9]]*\.[[0-9]]*(\.[[0-9]]*)?([[ab]][[0-9]]*)?$'` - for dir in $places ../libpcap libpcap ; do - basedir=`echo $dir | sed -e 's/[[ab]][[0-9]]*$//'` - if test $lastdir = $basedir ; then - dnl skip alphas when an actual release is present - continue; - fi - lastdir=$dir - if test -r $dir/pcap.c ; then - libpcap=$dir/libpcap.a - d=$dir - dnl continue and select the last one that exists - fi - done - if test $libpcap = FAIL ; then - AC_MSG_RESULT(not found) - AC_CHECK_LIB(pcap, main, libpcap="-lpcap") - if test $libpcap = FAIL ; then - AC_MSG_ERROR(see the INSTALL doc for more info) - fi - else - $1=$libpcap - $2="-I$d $$2" - AC_MSG_RESULT($libpcap) - fi - LIBS="$libpcap $LIBS"]) - -dnl -dnl Define RETSIGTYPE and RETSIGVAL -dnl -dnl usage: -dnl -dnl AC_LBL_TYPE_SIGNAL -dnl -dnl results: -dnl -dnl RETSIGTYPE (defined) -dnl RETSIGVAL (defined) -dnl -AC_DEFUN(AC_LBL_TYPE_SIGNAL, - [AC_TYPE_SIGNAL - if test "$ac_cv_type_signal" = void ; then - AC_DEFINE(RETSIGVAL,) - else - AC_DEFINE(RETSIGVAL,(0)) - fi - case "$target_os" in - - irix*) - AC_DEFINE(_BSD_SIGNALS) - ;; - - *) - AC_CHECK_FUNCS(sigset) - if test $ac_cv_func_sigset = yes ; then - AC_DEFINE(signal, sigset) - fi - ;; - esac]) - -dnl -dnl If using gcc, see if fixincludes should be run -dnl -dnl usage: -dnl -dnl AC_LBL_FIXINCLUDES -dnl -AC_DEFUN(AC_LBL_FIXINCLUDES, - [if test $ac_cv_prog_gcc = yes ; then - AC_MSG_CHECKING(if fixincludes is needed) - AC_CACHE_VAL(ac_cv_gcc_fixincludes, - AC_TRY_COMPILE( - [/* - * This generates a "duplicate case value" when fixincludes - * has not be run. - */ -# include <sys/types.h> -# include <sys/time.h> -# include <sys/ioctl.h> -# ifdef HAVE_SYS_IOCCOM_H -# include <sys/ioccom.h> -# endif], - [switch (0) { - case _IO('A', 1):; - case _IO('B', 1):; - }], - ac_cv_gcc_fixincludes=yes, - ac_cv_gcc_fixincludes=no)) - AC_MSG_RESULT($ac_cv_gcc_fixincludes) - if test $ac_cv_gcc_fixincludes = no ; then - # Don't cache failure - unset ac_cv_gcc_fixincludes - AC_MSG_ERROR(see the INSTALL for more info) - fi - fi]) - -dnl -dnl Check for flex, default to lex -dnl Require flex 2.4 or higher -dnl Check for bison, default to yacc -dnl Default to lex/yacc if both flex and bison are not available -dnl Define the yy prefix string if using flex and bison -dnl -dnl usage: -dnl -dnl AC_LBL_LEX_AND_YACC(lex, yacc, yyprefix) -dnl -dnl results: -dnl -dnl $1 (lex set) -dnl $2 (yacc appended) -dnl $3 (optional flex and bison -P prefix) -dnl -AC_DEFUN(AC_LBL_LEX_AND_YACC, - [AC_CHECK_PROGS($1, flex, lex) - if test "$$1" = flex ; then - # The -V flag was added in 2.4 - AC_MSG_CHECKING(for flex 2.4 or higher) - AC_CACHE_VAL(ac_cv_flex_v24, - if flex -V >/dev/null 2>&1; then - ac_cv_flex_v24=yes - else - ac_cv_flex_v24=no - fi) - AC_MSG_RESULT($ac_cv_flex_v24) - if test $ac_cv_flex_v24 = no ; then - s="2.4 or higher required" - AC_MSG_WARN(ignoring obsolete flex executable ($s)) - $1=lex - fi - fi - AC_CHECK_PROGS($2, bison, yacc) - if test "$$2" = bison ; then - $2="$$2 -y" - fi - if test "$$1" != lex -a "$$2" = yacc -o "$$1" = lex -a "$$2" != yacc ; then - AC_MSG_WARN(don't have both flex and bison; reverting to lex/yacc) - $1=lex - $2=yacc - fi - if test "$$1" = flex -a -n "$3" ; then - $1="$$1 -P$3" - $2="$$2 -p $3" - fi]) - -dnl -dnl Checks to see if union wait is used with WEXITSTATUS() -dnl -dnl usage: -dnl -dnl AC_LBL_UNION_WAIT -dnl -dnl results: -dnl -dnl DECLWAITSTATUS (defined) -dnl -AC_DEFUN(AC_LBL_UNION_WAIT, - [AC_MSG_CHECKING(if union wait is used) - AC_CACHE_VAL(ac_cv_union_wait, - AC_TRY_COMPILE([ -# include <sys/types.h> -# include <sys/wait.h>], - [int status; - u_int i = WEXITSTATUS(status); - u_int j = waitpid(0, &status, 0);], - ac_cv_union_wait=no, - ac_cv_union_wait=yes)) - AC_MSG_RESULT($ac_cv_union_wait) - if test $ac_cv_union_wait = yes ; then - AC_DEFINE(DECLWAITSTATUS,union wait) - else - AC_DEFINE(DECLWAITSTATUS,int) - fi]) - -dnl -dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member -dnl -dnl usage: -dnl -dnl AC_LBL_SOCKADDR_SA_LEN -dnl -dnl results: -dnl -dnl HAVE_SOCKADDR_SA_LEN (defined) -dnl -AC_DEFUN(AC_LBL_SOCKADDR_SA_LEN, - [AC_MSG_CHECKING(if sockaddr struct has sa_len member) - AC_CACHE_VAL(ac_cv_sockaddr_has_sa_len, - AC_TRY_COMPILE([ -# include <sys/types.h> -# include <sys/socket.h>], - [u_int i = sizeof(((struct sockaddr *)0)->sa_len)], - ac_cv_sockaddr_has_sa_len=yes, - ac_cv_sockaddr_has_sa_len=no)) - AC_MSG_RESULT($ac_cv_sockaddr_has_sa_len) - if test $ac_cv_sockaddr_has_sa_len = yes ; then - AC_DEFINE(HAVE_SOCKADDR_SA_LEN) - fi]) - -dnl -dnl Checks to see if -R is used -dnl -dnl usage: -dnl -dnl AC_LBL_HAVE_RUN_PATH -dnl -dnl results: -dnl -dnl ac_cv_have_run_path (yes or no) -dnl -AC_DEFUN(AC_LBL_HAVE_RUN_PATH, - [AC_MSG_CHECKING(for ${CC-cc} -R) - AC_CACHE_VAL(ac_cv_have_run_path, - [echo 'main(){}' > conftest.c - ${CC-cc} -o conftest conftest.c -R/a1/b2/c3 >conftest.out 2>&1 - if test ! -s conftest.out ; then - ac_cv_have_run_path=yes - else - ac_cv_have_run_path=no - fi - rm -f conftest*]) - AC_MSG_RESULT($ac_cv_have_run_path) - ]) - -dnl -dnl Checks to see if unaligned memory accesses fail -dnl -dnl usage: -dnl -dnl AC_LBL_UNALIGNED_ACCESS -dnl -dnl results: -dnl -dnl LBL_ALIGN (DEFINED) -dnl -AC_DEFUN(AC_LBL_UNALIGNED_ACCESS, - [AC_MSG_CHECKING(if unaligned accesses fail) - AC_CACHE_VAL(ac_cv_unaligned_fail, - [case "$target_cpu" in - - alpha|hp*|mips|sparc) - ac_cv_unaligned_fail=yes - ;; - - *) - cat >conftest.c <<EOF -# include <sys/types.h> -# include <sys/wait.h> -# include <stdio.h> - unsigned char a[[5]] = { 1, 2, 3, 4, 5 }; - main() { - unsigned int i; - pid_t pid; - int status; - /* avoid "core dumped" message */ - pid = fork(); - if (pid < 0) - exit(2); - if (pid > 0) { - /* parent */ - pid = waitpid(pid, &status, 0); - if (pid < 0) - exit(3); - exit(!WIFEXITED(status)); - } - /* child */ - i = *(unsigned int *)&a[[1]]; - printf("%d\n", i); - exit(0); - } -EOF - ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \ - conftest.c $LIBS >/dev/null 2>&1 - if test ! -x conftest ; then - dnl failed to compile for some reason - ac_cv_unaligned_fail=yes - else - ./conftest >conftest.out - if test ! -s conftest.out ; then - ac_cv_unaligned_fail=yes - else - ac_cv_unaligned_fail=no - fi - fi - rm -f conftest* core core.conftest - ;; - esac]) - AC_MSG_RESULT($ac_cv_unaligned_fail) - if test $ac_cv_unaligned_fail = yes ; then - AC_DEFINE(LBL_ALIGN) - fi]) - -dnl -dnl If using gcc and the file .devel exists: -dnl Compile with -g (if supported) and -Wall -dnl If using gcc 2, do extra prototype checking -dnl If an os prototype include exists, symlink os-proto.h to it -dnl -dnl usage: -dnl -dnl AC_LBL_DEVEL(copt) -dnl -dnl results: -dnl -dnl $1 (copt appended) -dnl HAVE_OS_PROTO_H (defined) -dnl os-proto.h (symlinked) -dnl -AC_DEFUN(AC_LBL_DEVEL, - [rm -f os-proto.h - if test "${LBL_CFLAGS+set}" = set; then - $1="$$1 ${LBL_CFLAGS}" - fi - if test $ac_cv_prog_gcc = yes -a -f .devel ; then - if test "${LBL_CFLAGS+set}" != set; then - if test "$ac_cv_prog_cc_g" = yes ; then - $1="-g $$1" - fi - $1="$$1 -Wall" - if test $ac_cv_gcc_vers -gt 1 ; then - $1="$$1 -Wmissing-prototypes -Wstrict-prototypes" - fi - fi - os=`echo $target_os | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]].*$/\1/'` - name="lbl/os-$os.h" - if test -f $name ; then - ln -s $name os-proto.h - AC_DEFINE(HAVE_OS_PROTO_H) - else - AC_MSG_WARN(can't find $name) - fi - fi]) diff --git a/contrib/tcpdump/addrtoname.c b/contrib/tcpdump/addrtoname.c deleted file mode 100644 index ba4963bd75554..0000000000000 --- a/contrib/tcpdump/addrtoname.c +++ /dev/null @@ -1,1174 +0,0 @@ -/* - * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * Internet, ethernet, port, and protocol string to address - * and address to string conversion routines - */ -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/addrtoname.c,v 1.108.2.7 2005/09/29 07:46:45 hannes Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#ifdef USE_ETHER_NTOHOST -#ifdef HAVE_NETINET_IF_ETHER_H -struct mbuf; /* Squelch compiler warnings on some platforms for */ -struct rtentry; /* declarations in <net/if.h> */ -#include <net/if.h> /* for "struct ifnet" in "struct arpcom" on Solaris */ -#include <netinet/if_ether.h> -#endif /* HAVE_NETINET_IF_ETHER_H */ -#ifdef NETINET_ETHER_H_DECLARES_ETHER_NTOHOST -#include <netinet/ether.h> -#endif /* NETINET_ETHER_H_DECLARES_ETHER_NTOHOST */ - -#if !defined(HAVE_DECL_ETHER_NTOHOST) || !HAVE_DECL_ETHER_NTOHOST -#ifndef HAVE_STRUCT_ETHER_ADDR -struct ether_addr { - unsigned char ether_addr_octet[6]; -}; -#endif -extern int ether_ntohost(char *, const struct ether_addr *); -#endif - -#endif /* USE_ETHER_NTOHOST */ - -#include <pcap.h> -#include <pcap-namedb.h> -#include <signal.h> -#include <stdio.h> -#include <string.h> -#include <stdlib.h> - -#include "interface.h" -#include "addrtoname.h" -#include "llc.h" -#include "setsignal.h" -#include "extract.h" -#include "oui.h" - -/* - * hash tables for whatever-to-name translations - * - * XXX there has to be error checks against strdup(3) failure - */ - -#define HASHNAMESIZE 4096 -#define BUFSIZE 128 - -struct hnamemem { - u_int32_t addr; - const char *name; - struct hnamemem *nxt; -}; - -struct hnamemem hnametable[HASHNAMESIZE]; -struct hnamemem tporttable[HASHNAMESIZE]; -struct hnamemem uporttable[HASHNAMESIZE]; -struct hnamemem eprototable[HASHNAMESIZE]; -struct hnamemem dnaddrtable[HASHNAMESIZE]; -struct hnamemem ipxsaptable[HASHNAMESIZE]; - -#if defined(INET6) && defined(WIN32) -/* - * fake gethostbyaddr for Win2k/XP - * gethostbyaddr() returns incorrect value when AF_INET6 is passed - * to 3rd argument. - * - * h_name in struct hostent is only valid. - */ -static struct hostent * -win32_gethostbyaddr(const char *addr, int len, int type) -{ - static struct hostent host; - static char hostbuf[NI_MAXHOST]; - char hname[NI_MAXHOST]; - struct sockaddr_in6 addr6; - - host.h_name = hostbuf; - switch (type) { - case AF_INET: - return gethostbyaddr(addr, len, type); - break; - case AF_INET6: - memset(&addr6, 0, sizeof(addr6)); - addr6.sin6_family = AF_INET6; - memcpy(&addr6.sin6_addr, addr, len); - if (getnameinfo((struct sockaddr *)&addr6, sizeof(addr6), - hname, sizeof(hname), NULL, 0, 0)) { - return NULL; - } else { - strcpy(host.h_name, hname); - return &host; - } - break; - default: - return NULL; - } -} -#define gethostbyaddr win32_gethostbyaddr -#endif /* INET6 & WIN32 */ - -#ifdef INET6 -struct h6namemem { - struct in6_addr addr; - char *name; - struct h6namemem *nxt; -}; - -struct h6namemem h6nametable[HASHNAMESIZE]; -#endif /* INET6 */ - -struct enamemem { - u_short e_addr0; - u_short e_addr1; - u_short e_addr2; - const char *e_name; - u_char *e_nsap; /* used only for nsaptable[] */ -#define e_bs e_nsap /* for bytestringtable */ - struct enamemem *e_nxt; -}; - -struct enamemem enametable[HASHNAMESIZE]; -struct enamemem nsaptable[HASHNAMESIZE]; -struct enamemem bytestringtable[HASHNAMESIZE]; - -struct protoidmem { - u_int32_t p_oui; - u_short p_proto; - const char *p_name; - struct protoidmem *p_nxt; -}; - -struct protoidmem protoidtable[HASHNAMESIZE]; - -/* - * A faster replacement for inet_ntoa(). - */ -const char * -intoa(u_int32_t addr) -{ - register char *cp; - register u_int byte; - register int n; - static char buf[sizeof(".xxx.xxx.xxx.xxx")]; - - NTOHL(addr); - cp = buf + sizeof(buf); - *--cp = '\0'; - - n = 4; - do { - byte = addr & 0xff; - *--cp = byte % 10 + '0'; - byte /= 10; - if (byte > 0) { - *--cp = byte % 10 + '0'; - byte /= 10; - if (byte > 0) - *--cp = byte + '0'; - } - *--cp = '.'; - addr >>= 8; - } while (--n > 0); - - return cp + 1; -} - -static u_int32_t f_netmask; -static u_int32_t f_localnet; - -/* - * Return a name for the IP address pointed to by ap. This address - * is assumed to be in network byte order. - * - * NOTE: ap is *NOT* necessarily part of the packet data (not even if - * this is being called with the "ipaddr_string()" macro), so you - * *CANNOT* use the TCHECK{2}/TTEST{2} macros on it. Furthermore, - * even in cases where it *is* part of the packet data, the caller - * would still have to check for a null return value, even if it's - * just printing the return value with "%s" - not all versions of - * printf print "(null)" with "%s" and a null pointer, some of them - * don't check for a null pointer and crash in that case. - * - * The callers of this routine should, before handing this routine - * a pointer to packet data, be sure that the data is present in - * the packet buffer. They should probably do those checks anyway, - * as other data at that layer might not be IP addresses, and it - * also needs to check whether they're present in the packet buffer. - */ -const char * -getname(const u_char *ap) -{ - register struct hostent *hp; - u_int32_t addr; - static struct hnamemem *p; /* static for longjmp() */ - - memcpy(&addr, ap, sizeof(addr)); - p = &hnametable[addr & (HASHNAMESIZE-1)]; - for (; p->nxt; p = p->nxt) { - if (p->addr == addr) - return (p->name); - } - p->addr = addr; - p->nxt = newhnamemem(); - - /* - * Print names unless: - * (1) -n was given. - * (2) Address is foreign and -f was given. (If -f was not - * given, f_netmask and f_localnet are 0 and the test - * evaluates to true) - */ - if (!nflag && - (addr & f_netmask) == f_localnet) { - hp = gethostbyaddr((char *)&addr, 4, AF_INET); - if (hp) { - char *dotp; - - p->name = strdup(hp->h_name); - if (Nflag) { - /* Remove domain qualifications */ - dotp = strchr(p->name, '.'); - if (dotp) - *dotp = '\0'; - } - return (p->name); - } - } - p->name = strdup(intoa(addr)); - return (p->name); -} - -#ifdef INET6 -/* - * Return a name for the IP6 address pointed to by ap. This address - * is assumed to be in network byte order. - */ -const char * -getname6(const u_char *ap) -{ - register struct hostent *hp; - struct in6_addr addr; - static struct h6namemem *p; /* static for longjmp() */ - register const char *cp; - char ntop_buf[INET6_ADDRSTRLEN]; - - memcpy(&addr, ap, sizeof(addr)); - p = &h6nametable[*(u_int16_t *)&addr.s6_addr[14] & (HASHNAMESIZE-1)]; - for (; p->nxt; p = p->nxt) { - if (memcmp(&p->addr, &addr, sizeof(addr)) == 0) - return (p->name); - } - p->addr = addr; - p->nxt = newh6namemem(); - - /* - * Do not print names if -n was given. - */ - if (!nflag) { - hp = gethostbyaddr((char *)&addr, sizeof(addr), AF_INET6); - if (hp) { - char *dotp; - - p->name = strdup(hp->h_name); - if (Nflag) { - /* Remove domain qualifications */ - dotp = strchr(p->name, '.'); - if (dotp) - *dotp = '\0'; - } - return (p->name); - } - } - cp = inet_ntop(AF_INET6, &addr, ntop_buf, sizeof(ntop_buf)); - p->name = strdup(cp); - return (p->name); -} -#endif /* INET6 */ - -static char hex[] = "0123456789abcdef"; - - -/* Find the hash node that corresponds the ether address 'ep' */ - -static inline struct enamemem * -lookup_emem(const u_char *ep) -{ - register u_int i, j, k; - struct enamemem *tp; - - k = (ep[0] << 8) | ep[1]; - j = (ep[2] << 8) | ep[3]; - i = (ep[4] << 8) | ep[5]; - - tp = &enametable[(i ^ j) & (HASHNAMESIZE-1)]; - while (tp->e_nxt) - if (tp->e_addr0 == i && - tp->e_addr1 == j && - tp->e_addr2 == k) - return tp; - else - tp = tp->e_nxt; - tp->e_addr0 = i; - tp->e_addr1 = j; - tp->e_addr2 = k; - tp->e_nxt = (struct enamemem *)calloc(1, sizeof(*tp)); - if (tp->e_nxt == NULL) - error("lookup_emem: calloc"); - - return tp; -} - -/* - * Find the hash node that corresponds to the bytestring 'bs' - * with length 'nlen' - */ - -static inline struct enamemem * -lookup_bytestring(register const u_char *bs, const unsigned int nlen) -{ - struct enamemem *tp; - register u_int i, j, k; - - if (nlen >= 6) { - k = (bs[0] << 8) | bs[1]; - j = (bs[2] << 8) | bs[3]; - i = (bs[4] << 8) | bs[5]; - } else if (nlen >= 4) { - k = (bs[0] << 8) | bs[1]; - j = (bs[2] << 8) | bs[3]; - i = 0; - } else - i = j = k = 0; - - tp = &bytestringtable[(i ^ j) & (HASHNAMESIZE-1)]; - while (tp->e_nxt) - if (tp->e_addr0 == i && - tp->e_addr1 == j && - tp->e_addr2 == k && - memcmp((const char *)bs, (const char *)(tp->e_bs), nlen) == 0) - return tp; - else - tp = tp->e_nxt; - - tp->e_addr0 = i; - tp->e_addr1 = j; - tp->e_addr2 = k; - - tp->e_bs = (u_char *) calloc(1, nlen + 1); - memcpy(tp->e_bs, bs, nlen); - tp->e_nxt = (struct enamemem *)calloc(1, sizeof(*tp)); - if (tp->e_nxt == NULL) - error("lookup_bytestring: calloc"); - - return tp; -} - -/* Find the hash node that corresponds the NSAP 'nsap' */ - -static inline struct enamemem * -lookup_nsap(register const u_char *nsap) -{ - register u_int i, j, k; - unsigned int nlen = *nsap; - struct enamemem *tp; - const u_char *ensap = nsap + nlen - 6; - - if (nlen > 6) { - k = (ensap[0] << 8) | ensap[1]; - j = (ensap[2] << 8) | ensap[3]; - i = (ensap[4] << 8) | ensap[5]; - } - else - i = j = k = 0; - - tp = &nsaptable[(i ^ j) & (HASHNAMESIZE-1)]; - while (tp->e_nxt) - if (tp->e_addr0 == i && - tp->e_addr1 == j && - tp->e_addr2 == k && - tp->e_nsap[0] == nlen && - memcmp((const char *)&(nsap[1]), - (char *)&(tp->e_nsap[1]), nlen) == 0) - return tp; - else - tp = tp->e_nxt; - tp->e_addr0 = i; - tp->e_addr1 = j; - tp->e_addr2 = k; - tp->e_nsap = (u_char *)malloc(nlen + 1); - if (tp->e_nsap == NULL) - error("lookup_nsap: malloc"); - memcpy((char *)tp->e_nsap, (const char *)nsap, nlen + 1); - tp->e_nxt = (struct enamemem *)calloc(1, sizeof(*tp)); - if (tp->e_nxt == NULL) - error("lookup_nsap: calloc"); - - return tp; -} - -/* Find the hash node that corresponds the protoid 'pi'. */ - -static inline struct protoidmem * -lookup_protoid(const u_char *pi) -{ - register u_int i, j; - struct protoidmem *tp; - - /* 5 octets won't be aligned */ - i = (((pi[0] << 8) + pi[1]) << 8) + pi[2]; - j = (pi[3] << 8) + pi[4]; - /* XXX should be endian-insensitive, but do big-endian testing XXX */ - - tp = &protoidtable[(i ^ j) & (HASHNAMESIZE-1)]; - while (tp->p_nxt) - if (tp->p_oui == i && tp->p_proto == j) - return tp; - else - tp = tp->p_nxt; - tp->p_oui = i; - tp->p_proto = j; - tp->p_nxt = (struct protoidmem *)calloc(1, sizeof(*tp)); - if (tp->p_nxt == NULL) - error("lookup_protoid: calloc"); - - return tp; -} - -const char * -etheraddr_string(register const u_char *ep) -{ - register int i; - register char *cp; - register struct enamemem *tp; - int oui; - char buf[BUFSIZE]; - - tp = lookup_emem(ep); - if (tp->e_name) - return (tp->e_name); -#ifdef USE_ETHER_NTOHOST - if (!nflag) { - char buf2[BUFSIZE]; - - /* - * We don't cast it to "const struct ether_addr *" - * because some systems fail to declare the second - * argument as a "const" pointer, even though they - * don't modify what it points to. - */ - if (ether_ntohost(buf2, (struct ether_addr *)ep) == 0) { - tp->e_name = strdup(buf2); - return (tp->e_name); - } - } -#endif - cp = buf; - oui = EXTRACT_24BITS(ep); - *cp++ = hex[*ep >> 4 ]; - *cp++ = hex[*ep++ & 0xf]; - for (i = 5; --i >= 0;) { - *cp++ = ':'; - *cp++ = hex[*ep >> 4 ]; - *cp++ = hex[*ep++ & 0xf]; - } - - if (!nflag) { - snprintf(cp, BUFSIZE - (2 + 5*3), " (oui %s)", - tok2str(oui_values, "Unknown", oui)); - } else - *cp = '\0'; - tp->e_name = strdup(buf); - return (tp->e_name); -} - -const char * -linkaddr_string(const u_char *ep, const unsigned int len) -{ - register u_int i; - register char *cp; - register struct enamemem *tp; - - if (len == 6) /* XXX not totally correct... */ - return etheraddr_string(ep); - - tp = lookup_bytestring(ep, len); - if (tp->e_name) - return (tp->e_name); - - tp->e_name = cp = (char *)malloc(len*3); - if (tp->e_name == NULL) - error("linkaddr_string: malloc"); - *cp++ = hex[*ep >> 4]; - *cp++ = hex[*ep++ & 0xf]; - for (i = len-1; i > 0 ; --i) { - *cp++ = ':'; - *cp++ = hex[*ep >> 4]; - *cp++ = hex[*ep++ & 0xf]; - } - *cp = '\0'; - return (tp->e_name); -} - -const char * -etherproto_string(u_short port) -{ - register char *cp; - register struct hnamemem *tp; - register u_int32_t i = port; - char buf[sizeof("0000")]; - - for (tp = &eprototable[i & (HASHNAMESIZE-1)]; tp->nxt; tp = tp->nxt) - if (tp->addr == i) - return (tp->name); - - tp->addr = i; - tp->nxt = newhnamemem(); - - cp = buf; - NTOHS(port); - *cp++ = hex[port >> 12 & 0xf]; - *cp++ = hex[port >> 8 & 0xf]; - *cp++ = hex[port >> 4 & 0xf]; - *cp++ = hex[port & 0xf]; - *cp++ = '\0'; - tp->name = strdup(buf); - return (tp->name); -} - -const char * -protoid_string(register const u_char *pi) -{ - register u_int i, j; - register char *cp; - register struct protoidmem *tp; - char buf[sizeof("00:00:00:00:00")]; - - tp = lookup_protoid(pi); - if (tp->p_name) - return tp->p_name; - - cp = buf; - if ((j = *pi >> 4) != 0) - *cp++ = hex[j]; - *cp++ = hex[*pi++ & 0xf]; - for (i = 4; (int)--i >= 0;) { - *cp++ = ':'; - if ((j = *pi >> 4) != 0) - *cp++ = hex[j]; - *cp++ = hex[*pi++ & 0xf]; - } - *cp = '\0'; - tp->p_name = strdup(buf); - return (tp->p_name); -} - -#define ISONSAP_MAX_LENGTH 20 -const char * -isonsap_string(const u_char *nsap, register u_int nsap_length) -{ - register u_int nsap_idx; - register char *cp; - register struct enamemem *tp; - - if (nsap_length < 1 || nsap_length > ISONSAP_MAX_LENGTH) - return ("isonsap_string: illegal length"); - - tp = lookup_nsap(nsap); - if (tp->e_name) - return tp->e_name; - - tp->e_name = cp = (char *)malloc(sizeof("xx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xx")); - if (cp == NULL) - error("isonsap_string: malloc"); - - for (nsap_idx = 0; nsap_idx < nsap_length; nsap_idx++) { - *cp++ = hex[*nsap >> 4]; - *cp++ = hex[*nsap++ & 0xf]; - if (((nsap_idx & 1) == 0) && - (nsap_idx + 1 < nsap_length)) { - *cp++ = '.'; - } - } - *cp = '\0'; - return (tp->e_name); -} - -const char * -tcpport_string(u_short port) -{ - register struct hnamemem *tp; - register u_int32_t i = port; - char buf[sizeof("00000")]; - - for (tp = &tporttable[i & (HASHNAMESIZE-1)]; tp->nxt; tp = tp->nxt) - if (tp->addr == i) - return (tp->name); - - tp->addr = i; - tp->nxt = newhnamemem(); - - (void)snprintf(buf, sizeof(buf), "%u", i); - tp->name = strdup(buf); - return (tp->name); -} - -const char * -udpport_string(register u_short port) -{ - register struct hnamemem *tp; - register u_int32_t i = port; - char buf[sizeof("00000")]; - - for (tp = &uporttable[i & (HASHNAMESIZE-1)]; tp->nxt; tp = tp->nxt) - if (tp->addr == i) - return (tp->name); - - tp->addr = i; - tp->nxt = newhnamemem(); - - (void)snprintf(buf, sizeof(buf), "%u", i); - tp->name = strdup(buf); - return (tp->name); -} - -const char * -ipxsap_string(u_short port) -{ - register char *cp; - register struct hnamemem *tp; - register u_int32_t i = port; - char buf[sizeof("0000")]; - - for (tp = &ipxsaptable[i & (HASHNAMESIZE-1)]; tp->nxt; tp = tp->nxt) - if (tp->addr == i) - return (tp->name); - - tp->addr = i; - tp->nxt = newhnamemem(); - - cp = buf; - NTOHS(port); - *cp++ = hex[port >> 12 & 0xf]; - *cp++ = hex[port >> 8 & 0xf]; - *cp++ = hex[port >> 4 & 0xf]; - *cp++ = hex[port & 0xf]; - *cp++ = '\0'; - tp->name = strdup(buf); - return (tp->name); -} - -static void -init_servarray(void) -{ - struct servent *sv; - register struct hnamemem *table; - register int i; - char buf[sizeof("0000000000")]; - - while ((sv = getservent()) != NULL) { - int port = ntohs(sv->s_port); - i = port & (HASHNAMESIZE-1); - if (strcmp(sv->s_proto, "tcp") == 0) - table = &tporttable[i]; - else if (strcmp(sv->s_proto, "udp") == 0) - table = &uporttable[i]; - else - continue; - - while (table->name) - table = table->nxt; - if (nflag) { - (void)snprintf(buf, sizeof(buf), "%d", port); - table->name = strdup(buf); - } else - table->name = strdup(sv->s_name); - table->addr = port; - table->nxt = newhnamemem(); - } - endservent(); -} - -/* in libpcap.a (nametoaddr.c) */ -#if defined(WIN32) && !defined(USE_STATIC_LIBPCAP) -__declspec(dllimport) -#else -extern -#endif -const struct eproto { - const char *s; - u_short p; -} eproto_db[]; - -static void -init_eprotoarray(void) -{ - register int i; - register struct hnamemem *table; - - for (i = 0; eproto_db[i].s; i++) { - int j = htons(eproto_db[i].p) & (HASHNAMESIZE-1); - table = &eprototable[j]; - while (table->name) - table = table->nxt; - table->name = eproto_db[i].s; - table->addr = htons(eproto_db[i].p); - table->nxt = newhnamemem(); - } -} - -static struct protoidlist { - const u_char protoid[5]; - const char *name; -} protoidlist[] = { - {{ 0x00, 0x00, 0x0c, 0x01, 0x07 }, "CiscoMLS" }, - {{ 0x00, 0x00, 0x0c, 0x20, 0x00 }, "CiscoCDP" }, - {{ 0x00, 0x00, 0x0c, 0x20, 0x01 }, "CiscoCGMP" }, - {{ 0x00, 0x00, 0x0c, 0x20, 0x03 }, "CiscoVTP" }, - {{ 0x00, 0xe0, 0x2b, 0x00, 0xbb }, "ExtremeEDP" }, - {{ 0x00, 0x00, 0x00, 0x00, 0x00 }, NULL } -}; - -/* - * SNAP proto IDs with org code 0:0:0 are actually encapsulated Ethernet - * types. - */ -static void -init_protoidarray(void) -{ - register int i; - register struct protoidmem *tp; - struct protoidlist *pl; - u_char protoid[5]; - - protoid[0] = 0; - protoid[1] = 0; - protoid[2] = 0; - for (i = 0; eproto_db[i].s; i++) { - u_short etype = htons(eproto_db[i].p); - - memcpy((char *)&protoid[3], (char *)&etype, 2); - tp = lookup_protoid(protoid); - tp->p_name = strdup(eproto_db[i].s); - } - /* Hardwire some SNAP proto ID names */ - for (pl = protoidlist; pl->name != NULL; ++pl) { - tp = lookup_protoid(pl->protoid); - /* Don't override existing name */ - if (tp->p_name != NULL) - continue; - - tp->p_name = pl->name; - } -} - -static struct etherlist { - const u_char addr[6]; - const char *name; -} etherlist[] = { - {{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, "Broadcast" }, - {{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, NULL } -}; - -/* - * Initialize the ethers hash table. We take two different approaches - * depending on whether or not the system provides the ethers name - * service. If it does, we just wire in a few names at startup, - * and etheraddr_string() fills in the table on demand. If it doesn't, - * then we suck in the entire /etc/ethers file at startup. The idea - * is that parsing the local file will be fast, but spinning through - * all the ethers entries via NIS & next_etherent might be very slow. - * - * XXX pcap_next_etherent doesn't belong in the pcap interface, but - * since the pcap module already does name-to-address translation, - * it's already does most of the work for the ethernet address-to-name - * translation, so we just pcap_next_etherent as a convenience. - */ -static void -init_etherarray(void) -{ - register struct etherlist *el; - register struct enamemem *tp; -#ifdef USE_ETHER_NTOHOST - char name[256]; -#else - register struct pcap_etherent *ep; - register FILE *fp; - - /* Suck in entire ethers file */ - fp = fopen(PCAP_ETHERS_FILE, "r"); - if (fp != NULL) { - while ((ep = pcap_next_etherent(fp)) != NULL) { - tp = lookup_emem(ep->addr); - tp->e_name = strdup(ep->name); - } - (void)fclose(fp); - } -#endif - - /* Hardwire some ethernet names */ - for (el = etherlist; el->name != NULL; ++el) { - tp = lookup_emem(el->addr); - /* Don't override existing name */ - if (tp->e_name != NULL) - continue; - -#ifdef USE_ETHER_NTOHOST - /* - * Use YP/NIS version of name if available. - * - * We don't cast it to "const struct ether_addr *" - * because some systems don't modify the Ethernet - * address but fail to declare the second argument - * as a "const" pointer. - */ - if (ether_ntohost(name, (struct ether_addr *)el->addr) == 0) { - tp->e_name = strdup(name); - continue; - } -#endif - tp->e_name = el->name; - } -} - -static struct tok ipxsap_db[] = { - { 0x0000, "Unknown" }, - { 0x0001, "User" }, - { 0x0002, "User Group" }, - { 0x0003, "PrintQueue" }, - { 0x0004, "FileServer" }, - { 0x0005, "JobServer" }, - { 0x0006, "Gateway" }, - { 0x0007, "PrintServer" }, - { 0x0008, "ArchiveQueue" }, - { 0x0009, "ArchiveServer" }, - { 0x000a, "JobQueue" }, - { 0x000b, "Administration" }, - { 0x000F, "Novell TI-RPC" }, - { 0x0017, "Diagnostics" }, - { 0x0020, "NetBIOS" }, - { 0x0021, "NAS SNA Gateway" }, - { 0x0023, "NACS AsyncGateway" }, - { 0x0024, "RemoteBridge/RoutingService" }, - { 0x0026, "BridgeServer" }, - { 0x0027, "TCP/IP Gateway" }, - { 0x0028, "Point-to-point X.25 BridgeServer" }, - { 0x0029, "3270 Gateway" }, - { 0x002a, "CHI Corp" }, - { 0x002c, "PC Chalkboard" }, - { 0x002d, "TimeSynchServer" }, - { 0x002e, "ARCserve5.0/PalindromeBackup" }, - { 0x0045, "DI3270 Gateway" }, - { 0x0047, "AdvertisingPrintServer" }, - { 0x004a, "NetBlazerModems" }, - { 0x004b, "BtrieveVAP" }, - { 0x004c, "NetwareSQL" }, - { 0x004d, "XtreeNetwork" }, - { 0x0050, "BtrieveVAP4.11" }, - { 0x0052, "QuickLink" }, - { 0x0053, "PrintQueueUser" }, - { 0x0058, "Multipoint X.25 Router" }, - { 0x0060, "STLB/NLM" }, - { 0x0064, "ARCserve" }, - { 0x0066, "ARCserve3.0" }, - { 0x0072, "WAN CopyUtility" }, - { 0x007a, "TES-NetwareVMS" }, - { 0x0092, "WATCOM Debugger/EmeraldTapeBackupServer" }, - { 0x0095, "DDA OBGYN" }, - { 0x0098, "NetwareAccessServer" }, - { 0x009a, "Netware for VMS II/NamedPipeServer" }, - { 0x009b, "NetwareAccessServer" }, - { 0x009e, "PortableNetwareServer/SunLinkNVT" }, - { 0x00a1, "PowerchuteAPC UPS" }, - { 0x00aa, "LAWserve" }, - { 0x00ac, "CompaqIDA StatusMonitor" }, - { 0x0100, "PIPE STAIL" }, - { 0x0102, "LAN ProtectBindery" }, - { 0x0103, "OracleDataBaseServer" }, - { 0x0107, "Netware386/RSPX RemoteConsole" }, - { 0x010f, "NovellSNA Gateway" }, - { 0x0111, "TestServer" }, - { 0x0112, "HP PrintServer" }, - { 0x0114, "CSA MUX" }, - { 0x0115, "CSA LCA" }, - { 0x0116, "CSA CM" }, - { 0x0117, "CSA SMA" }, - { 0x0118, "CSA DBA" }, - { 0x0119, "CSA NMA" }, - { 0x011a, "CSA SSA" }, - { 0x011b, "CSA STATUS" }, - { 0x011e, "CSA APPC" }, - { 0x0126, "SNA TEST SSA Profile" }, - { 0x012a, "CSA TRACE" }, - { 0x012b, "NetwareSAA" }, - { 0x012e, "IKARUS VirusScan" }, - { 0x0130, "CommunicationsExecutive" }, - { 0x0133, "NNS DomainServer/NetwareNamingServicesDomain" }, - { 0x0135, "NetwareNamingServicesProfile" }, - { 0x0137, "Netware386 PrintQueue/NNS PrintQueue" }, - { 0x0141, "LAN SpoolServer" }, - { 0x0152, "IRMALAN Gateway" }, - { 0x0154, "NamedPipeServer" }, - { 0x0166, "NetWareManagement" }, - { 0x0168, "Intel PICKIT CommServer/Intel CAS TalkServer" }, - { 0x0173, "Compaq" }, - { 0x0174, "Compaq SNMP Agent" }, - { 0x0175, "Compaq" }, - { 0x0180, "XTreeServer/XTreeTools" }, - { 0x018A, "NASI ServicesBroadcastServer" }, - { 0x01b0, "GARP Gateway" }, - { 0x01b1, "Binfview" }, - { 0x01bf, "IntelLanDeskManager" }, - { 0x01ca, "AXTEC" }, - { 0x01cb, "ShivaNetModem/E" }, - { 0x01cc, "ShivaLanRover/E" }, - { 0x01cd, "ShivaLanRover/T" }, - { 0x01ce, "ShivaUniversal" }, - { 0x01d8, "CastelleFAXPressServer" }, - { 0x01da, "CastelleLANPressPrintServer" }, - { 0x01dc, "CastelleFAX/Xerox7033 FaxServer/ExcelLanFax" }, - { 0x01f0, "LEGATO" }, - { 0x01f5, "LEGATO" }, - { 0x0233, "NMS Agent/NetwareManagementAgent" }, - { 0x0237, "NMS IPX Discovery/LANternReadWriteChannel" }, - { 0x0238, "NMS IP Discovery/LANternTrapAlarmChannel" }, - { 0x023a, "LANtern" }, - { 0x023c, "MAVERICK" }, - { 0x023f, "NovellSMDR" }, - { 0x024e, "NetwareConnect" }, - { 0x024f, "NASI ServerBroadcast Cisco" }, - { 0x026a, "NMS ServiceConsole" }, - { 0x026b, "TimeSynchronizationServer Netware 4.x" }, - { 0x0278, "DirectoryServer Netware 4.x" }, - { 0x027b, "NetwareManagementAgent" }, - { 0x0280, "Novell File and Printer Sharing Service for PC" }, - { 0x0304, "NovellSAA Gateway" }, - { 0x0308, "COM/VERMED" }, - { 0x030a, "GalacticommWorldgroupServer" }, - { 0x030c, "IntelNetport2/HP JetDirect/HP Quicksilver" }, - { 0x0320, "AttachmateGateway" }, - { 0x0327, "MicrosoftDiagnostiocs" }, - { 0x0328, "WATCOM SQL Server" }, - { 0x0335, "MultiTechSystems MultisynchCommServer" }, - { 0x0343, "Xylogics RemoteAccessServer/LANModem" }, - { 0x0355, "ArcadaBackupExec" }, - { 0x0358, "MSLCD1" }, - { 0x0361, "NETINELO" }, - { 0x037e, "Powerchute UPS Monitoring" }, - { 0x037f, "ViruSafeNotify" }, - { 0x0386, "HP Bridge" }, - { 0x0387, "HP Hub" }, - { 0x0394, "NetWare SAA Gateway" }, - { 0x039b, "LotusNotes" }, - { 0x03b7, "CertusAntiVirus" }, - { 0x03c4, "ARCserve4.0" }, - { 0x03c7, "LANspool3.5" }, - { 0x03d7, "LexmarkPrinterServer" }, - { 0x03d8, "LexmarkXLE PrinterServer" }, - { 0x03dd, "BanyanENS NetwareClient" }, - { 0x03de, "GuptaSequelBaseServer/NetWareSQL" }, - { 0x03e1, "UnivelUnixware" }, - { 0x03e4, "UnivelUnixware" }, - { 0x03fc, "IntelNetport" }, - { 0x03fd, "PrintServerQueue" }, - { 0x040A, "ipnServer" }, - { 0x040D, "LVERRMAN" }, - { 0x040E, "LVLIC" }, - { 0x0414, "NET Silicon (DPI)/Kyocera" }, - { 0x0429, "SiteLockVirus" }, - { 0x0432, "UFHELPR???" }, - { 0x0433, "Synoptics281xAdvancedSNMPAgent" }, - { 0x0444, "MicrosoftNT SNA Server" }, - { 0x0448, "Oracle" }, - { 0x044c, "ARCserve5.01" }, - { 0x0457, "CanonGP55" }, - { 0x045a, "QMS Printers" }, - { 0x045b, "DellSCSI Array" }, - { 0x0491, "NetBlazerModems" }, - { 0x04ac, "OnTimeScheduler" }, - { 0x04b0, "CD-Net" }, - { 0x0513, "EmulexNQA" }, - { 0x0520, "SiteLockChecks" }, - { 0x0529, "SiteLockChecks" }, - { 0x052d, "CitrixOS2 AppServer" }, - { 0x0535, "Tektronix" }, - { 0x0536, "Milan" }, - { 0x055d, "Attachmate SNA gateway" }, - { 0x056b, "IBM8235 ModemServer" }, - { 0x056c, "ShivaLanRover/E PLUS" }, - { 0x056d, "ShivaLanRover/T PLUS" }, - { 0x0580, "McAfeeNetShield" }, - { 0x05B8, "NLM to workstation communication (Revelation Software)" }, - { 0x05BA, "CompatibleSystemsRouters" }, - { 0x05BE, "CheyenneHierarchicalStorageManager" }, - { 0x0606, "JCWatermarkImaging" }, - { 0x060c, "AXISNetworkPrinter" }, - { 0x0610, "AdaptecSCSIManagement" }, - { 0x0621, "IBM AntiVirus" }, - { 0x0640, "Windows95 RemoteRegistryService" }, - { 0x064e, "MicrosoftIIS" }, - { 0x067b, "Microsoft Win95/98 File and Print Sharing for NetWare" }, - { 0x067c, "Microsoft Win95/98 File and Print Sharing for NetWare" }, - { 0x076C, "Xerox" }, - { 0x079b, "ShivaLanRover/E 115" }, - { 0x079c, "ShivaLanRover/T 115" }, - { 0x07B4, "CubixWorldDesk" }, - { 0x07c2, "Quarterdeck IWare Connect V2.x NLM" }, - { 0x07c1, "Quarterdeck IWare Connect V3.x NLM" }, - { 0x0810, "ELAN License Server Demo" }, - { 0x0824, "ShivaLanRoverAccessSwitch/E" }, - { 0x086a, "ISSC Collector" }, - { 0x087f, "ISSC DAS AgentAIX" }, - { 0x0880, "Intel Netport PRO" }, - { 0x0881, "Intel Netport PRO" }, - { 0x0b29, "SiteLock" }, - { 0x0c29, "SiteLockApplications" }, - { 0x0c2c, "LicensingServer" }, - { 0x2101, "PerformanceTechnologyInstantInternet" }, - { 0x2380, "LAI SiteLock" }, - { 0x238c, "MeetingMaker" }, - { 0x4808, "SiteLockServer/SiteLockMetering" }, - { 0x5555, "SiteLockUser" }, - { 0x6312, "Tapeware" }, - { 0x6f00, "RabbitGateway" }, - { 0x7703, "MODEM" }, - { 0x8002, "NetPortPrinters" }, - { 0x8008, "WordPerfectNetworkVersion" }, - { 0x85BE, "Cisco EIGRP" }, - { 0x8888, "WordPerfectNetworkVersion/QuickNetworkManagement" }, - { 0x9000, "McAfeeNetShield" }, - { 0x9604, "CSA-NT_MON" }, - { 0xb6a8, "OceanIsleReachoutRemoteControl" }, - { 0xf11f, "SiteLockMetering" }, - { 0xf1ff, "SiteLock" }, - { 0xf503, "Microsoft SQL Server" }, - { 0xF905, "IBM TimeAndPlace" }, - { 0xfbfb, "TopCallIII FaxServer" }, - { 0xffff, "AnyService/Wildcard" }, - { 0, (char *)0 } -}; - -static void -init_ipxsaparray(void) -{ - register int i; - register struct hnamemem *table; - - for (i = 0; ipxsap_db[i].s != NULL; i++) { - int j = htons(ipxsap_db[i].v) & (HASHNAMESIZE-1); - table = &ipxsaptable[j]; - while (table->name) - table = table->nxt; - table->name = ipxsap_db[i].s; - table->addr = htons(ipxsap_db[i].v); - table->nxt = newhnamemem(); - } -} - -/* - * Initialize the address to name translation machinery. We map all - * non-local IP addresses to numeric addresses if fflag is true (i.e., - * to prevent blocking on the nameserver). localnet is the IP address - * of the local network. mask is its subnet mask. - */ -void -init_addrtoname(u_int32_t localnet, u_int32_t mask) -{ - if (fflag) { - f_localnet = localnet; - f_netmask = mask; - } - if (nflag) - /* - * Simplest way to suppress names. - */ - return; - - init_etherarray(); - init_servarray(); - init_eprotoarray(); - init_protoidarray(); - init_ipxsaparray(); -} - -const char * -dnaddr_string(u_short dnaddr) -{ - register struct hnamemem *tp; - - for (tp = &dnaddrtable[dnaddr & (HASHNAMESIZE-1)]; tp->nxt != 0; - tp = tp->nxt) - if (tp->addr == dnaddr) - return (tp->name); - - tp->addr = dnaddr; - tp->nxt = newhnamemem(); - if (nflag) - tp->name = dnnum_string(dnaddr); - else - tp->name = dnname_string(dnaddr); - - return(tp->name); -} - -/* Return a zero'ed hnamemem struct and cuts down on calloc() overhead */ -struct hnamemem * -newhnamemem(void) -{ - register struct hnamemem *p; - static struct hnamemem *ptr = NULL; - static u_int num = 0; - - if (num <= 0) { - num = 64; - ptr = (struct hnamemem *)calloc(num, sizeof (*ptr)); - if (ptr == NULL) - error("newhnamemem: calloc"); - } - --num; - p = ptr++; - return (p); -} - -#ifdef INET6 -/* Return a zero'ed h6namemem struct and cuts down on calloc() overhead */ -struct h6namemem * -newh6namemem(void) -{ - register struct h6namemem *p; - static struct h6namemem *ptr = NULL; - static u_int num = 0; - - if (num <= 0) { - num = 64; - ptr = (struct h6namemem *)calloc(num, sizeof (*ptr)); - if (ptr == NULL) - error("newh6namemem: calloc"); - } - --num; - p = ptr++; - return (p); -} -#endif /* INET6 */ diff --git a/contrib/tcpdump/addrtoname.h b/contrib/tcpdump/addrtoname.h deleted file mode 100644 index 67ded6e694840..0000000000000 --- a/contrib/tcpdump/addrtoname.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 1990, 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * @(#) $Header: /tcpdump/master/tcpdump/addrtoname.h,v 1.18 2001/09/17 21:57:51 fenner Exp $ (LBL) - */ - -/* Name to address translation routines. */ - -extern const char *linkaddr_string(const u_char *, const unsigned int); -extern const char *etheraddr_string(const u_char *); -extern const char *etherproto_string(u_short); -extern const char *tcpport_string(u_short); -extern const char *udpport_string(u_short); -extern const char *getname(const u_char *); -#ifdef INET6 -extern const char *getname6(const u_char *); -#endif -extern const char *intoa(u_int32_t); - -extern void init_addrtoname(u_int32_t, u_int32_t); -extern struct hnamemem *newhnamemem(void); -#ifdef INET6 -extern struct h6namemem *newh6namemem(void); -#endif - -#define ipaddr_string(p) getname((const u_char *)(p)) -#ifdef INET6 -#define ip6addr_string(p) getname6((const u_char *)(p)) -#endif diff --git a/contrib/tcpdump/ah.h b/contrib/tcpdump/ah.h deleted file mode 100644 index c22806afe8503..0000000000000 --- a/contrib/tcpdump/ah.h +++ /dev/null @@ -1,57 +0,0 @@ -/* $NetBSD: ah.h,v 1.12 2000/07/23 05:23:04 itojun Exp $ */ -/* $KAME: ah.h,v 1.12 2000/07/20 17:41:01 itojun Exp $ */ - -/* - * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * RFC1826/2402 authentication header. - */ - -#ifndef _NETINET6_AH_H_ -#define _NETINET6_AH_H_ - -struct ah { - u_int8_t ah_nxt; /* Next Header */ - u_int8_t ah_len; /* Length of data, in 32bit */ - u_int16_t ah_reserve; /* Reserved for future use */ - u_int32_t ah_spi; /* Security parameter index */ - /* variable size, 32bit bound*/ /* Authentication data */ -}; - -struct newah { - u_int8_t ah_nxt; /* Next Header */ - u_int8_t ah_len; /* Length of data + 1, in 32bit */ - u_int16_t ah_reserve; /* Reserved for future use */ - u_int32_t ah_spi; /* Security parameter index */ - u_int32_t ah_seq; /* Sequence number field */ - /* variable size, 32bit bound*/ /* Authentication data */ -}; - -#endif /*_NETINET6_AH_H_*/ diff --git a/contrib/tcpdump/aodv.h b/contrib/tcpdump/aodv.h deleted file mode 100644 index 335c175c12c09..0000000000000 --- a/contrib/tcpdump/aodv.h +++ /dev/null @@ -1,190 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/aodv.h,v 1.3 2003/09/13 01:34:42 guy Exp $ (LBL) */ -/* - * Copyright (c) 2003 Bruce M. Simpson <bms@spc.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Bruce M. Simpson. - * 4. Neither the name of Bruce M. Simpson nor the names of co- - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY Bruce M. Simpson AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Bruce M. Simpson OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef _AODV_H_ -#define _AODV_H_ - -struct aodv_rreq { - u_int8_t rreq_type; /* AODV message type (1) */ - u_int8_t rreq_flags; /* various flags */ - u_int8_t rreq_zero0; /* reserved, set to zero */ - u_int8_t rreq_hops; /* number of hops from originator */ - u_int32_t rreq_id; /* request ID */ - u_int32_t rreq_da; /* destination IPv4 address */ - u_int32_t rreq_ds; /* destination sequence number */ - u_int32_t rreq_oa; /* originator IPv4 address */ - u_int32_t rreq_os; /* originator sequence number */ -}; -#ifdef INET6 -struct aodv_rreq6 { - u_int8_t rreq_type; /* AODV message type (1) */ - u_int8_t rreq_flags; /* various flags */ - u_int8_t rreq_zero0; /* reserved, set to zero */ - u_int8_t rreq_hops; /* number of hops from originator */ - u_int32_t rreq_id; /* request ID */ - struct in6_addr rreq_da; /* destination IPv6 address */ - u_int32_t rreq_ds; /* destination sequence number */ - struct in6_addr rreq_oa; /* originator IPv6 address */ - u_int32_t rreq_os; /* originator sequence number */ -}; -struct aodv_rreq6_draft_01 { - u_int8_t rreq_type; /* AODV message type (16) */ - u_int8_t rreq_flags; /* various flags */ - u_int8_t rreq_zero0; /* reserved, set to zero */ - u_int8_t rreq_hops; /* number of hops from originator */ - u_int32_t rreq_id; /* request ID */ - u_int32_t rreq_ds; /* destination sequence number */ - u_int32_t rreq_os; /* originator sequence number */ - struct in6_addr rreq_da; /* destination IPv6 address */ - struct in6_addr rreq_oa; /* originator IPv6 address */ -}; -#endif - -#define RREQ_JOIN 0x80 /* join (reserved for multicast */ -#define RREQ_REPAIR 0x40 /* repair (reserved for multicast */ -#define RREQ_GRAT 0x20 /* gratuitous RREP */ -#define RREQ_DEST 0x10 /* destination only */ -#define RREQ_UNKNOWN 0x08 /* unknown destination sequence num */ -#define RREQ_FLAGS_MASK 0xF8 /* mask for rreq_flags */ - -struct aodv_rrep { - u_int8_t rrep_type; /* AODV message type (2) */ - u_int8_t rrep_flags; /* various flags */ - u_int8_t rrep_ps; /* prefix size */ - u_int8_t rrep_hops; /* number of hops from o to d */ - u_int32_t rrep_da; /* destination IPv4 address */ - u_int32_t rrep_ds; /* destination sequence number */ - u_int32_t rrep_oa; /* originator IPv4 address */ - u_int32_t rrep_life; /* lifetime of this route */ -}; -#ifdef INET6 -struct aodv_rrep6 { - u_int8_t rrep_type; /* AODV message type (2) */ - u_int8_t rrep_flags; /* various flags */ - u_int8_t rrep_ps; /* prefix size */ - u_int8_t rrep_hops; /* number of hops from o to d */ - struct in6_addr rrep_da; /* destination IPv6 address */ - u_int32_t rrep_ds; /* destination sequence number */ - struct in6_addr rrep_oa; /* originator IPv6 address */ - u_int32_t rrep_life; /* lifetime of this route */ -}; -struct aodv_rrep6_draft_01 { - u_int8_t rrep_type; /* AODV message type (17) */ - u_int8_t rrep_flags; /* various flags */ - u_int8_t rrep_ps; /* prefix size */ - u_int8_t rrep_hops; /* number of hops from o to d */ - u_int32_t rrep_ds; /* destination sequence number */ - struct in6_addr rrep_da; /* destination IPv6 address */ - struct in6_addr rrep_oa; /* originator IPv6 address */ - u_int32_t rrep_life; /* lifetime of this route */ -}; -#endif - -#define RREP_REPAIR 0x80 /* repair (reserved for multicast */ -#define RREP_ACK 0x40 /* acknowledgement required */ -#define RREP_FLAGS_MASK 0xC0 /* mask for rrep_flags */ -#define RREP_PREFIX_MASK 0x1F /* mask for prefix size */ - -struct rerr_unreach { - u_int32_t u_da; /* IPv4 address */ - u_int32_t u_ds; /* sequence number */ -}; -#ifdef INET6 -struct rerr_unreach6 { - struct in6_addr u_da; /* IPv6 address */ - u_int32_t u_ds; /* sequence number */ -}; -struct rerr_unreach6_draft_01 { - struct in6_addr u_da; /* IPv6 address */ - u_int32_t u_ds; /* sequence number */ -}; -#endif - -struct aodv_rerr { - u_int8_t rerr_type; /* AODV message type (3 or 18) */ - u_int8_t rerr_flags; /* various flags */ - u_int8_t rerr_zero0; /* reserved, set to zero */ - u_int8_t rerr_dc; /* destination count */ - union { - struct rerr_unreach dest[1]; -#ifdef INET6 - struct rerr_unreach6 dest6[1]; - struct rerr_unreach6_draft_01 dest6_draft_01[1]; -#endif - } r; -}; - -#define RERR_NODELETE 0x80 /* don't delete the link */ -#define RERR_FLAGS_MASK 0x80 /* mask for rerr_flags */ - -struct aodv_rrep_ack { - u_int8_t ra_type; - u_int8_t ra_zero0; -}; - -union aodv { - struct aodv_rreq rreq; - struct aodv_rrep rrep; - struct aodv_rerr rerr; - struct aodv_rrep_ack rrep_ack; -#ifdef INET6 - struct aodv_rreq6 rreq6; - struct aodv_rreq6_draft_01 rreq6_draft_01; - struct aodv_rrep6 rrep6; - struct aodv_rrep6_draft_01 rrep6_draft_01; -#endif -}; - -#define AODV_RREQ 1 /* route request */ -#define AODV_RREP 2 /* route response */ -#define AODV_RERR 3 /* error report */ -#define AODV_RREP_ACK 4 /* route response acknowledgement */ - -#define AODV_V6_DRAFT_01_RREQ 16 /* IPv6 route request */ -#define AODV_V6_DRAFT_01_RREP 17 /* IPv6 route response */ -#define AODV_V6_DRAFT_01_RERR 18 /* IPv6 error report */ -#define AODV_V6_DRAFT_01_RREP_ACK 19 /* IPV6 route response acknowledgment */ - -struct aodv_ext { - u_int8_t type; /* extension type */ - u_int8_t length; /* extension length */ -}; - -struct aodv_hello { - struct aodv_ext eh; /* extension header */ - u_int32_t interval; /* expect my next hello in - * (n) ms */ -}; - -#define AODV_EXT_HELLO 1 - -#endif /* _AODV_H_ */ diff --git a/contrib/tcpdump/appletalk.h b/contrib/tcpdump/appletalk.h deleted file mode 100644 index 67e62ef870f29..0000000000000 --- a/contrib/tcpdump/appletalk.h +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * AppleTalk protocol formats (courtesy Bill Croft of Stanford/SUMEX). - * - * @(#) $Header: /tcpdump/master/tcpdump/appletalk.h,v 1.16 2004/05/01 09:41:50 hannes Exp $ (LBL) - */ - -struct LAP { - u_int8_t dst; - u_int8_t src; - u_int8_t type; -}; -#define lapShortDDP 1 /* short DDP type */ -#define lapDDP 2 /* DDP type */ -#define lapKLAP 'K' /* Kinetics KLAP type */ - -/* Datagram Delivery Protocol */ - -struct atDDP { - u_int16_t length; - u_int16_t checksum; - u_int16_t dstNet; - u_int16_t srcNet; - u_int8_t dstNode; - u_int8_t srcNode; - u_int8_t dstSkt; - u_int8_t srcSkt; - u_int8_t type; -}; - -struct atShortDDP { - u_int16_t length; - u_int8_t dstSkt; - u_int8_t srcSkt; - u_int8_t type; -}; - -#define ddpMaxWKS 0x7F -#define ddpMaxData 586 -#define ddpLengthMask 0x3FF -#define ddpHopShift 10 -#define ddpSize 13 /* size of DDP header (avoid struct padding) */ -#define ddpSSize 5 -#define ddpWKS 128 /* boundary of DDP well known sockets */ -#define ddpRTMP 1 /* RTMP type */ -#define ddpRTMPrequest 5 /* RTMP request type */ -#define ddpNBP 2 /* NBP type */ -#define ddpATP 3 /* ATP type */ -#define ddpECHO 4 /* ECHO type */ -#define ddpIP 22 /* IP type */ -#define ddpARP 23 /* ARP type */ -#define ddpEIGRP 88 /* EIGRP over Appletalk */ -#define ddpKLAP 0x4b /* Kinetics KLAP type */ - - -/* AppleTalk Transaction Protocol */ - -struct atATP { - u_int8_t control; - u_int8_t bitmap; - u_int16_t transID; - int32_t userData; -}; - -#define atpReqCode 0x40 -#define atpRspCode 0x80 -#define atpRelCode 0xC0 -#define atpXO 0x20 -#define atpEOM 0x10 -#define atpSTS 0x08 -#define atpFlagMask 0x3F -#define atpControlMask 0xF8 -#define atpMaxNum 8 -#define atpMaxData 578 - - -/* AppleTalk Echo Protocol */ - -struct atEcho { - u_int8_t echoFunction; - u_int8_t *echoData; -}; - -#define echoSkt 4 /* the echoer socket */ -#define echoSize 1 /* size of echo header */ -#define echoRequest 1 /* echo request */ -#define echoReply 2 /* echo request */ - - -/* Name Binding Protocol */ - -struct atNBP { - u_int8_t control; - u_int8_t id; -}; - -struct atNBPtuple { - u_int16_t net; - u_int8_t node; - u_int8_t skt; - u_int8_t enumerator; -}; - -#define nbpBrRq 0x10 -#define nbpLkUp 0x20 -#define nbpLkUpReply 0x30 - -#define nbpNIS 2 -#define nbpTupleMax 15 - -#define nbpHeaderSize 2 -#define nbpTupleSize 5 - -#define nbpSkt 2 /* NIS */ - - -/* Routing Table Maint. Protocol */ - -#define rtmpSkt 1 /* number of RTMP socket */ -#define rtmpSize 4 /* minimum size */ -#define rtmpTupleSize 3 - - -/* Zone Information Protocol */ - -struct zipHeader { - u_int8_t command; - u_int8_t netcount; -}; - -#define zipHeaderSize 2 -#define zipQuery 1 -#define zipReply 2 -#define zipTakedown 3 -#define zipBringup 4 -#define ddpZIP 6 -#define zipSkt 6 -#define GetMyZone 7 -#define GetZoneList 8 - -/* - * UDP port range used for ddp-in-udp encapsulation is 16512-16639 - * for client sockets (128-255) and 200-327 for server sockets - * (0-127). We also try to recognize the pre-April 88 server - * socket range of 768-895. - */ -#define atalk_port(p) \ - (((unsigned)((p) - 16512) < 128) || \ - ((unsigned)((p) - 200) < 128) || \ - ((unsigned)((p) - 768) < 128)) diff --git a/contrib/tcpdump/arcnet.h b/contrib/tcpdump/arcnet.h deleted file mode 100644 index 6e649f61e02fe..0000000000000 --- a/contrib/tcpdump/arcnet.h +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (c) 1982, 1986, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#) $Id: arcnet.h,v 1.3 2003/01/23 09:05:37 guy Exp $ (LBL) - * - * from: NetBSD: if_arc.h,v 1.13 1999/11/19 20:41:19 thorpej Exp - */ - -/* - * Structure of a 2.5MB/s Arcnet header on the BSDs, - * as given to interface code. - */ -struct arc_header { - u_int8_t arc_shost; - u_int8_t arc_dhost; - u_int8_t arc_type; - /* - * only present for newstyle encoding with LL fragmentation. - * Don't use sizeof(anything), use ARC_HDR{,NEW}LEN instead. - */ - u_int8_t arc_flag; - u_int16_t arc_seqid; - - /* - * only present in exception packets (arc_flag == 0xff) - */ - u_int8_t arc_type2; /* same as arc_type */ - u_int8_t arc_flag2; /* real flag value */ - u_int16_t arc_seqid2; /* real seqid value */ -}; - -#define ARC_HDRLEN 3 -#define ARC_HDRNEWLEN 6 -#define ARC_HDRNEWLEN_EXC 10 - -/* RFC 1051 */ -#define ARCTYPE_IP_OLD 240 /* IP protocol */ -#define ARCTYPE_ARP_OLD 241 /* address resolution protocol */ - -/* RFC 1201 */ -#define ARCTYPE_IP 212 /* IP protocol */ -#define ARCTYPE_ARP 213 /* address resolution protocol */ -#define ARCTYPE_REVARP 214 /* reverse addr resolution protocol */ - -#define ARCTYPE_ATALK 221 /* Appletalk */ -#define ARCTYPE_BANIAN 247 /* Banyan Vines */ -#define ARCTYPE_IPX 250 /* Novell IPX */ - -#define ARCTYPE_INET6 0xc4 /* IPng */ -#define ARCTYPE_DIAGNOSE 0x80 /* as per ANSI/ATA 878.1 */ - -/* - * Structure of a 2.5MB/s Arcnet header on Linux. Linux has - * an extra "offset" field when given to interface code, and - * never presents packets that look like exception frames. - */ -struct arc_linux_header { - u_int8_t arc_shost; - u_int8_t arc_dhost; - u_int16_t arc_offset; - u_int8_t arc_type; - /* - * only present for newstyle encoding with LL fragmentation. - * Don't use sizeof(anything), use ARC_LINUX_HDR{,NEW}LEN - * instead. - */ - u_int8_t arc_flag; - u_int16_t arc_seqid; -}; - -#define ARC_LINUX_HDRLEN 5 -#define ARC_LINUX_HDRNEWLEN 8 diff --git a/contrib/tcpdump/atime.awk b/contrib/tcpdump/atime.awk deleted file mode 100644 index b42dec2401868..0000000000000 --- a/contrib/tcpdump/atime.awk +++ /dev/null @@ -1,18 +0,0 @@ -$6 ~ /^ack/ && $5 !~ /[SFR]/ { - # given a tcpdump ftp trace, output one line for each ack - # in the form - # <ack time> <seq no> - # where <ack time> is the time packet was acked (in seconds with - # zero at time of first packet) and <seq no> is the tcp sequence - # number of the ack divided by 1024 (i.e., Kbytes acked). - # - # convert time to seconds - n = split ($1,t,":") - tim = t[1]*3600 + t[2]*60 + t[3] - if (! tzero) { - tzero = tim - OFS = "\t" - } - # get packet sequence number - printf "%7.2f\t%g\n", tim-tzero, $7/1024 - } diff --git a/contrib/tcpdump/atm.h b/contrib/tcpdump/atm.h deleted file mode 100644 index c6ac53ea0719c..0000000000000 --- a/contrib/tcpdump/atm.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2002 Guy Harris. - * All rights reserved. - * - * 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. - * The name of Guy Harris may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * 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. - * - * @(#) $Header: /tcpdump/master/tcpdump/atm.h,v 1.1.4.1 2005/06/20 07:45:05 hannes Exp $ - */ - -/* - * Traffic types for ATM. - */ -#define ATM_UNKNOWN 0 /* Unknown */ -#define ATM_LANE 1 /* LANE */ -#define ATM_LLC 2 /* LLC encapsulation */ - -/* - * some OAM cell captures (most notably Juniper's) - * do not deliver a heading HEC byte - */ -#define ATM_OAM_NOHEC 0 -#define ATM_OAM_HEC 1 diff --git a/contrib/tcpdump/atmuni31.h b/contrib/tcpdump/atmuni31.h deleted file mode 100644 index 304859a9f14b0..0000000000000 --- a/contrib/tcpdump/atmuni31.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 1997 Yen Yen Lim and North Dakota State University - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Yen Yen Lim and - North Dakota State University - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @(#) $Header: /tcpdump/master/tcpdump/atmuni31.h,v 1.2 2002/08/05 07:47:23 guy Exp $ (LBL) - */ - -/* Based on UNI3.1 standard by ATM Forum */ - -/* ATM traffic types based on VPI=0 and (the following VCI */ -#define PPC 0x05 /* Point-to-point signal msg */ -#define BCC 0x02 /* Broadcast signal msg */ -#define OAMF4SC 0x03 /* Segment OAM F4 flow cell */ -#define OAMF4EC 0x04 /* End-to-end OAM F4 flow cell */ -#define METAC 0x01 /* Meta signal msg */ -#define ILMIC 0x10 /* ILMI msg */ - -/* Q.2931 signalling messages */ -#define CALL_PROCEED 0x02 /* call proceeding */ -#define CONNECT 0x07 /* connect */ -#define CONNECT_ACK 0x0f /* connect_ack */ -#define SETUP 0x05 /* setup */ -#define RELEASE 0x4d /* release */ -#define RELEASE_DONE 0x5a /* release_done */ -#define RESTART 0x46 /* restart */ -#define RESTART_ACK 0x4e /* restart ack */ -#define STATUS 0x7d /* status */ -#define STATUS_ENQ 0x75 /* status ack */ -#define ADD_PARTY 0x80 /* add party */ -#define ADD_PARTY_ACK 0x81 /* add party ack */ -#define ADD_PARTY_REJ 0x82 /* add party rej */ -#define DROP_PARTY 0x83 /* drop party */ -#define DROP_PARTY_ACK 0x84 /* drop party ack */ - -/* Information Element Parameters in the signalling messages */ -#define CAUSE 0x08 /* cause */ -#define ENDPT_REF 0x54 /* endpoint reference */ -#define AAL_PARA 0x58 /* ATM adaptation layer parameters */ -#define TRAFF_DESCRIP 0x59 /* atm traffic descriptors */ -#define CONNECT_ID 0x5a /* connection identifier */ -#define QOS_PARA 0x5c /* quality of service parameters */ -#define B_HIGHER 0x5d /* broadband higher layer information */ -#define B_BEARER 0x5e /* broadband bearer capability */ -#define B_LOWER 0x5f /* broadband lower information */ -#define CALLING_PARTY 0x6c /* calling party number */ -#define CALLED_PARTY 0x70 /* called party nmber */ - -#define Q2931 0x09 - -/* Q.2931 signalling general messages format */ -#define PROTO_POS 0 /* offset of protocol discriminator */ -#define CALL_REF_POS 2 /* offset of call reference value */ -#define MSG_TYPE_POS 5 /* offset of message type */ -#define MSG_LEN_POS 7 /* offset of mesage length */ -#define IE_BEGIN_POS 9 /* offset of first information element */ - -/* format of signalling messages */ -#define TYPE_POS 0 -#define LEN_POS 2 -#define FIELD_BEGIN_POS 4 diff --git a/contrib/tcpdump/bgp.h b/contrib/tcpdump/bgp.h deleted file mode 100755 index 06be3ea7c0c13..0000000000000 --- a/contrib/tcpdump/bgp.h +++ /dev/null @@ -1,17 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/bgp.h,v 1.3 2004/06/16 08:45:15 hannes Exp $ (LBL) */ -/* - * 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. - * - * Original code by Hannes Gredler (hannes@juniper.net) - */ - -extern char *bgp_vpn_rd_print (const u_char *); diff --git a/contrib/tcpdump/bootp.h b/contrib/tcpdump/bootp.h deleted file mode 100644 index 2e5d401410ad3..0000000000000 --- a/contrib/tcpdump/bootp.h +++ /dev/null @@ -1,220 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/bootp.h,v 1.15 2003/07/01 19:16:06 guy Exp $ (LBL) */ -/* - * Bootstrap Protocol (BOOTP). RFC951 and RFC1048. - * - * This file specifies the "implementation-independent" BOOTP protocol - * information which is common to both client and server. - * - * Copyright 1988 by Carnegie Mellon. - * - * Permission to use, copy, modify, and distribute this program for any - * purpose and without fee is hereby granted, provided that this copyright - * and permission notice appear on all copies and supporting documentation, - * the name of Carnegie Mellon not be used in advertising or publicity - * pertaining to distribution of the program without specific prior - * permission, and notice be given in supporting documentation that copying - * and distribution is by permission of Carnegie Mellon and Stanford - * University. Carnegie Mellon makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - */ - - -struct bootp { - u_int8_t bp_op; /* packet opcode type */ - u_int8_t bp_htype; /* hardware addr type */ - u_int8_t bp_hlen; /* hardware addr length */ - u_int8_t bp_hops; /* gateway hops */ - u_int32_t bp_xid; /* transaction ID */ - u_int16_t bp_secs; /* seconds since boot began */ - u_int16_t bp_flags; /* flags - see bootp_flag_values[] in print-bootp.c */ - struct in_addr bp_ciaddr; /* client IP address */ - struct in_addr bp_yiaddr; /* 'your' IP address */ - struct in_addr bp_siaddr; /* server IP address */ - struct in_addr bp_giaddr; /* gateway IP address */ - u_int8_t bp_chaddr[16]; /* client hardware address */ - u_int8_t bp_sname[64]; /* server host name */ - u_int8_t bp_file[128]; /* boot file name */ - u_int8_t bp_vend[64]; /* vendor-specific area */ -}; - -/* - * UDP port numbers, server and client. - */ -#define IPPORT_BOOTPS 67 -#define IPPORT_BOOTPC 68 - -#define BOOTPREPLY 2 -#define BOOTPREQUEST 1 - -/* - * Vendor magic cookie (v_magic) for CMU - */ -#define VM_CMU "CMU" - -/* - * Vendor magic cookie (v_magic) for RFC1048 - */ -#define VM_RFC1048 { 99, 130, 83, 99 } - - - -/* - * RFC1048 tag values used to specify what information is being supplied in - * the vendor field of the packet. - */ - -#define TAG_PAD ((u_int8_t) 0) -#define TAG_SUBNET_MASK ((u_int8_t) 1) -#define TAG_TIME_OFFSET ((u_int8_t) 2) -#define TAG_GATEWAY ((u_int8_t) 3) -#define TAG_TIME_SERVER ((u_int8_t) 4) -#define TAG_NAME_SERVER ((u_int8_t) 5) -#define TAG_DOMAIN_SERVER ((u_int8_t) 6) -#define TAG_LOG_SERVER ((u_int8_t) 7) -#define TAG_COOKIE_SERVER ((u_int8_t) 8) -#define TAG_LPR_SERVER ((u_int8_t) 9) -#define TAG_IMPRESS_SERVER ((u_int8_t) 10) -#define TAG_RLP_SERVER ((u_int8_t) 11) -#define TAG_HOSTNAME ((u_int8_t) 12) -#define TAG_BOOTSIZE ((u_int8_t) 13) -#define TAG_END ((u_int8_t) 255) -/* RFC1497 tags */ -#define TAG_DUMPPATH ((u_int8_t) 14) -#define TAG_DOMAINNAME ((u_int8_t) 15) -#define TAG_SWAP_SERVER ((u_int8_t) 16) -#define TAG_ROOTPATH ((u_int8_t) 17) -#define TAG_EXTPATH ((u_int8_t) 18) -/* RFC2132 */ -#define TAG_IP_FORWARD ((u_int8_t) 19) -#define TAG_NL_SRCRT ((u_int8_t) 20) -#define TAG_PFILTERS ((u_int8_t) 21) -#define TAG_REASS_SIZE ((u_int8_t) 22) -#define TAG_DEF_TTL ((u_int8_t) 23) -#define TAG_MTU_TIMEOUT ((u_int8_t) 24) -#define TAG_MTU_TABLE ((u_int8_t) 25) -#define TAG_INT_MTU ((u_int8_t) 26) -#define TAG_LOCAL_SUBNETS ((u_int8_t) 27) -#define TAG_BROAD_ADDR ((u_int8_t) 28) -#define TAG_DO_MASK_DISC ((u_int8_t) 29) -#define TAG_SUPPLY_MASK ((u_int8_t) 30) -#define TAG_DO_RDISC ((u_int8_t) 31) -#define TAG_RTR_SOL_ADDR ((u_int8_t) 32) -#define TAG_STATIC_ROUTE ((u_int8_t) 33) -#define TAG_USE_TRAILERS ((u_int8_t) 34) -#define TAG_ARP_TIMEOUT ((u_int8_t) 35) -#define TAG_ETH_ENCAP ((u_int8_t) 36) -#define TAG_TCP_TTL ((u_int8_t) 37) -#define TAG_TCP_KEEPALIVE ((u_int8_t) 38) -#define TAG_KEEPALIVE_GO ((u_int8_t) 39) -#define TAG_NIS_DOMAIN ((u_int8_t) 40) -#define TAG_NIS_SERVERS ((u_int8_t) 41) -#define TAG_NTP_SERVERS ((u_int8_t) 42) -#define TAG_VENDOR_OPTS ((u_int8_t) 43) -#define TAG_NETBIOS_NS ((u_int8_t) 44) -#define TAG_NETBIOS_DDS ((u_int8_t) 45) -#define TAG_NETBIOS_NODE ((u_int8_t) 46) -#define TAG_NETBIOS_SCOPE ((u_int8_t) 47) -#define TAG_XWIN_FS ((u_int8_t) 48) -#define TAG_XWIN_DM ((u_int8_t) 49) -#define TAG_NIS_P_DOMAIN ((u_int8_t) 64) -#define TAG_NIS_P_SERVERS ((u_int8_t) 65) -#define TAG_MOBILE_HOME ((u_int8_t) 68) -#define TAG_SMPT_SERVER ((u_int8_t) 69) -#define TAG_POP3_SERVER ((u_int8_t) 70) -#define TAG_NNTP_SERVER ((u_int8_t) 71) -#define TAG_WWW_SERVER ((u_int8_t) 72) -#define TAG_FINGER_SERVER ((u_int8_t) 73) -#define TAG_IRC_SERVER ((u_int8_t) 74) -#define TAG_STREETTALK_SRVR ((u_int8_t) 75) -#define TAG_STREETTALK_STDA ((u_int8_t) 76) -/* DHCP options */ -#define TAG_REQUESTED_IP ((u_int8_t) 50) -#define TAG_IP_LEASE ((u_int8_t) 51) -#define TAG_OPT_OVERLOAD ((u_int8_t) 52) -#define TAG_TFTP_SERVER ((u_int8_t) 66) -#define TAG_BOOTFILENAME ((u_int8_t) 67) -#define TAG_DHCP_MESSAGE ((u_int8_t) 53) -#define TAG_SERVER_ID ((u_int8_t) 54) -#define TAG_PARM_REQUEST ((u_int8_t) 55) -#define TAG_MESSAGE ((u_int8_t) 56) -#define TAG_MAX_MSG_SIZE ((u_int8_t) 57) -#define TAG_RENEWAL_TIME ((u_int8_t) 58) -#define TAG_REBIND_TIME ((u_int8_t) 59) -#define TAG_VENDOR_CLASS ((u_int8_t) 60) -#define TAG_CLIENT_ID ((u_int8_t) 61) -/* RFC 2241 */ -#define TAG_NDS_SERVERS ((u_int8_t) 85) -#define TAG_NDS_TREE_NAME ((u_int8_t) 86) -#define TAG_NDS_CONTEXT ((u_int8_t) 87) -/* RFC 2242 */ -#define TAG_NDS_IPDOMAIN ((u_int8_t) 62) -#define TAG_NDS_IPINFO ((u_int8_t) 63) -/* RFC 2485 */ -#define TAG_OPEN_GROUP_UAP ((u_int8_t) 98) -/* RFC 2563 */ -#define TAG_DISABLE_AUTOCONF ((u_int8_t) 116) -/* RFC 2610 */ -#define TAG_SLP_DA ((u_int8_t) 78) -#define TAG_SLP_SCOPE ((u_int8_t) 79) -/* RFC 2937 */ -#define TAG_NS_SEARCH ((u_int8_t) 117) -/* RFC 3011 */ -#define TAG_IP4_SUBNET_SELECT ((u_int8_t) 118) -/* ftp://ftp.isi.edu/.../assignments/bootp-dhcp-extensions */ -#define TAG_USER_CLASS ((u_int8_t) 77) -#define TAG_SLP_NAMING_AUTH ((u_int8_t) 80) -#define TAG_CLIENT_FQDN ((u_int8_t) 81) -#define TAG_AGENT_CIRCUIT ((u_int8_t) 82) -#define TAG_AGENT_REMOTE ((u_int8_t) 83) -#define TAG_AGENT_MASK ((u_int8_t) 84) -#define TAG_TZ_STRING ((u_int8_t) 88) -#define TAG_FQDN_OPTION ((u_int8_t) 89) -#define TAG_AUTH ((u_int8_t) 90) -#define TAG_VINES_SERVERS ((u_int8_t) 91) -#define TAG_SERVER_RANK ((u_int8_t) 92) -#define TAG_CLIENT_ARCH ((u_int8_t) 93) -#define TAG_CLIENT_NDI ((u_int8_t) 94) -#define TAG_CLIENT_GUID ((u_int8_t) 97) -#define TAG_LDAP_URL ((u_int8_t) 95) -#define TAG_6OVER4 ((u_int8_t) 96) -#define TAG_PRINTER_NAME ((u_int8_t) 100) -#define TAG_MDHCP_SERVER ((u_int8_t) 101) -#define TAG_IPX_COMPAT ((u_int8_t) 110) -#define TAG_NETINFO_PARENT ((u_int8_t) 112) -#define TAG_NETINFO_PARENT_TAG ((u_int8_t) 113) -#define TAG_URL ((u_int8_t) 114) -#define TAG_FAILOVER ((u_int8_t) 115) -#define TAG_EXTENDED_REQUEST ((u_int8_t) 126) -#define TAG_EXTENDED_OPTION ((u_int8_t) 127) - - -/* DHCP Message types (values for TAG_DHCP_MESSAGE option) */ -#define DHCPDISCOVER 1 -#define DHCPOFFER 2 -#define DHCPREQUEST 3 -#define DHCPDECLINE 4 -#define DHCPACK 5 -#define DHCPNAK 6 -#define DHCPRELEASE 7 -#define DHCPINFORM 8 - - -/* - * "vendor" data permitted for CMU bootp clients. - */ - -struct cmu_vend { - u_int8_t v_magic[4]; /* magic number */ - u_int32_t v_flags; /* flags/opcodes, etc. */ - struct in_addr v_smask; /* Subnet mask */ - struct in_addr v_dgate; /* Default gateway */ - struct in_addr v_dns1, v_dns2; /* Domain name servers */ - struct in_addr v_ins1, v_ins2; /* IEN-116 name servers */ - struct in_addr v_ts1, v_ts2; /* Time servers */ - u_int8_t v_unused[24]; /* currently unused */ -}; - - -/* v_flags values */ -#define VF_SMASK 1 /* Subnet mask field contains valid data */ diff --git a/contrib/tcpdump/bpf_dump.c b/contrib/tcpdump/bpf_dump.c deleted file mode 100644 index 0cad4d95542ec..0000000000000 --- a/contrib/tcpdump/bpf_dump.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 1992, 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/bpf_dump.c,v 1.16 2003/11/16 09:36:08 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <pcap.h> -#include <stdio.h> - -#include "interface.h" - -void -bpf_dump(struct bpf_program *p, int option) -{ - struct bpf_insn *insn; - int i; - int n = p->bf_len; - - insn = p->bf_insns; - if (option > 2) { - printf("%d\n", n); - for (i = 0; i < n; ++insn, ++i) { - printf("%u %u %u %u\n", insn->code, - insn->jt, insn->jf, insn->k); - } - return ; - } - if (option > 1) { - for (i = 0; i < n; ++insn, ++i) - printf("{ 0x%x, %d, %d, 0x%08x },\n", - insn->code, insn->jt, insn->jf, insn->k); - return; - } - for (i = 0; i < n; ++insn, ++i) { -#ifdef BDEBUG - extern int bids[]; - printf(bids[i] > 0 ? "[%02d]" : " -- ", bids[i] - 1); -#endif - puts(bpf_image(insn, i)); - } -} diff --git a/contrib/tcpdump/chdlc.h b/contrib/tcpdump/chdlc.h deleted file mode 100644 index 4fb6e1d4e41d9..0000000000000 --- a/contrib/tcpdump/chdlc.h +++ /dev/null @@ -1,27 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/chdlc.h,v 1.1 2000/09/18 05:11:43 guy Exp $ (LBL) */ -/* - * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#define CHDLC_HDRLEN 4 -#define CHDLC_UNICAST 0x0f -#define CHDLC_BCAST 0x8f -#define CHDLC_TYPE_SLARP 0x8035 -#define CHDLC_TYPE_CDP 0x2000 diff --git a/contrib/tcpdump/config.guess b/contrib/tcpdump/config.guess deleted file mode 100755 index 4c5bde8a28068..0000000000000 --- a/contrib/tcpdump/config.guess +++ /dev/null @@ -1,1429 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - -timestamp='2003-10-16' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Per Bothner <per@bothner.com>. -# Please send patches to <config-patches@gnu.org>. Submit a context -# diff and a properly formatted ChangeLog entry. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to <config-patches@gnu.org>." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; - --version | -v ) - echo "$version" ; exit 0 ;; - --help | --h* | -h ) - echo "$usage"; exit 0 ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit 0 ;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - macppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvmeppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pegasos:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pmax:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mipseb-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sun3:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - wgrisc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - alpha:OSF1:*:*) - if test $UNAME_RELEASE = "V4.0"; then - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - fi - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit 0 ;; - Alpha*:OpenVMS:*:*) - echo alpha-hp-vms - exit 0 ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit 0 ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit 0 ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit 0;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit 0 ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit 0 ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit 0 ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit 0 ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit 0;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit 0 ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit 0 ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit 0 ;; - DRS?6000:UNIX_SV:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7 && exit 0 ;; - esac ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit 0 ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit 0 ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit 0 ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit 0 ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit 0 ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit 0 ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit 0 ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit 0 ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include <stdio.h> /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c \ - && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && exit 0 - echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit 0 ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit 0 ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit 0 ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit 0 ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit 0 ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit 0 ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit 0 ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit 0 ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit 0 ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit 0 ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit 0 ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit 0 ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit 0 ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include <sys/systemcfg.h> - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 - echo rs6000-ibm-aix3.2.5 - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit 0 ;; - *:AIX:*:[45]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit 0 ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit 0 ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit 0 ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit 0 ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit 0 ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit 0 ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include <stdlib.h> - #include <unistd.h> - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - # avoid double evaluation of $set_cc_for_build - test -n "$CC_FOR_BUILD" || eval $set_cc_for_build - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit 0 ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include <unistd.h> - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 - echo unknown-hitachi-hiuxwe2 - exit 0 ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit 0 ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit 0 ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit 0 ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit 0 ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit 0 ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit 0 ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit 0 ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit 0 ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit 0 ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit 0 ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit 0 ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - *:UNICOS/mp:*:*) - echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit 0 ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit 0 ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit 0 ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:FreeBSD:*:*) - # Determine whether the default compiler uses glibc. - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include <features.h> - #if __GLIBC__ >= 2 - LIBC=gnu - #else - LIBC= - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - # GNU/KFreeBSD systems have a "k" prefix to indicate we are using - # FreeBSD's kernel, but not the complete OS. - case ${LIBC} in gnu) kernel_only='k' ;; esac - echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} - exit 0 ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit 0 ;; - i*:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit 0 ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit 0 ;; - x86:Interix*:[34]*) - echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' - exit 0 ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit 0 ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit 0 ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit 0 ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit 0 ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu - exit 0 ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit 0 ;; - arm*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - cris:Linux:*:*) - echo cris-axis-linux-gnu - exit 0 ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - mips:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips - #undef mipsel - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mipsel - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 - ;; - mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips64 - #undef mips64el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mips64el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips64 - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 - ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit 0 ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit 0 ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit 0 ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit 0 ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit 0 ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit 0 ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit 0 ;; - i*86:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - # Set LC_ALL=C to ensure ld outputs messages in English. - ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ - | sed -ne '/supported targets:/!d - s/[ ][ ]*/ /g - s/.*supported targets: *// - s/ .*// - p'` - case "$ld_supported_targets" in - elf32-i386) - TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit 0 ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include <features.h> - #ifdef __ELF__ - # ifdef __GLIBC__ - # if __GLIBC__ >= 2 - LIBC=gnu - # else - LIBC=gnulibc1 - # endif - # else - LIBC=gnulibc1 - # endif - #else - #ifdef __INTEL_COMPILER - LIBC=gnu - #else - LIBC=gnuaout - #endif - #endif - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 - test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 - ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit 0 ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit 0 ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit 0 ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit 0 ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit 0 ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit 0 ;; - i*86:*:5:[78]*) - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit 0 ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` - echo ${UNAME_MACHINE}-pc-isc$UNAME_REL - elif /bin/uname -X 2>/dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit 0 ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit 0 ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit 0 ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit 0 ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit 0 ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit 0 ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit 0 ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit 0 ;; - M68*:*:R3V[567]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3${OS_REL} && exit 0 - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit 0 ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit 0 ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit 0 ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says <Richard.M.Bartel@ccMail.Census.GOV> - echo i586-unisys-sysv4 - exit 0 ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes <hewes@openmarket.com>. - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit 0 ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit 0 ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit 0 ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit 0 ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit 0 ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit 0 ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit 0 ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit 0 ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit 0 ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit 0 ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit 0 ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Darwin:*:*) - case `uname -p` in - *86) UNAME_PROCESSOR=i686 ;; - powerpc) UNAME_PROCESSOR=powerpc ;; - esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit 0 ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit 0 ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit 0 ;; - NSR-[DGKLNPTVWY]:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit 0 ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit 0 ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit 0 ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit 0 ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit 0 ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit 0 ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit 0 ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit 0 ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit 0 ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit 0 ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit 0 ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit 0 ;; - *:DRAGONFLY:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly${UNAME_RELEASE} - exit 0 ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c <<EOF -#ifdef _SEQUENT_ -# include <sys/types.h> -# include <sys/utsname.h> -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include <sys/param.h> - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include <sys/param.h> -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit 0 ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - c34*) - echo c34-convex-bsd - exit 0 ;; - c38*) - echo c38-convex-bsd - exit 0 ;; - c4*) - echo c4-convex-bsd - exit 0 ;; - esac -fi - -cat >&2 <<EOF -$0: unable to guess system type - -This script, last modified $timestamp, has failed to recognize -the operating system you are using. It is advised that you -download the most up to date version of the config scripts from - - ftp://ftp.gnu.org/pub/gnu/config/ - -If the version you run ($0) is already up to date, please -send the following data and any information you think might be -pertinent to <config-patches@gnu.org> in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/contrib/tcpdump/config.h.in b/contrib/tcpdump/config.h.in deleted file mode 100644 index dbda50501ec08..0000000000000 --- a/contrib/tcpdump/config.h.in +++ /dev/null @@ -1,347 +0,0 @@ -/* config.h.in. Generated from configure.in by autoheader. */ -/* "generated automatically" means DO NOT MAKE CHANGES TO config.h.in -- - * make them to acconfig.h and rerun autoheader */ - -/* Define if you have SSLeay 0.9.0b with the buggy cast128. */ -#undef HAVE_BUGGY_CAST128 - -/* Define if you enable IPv6 support */ -#undef INET6 - -/* Define if you enable support for the libsmi. */ -#undef LIBSMI - -/* Define if you have the <smi.h> header file. */ -#undef HAVE_SMI_H - -/* define if you have struct __res_state_ext */ -#undef HAVE_RES_STATE_EXT - -/* define if your struct __res_state has the nsort member */ -#undef HAVE_NEW_RES_STATE - -/* - * define if struct ether_header.ether_dhost is a struct with ether_addr_octet - */ -#undef ETHER_HEADER_HAS_EA - -/* define if struct ether_arp contains arp_xsha */ -#undef ETHER_ARP_HAS_X - -/* define if you have the addrinfo function. */ -#undef HAVE_ADDRINFO - -/* define if you need to include missing/addrinfoh.h. */ -#undef NEED_ADDRINFO_H - -/* define ifyou have the h_errno variable. */ -#undef HAVE_H_ERRNO - -/* define if IN6ADDRSZ is defined (XXX not used!) */ -#undef HAVE_IN6ADDRSZ - -/* define if INADDRSZ is defined (XXX not used!) */ -#undef HAVE_INADDRSZ - -/* define if this is a development version, to use additional prototypes. */ -#undef HAVE_OS_PROTO_H - -/* define if <unistd.h> defines __P() */ -#undef HAVE_PORTABLE_PROTOTYPE - -/* define if RES_USE_INET6 is defined */ -#undef HAVE_RES_USE_INET6 - -/* define if struct sockaddr has the sa_len member */ -#undef HAVE_SOCKADDR_SA_LEN - -/* define if you have struct sockaddr_storage */ -#undef HAVE_SOCKADDR_STORAGE - -/* define if you have both getipnodebyname() and getipnodebyaddr() */ -#undef USE_GETIPNODEBY - -/* define if you have ether_ntohost() and it works */ -#undef USE_ETHER_NTOHOST - -/* define if libpcap has pcap_version */ -#undef HAVE_PCAP_VERSION - -/* define if libpcap has pcap_debug */ -#undef HAVE_PCAP_DEBUG - -/* define if libpcap has yydebug */ -#undef HAVE_YYDEBUG - -/* define if libpcap has pcap_list_datalinks() */ -#undef HAVE_PCAP_LIST_DATALINKS - -/* define if libpcap has pcap_set_datalink() */ -#undef HAVE_PCAP_SET_DATALINK - -/* define if libpcap has pcap_datalink_name_to_val() */ -#undef HAVE_PCAP_DATALINK_NAME_TO_VAL - -/* define if libpcap has pcap_datalink_val_to_description() */ -#undef HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION - -/* define if libpcap has pcap_dump_ftell() */ -#undef HAVE_PCAP_DUMP_FTELL - -/* define if you have getrpcbynumber() */ -#undef HAVE_GETRPCBYNUMBER - -/* define if unaligned memory accesses fail */ -#undef LBL_ALIGN - -/* The successful return value from signal (?)XXX */ -#undef RETSIGVAL - -/* Define this on IRIX */ -#undef _BSD_SIGNALS - -/* For HP/UX ANSI compiler? */ -#undef _HPUX_SOURCE - -/* AIX hack. */ -#undef _SUN - -/* Workaround for missing 64-bit formats */ -#undef PRId64 -#undef PRIo64 -#undef PRIx64 -#undef PRIu64 - -/* Whether or not to include the possibly-buggy SMB printer */ -#undef TCPDUMP_DO_SMB - -/* Long story short: aclocal.m4 depends on autoconf 2.13 - * implementation details wrt "const"; newer versions - * have different implementation details so for now we - * put "const" here. This may cause duplicate definitions - * in config.h but that should be OK since they're the same. - */ -#undef const - -/* Define if you have the dnet_htoa function. */ -#undef HAVE_DNET_HTOA - -/* Define if you have a dnet_htoa declaration in <netdnet/dnetdb.h>. */ -#undef HAVE_NETDNET_DNETDB_H_DNET_HTOA - -/* define if should drop privileges by default */ -#undef WITH_USER - -/* define if should chroot when dropping privileges */ -#undef WITH_CHROOT - -/* Define to 1 if you have the `alarm' function. */ -#undef HAVE_ALARM - -/* Define to 1 if you have the `bpf_dump' function. */ -#undef HAVE_BPF_DUMP - -/* Define to 1 if you have the declaration of `ether_ntohost', and to 0 if you - don't. */ -#undef HAVE_DECL_ETHER_NTOHOST - -/* Define to 1 if you have the `ether_ntohost' function. */ -#undef HAVE_ETHER_NTOHOST - -/* Define to 1 if you have the <fcntl.h> header file. */ -#undef HAVE_FCNTL_H - -/* Define to 1 if you have the `getaddrinfo' function. */ -#undef HAVE_GETADDRINFO - -/* Define to 1 if you have the `getnameinfo' function. */ -#undef HAVE_GETNAMEINFO - -/* Define to 1 if you have the <inttypes.h> header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the `crypto' library (-lcrypto). */ -#undef HAVE_LIBCRYPTO - -/* Define to 1 if you have the `rpc' library (-lrpc). */ -#undef HAVE_LIBRPC - -/* Define to 1 if you have the `smi' library (-lsmi). */ -#undef HAVE_LIBSMI - -/* Define to 1 if you have the <memory.h> header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the <netdnet/dnetdb.h> header file. */ -#undef HAVE_NETDNET_DNETDB_H - -/* Define to 1 if you have the <netinet/ether.h> header file. */ -#undef HAVE_NETINET_ETHER_H - -/* Define to 1 if you have the <netinet/if_ether.h> header file. */ -#undef HAVE_NETINET_IF_ETHER_H - -/* Define to 1 if you have the <openssl/evp.h> header file. */ -#undef HAVE_OPENSSL_EVP_H - -/* Define to 1 if you have the `pcap_breakloop' function. */ -#undef HAVE_PCAP_BREAKLOOP - -/* Define to 1 if you have the `pcap_dump_flush' function. */ -#undef HAVE_PCAP_DUMP_FLUSH - -/* Define to 1 if you have the `pcap_findalldevs' function. */ -#undef HAVE_PCAP_FINDALLDEVS - -/* Define to 1 if the system has the type `pcap_if_t'. */ -#undef HAVE_PCAP_IF_T - -/* Define to 1 if you have the `pcap_lib_version' function. */ -#undef HAVE_PCAP_LIB_VERSION - -/* Define to 1 if you have the `pfopen' function. */ -#undef HAVE_PFOPEN - -/* Define to 1 if you have the <rpc/rpcent.h> header file. */ -#undef HAVE_RPC_RPCENT_H - -/* Define to 1 if you have the `setlinebuf' function. */ -#undef HAVE_SETLINEBUF - -/* Define to 1 if you have the `sigaction' function. */ -#undef HAVE_SIGACTION - -/* Define to 1 if you have the `sigset' function. */ -#undef HAVE_SIGSET - -/* Define to 1 if you have the <smi.h> header file. */ -#undef HAVE_SMI_H - -/* Define to 1 if you have the `snprintf' function. */ -#undef HAVE_SNPRINTF - -/* Define to 1 if you have the <stdint.h> header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the <stdlib.h> header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the `strcasecmp' function. */ -#undef HAVE_STRCASECMP - -/* Define to 1 if you have the `strdup' function. */ -#undef HAVE_STRDUP - -/* Define to 1 if you have the `strftime' function. */ -#undef HAVE_STRFTIME - -/* Define to 1 if you have the <strings.h> header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the <string.h> header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the `strlcat' function. */ -#undef HAVE_STRLCAT - -/* Define to 1 if you have the `strlcpy' function. */ -#undef HAVE_STRLCPY - -/* Define to 1 if you have the `strsep' function. */ -#undef HAVE_STRSEP - -/* Define to 1 if the system has the type `struct ether_addr'. */ -#undef HAVE_STRUCT_ETHER_ADDR - -/* Define to 1 if you have the <sys/bitypes.h> header file. */ -#undef HAVE_SYS_BITYPES_H - -/* Define to 1 if you have the <sys/stat.h> header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the <sys/types.h> header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the <unistd.h> header file. */ -#undef HAVE_UNISTD_H - -/* Define to 1 if you have the `vfprintf' function. */ -#undef HAVE_VFPRINTF - -/* Define to 1 if you have the `vsnprintf' function. */ -#undef HAVE_VSNPRINTF - -/* define if your compiler has __attribute__ */ -#undef HAVE___ATTRIBUTE__ - -/* Define to 1 if netinet/ether.h declares `ether_ntohost' */ -#undef NETINET_ETHER_H_DECLARES_ETHER_NTOHOST - -/* Define to 1 if netinet/if_ether.h declares `ether_ntohost' */ -#undef NETINET_IF_ETHER_H_DECLARES_ETHER_NTOHOST - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Define as the return type of signal handlers (`int' or `void'). */ -#undef RETSIGTYPE - -/* The size of a `char', as computed by sizeof. */ -#undef SIZEOF_CHAR - -/* The size of a `int', as computed by sizeof. */ -#undef SIZEOF_INT - -/* The size of a `long', as computed by sizeof. */ -#undef SIZEOF_LONG - -/* The size of a `long long', as computed by sizeof. */ -#undef SIZEOF_LONG_LONG - -/* The size of a `short', as computed by sizeof. */ -#undef SIZEOF_SHORT - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ -#undef TIME_WITH_SYS_TIME - -/* Define as token for inline if inlining supported */ -#undef inline - -/* Define to `short' if int16_t not defined. */ -#undef int16_t - -/* Define to `int' if int32_t not defined. */ -#undef int32_t - -/* Define to `long long' if int64_t not defined. */ -#undef int64_t - -/* Define to `signed char' if int8_t not defined. */ -#undef int8_t - -/* Define to `unsigned short' if u_int16_t not defined. */ -#undef u_int16_t - -/* Define to `unsigned int' if u_int32_t not defined. */ -#undef u_int32_t - -/* Define to `unsigned long long' if u_int64_t not defined. */ -#undef u_int64_t - -/* Define to `unsigned char' if u_int8_t not defined. */ -#undef u_int8_t diff --git a/contrib/tcpdump/config.sub b/contrib/tcpdump/config.sub deleted file mode 100755 index 56981740d6ef0..0000000000000 --- a/contrib/tcpdump/config.sub +++ /dev/null @@ -1,1531 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - -timestamp='2003-11-03' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Please send patches to <config-patches@gnu.org>. Submit a context -# diff and a properly formatted ChangeLog entry. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to <config-patches@gnu.org>." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; - --version | -v ) - echo "$version" ; exit 0 ;; - --help | --h* | -h ) - echo "$usage"; exit 0 ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit 0;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ - kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis) - os= - basic_machine=$1 - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | m32r | m68000 | m68k | m88k | mcore \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64vr | mips64vrel \ - | mips64orion | mips64orionel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | msp430 \ - | ns16k | ns32k \ - | openrisc | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ - | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ - | strongarm \ - | tahoe | thumb | tic4x | tic80 | tron \ - | v850 | v850e \ - | we32k \ - | x86 | xscale | xstormy16 | xtensa \ - | z8k) - basic_machine=$basic_machine-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* \ - | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ - | clipper-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | m32r-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | mcore-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | msp430-* \ - | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ - | pyramid-* \ - | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ - | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tron-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ - | xtensa-* \ - | ymp-* \ - | z8k-*) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - crds | unos) - basic_machine=m68k-crds - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - mmix*) - basic_machine=mmix-knuth - os=-mmixware - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - nv1) - basic_machine=nv1-cray - os=-unicosmp - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - or32 | or32-*) - basic_machine=or32-unknown - os=-coff - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tic55x | c55x*) - basic_machine=tic55x-unknown - os=-coff - ;; - tic6x | c6x*) - basic_machine=tic6x-unknown - os=-coff - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparc | sparcv9 | sparcv9b) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -netbsd* | -openbsd* | -kfreebsd* | -freebsd* | -riscix* \ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -kaos*) - os=-kaos - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-ibm) - os=-aix - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/contrib/tcpdump/configure b/contrib/tcpdump/configure deleted file mode 100755 index 4998c6b02a87e..0000000000000 --- a/contrib/tcpdump/configure +++ /dev/null @@ -1,13025 +0,0 @@ -#! /bin/sh -# From configure.in Revision: 1.188.2.7 . -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.57. -# -# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi - -# Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -exec 6>&1 - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_config_libobj_dir=. -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= - -ac_unique_file="tcpdump.c" -# Factoring default headers for most tests. -ac_includes_default="\ -#include <stdio.h> -#if HAVE_SYS_TYPES_H -# include <sys/types.h> -#endif -#if HAVE_SYS_STAT_H -# include <sys/stat.h> -#endif -#if STDC_HEADERS -# include <stdlib.h> -# include <stddef.h> -#else -# if HAVE_STDLIB_H -# include <stdlib.h> -# endif -#endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H -# include <memory.h> -# endif -# include <string.h> -#endif -#if HAVE_STRINGS_H -# include <strings.h> -#endif -#if HAVE_INTTYPES_H -# include <inttypes.h> -#else -# if HAVE_STDINT_H -# include <stdint.h> -# endif -#endif -#if HAVE_UNISTD_H -# include <unistd.h> -#endif" - -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os SHLICC2 CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP LIBOBJS V_CCOPT V_DEFS V_GROUP V_INCLS V_PCAPDEP LOCALSRC INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LTLIBOBJS' -ac_subst_files='' - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -ac_prev= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_option in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi -fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 - { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures this package to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -_ACEOF - - cat <<_ACEOF -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] -_ACEOF - - cat <<\_ACEOF - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - - cat <<\_ACEOF - -Optional Features: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-smb enable possibly-buggy SMB printer default=yes - --disable-smb disable possibly-buggy SMB printer - --enable-ipv6 enable ipv6 (with ipv4) support - --disable-ipv6 disable ipv6 support - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --without-gcc don't use gcc - --with-user=USERNAME drop privileges by default to USERNAME - --with-chroot=DIRECTORY when dropping privileges, chroot to DIRECTORY - --without-crypto disable crypto support - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a - nonstandard directory <lib dir> - CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have - headers in a nonstandard directory <include dir> - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -_ACEOF -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - ac_popdir=`pwd` - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd $ac_popdir - done -fi - -test -n "$ac_init_help" && exit 0 -if $ac_init_version; then - cat <<\_ACEOF - -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 -Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit 0 -fi -exec 5>config.log -cat >&5 <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by $as_me, which was -generated by GNU Autoconf 2.57. Invocation command line was - - $ $0 $@ - -_ACEOF -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_sep= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " - ;; - esac - done -done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -{ - (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) - sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; - *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} - echo - - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - sed "/^$/d" confdefs.h | sort - echo - fi - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" - } >&5 - rm -f core core.* *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status - ' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - - - - - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} - { (exit 1); exit 1; }; } -fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. - -# Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} - { (exit 1); exit 1; }; } - -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 -build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6 -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_host_alias=$host_alias -test -z "$ac_cv_host_alias" && - ac_cv_host_alias=$ac_cv_build_alias -ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6 -host=$ac_cv_host -host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - - - - - - - -# Check whether --with-gcc or --without-gcc was given. -if test "${with_gcc+set}" = set; then - withval="$with_gcc" - -fi; - V_CCOPT="-O" - V_INCLS="" - if test "${srcdir}" != "." ; then - V_INCLS="-I\$(srcdir)" - fi - if test "${CFLAGS+set}" = set; then - LBL_CFLAGS="$CFLAGS" - fi - if test -z "$CC" ; then - case "$host_os" in - - bsdi*) - # Extract the first word of "shlicc2", so it can be a program name with args. -set dummy shlicc2; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_SHLICC2+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$SHLICC2"; then - ac_cv_prog_SHLICC2="$SHLICC2" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_SHLICC2="yes" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_SHLICC2" && ac_cv_prog_SHLICC2="no" -fi -fi -SHLICC2=$ac_cv_prog_SHLICC2 -if test -n "$SHLICC2"; then - echo "$as_me:$LINENO: result: $SHLICC2" >&5 -echo "${ECHO_T}$SHLICC2" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - if test $SHLICC2 = yes ; then - CC=shlicc2 - export CC - fi - ;; - esac - fi - if test -z "$CC" -a "$with_gcc" = no ; then - CC=cc - export CC - fi - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_CC" && break -done - - CC=$ac_ct_CC -fi - -fi - - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - -# Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 - (eval $ac_compiler --version </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 - (eval $ac_compiler -v </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 - (eval $ac_compiler -V </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -echo "$as_me:$LINENO: checking for C compiler default output" >&5 -echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) - ;; - conftest.$ac_ext ) - # This is the source file. - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool, - # but it would be cool to find out if it's true. Does anybody - # maintain Libtool? --akim. - export ac_cv_exeext - break;; - * ) - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } -fi - -ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 - -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -rm -f a.out a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_compiler_gnu=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 -GCC=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_prog_cc_g=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_stdc=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdarg.h> -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.$ac_objext -done -rm -f conftest.$ac_ext conftest.$ac_objext -CC=$ac_save_CC - -fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; - *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; -esac - -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - ''\ - '#include <stdlib.h>' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdlib.h> -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -continue -fi -rm -f conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.$ac_objext conftest.$ac_ext -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - if test "$GCC" = yes ; then - if test "$SHLICC2" = yes ; then - ac_cv_lbl_gcc_vers=2 - V_CCOPT="-O2" - else - echo "$as_me:$LINENO: checking gcc version" >&5 -echo $ECHO_N "checking gcc version... $ECHO_C" >&6 - if test "${ac_cv_lbl_gcc_vers+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_lbl_gcc_vers=`$CC -v 2>&1 | \ - sed -e '/^gcc version /!d' \ - -e 's/^gcc version //' \ - -e 's/ .*//' -e 's/^[^0-9]*//' \ - -e 's/\..*//'` -fi - - echo "$as_me:$LINENO: result: $ac_cv_lbl_gcc_vers" >&5 -echo "${ECHO_T}$ac_cv_lbl_gcc_vers" >&6 - if test $ac_cv_lbl_gcc_vers -gt 1 ; then - V_CCOPT="-O2" - fi - fi - else - echo "$as_me:$LINENO: checking that $CC handles ansi prototypes" >&5 -echo $ECHO_N "checking that $CC handles ansi prototypes... $ECHO_C" >&6 - if test "${ac_cv_lbl_cc_ansi_prototypes+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sys/types.h> -int -main () -{ -int frob(int, char *) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lbl_cc_ansi_prototypes=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lbl_cc_ansi_prototypes=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $ac_cv_lbl_cc_ansi_prototypes" >&5 -echo "${ECHO_T}$ac_cv_lbl_cc_ansi_prototypes" >&6 - if test $ac_cv_lbl_cc_ansi_prototypes = no ; then - case "$host_os" in - - hpux*) - echo "$as_me:$LINENO: checking for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)" >&5 -echo $ECHO_N "checking for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)... $ECHO_C" >&6 - savedcflags="$CFLAGS" - CFLAGS="-Aa -D_HPUX_SOURCE $CFLAGS" - if test "${ac_cv_lbl_cc_hpux_cc_aa+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sys/types.h> -int -main () -{ -int frob(int, char *) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lbl_cc_hpux_cc_aa=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lbl_cc_hpux_cc_aa=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $ac_cv_lbl_cc_hpux_cc_aa" >&5 -echo "${ECHO_T}$ac_cv_lbl_cc_hpux_cc_aa" >&6 - if test $ac_cv_lbl_cc_hpux_cc_aa = no ; then - { { echo "$as_me:$LINENO: error: see the INSTALL doc for more info" >&5 -echo "$as_me: error: see the INSTALL doc for more info" >&2;} - { (exit 1); exit 1; }; } - fi - CFLAGS="$savedcflags" - V_CCOPT="-Aa $V_CCOPT" - cat >>confdefs.h <<\_ACEOF -#define _HPUX_SOURCE 1 -_ACEOF - - ;; - - *) - { { echo "$as_me:$LINENO: error: see the INSTALL doc for more info" >&5 -echo "$as_me: error: see the INSTALL doc for more info" >&2;} - { (exit 1); exit 1; }; } - ;; - esac - fi - V_INCLS="$V_INCLS -I/usr/local/include" - LDFLAGS="$LDFLAGS -L/usr/local/lib" - - case "$host_os" in - - irix*) - V_CCOPT="$V_CCOPT -xansi -signed -O" - ;; - - osf*) - V_CCOPT="$V_CCOPT -std1 -O" - ;; - - ultrix*) - echo "$as_me:$LINENO: checking that Ultrix $CC hacks const in prototypes" >&5 -echo $ECHO_N "checking that Ultrix $CC hacks const in prototypes... $ECHO_C" >&6 - if test "${ac_cv_lbl_cc_const_proto+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sys/types.h> -int -main () -{ -struct a { int b; }; - void c(const struct a *) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lbl_cc_const_proto=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lbl_cc_const_proto=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $ac_cv_lbl_cc_const_proto" >&5 -echo "${ECHO_T}$ac_cv_lbl_cc_const_proto" >&6 - if test $ac_cv_lbl_cc_const_proto = no ; then - cat >>confdefs.h <<\_ACEOF -#define const -_ACEOF - - fi - ;; - esac - fi - -echo "$as_me:$LINENO: checking for inline" >&5 -echo $ECHO_N "checking for inline... $ECHO_C" >&6 - if test "${ac_cv_lbl_inline+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - ac_cv_lbl_inline="" - ac_lbl_cc_inline=no - for ac_lbl_inline in inline __inline__ __inline - do - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#define inline $ac_lbl_inline - static inline struct iltest *foo(void); - struct iltest { - int iltest1; - int iltest2; - }; - - static inline struct iltest * - foo() - { - static struct iltest xxx; - - return &xxx; - } -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lbl_cc_inline=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - if test "$ac_lbl_cc_inline" = yes ; then - break; - fi - done - if test "$ac_lbl_cc_inline" = yes ; then - ac_cv_lbl_inline=$ac_lbl_inline - fi -fi - - if test ! -z "$ac_cv_lbl_inline" ; then - echo "$as_me:$LINENO: result: $ac_cv_lbl_inline" >&5 -echo "${ECHO_T}$ac_cv_lbl_inline" >&6 - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - fi - -cat >>confdefs.h <<_ACEOF -#define inline $ac_cv_lbl_inline -_ACEOF - - -echo "$as_me:$LINENO: checking for __attribute__" >&5 -echo $ECHO_N "checking for __attribute__... $ECHO_C" >&6 -if test "${ac_cv___attribute__+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#include <stdlib.h> - -static void foo(void) __attribute__ ((noreturn)); - -static void -foo(void) -{ - exit(1); -} - -int -main(int argc, char **argv) -{ - foo(); -} - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv___attribute__=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv___attribute__=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi - -if test "$ac_cv___attribute__" = "yes"; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE___ATTRIBUTE__ 1 -_ACEOF - - V_DEFS="$V_DEFS -D_U_=\"__attribute__((unused))\"" -else - V_DEFS="$V_DEFS -D_U_=\"\"" -fi -echo "$as_me:$LINENO: result: $ac_cv___attribute__" >&5 -echo "${ECHO_T}$ac_cv___attribute__" >&6 - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep - - -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdlib.h> -#include <stdarg.h> -#include <string.h> -#include <float.h> - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_header_stdc=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <string.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdlib.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <ctype.h> -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - - - - - - - - - -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_Header=no" -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - -for ac_header in fcntl.h rpc/rpcent.h netdnet/dnetdb.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in netinet/if_ether.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sys/types.h> -#include <sys/socket.h> - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_Header=no" -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -if test "$ac_cv_header_netinet_if_ether_h" != yes; then - # - # The simple test didn't work. - # Do we need to include <net/if.h> first? - # Unset ac_cv_header_netinet_if_ether_h so we don't - # treat the previous failure as a cached value and - # suppress the next test. - # - { echo "$as_me:$LINENO: Rechecking with some additional includes" >&5 -echo "$as_me: Rechecking with some additional includes" >&6;} - unset ac_cv_header_netinet_if_ether_h - -for ac_header in netinet/if_ether.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -struct mbuf; -struct rtentry; -#include <net/if.h> - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_Header=no" -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -fi - -echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 -echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 -if test "${ac_cv_header_time+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sys/types.h> -#include <sys/time.h> -#include <time.h> - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_header_time=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_header_time=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 -echo "${ECHO_T}$ac_cv_header_time" >&6 -if test $ac_cv_header_time = yes; then - -cat >>confdefs.h <<\_ACEOF -#define TIME_WITH_SYS_TIME 1 -_ACEOF - -fi - - -case "$host_os" in - -linux*) - echo "$as_me:$LINENO: checking Linux kernel version" >&5 -echo $ECHO_N "checking Linux kernel version... $ECHO_C" >&6 - if test "$cross_compiling" = yes; then - if test "${ac_cv_linux_vers+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_linux_vers=unknown -fi - - else - if test "${ac_cv_linux_vers+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_linux_vers=`uname -r 2>&1 | \ - sed -n -e '$s/.* //' -e '$s/\..*//p'` -fi - - fi - echo "$as_me:$LINENO: result: $ac_cv_linux_vers" >&5 -echo "${ECHO_T}$ac_cv_linux_vers" >&6 - if test $ac_cv_linux_vers = unknown ; then - { { echo "$as_me:$LINENO: error: cannot determine linux version when cross-compiling" >&5 -echo "$as_me: error: cannot determine linux version when cross-compiling" >&2;} - { (exit 1); exit 1; }; } - fi - if test $ac_cv_linux_vers -lt 2 ; then - { { echo "$as_me:$LINENO: error: version 2 or higher required; see the INSTALL doc for more info" >&5 -echo "$as_me: error: version 2 or higher required; see the INSTALL doc for more info" >&2;} - { (exit 1); exit 1; }; } - fi - ;; - -*) - ;; -esac - - - -for ac_header in smi.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -echo "$as_me:$LINENO: checking for smiInit in -lsmi" >&5 -echo $ECHO_N "checking for smiInit in -lsmi... $ECHO_C" >&6 -if test "${ac_cv_lib_smi_smiInit+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsmi $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char smiInit (); -int -main () -{ -smiInit (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_smi_smiInit=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_smi_smiInit=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_smi_smiInit" >&5 -echo "${ECHO_T}$ac_cv_lib_smi_smiInit" >&6 -if test $ac_cv_lib_smi_smiInit = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBSMI 1 -_ACEOF - - LIBS="-lsmi $LIBS" - -fi - -if test "$ac_cv_header_smi_h" = yes -a "$ac_cv_lib_smi_smiInit" = yes -then -echo "$as_me:$LINENO: checking whether to enable libsmi" >&5 -echo $ECHO_N "checking whether to enable libsmi... $ECHO_C" >&6 - if test "$cross_compiling" = yes; then - echo "$as_me:$LINENO: result: not when cross-compiling" >&5 -echo "${ECHO_T}not when cross-compiling" >&6 - libsmi=no - -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - /* libsmi available check */ -#include <smi.h> -main() -{ - int current, revision, age, n; - const int required = 2; - if (smiInit("")) - exit(1); - if (strcmp(SMI_LIBRARY_VERSION, smi_library_version)) - exit(2); - n = sscanf(smi_library_version, "%d:%d:%d", ¤t, &revision, &age); - if (n != 3) - exit(3); - if (required < current - age || required > current) - exit(4); - exit(0); -} - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - cat >>confdefs.h <<\_ACEOF -#define LIBSMI 1 -_ACEOF - - libsmi=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) - case $? in - 1) echo "$as_me:$LINENO: result: no - smiInit failed" >&5 -echo "${ECHO_T}no - smiInit failed" >&6 ;; - 2) echo "$as_me:$LINENO: result: no - header/library version mismatch" >&5 -echo "${ECHO_T}no - header/library version mismatch" >&6 ;; - 3) echo "$as_me:$LINENO: result: no - can't determine library version" >&5 -echo "${ECHO_T}no - can't determine library version" >&6 ;; - 4) echo "$as_me:$LINENO: result: no - too old" >&5 -echo "${ECHO_T}no - too old" >&6 ;; - *) echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 ;; - esac - libsmi=no -fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi - -echo "$as_me:$LINENO: checking whether to enable the possibly-buggy SMB printer" >&5 -echo $ECHO_N "checking whether to enable the possibly-buggy SMB printer... $ECHO_C" >&6 -# Check whether --enable-smb or --disable-smb was given. -if test "${enable_smb+set}" = set; then - enableval="$enable_smb" - -else - enableval=yes -fi; -case "$enableval" in -yes) echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - { echo "$as_me:$LINENO: WARNING: The SMB printer may have exploitable buffer overflows!!!" >&5 -echo "$as_me: WARNING: The SMB printer may have exploitable buffer overflows!!!" >&2;} - cat >>confdefs.h <<\_ACEOF -#define TCPDUMP_DO_SMB 1 -_ACEOF - - LOCALSRC="print-smb.c smbutil.c $LOCALSRC" - ;; -*) echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ;; -esac - - -# Check whether --with-user or --without-user was given. -if test "${with_user+set}" = set; then - withval="$with_user" - -fi; -echo "$as_me:$LINENO: checking whether to drop root privileges by default" >&5 -echo $ECHO_N "checking whether to drop root privileges by default... $ECHO_C" >&6 -if test ! -z "$with_user" ; then - cat >>confdefs.h <<_ACEOF -#define WITH_USER "$withval" -_ACEOF - - echo "$as_me:$LINENO: result: to \"$withval\"" >&5 -echo "${ECHO_T}to \"$withval\"" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - -# Check whether --with-chroot or --without-chroot was given. -if test "${with_chroot+set}" = set; then - withval="$with_chroot" - -fi; -echo "$as_me:$LINENO: checking whether to chroot" >&5 -echo $ECHO_N "checking whether to chroot... $ECHO_C" >&6 -if test ! -z "$with_chroot" ; then - cat >>confdefs.h <<_ACEOF -#define WITH_CHROOT "$withval" -_ACEOF - - echo "$as_me:$LINENO: result: to \"$withval\"" >&5 -echo "${ECHO_T}to \"$withval\"" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -echo "$as_me:$LINENO: checking whether to enable ipv6" >&5 -echo $ECHO_N "checking whether to enable ipv6... $ECHO_C" >&6 -# Check whether --enable-ipv6 or --disable-ipv6 was given. -if test "${enable_ipv6+set}" = set; then - enableval="$enable_ipv6" - case "$enableval" in -yes) echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - LOCALSRC="print-ip6.c print-ip6opts.c print-mobility.c print-ripng.c print-icmp6.c print-frag6.c print-rt6.c print-ospf6.c print-dhcp6.c $LOCALSRC" - cat >>confdefs.h <<\_ACEOF -#define INET6 1 -_ACEOF - - ipv6=yes - ;; -*) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ipv6=no - ;; - esac -else - if test "$cross_compiling" = yes; then - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ipv6=no - -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - /* AF_INET6 available check */ -#include <sys/types.h> -#include <sys/socket.h> -main() -{ - if (socket(AF_INET6, SOCK_STREAM, 0) < 0) - exit(1); - else - exit(0); -} - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - LOCALSRC="print-ip6.c print-ip6opts.c print-mobility.c print-ripng.c print-icmp6.c print-frag6.c print-rt6.c print-ospf6.c print-dhcp6.c $LOCALSRC" - cat >>confdefs.h <<\_ACEOF -#define INET6 1 -_ACEOF - - ipv6=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ipv6=no -fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi; - -ipv6type=unknown -ipv6lib=none -ipv6trylibc=no - -if test "$ipv6" = "yes"; then - echo "$as_me:$LINENO: checking ipv6 stack type" >&5 -echo $ECHO_N "checking ipv6 stack type... $ECHO_C" >&6 - for i in inria kame linux-glibc linux-libinet6 toshiba v6d zeta; do - case $i in - inria) - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <netinet/in.h> -#ifdef IPV6_INRIA_VERSION -yes -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then - ipv6type=$i; - CFLAGS="-DINET6 $CFLAGS" -fi -rm -f conftest* - - ;; - kame) - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <netinet/in.h> -#ifdef __KAME__ -yes -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then - ipv6type=$i; - ipv6lib=inet6; - ipv6libdir=/usr/local/v6/lib; - ipv6trylibc=yes; - CFLAGS="-DINET6 $CFLAGS" -fi -rm -f conftest* - - ;; - linux-glibc) - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <features.h> -#if defined(__GLIBC__) && __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 -yes -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then - ipv6type=$i; - CFLAGS="-DINET6 $CFLAGS" -fi -rm -f conftest* - - ;; - linux-libinet6) - if test -d /usr/inet6 -o -f /usr/include/netinet/ip6.h; then - ipv6type=$i - ipv6lib=inet6 - ipv6libdir=/usr/inet6/lib - ipv6trylibc=yes; - CFLAGS="-DINET6 -I/usr/inet6/include $CFLAGS" - fi - ;; - toshiba) - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sys/param.h> -#ifdef _TOSHIBA_INET6 -yes -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then - ipv6type=$i; - ipv6lib=inet6; - ipv6libdir=/usr/local/v6/lib; - CFLAGS="-DINET6 $CFLAGS" -fi -rm -f conftest* - - ;; - v6d) - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include </usr/local/v6/include/sys/v6config.h> -#ifdef __V6D__ -yes -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then - ipv6type=$i; - ipv6lib=v6; - ipv6libdir=/usr/local/v6/lib; - CFLAGS="-I/usr/local/v6/include $CFLAGS" -fi -rm -f conftest* - - ;; - zeta) - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sys/param.h> -#ifdef _ZETA_MINAMI_INET6 -yes -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then - ipv6type=$i; - ipv6lib=inet6; - ipv6libdir=/usr/local/v6/lib; - CFLAGS="-DINET6 $CFLAGS" -fi -rm -f conftest* - - ;; - esac - if test "$ipv6type" != "unknown"; then - break - fi - done - echo "$as_me:$LINENO: result: $ipv6type" >&5 -echo "${ECHO_T}$ipv6type" >&6 -fi - -if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then - if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then - LIBS="-L$ipv6libdir -l$ipv6lib $LIBS" - echo "You have $ipv6lib library, using it" - else - if test "$ipv6trylibc" = "yes"; then - echo "You do not have $ipv6lib library, using libc" - else - echo 'Fatal: no $ipv6lib library found. cannot continue.' - echo "You need to fetch lib$ipv6lib.a from appropriate" - echo 'ipv6 kit and compile beforehand.' - exit 1 - fi - fi -fi - - -if test "$ipv6" = "yes"; then - # - # XXX - on Tru64 UNIX 5.1, there is no "getaddrinfo()" - # function in libc; there are "ngetaddrinfo()" and - # "ogetaddrinfo()" functions, and <netdb.h> #defines - # "getaddrinfo" to be either "ngetaddrinfo" or - # "ogetaddrinfo", depending on whether _SOCKADDR_LEN - # or _XOPEN_SOURCE_EXTENDED are defined or not. - # - # So this test doesn't work on Tru64 5.1, and possibly - # on other 5.x releases. This causes the configure - # script to become confused, and results in libpcap - # being unbuildable. - # - echo "$as_me:$LINENO: checking for library containing getaddrinfo" >&5 -echo $ECHO_N "checking for library containing getaddrinfo... $ECHO_C" >&6 -if test "${ac_cv_search_getaddrinfo+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_func_search_save_LIBS=$LIBS -ac_cv_search_getaddrinfo=no -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char getaddrinfo (); -int -main () -{ -getaddrinfo (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_getaddrinfo="none required" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_getaddrinfo" = no; then - for ac_lib in socket; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char getaddrinfo (); -int -main () -{ -getaddrinfo (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_getaddrinfo="-l$ac_lib" -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - done -fi -LIBS=$ac_func_search_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_search_getaddrinfo" >&5 -echo "${ECHO_T}$ac_cv_search_getaddrinfo" >&6 -if test "$ac_cv_search_getaddrinfo" != no; then - test "$ac_cv_search_getaddrinfo" = "none required" || LIBS="$ac_cv_search_getaddrinfo $LIBS" - echo "$as_me:$LINENO: checking getaddrinfo bug" >&5 -echo $ECHO_N "checking getaddrinfo bug... $ECHO_C" >&6 - if test "${td_cv_buggygetaddrinfo+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - td_cv_buggygetaddrinfo=yes -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#include <sys/types.h> -#include <netdb.h> -#include <string.h> -#include <sys/socket.h> -#include <netinet/in.h> - -main() -{ - int passive, gaierr, inet4 = 0, inet6 = 0; - struct addrinfo hints, *ai, *aitop; - char straddr[INET6_ADDRSTRLEN], strport[16]; - - for (passive = 0; passive <= 1; passive++) { - memset(&hints, 0, sizeof(hints)); - hints.ai_family = AF_UNSPEC; - hints.ai_flags = passive ? AI_PASSIVE : 0; - hints.ai_socktype = SOCK_STREAM; - hints.ai_protocol = IPPROTO_TCP; - if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) { - (void)gai_strerror(gaierr); - goto bad; - } - for (ai = aitop; ai; ai = ai->ai_next) { - if (ai->ai_addr == NULL || - ai->ai_addrlen == 0 || - getnameinfo(ai->ai_addr, ai->ai_addrlen, - straddr, sizeof(straddr), strport, sizeof(strport), - NI_NUMERICHOST|NI_NUMERICSERV) != 0) { - goto bad; - } - switch (ai->ai_family) { - case AF_INET: - if (strcmp(strport, "54321") != 0) { - goto bad; - } - if (passive) { - if (strcmp(straddr, "0.0.0.0") != 0) { - goto bad; - } - } else { - if (strcmp(straddr, "127.0.0.1") != 0) { - goto bad; - } - } - inet4++; - break; - case AF_INET6: - if (strcmp(strport, "54321") != 0) { - goto bad; - } - if (passive) { - if (strcmp(straddr, "::") != 0) { - goto bad; - } - } else { - if (strcmp(straddr, "::1") != 0) { - goto bad; - } - } - inet6++; - break; - case AF_UNSPEC: - goto bad; - break; -#ifdef AF_UNIX - case AF_UNIX: -#else -#ifdef AF_LOCAL - case AF_LOCAL: -#endif -#endif - default: - /* another family support? */ - break; - } - } - } - - /* supported family should be 2, unsupported family should be 0 */ - if (!(inet4 == 0 || inet4 == 2)) - goto bad; - if (!(inet6 == 0 || inet6 == 2)) - goto bad; - - if (aitop) - freeaddrinfo(aitop); - exit(0); - - bad: - if (aitop) - freeaddrinfo(aitop); - exit(1); -} - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - td_cv_buggygetaddrinfo=no -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -td_cv_buggygetaddrinfo=yes -fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi - - if test "$td_cv_buggygetaddrinfo" = no; then - echo "$as_me:$LINENO: result: good" >&5 -echo "${ECHO_T}good" >&6 - else - echo "$as_me:$LINENO: result: buggy" >&5 -echo "${ECHO_T}buggy" >&6 - fi - - if test "$td_cv_buggygetaddrinfo" = "yes"; then - # - # XXX - it doesn't appear that "ipv6type" can ever be - # set to "linux". Should this be testing for - # "linux-glibc", or for that *or* "linux-libinet6"? - # If the latter, note that "linux-libinet6" is also - # the type given to some non-Linux OSes. - # - if test "$ipv6type" != "linux"; then - echo 'Fatal: You must get working getaddrinfo() function.' - echo ' or you can specify "--disable-ipv6"'. - exit 1 - else - echo 'Warning: getaddrinfo() implementation on your system seems be buggy.' - echo ' Better upgrade your system library to newest version' - echo ' of GNU C library (aka glibc).' - fi - fi - -fi - - - -for ac_func in getaddrinfo getnameinfo -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - LIBOBJS="$LIBOBJS $ac_func.$ac_objext" -fi -done - - -fi - -echo "$as_me:$LINENO: checking for dnet_htoa declaration in netdnet/dnetdb.h" >&5 -echo $ECHO_N "checking for dnet_htoa declaration in netdnet/dnetdb.h... $ECHO_C" >&6 -if test "${td_cv_decl_netdnet_dnetdb_h_dnet_htoa+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <netdnet/dnetdb.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "dnet_htoa" >/dev/null 2>&1; then - td_cv_decl_netdnet_dnetdb_h_dnet_htoa=yes -else - td_cv_decl_netdnet_dnetdb_h_dnet_htoa=no -fi -rm -f conftest* - -fi -echo "$as_me:$LINENO: result: $td_cv_decl_netdnet_dnetdb_h_dnet_htoa" >&5 -echo "${ECHO_T}$td_cv_decl_netdnet_dnetdb_h_dnet_htoa" >&6 -if test "$td_cv_decl_netdnet_dnetdb_h_dnet_htoa" = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_NETDNET_DNETDB_H_DNET_HTOA 1 -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for char" >&5 -echo $ECHO_N "checking for char... $ECHO_C" >&6 -if test "${ac_cv_type_char+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((char *) 0) - return 0; -if (sizeof (char)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_char=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_char=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_char" >&5 -echo "${ECHO_T}$ac_cv_type_char" >&6 - -echo "$as_me:$LINENO: checking size of char" >&5 -echo $ECHO_N "checking size of char... $ECHO_C" >&6 -if test "${ac_cv_sizeof_char+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_char" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (char))) >= 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (char))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` -fi -rm -f conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (char))) < 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (char))) >= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` -fi -rm -f conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo= ac_hi= -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (char))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr '(' $ac_mid ')' + 1` -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof_char=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (char), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; -esac -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -long longval () { return (long) (sizeof (char)); } -unsigned long ulongval () { return (long) (sizeof (char)); } -#include <stdio.h> -#include <stdlib.h> -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (char))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (char)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (char)))) - exit (1); - fprintf (f, "%lu\n", i); - } - exit (ferror (f) || fclose (f) != 0); - - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_char=`cat conftest.val` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (char), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.val -else - ac_cv_sizeof_char=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5 -echo "${ECHO_T}$ac_cv_sizeof_char" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_CHAR $ac_cv_sizeof_char -_ACEOF - - -echo "$as_me:$LINENO: checking for short" >&5 -echo $ECHO_N "checking for short... $ECHO_C" >&6 -if test "${ac_cv_type_short+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((short *) 0) - return 0; -if (sizeof (short)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_short=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_short=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5 -echo "${ECHO_T}$ac_cv_type_short" >&6 - -echo "$as_me:$LINENO: checking size of short" >&5 -echo $ECHO_N "checking size of short... $ECHO_C" >&6 -if test "${ac_cv_sizeof_short+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_short" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (short))) >= 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` -fi -rm -f conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (short))) < 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (short))) >= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` -fi -rm -f conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo= ac_hi= -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr '(' $ac_mid ')' + 1` -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof_short=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (short), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; -esac -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -long longval () { return (long) (sizeof (short)); } -unsigned long ulongval () { return (long) (sizeof (short)); } -#include <stdio.h> -#include <stdlib.h> -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (short))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (short)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (short)))) - exit (1); - fprintf (f, "%lu\n", i); - } - exit (ferror (f) || fclose (f) != 0); - - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_short=`cat conftest.val` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (short), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.val -else - ac_cv_sizeof_short=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 -echo "${ECHO_T}$ac_cv_sizeof_short" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SHORT $ac_cv_sizeof_short -_ACEOF - - -echo "$as_me:$LINENO: checking for int" >&5 -echo $ECHO_N "checking for int... $ECHO_C" >&6 -if test "${ac_cv_type_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((int *) 0) - return 0; -if (sizeof (int)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_int=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_int=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 -echo "${ECHO_T}$ac_cv_type_int" >&6 - -echo "$as_me:$LINENO: checking size of int" >&5 -echo $ECHO_N "checking size of int... $ECHO_C" >&6 -if test "${ac_cv_sizeof_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_int" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (int))) >= 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` -fi -rm -f conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (int))) < 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` -fi -rm -f conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo= ac_hi= -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr '(' $ac_mid ')' + 1` -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof_int=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (int), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; -esac -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -long longval () { return (long) (sizeof (int)); } -unsigned long ulongval () { return (long) (sizeof (int)); } -#include <stdio.h> -#include <stdlib.h> -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (int))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (int)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (int)))) - exit (1); - fprintf (f, "%lu\n", i); - } - exit (ferror (f) || fclose (f) != 0); - - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_int=`cat conftest.val` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (int), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.val -else - ac_cv_sizeof_int=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 -echo "${ECHO_T}$ac_cv_sizeof_int" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_INT $ac_cv_sizeof_int -_ACEOF - - -echo "$as_me:$LINENO: checking for long" >&5 -echo $ECHO_N "checking for long... $ECHO_C" >&6 -if test "${ac_cv_type_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((long *) 0) - return 0; -if (sizeof (long)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_long=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_long=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 -echo "${ECHO_T}$ac_cv_type_long" >&6 - -echo "$as_me:$LINENO: checking size of long" >&5 -echo $ECHO_N "checking size of long... $ECHO_C" >&6 -if test "${ac_cv_sizeof_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_long" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` -fi -rm -f conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` -fi -rm -f conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo= ac_hi= -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr '(' $ac_mid ')' + 1` -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof_long=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; -esac -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -long longval () { return (long) (sizeof (long)); } -unsigned long ulongval () { return (long) (sizeof (long)); } -#include <stdio.h> -#include <stdlib.h> -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (long))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (long)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (long)))) - exit (1); - fprintf (f, "%lu\n", i); - } - exit (ferror (f) || fclose (f) != 0); - - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_long=`cat conftest.val` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.val -else - ac_cv_sizeof_long=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 -echo "${ECHO_T}$ac_cv_sizeof_long" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG $ac_cv_sizeof_long -_ACEOF - - -echo "$as_me:$LINENO: checking for long long" >&5 -echo $ECHO_N "checking for long long... $ECHO_C" >&6 -if test "${ac_cv_type_long_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((long long *) 0) - return 0; -if (sizeof (long long)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_long_long=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_long_long=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 -echo "${ECHO_T}$ac_cv_type_long_long" >&6 - -echo "$as_me:$LINENO: checking size of long long" >&5 -echo $ECHO_N "checking size of long long... $ECHO_C" >&6 -if test "${ac_cv_sizeof_long_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_long_long" = yes; then - # The cast to unsigned long works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` -fi -rm -f conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long long))) < 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` -fi -rm -f conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo= ac_hi= -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr '(' $ac_mid ')' + 1` -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof_long_long=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long long), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; -esac -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -long longval () { return (long) (sizeof (long long)); } -unsigned long ulongval () { return (long) (sizeof (long long)); } -#include <stdio.h> -#include <stdlib.h> -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (long long))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (long long)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (long long)))) - exit (1); - fprintf (f, "%lu\n", i); - } - exit (ferror (f) || fclose (f) != 0); - - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_long_long=`cat conftest.val` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long long), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.val -else - ac_cv_sizeof_long_long=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 -echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long -_ACEOF - - - - - - echo "$as_me:$LINENO: checking for addrinfo" >&5 -echo $ECHO_N "checking for addrinfo... $ECHO_C" >&6 - if test "${ac_cv_addrinfo+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -# include <netdb.h> -int -main () -{ -struct addrinfo a - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_addrinfo=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_addrinfo=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $ac_cv_addrinfo" >&5 -echo "${ECHO_T}$ac_cv_addrinfo" >&6 - if test $ac_cv_addrinfo = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_ADDRINFO 1 -_ACEOF - - else - cat >>confdefs.h <<\_ACEOF -#define NEED_ADDRINFO_H 1 -_ACEOF - - fi - -if test "$ac_cv_addrinfo" = no; then - missing_includes=yes -fi - - - echo "$as_me:$LINENO: checking for NI_MAXSERV" >&5 -echo $ECHO_N "checking for NI_MAXSERV... $ECHO_C" >&6 - if test "${ac_cv_maxserv+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <netdb.h> -#ifdef NI_MAXSERV -yes -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then - ac_cv_maxserv=yes -else - ac_cv_maxserv=no -fi -rm -f conftest* - -fi - - echo "$as_me:$LINENO: result: $ac_cv_maxserv" >&5 -echo "${ECHO_T}$ac_cv_maxserv" >&6 - if test $ac_cv_maxserv != yes; then - cat >>confdefs.h <<\_ACEOF -#define NEED_ADDRINFO_H 1 -_ACEOF - - fi - -if test "$ac_cv_maxserv" = no; then - missing_includes=yes -fi - - - echo "$as_me:$LINENO: checking for NI_NAMEREQD" >&5 -echo $ECHO_N "checking for NI_NAMEREQD... $ECHO_C" >&6 - if test "${ac_cv_namereqd+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <netdb.h> -#ifdef NI_NOFQDN -yes -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then - ac_cv_namereqd=yes -else - ac_cv_namereqd=no -fi -rm -f conftest* - -fi - - echo "$as_me:$LINENO: result: $ac_cv_namereqd" >&5 -echo "${ECHO_T}$ac_cv_namereqd" >&6 - if test $ac_cv_namereqd != yes; then - cat >>confdefs.h <<\_ACEOF -#define NEED_ADDRINFO_H 1 -_ACEOF - - fi - -if test "$ac_cv_namereqd" = no; then - missing_includes=yes -fi - - - echo "$as_me:$LINENO: checking for sockaddr_storage" >&5 -echo $ECHO_N "checking for sockaddr_storage... $ECHO_C" >&6 - if test "${ac_cv_sa_storage+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -# include <sys/types.h> -# include <sys/socket.h> -int -main () -{ -struct sockaddr_storage s - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sa_storage=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_sa_storage=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $ac_cv_sa_storage" >&5 -echo "${ECHO_T}$ac_cv_sa_storage" >&6 - if test $ac_cv_sa_storage = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_SOCKADDR_STORAGE 1 -_ACEOF - - fi - -if test "$ac_cv_sa_storage" = no; then - missing_includes=yes -fi - - - ac_cv_addrsz=yes - echo "$as_me:$LINENO: checking for INADDRSZ" >&5 -echo $ECHO_N "checking for INADDRSZ... $ECHO_C" >&6 - if test "${ac_cv_inaddrsz+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -# include <arpa/nameser.h> -int -main () -{ -int a = INADDRSZ - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_inaddrsz=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_inaddrsz=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $ac_cv_inaddrsz" >&5 -echo "${ECHO_T}$ac_cv_inaddrsz" >&6 - if test $ac_cv_inaddrsz = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_INADDRSZ 1 -_ACEOF - - else - ac_cv_addrsz=no - fi - echo "$as_me:$LINENO: checking for IN6ADDRSZ" >&5 -echo $ECHO_N "checking for IN6ADDRSZ... $ECHO_C" >&6 - if test "${ac_cv_in6addrsz+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -# include <arpa/nameser.h> -int -main () -{ -int a = IN6ADDRSZ - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_in6addrsz=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_in6addrsz=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $ac_cv_in6addrsz" >&5 -echo "${ECHO_T}$ac_cv_in6addrsz" >&6 - if test $ac_cv_in6addrsz = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_IN6ADDRSZ 1 -_ACEOF - - else - ac_cv_addrsz=no - fi - -if test "$ac_cv_addrsz" = no; then - missing_includes=yes -fi - - - echo "$as_me:$LINENO: checking for RES_USE_INET6" >&5 -echo $ECHO_N "checking for RES_USE_INET6... $ECHO_C" >&6 - if test "${ac_cv_res_inet6+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -# include <sys/types.h> -# include <netinet/in.h> -# include <resolv.h> -int -main () -{ -int a = RES_USE_INET6 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_res_inet6=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_res_inet6=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $ac_cv_res_inet6" >&5 -echo "${ECHO_T}$ac_cv_res_inet6" >&6 - if test $ac_cv_res_inet6 = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_RES_USE_INET6 1 -_ACEOF - - fi - -if test "$ac_cv_res_inet6" = no; then - missing_includes=yes -fi - - - echo "$as_me:$LINENO: checking for res_state_ext" >&5 -echo $ECHO_N "checking for res_state_ext... $ECHO_C" >&6 - if test "${ac_cv_res_state_ext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -# include <sys/types.h> -# include <netinet/in.h> -# include <netinet6/in6.h> -# include <resolv.h> -int -main () -{ -struct __res_state_ext e - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_res_state_ext=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_res_state_ext=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $ac_cv_res_state_ext" >&5 -echo "${ECHO_T}$ac_cv_res_state_ext" >&6 - if test $ac_cv_res_state_ext = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_RES_STATE_EXT 1 -_ACEOF - - fi - -if test "$ac_cv_res_state_ext" = no; then - missing_includes=yes -fi - - - echo "$as_me:$LINENO: checking for nsort in res_state" >&5 -echo $ECHO_N "checking for nsort in res_state... $ECHO_C" >&6 - if test "${ac_cv_res_state+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -# include <sys/types.h> -# include <netinet/in.h> -# include <netinet6/in6.h> -# include <resolv.h> -int -main () -{ -struct __res_state e; e.nsort = 0 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_res_state=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_res_state=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $ac_cv_res_state" >&5 -echo "${ECHO_T}$ac_cv_res_state" >&6 - if test $ac_cv_res_state = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_NEW_RES_STATE 1 -_ACEOF - - fi - - - - - - - - - -for ac_func in vfprintf strcasecmp strlcat strlcpy strdup strsep -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - LIBOBJS="$LIBOBJS $ac_func.$ac_objext" -fi -done - - - -for ac_func in strftime -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - -for ac_func in setlinebuf alarm -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - -needsnprintf=no - - -for ac_func in vsnprintf snprintf -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - needsnprintf=yes -fi -done - -if test $needsnprintf = yes; then - LIBOBJS="$LIBOBJS snprintf.$ac_objext" -fi - - - echo "$as_me:$LINENO: checking return type of signal handlers" >&5 -echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 -if test "${ac_cv_type_signal+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sys/types.h> -#include <signal.h> -#ifdef signal -# undef signal -#endif -#ifdef __cplusplus -extern "C" void (*signal (int, void (*)(int)))(int); -#else -void (*signal ()) (); -#endif - -int -main () -{ -int i; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_signal=void -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_signal=int -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 -echo "${ECHO_T}$ac_cv_type_signal" >&6 - -cat >>confdefs.h <<_ACEOF -#define RETSIGTYPE $ac_cv_type_signal -_ACEOF - - - if test "$ac_cv_type_signal" = void ; then - cat >>confdefs.h <<\_ACEOF -#define RETSIGVAL -_ACEOF - - else - cat >>confdefs.h <<\_ACEOF -#define RETSIGVAL (0) -_ACEOF - - fi - case "$host_os" in - - irix*) - cat >>confdefs.h <<\_ACEOF -#define _BSD_SIGNALS 1 -_ACEOF - - ;; - - *) - -for ac_func in sigaction -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - if test $ac_cv_func_sigaction = no ; then - -for ac_func in sigset -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - fi - ;; - esac - -echo "$as_me:$LINENO: checking for library containing dnet_htoa" >&5 -echo $ECHO_N "checking for library containing dnet_htoa... $ECHO_C" >&6 -if test "${ac_cv_search_dnet_htoa+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_func_search_save_LIBS=$LIBS -ac_cv_search_dnet_htoa=no -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dnet_htoa (); -int -main () -{ -dnet_htoa (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_dnet_htoa="none required" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_dnet_htoa" = no; then - for ac_lib in dnet; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dnet_htoa (); -int -main () -{ -dnet_htoa (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_dnet_htoa="-l$ac_lib" -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - done -fi -LIBS=$ac_func_search_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_search_dnet_htoa" >&5 -echo "${ECHO_T}$ac_cv_search_dnet_htoa" >&6 -if test "$ac_cv_search_dnet_htoa" != no; then - test "$ac_cv_search_dnet_htoa" = "none required" || LIBS="$ac_cv_search_dnet_htoa $LIBS" - cat >>confdefs.h <<\_ACEOF -#define HAVE_DNET_HTOA 1 -_ACEOF - -fi - - - -echo "$as_me:$LINENO: checking for main in -lrpc" >&5 -echo $ECHO_N "checking for main in -lrpc... $ECHO_C" >&6 -if test "${ac_cv_lib_rpc_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lrpc $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -int -main () -{ -main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_rpc_main=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_rpc_main=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_rpc_main" >&5 -echo "${ECHO_T}$ac_cv_lib_rpc_main" >&6 -if test $ac_cv_lib_rpc_main = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBRPC 1 -_ACEOF - - LIBS="-lrpc $LIBS" - -fi - -echo "$as_me:$LINENO: checking for library containing getrpcbynumber" >&5 -echo $ECHO_N "checking for library containing getrpcbynumber... $ECHO_C" >&6 -if test "${ac_cv_search_getrpcbynumber+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_func_search_save_LIBS=$LIBS -ac_cv_search_getrpcbynumber=no -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char getrpcbynumber (); -int -main () -{ -getrpcbynumber (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_getrpcbynumber="none required" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_getrpcbynumber" = no; then - for ac_lib in nsl; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char getrpcbynumber (); -int -main () -{ -getrpcbynumber (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_getrpcbynumber="-l$ac_lib" -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - done -fi -LIBS=$ac_func_search_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_search_getrpcbynumber" >&5 -echo "${ECHO_T}$ac_cv_search_getrpcbynumber" >&6 -if test "$ac_cv_search_getrpcbynumber" != no; then - test "$ac_cv_search_getrpcbynumber" = "none required" || LIBS="$ac_cv_search_getrpcbynumber $LIBS" - cat >>confdefs.h <<\_ACEOF -#define HAVE_GETRPCBYNUMBER 1 -_ACEOF - -fi - - - - - # Most operating systems have gethostbyname() in the default searched - # libraries (i.e. libc): - # Some OSes (eg. Solaris) place it in libnsl - # Some strange OSes (SINIX) have it in libsocket: - echo "$as_me:$LINENO: checking for library containing gethostbyname" >&5 -echo $ECHO_N "checking for library containing gethostbyname... $ECHO_C" >&6 -if test "${ac_cv_search_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_func_search_save_LIBS=$LIBS -ac_cv_search_gethostbyname=no -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char gethostbyname (); -int -main () -{ -gethostbyname (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_gethostbyname="none required" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_gethostbyname" = no; then - for ac_lib in nsl socket resolv; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char gethostbyname (); -int -main () -{ -gethostbyname (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_gethostbyname="-l$ac_lib" -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - done -fi -LIBS=$ac_func_search_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_search_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_search_gethostbyname" >&6 -if test "$ac_cv_search_gethostbyname" != no; then - test "$ac_cv_search_gethostbyname" = "none required" || LIBS="$ac_cv_search_gethostbyname $LIBS" - -fi - - # Unfortunately libsocket sometimes depends on libnsl and - # AC_SEARCH_LIBS isn't up to the task of handling dependencies like this. - if test "$ac_cv_search_gethostbyname" = "no" - then - echo "$as_me:$LINENO: checking for gethostbyname in -lsocket" >&5 -echo $ECHO_N "checking for gethostbyname in -lsocket... $ECHO_C" >&6 -if test "${ac_cv_lib_socket_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsocket -lnsl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char gethostbyname (); -int -main () -{ -gethostbyname (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_socket_gethostbyname=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_socket_gethostbyname=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_socket_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_lib_socket_gethostbyname" >&6 -if test $ac_cv_lib_socket_gethostbyname = yes; then - LIBS="-lsocket -lnsl $LIBS" -fi - - fi - echo "$as_me:$LINENO: checking for library containing socket" >&5 -echo $ECHO_N "checking for library containing socket... $ECHO_C" >&6 -if test "${ac_cv_search_socket+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_func_search_save_LIBS=$LIBS -ac_cv_search_socket=no -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char socket (); -int -main () -{ -socket (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_socket="none required" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_socket" = no; then - for ac_lib in socket; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char socket (); -int -main () -{ -socket (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_socket="-l$ac_lib" -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - done -fi -LIBS=$ac_func_search_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_search_socket" >&5 -echo "${ECHO_T}$ac_cv_search_socket" >&6 -if test "$ac_cv_search_socket" != no; then - test "$ac_cv_search_socket" = "none required" || LIBS="$ac_cv_search_socket $LIBS" - -else - echo "$as_me:$LINENO: checking for socket in -lsocket" >&5 -echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6 -if test "${ac_cv_lib_socket_socket+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsocket -lnsl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char socket (); -int -main () -{ -socket (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_socket_socket=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_socket_socket=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5 -echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6 -if test $ac_cv_lib_socket_socket = yes; then - LIBS="-lsocket -lnsl $LIBS" -fi - -fi - - # DLPI needs putmsg under HPUX so test for -lstr while we're at it - echo "$as_me:$LINENO: checking for library containing putmsg" >&5 -echo $ECHO_N "checking for library containing putmsg... $ECHO_C" >&6 -if test "${ac_cv_search_putmsg+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_func_search_save_LIBS=$LIBS -ac_cv_search_putmsg=no -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char putmsg (); -int -main () -{ -putmsg (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_putmsg="none required" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_putmsg" = no; then - for ac_lib in str; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char putmsg (); -int -main () -{ -putmsg (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_putmsg="-l$ac_lib" -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - done -fi -LIBS=$ac_func_search_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_search_putmsg" >&5 -echo "${ECHO_T}$ac_cv_search_putmsg" >&6 -if test "$ac_cv_search_putmsg" != no; then - test "$ac_cv_search_putmsg" = "none required" || LIBS="$ac_cv_search_putmsg $LIBS" - -fi - - - - LBL_LIBS="$LIBS" - pfopen=/usr/examples/packetfilter/pfopen.c - if test -f $pfopen ; then - -for ac_func in pfopen -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - if test $ac_cv_func_pfopen = "no" ; then - echo "$as_me:$LINENO: result: Using $pfopen" >&5 -echo "${ECHO_T}Using $pfopen" >&6 - LIBS="$LIBS $pfopen" - fi - fi - echo "$as_me:$LINENO: checking for local pcap library" >&5 -echo $ECHO_N "checking for local pcap library... $ECHO_C" >&6 - libpcap=FAIL - lastdir=FAIL - places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \ - egrep '/libpcap-[0-9]*.[0-9]*(.[0-9]*)?([ab][0-9]*)?$'` - for dir in $places $srcdir/../libpcap $srcdir/libpcap ; do - basedir=`echo $dir | sed -e 's/[ab][0-9]*$//'` - if test $lastdir = $basedir ; then - continue; - fi - lastdir=$dir - if test -r $dir/libpcap.a ; then - libpcap=$dir/libpcap.a - d=$dir - fi - done - if test $libpcap = FAIL ; then - echo "$as_me:$LINENO: result: not found" >&5 -echo "${ECHO_T}not found" >&6 - echo "$as_me:$LINENO: checking for main in -lpcap" >&5 -echo $ECHO_N "checking for main in -lpcap... $ECHO_C" >&6 -if test "${ac_cv_lib_pcap_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpcap $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -int -main () -{ -main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_pcap_main=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_pcap_main=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_pcap_main" >&5 -echo "${ECHO_T}$ac_cv_lib_pcap_main" >&6 -if test $ac_cv_lib_pcap_main = yes; then - libpcap="-lpcap" -fi - - if test $libpcap = FAIL ; then - { { echo "$as_me:$LINENO: error: see the INSTALL doc for more info" >&5 -echo "$as_me: error: see the INSTALL doc for more info" >&2;} - { (exit 1); exit 1; }; } - fi - echo "$as_me:$LINENO: checking for extraneous pcap header directories" >&5 -echo $ECHO_N "checking for extraneous pcap header directories... $ECHO_C" >&6 - if test \( ! -r /usr/local/include/pcap.h \) -a \ - \( ! -r /usr/include/pcap.h \); then - if test -r /usr/local/include/pcap/pcap.h; then - d="/usr/local/include/pcap" - elif test -r /usr/include/pcap/pcap.h; then - d="/usr/include/pcap" - fi - fi - if test -z "$d" ; then - echo "$as_me:$LINENO: result: not found" >&5 -echo "${ECHO_T}not found" >&6 - else - V_INCLS="-I$d $V_INCLS" - echo "$as_me:$LINENO: result: found -- -I$d added" >&5 -echo "${ECHO_T}found -- -I$d added" >&6 - fi - else - V_PCAPDEP=$libpcap - places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \ - egrep '/libpcap-[0-9]*.[0-9]*(.[0-9]*)?([ab][0-9]*)?$'` - if test -r $d/pcap.h; then - V_INCLS="-I$d $V_INCLS" - elif test -r $places/pcap.h; then - V_INCLS="-I$places $V_INCLS" - else - { { echo "$as_me:$LINENO: error: cannot find pcap.h" >&5 -echo "$as_me: error: cannot find pcap.h" >&2;} - { (exit see INSTALL); exit see INSTALL; }; } - fi - echo "$as_me:$LINENO: result: $libpcap" >&5 -echo "${ECHO_T}$libpcap" >&6 - fi - LIBS="$libpcap $LIBS" - case "$host_os" in - - aix*) - pseexe="/lib/pse.exp" - echo "$as_me:$LINENO: checking for $pseexe" >&5 -echo $ECHO_N "checking for $pseexe... $ECHO_C" >&6 - if test -f $pseexe ; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - LIBS="$LIBS -I:$pseexe" - fi - # - # We need "-lodm" and "-lcfg", as libpcap requires them on - # AIX, and we just build a static libpcap.a and thus can't - # arrange that when you link with libpcap you automatically - # link with those libraries. - # - LIBS="$LIBS -lodm -lcfg" - ;; - esac - - echo "$as_me:$LINENO: checking for pcap_list_datalinks" >&5 -echo $ECHO_N "checking for pcap_list_datalinks... $ECHO_C" >&6 -if test "${ac_cv_func_pcap_list_datalinks+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char pcap_list_datalinks (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char pcap_list_datalinks (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_pcap_list_datalinks) || defined (__stub___pcap_list_datalinks) -choke me -#else -char (*f) () = pcap_list_datalinks; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != pcap_list_datalinks; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_pcap_list_datalinks=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_pcap_list_datalinks=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_pcap_list_datalinks" >&5 -echo "${ECHO_T}$ac_cv_func_pcap_list_datalinks" >&6 -if test $ac_cv_func_pcap_list_datalinks = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_PCAP_LIST_DATALINKS 1 -_ACEOF - -else - - LIBOBJS="$LIBOBJS datalinks.$ac_objext" - -fi - - echo "$as_me:$LINENO: checking for pcap_set_datalink" >&5 -echo $ECHO_N "checking for pcap_set_datalink... $ECHO_C" >&6 -if test "${ac_cv_func_pcap_set_datalink+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char pcap_set_datalink (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char pcap_set_datalink (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_pcap_set_datalink) || defined (__stub___pcap_set_datalink) -choke me -#else -char (*f) () = pcap_set_datalink; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != pcap_set_datalink; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_pcap_set_datalink=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_pcap_set_datalink=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_pcap_set_datalink" >&5 -echo "${ECHO_T}$ac_cv_func_pcap_set_datalink" >&6 -if test $ac_cv_func_pcap_set_datalink = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_PCAP_SET_DATALINK 1 -_ACEOF - -fi - - echo "$as_me:$LINENO: checking for pcap_datalink_name_to_val" >&5 -echo $ECHO_N "checking for pcap_datalink_name_to_val... $ECHO_C" >&6 -if test "${ac_cv_func_pcap_datalink_name_to_val+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char pcap_datalink_name_to_val (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char pcap_datalink_name_to_val (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_pcap_datalink_name_to_val) || defined (__stub___pcap_datalink_name_to_val) -choke me -#else -char (*f) () = pcap_datalink_name_to_val; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != pcap_datalink_name_to_val; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_pcap_datalink_name_to_val=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_pcap_datalink_name_to_val=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_pcap_datalink_name_to_val" >&5 -echo "${ECHO_T}$ac_cv_func_pcap_datalink_name_to_val" >&6 -if test $ac_cv_func_pcap_datalink_name_to_val = yes; then - - cat >>confdefs.h <<\_ACEOF -#define HAVE_PCAP_DATALINK_NAME_TO_VAL 1 -_ACEOF - - echo "$as_me:$LINENO: checking for pcap_datalink_val_to_description" >&5 -echo $ECHO_N "checking for pcap_datalink_val_to_description... $ECHO_C" >&6 -if test "${ac_cv_func_pcap_datalink_val_to_description+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char pcap_datalink_val_to_description (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char pcap_datalink_val_to_description (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_pcap_datalink_val_to_description) || defined (__stub___pcap_datalink_val_to_description) -choke me -#else -char (*f) () = pcap_datalink_val_to_description; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != pcap_datalink_val_to_description; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_pcap_datalink_val_to_description=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_pcap_datalink_val_to_description=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_pcap_datalink_val_to_description" >&5 -echo "${ECHO_T}$ac_cv_func_pcap_datalink_val_to_description" >&6 -if test $ac_cv_func_pcap_datalink_val_to_description = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION 1 -_ACEOF - -else - - LIBOBJS="$LIBOBJS dlnames.$ac_objext" - -fi - - -else - - LIBOBJS="$LIBOBJS dlnames.$ac_objext" - -fi - - - -for ac_func in pcap_breakloop -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - echo "$as_me:$LINENO: checking for pcap_dump_ftell" >&5 -echo $ECHO_N "checking for pcap_dump_ftell... $ECHO_C" >&6 -if test "${ac_cv_func_pcap_dump_ftell+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char pcap_dump_ftell (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char pcap_dump_ftell (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_pcap_dump_ftell) || defined (__stub___pcap_dump_ftell) -choke me -#else -char (*f) () = pcap_dump_ftell; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != pcap_dump_ftell; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_pcap_dump_ftell=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_pcap_dump_ftell=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_pcap_dump_ftell" >&5 -echo "${ECHO_T}$ac_cv_func_pcap_dump_ftell" >&6 -if test $ac_cv_func_pcap_dump_ftell = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_PCAP_DUMP_FTELL 1 -_ACEOF - -else - - LIBOBJS="$LIBOBJS pcap_dump_ftell.$ac_objext" - -fi - - - -# -# Check for these after AC_LBL_LIBPCAP, so we link with the appropriate -# libraries (e.g., "-lsocket -lnsl" on Solaris). -# -# We don't use AC_REPLACE_FUNCS because that uses AC_CHECK_FUNCS which -# use AC_CHECK_FUNC which doesn't let us specify the right #includes -# to make this work on BSD/OS 4.x. BSD/OS 4.x ships with the BIND8 -# resolver, and the way it defines inet_{ntop,pton} is rather strange; -# it does not ship with a libc symbol "inet_ntop()", it ships with -# "_inet_ntop()", and has a #define macro in one of the system headers -# to rename it. -# -echo "$as_me:$LINENO: checking for inet_ntop" >&5 -echo $ECHO_N "checking for inet_ntop... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> -int -main () -{ -char src[4], dst[128]; -inet_ntop(AF_INET, src, dst, sizeof(dst)); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - LIBOBJS="$LIBOBJS inet_ntop.$ac_objext" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -echo "$as_me:$LINENO: checking for inet_pton" >&5 -echo $ECHO_N "checking for inet_pton... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> -int -main () -{ -char src[128], dst[4]; -inet_pton(AF_INET, src, dst); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - LIBOBJS="$LIBOBJS inet_pton.$ac_objext" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -echo "$as_me:$LINENO: checking for inet_aton" >&5 -echo $ECHO_N "checking for inet_aton... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sys/types.h> -#include <netinet/in.h> -#include <arpa/inet.h> -int -main () -{ -char src[128]; -struct in_addr dst; -inet_aton(src, &dst); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - LIBOBJS="$LIBOBJS inet_aton.$ac_objext" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - -# -# Check for these after AC_LBL_LIBPCAP, for the same reason. -# -# You are in a twisty little maze of UN*Xes, all different. -# Some might not have ether_ntohost(). -# Some might have it, but not declare it in any header file. -# Some might have it, but declare it in <netinet/if_ether.h>. -# Some might have it, but declare it in <netinet/ether.h> -# (And some might have it but document it as something declared in -# <netinet/ethernet.h>, although <netinet/if_ether.h> appears to work.) -# -# Before you is a C compiler. -# - -for ac_func in ether_ntohost -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - - echo "$as_me:$LINENO: checking for buggy ether_ntohost" >&5 -echo $ECHO_N "checking for buggy ether_ntohost... $ECHO_C" >&6 -if test "${ac_cv_buggy_ether_ntohost+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - if test "$cross_compiling" = yes; then - ac_cv_buggy_ether_ntohost="not while cross-compiling" -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - #include <netdb.h> - #include <sys/types.h> - #include <sys/param.h> - #include <sys/socket.h> - - int - main(int argc, char **argv) - { - u_char ea[6] = { 0xff, 0xff, 0xff, 0xff, 0xff }; - char name[MAXHOSTNAMELEN]; - - ether_ntohost(name, (struct ether_addr *)ea); - exit(0); - } - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_buggy_ether_ntohost=no -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_buggy_ether_ntohost=yes -fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_buggy_ether_ntohost" >&5 -echo "${ECHO_T}$ac_cv_buggy_ether_ntohost" >&6 - if test "$ac_cv_buggy_ether_ntohost" = "no"; then - cat >>confdefs.h <<\_ACEOF -#define USE_ETHER_NTOHOST 1 -_ACEOF - - fi - -fi -done - -if test "$ac_cv_func_ether_ntohost" = yes -a \ - "$ac_cv_buggy_ether_ntohost" = "no"; then - # - # OK, we have ether_ntohost(). Do we have <netinet/if_ether.h>? - # - if test "$ac_cv_header_netinet_if_ether_h" = yes; then - # - # Yes. Does it declare ether_ntohost()? - # - echo "$as_me:$LINENO: checking whether ether_ntohost is declared" >&5 -echo $ECHO_N "checking whether ether_ntohost is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_ether_ntohost+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> -struct mbuf; -struct rtentry; -#include <net/if.h> -#include <netinet/if_ether.h> - - -int -main () -{ -#ifndef ether_ntohost - char *p = (char *) ether_ntohost; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_ether_ntohost=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_have_decl_ether_ntohost=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_ether_ntohost" >&5 -echo "${ECHO_T}$ac_cv_have_decl_ether_ntohost" >&6 -if test $ac_cv_have_decl_ether_ntohost = yes; then - - -cat >>confdefs.h <<\_ACEOF -#define NETINET_IF_ETHER_H_DECLARES_ETHER_NTOHOST -_ACEOF - - -fi - - fi - # - # Did that succeed? - # - if test "$ac_cv_have_decl_ether_ntohost" != yes; then - # - # No, how about <netinet/ether.h>, as on Linux? - # - -for ac_header in netinet/ether.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - if test "$ac_cv_header_netinet_ether_h" = yes; then - # - # We have it - does it declare ether_ntohost()? - # Unset ac_cv_have_decl_ether_ntohost so we don't - # treat the previous failure as a cached value and - # suppress the next test. - # - unset ac_cv_have_decl_ether_ntohost - echo "$as_me:$LINENO: checking whether ether_ntohost is declared" >&5 -echo $ECHO_N "checking whether ether_ntohost is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_ether_ntohost+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#include <netinet/ether.h> - - -int -main () -{ -#ifndef ether_ntohost - char *p = (char *) ether_ntohost; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_ether_ntohost=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_have_decl_ether_ntohost=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_ether_ntohost" >&5 -echo "${ECHO_T}$ac_cv_have_decl_ether_ntohost" >&6 -if test $ac_cv_have_decl_ether_ntohost = yes; then - - -cat >>confdefs.h <<\_ACEOF -#define NETINET_ETHER_H_DECLARES_ETHER_NTOHOST -_ACEOF - - -fi - - fi - fi - # - # Is ether_ntohost() declared? - # - if test "$ac_cv_have_decl_ether_ntohost" != yes; then - # - # No, we'll have to declare it ourselves. - # Do we have "struct ether_addr"? - # - echo "$as_me:$LINENO: checking for struct ether_addr" >&5 -echo $ECHO_N "checking for struct ether_addr... $ECHO_C" >&6 -if test "${ac_cv_type_struct_ether_addr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> -struct mbuf; -struct rtentry; -#include <net/if.h> -#include <netinet/if_ether.h> - - -int -main () -{ -if ((struct ether_addr *) 0) - return 0; -if (sizeof (struct ether_addr)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_struct_ether_addr=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_struct_ether_addr=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_struct_ether_addr" >&5 -echo "${ECHO_T}$ac_cv_type_struct_ether_addr" >&6 -if test $ac_cv_type_struct_ether_addr = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_ETHER_ADDR 1 -_ACEOF - - -fi - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_DECL_ETHER_NTOHOST 0 -_ACEOF - - else - -cat >>confdefs.h <<\_ACEOF -#define HAVE_DECL_ETHER_NTOHOST 1 -_ACEOF - - fi -fi - - - echo "$as_me:$LINENO: checking if sockaddr struct has sa_len member" >&5 -echo $ECHO_N "checking if sockaddr struct has sa_len member... $ECHO_C" >&6 - if test "${ac_cv_sockaddr_has_sa_len+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -# include <sys/types.h> -# include <sys/socket.h> -int -main () -{ -u_int i = sizeof(((struct sockaddr *)0)->sa_len) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sockaddr_has_sa_len=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_sockaddr_has_sa_len=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $ac_cv_sockaddr_has_sa_len" >&5 -echo "${ECHO_T}$ac_cv_sockaddr_has_sa_len" >&6 - if test $ac_cv_sockaddr_has_sa_len = yes ; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_SOCKADDR_SA_LEN 1 -_ACEOF - - fi - -if test "$ac_cv_sockaddr_has_sa_len" = no; then - missing_includes=yes -fi - - - - -for ac_func in pcap_findalldevs pcap_dump_flush pcap_lib_version -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -if test $ac_cv_func_pcap_findalldevs = "yes" ; then - savedcflags="$CFLAGS" - CFLAGS="$CFLAGS $V_INCLS" - echo "$as_me:$LINENO: checking for pcap_if_t" >&5 -echo $ECHO_N "checking for pcap_if_t... $ECHO_C" >&6 -if test "${ac_cv_type_pcap_if_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <pcap.h> - -int -main () -{ -if ((pcap_if_t *) 0) - return 0; -if (sizeof (pcap_if_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_pcap_if_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_pcap_if_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_pcap_if_t" >&5 -echo "${ECHO_T}$ac_cv_type_pcap_if_t" >&6 -if test $ac_cv_type_pcap_if_t = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_PCAP_IF_T 1 -_ACEOF - - -fi - - CFLAGS="$savedcflags" -fi - -if test $ac_cv_func_pcap_lib_version = "no" ; then - echo "$as_me:$LINENO: checking whether pcap_version is defined by libpcap" >&5 -echo $ECHO_N "checking whether pcap_version is defined by libpcap... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - extern char pcap_version[]; - - return (int)pcap_version; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lbl_cv_pcap_version_defined=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lbl_cv_pcap_version_defined=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - if test "$ac_lbl_cv_pcap_version_defined" = yes ; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - cat >>confdefs.h <<\_ACEOF -#define HAVE_PCAP_VERSION 1 -_ACEOF - - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - fi -fi -echo "$as_me:$LINENO: checking whether pcap_debug is defined by libpcap" >&5 -echo $ECHO_N "checking whether pcap_debug is defined by libpcap... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - extern int pcap_debug; - - return pcap_debug; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lbl_cv_pcap_debug_defined=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lbl_cv_pcap_debug_defined=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -if test "$ac_lbl_cv_pcap_debug_defined" = yes ; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - cat >>confdefs.h <<\_ACEOF -#define HAVE_PCAP_DEBUG 1 -_ACEOF - -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - # - # OK, what about "yydebug"? - # - echo "$as_me:$LINENO: checking whether yydebug is defined by libpcap" >&5 -echo $ECHO_N "checking whether yydebug is defined by libpcap... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - extern int yydebug; - - return yydebug; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lbl_cv_yydebug_defined=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lbl_cv_yydebug_defined=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - if test "$ac_lbl_cv_yydebug_defined" = yes ; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - cat >>confdefs.h <<\_ACEOF -#define HAVE_YYDEBUG 1 -_ACEOF - - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - fi -fi - -for ac_func in bpf_dump -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -else - LIBOBJS="$LIBOBJS $ac_func.$ac_objext" -fi -done - - -V_GROUP=0 -if test -f /etc/group -a ! -z "`grep '^wheel:' /etc/group`" ; then - V_GROUP=wheel -fi -case "$host_os" in - -aix*) - cat >>confdefs.h <<\_ACEOF -#define _SUN 1 -_ACEOF - - ;; - -irix*) - V_GROUP=sys - ;; - -osf*) - V_GROUP=system - ;; - -solaris*) - V_GROUP=sys - ;; -esac - -if test -f /dev/bpf0 ; then - V_GROUP=bpf -fi - - -for ac_header in sys/bitypes.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -echo "$as_me:$LINENO: checking for int8_t" >&5 -echo $ECHO_N "checking for int8_t... $ECHO_C" >&6 -if test "${ac_cv_type_int8_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((int8_t *) 0) - return 0; -if (sizeof (int8_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_int8_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_int8_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_int8_t" >&5 -echo "${ECHO_T}$ac_cv_type_int8_t" >&6 -if test $ac_cv_type_int8_t = yes; then - : -else - -cat >>confdefs.h <<\_ACEOF -#define int8_t signed char -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for u_int8_t" >&5 -echo $ECHO_N "checking for u_int8_t... $ECHO_C" >&6 -if test "${ac_cv_type_u_int8_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#ifdef HAVE_SYS_BITYPES_H -#include <sys/bitypes.h> -#endif - -int -main () -{ -if ((u_int8_t *) 0) - return 0; -if (sizeof (u_int8_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_u_int8_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_u_int8_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_u_int8_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_int8_t" >&6 -if test $ac_cv_type_u_int8_t = yes; then - : -else - -cat >>confdefs.h <<\_ACEOF -#define u_int8_t unsigned char -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for int16_t" >&5 -echo $ECHO_N "checking for int16_t... $ECHO_C" >&6 -if test "${ac_cv_type_int16_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((int16_t *) 0) - return 0; -if (sizeof (int16_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_int16_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_int16_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_int16_t" >&5 -echo "${ECHO_T}$ac_cv_type_int16_t" >&6 -if test $ac_cv_type_int16_t = yes; then - : -else - -cat >>confdefs.h <<\_ACEOF -#define int16_t short -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for u_int16_t" >&5 -echo $ECHO_N "checking for u_int16_t... $ECHO_C" >&6 -if test "${ac_cv_type_u_int16_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#ifdef HAVE_SYS_BITYPES_H -#include <sys/bitypes.h> -#endif - -int -main () -{ -if ((u_int16_t *) 0) - return 0; -if (sizeof (u_int16_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_u_int16_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_u_int16_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_u_int16_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_int16_t" >&6 -if test $ac_cv_type_u_int16_t = yes; then - : -else - -cat >>confdefs.h <<\_ACEOF -#define u_int16_t unsigned short -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for int32_t" >&5 -echo $ECHO_N "checking for int32_t... $ECHO_C" >&6 -if test "${ac_cv_type_int32_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((int32_t *) 0) - return 0; -if (sizeof (int32_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_int32_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_int32_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_int32_t" >&5 -echo "${ECHO_T}$ac_cv_type_int32_t" >&6 -if test $ac_cv_type_int32_t = yes; then - : -else - -cat >>confdefs.h <<\_ACEOF -#define int32_t int -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for u_int32_t" >&5 -echo $ECHO_N "checking for u_int32_t... $ECHO_C" >&6 -if test "${ac_cv_type_u_int32_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#ifdef HAVE_SYS_BITYPES_H -#include <sys/bitypes.h> -#endif - -int -main () -{ -if ((u_int32_t *) 0) - return 0; -if (sizeof (u_int32_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_u_int32_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_u_int32_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_u_int32_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_int32_t" >&6 -if test $ac_cv_type_u_int32_t = yes; then - : -else - -cat >>confdefs.h <<\_ACEOF -#define u_int32_t unsigned int -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for int64_t" >&5 -echo $ECHO_N "checking for int64_t... $ECHO_C" >&6 -if test "${ac_cv_type_int64_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((int64_t *) 0) - return 0; -if (sizeof (int64_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_int64_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_int64_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_int64_t" >&5 -echo "${ECHO_T}$ac_cv_type_int64_t" >&6 -if test $ac_cv_type_int64_t = yes; then - : -else - -cat >>confdefs.h <<\_ACEOF -#define int64_t long long -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for u_int64_t" >&5 -echo $ECHO_N "checking for u_int64_t... $ECHO_C" >&6 -if test "${ac_cv_type_u_int64_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#ifdef HAVE_SYS_BITYPES_H -#include <sys/bitypes.h> -#endif - -int -main () -{ -if ((u_int64_t *) 0) - return 0; -if (sizeof (u_int64_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_u_int64_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_u_int64_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_u_int64_t" >&5 -echo "${ECHO_T}$ac_cv_type_u_int64_t" >&6 -if test $ac_cv_type_u_int64_t = yes; then - : -else - -cat >>confdefs.h <<\_ACEOF -#define u_int64_t unsigned long long -_ACEOF - -fi - - -# -# We can't just check for <inttypes.h> - some systems have one that -# doesn't define all the PRI[doxu]64 macros. -# - -for ac_header in inttypes.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - - # - # OK, we have inttypes.h, but does it define those macros? - # - echo "$as_me:$LINENO: checking whether inttypes.h defines the PRI[doxu]64 macros" >&5 -echo $ECHO_N "checking whether inttypes.h defines the PRI[doxu]64 macros... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF - - #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - #include <inttypes.h> - #include <stdio.h> - #include <sys/types.h> - #ifdef HAVE_SYS_BITYPES_H - #include <sys/bitypes.h> - #endif - - main() - { - printf("%" PRId64 "\n", (u_int64_t)1); - printf("%" PRIo64 "\n", (u_int64_t)1); - printf("%" PRIx64 "\n", (u_int64_t)1); - printf("%" PRIu64 "\n", (u_int64_t)1); - } - - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - ac_lbl_inttypes_h_defines_formats=yes - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ac_lbl_inttypes_h_defines_formats=no - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -else - - # - # We don't have inttypes.h, so it obviously can't define those - # macros. - # - ac_lbl_inttypes_h_defines_formats=no - -fi - -done - -if test "$ac_lbl_inttypes_h_defines_formats" = no; then - - echo "$as_me:$LINENO: checking whether %lx can be used to format 64-bit integers" >&5 -echo $ECHO_N "checking whether %lx can be used to format 64-bit integers... $ECHO_C" >&6 - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF - - #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -# ifdef HAVE_INTTYPES_H - #include <inttypes.h> -# endif -# ifdef HAVE_SYS_BITYPES_H - #include <sys/bitypes.h> -# endif - #include <stdio.h> - #include <sys/types.h> - - main() - { - u_int64_t t = 1; - char strbuf[16+1]; - sprintf(strbuf, "%016lx", t << 32); - if (strcmp(strbuf, "0000000100000000") == 0) - exit(0); - else - exit(1); - } - - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cat >>confdefs.h <<\_ACEOF -#define PRId64 "ld" -_ACEOF - - cat >>confdefs.h <<\_ACEOF -#define PRIo64 "lo" -_ACEOF - - cat >>confdefs.h <<\_ACEOF -#define PRIx64 "lx" -_ACEOF - - cat >>confdefs.h <<\_ACEOF -#define PRIu64 "lu" -_ACEOF - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) - - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - - - echo "$as_me:$LINENO: checking whether %llx can be used to format 64-bit integers" >&5 -echo $ECHO_N "checking whether %llx can be used to format 64-bit integers... $ECHO_C" >&6 - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF - - #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -# ifdef HAVE_INTTYPES_H - #include <inttypes.h> -# endif -# ifdef HAVE_SYS_BITYPES_H - #include <sys/bitypes.h> -# endif - #include <stdio.h> - #include <sys/types.h> - - main() - { - u_int64_t t = 1; - char strbuf[16+1]; - sprintf(strbuf, "%016llx", t << 32); - if (strcmp(strbuf, "0000000100000000") == 0) - exit(0); - else - exit(1); - } - - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cat >>confdefs.h <<\_ACEOF -#define PRId64 "lld" -_ACEOF - - cat >>confdefs.h <<\_ACEOF -#define PRIo64 "llo" -_ACEOF - - cat >>confdefs.h <<\_ACEOF -#define PRIx64 "llx" -_ACEOF - - cat >>confdefs.h <<\_ACEOF -#define PRIu64 "llu" -_ACEOF - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) - - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - - - echo "$as_me:$LINENO: checking whether %Lx can be used to format 64-bit integers" >&5 -echo $ECHO_N "checking whether %Lx can be used to format 64-bit integers... $ECHO_C" >&6 - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF - - #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -# ifdef HAVE_INTTYPES_H - #include <inttypes.h> -# endif -# ifdef HAVE_SYS_BITYPES_H - #include <sys/bitypes.h> -# endif - #include <stdio.h> - #include <sys/types.h> - - main() - { - u_int64_t t = 1; - char strbuf[16+1]; - sprintf(strbuf, "%016Lx", t << 32); - if (strcmp(strbuf, "0000000100000000") == 0) - exit(0); - else - exit(1); - } - - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cat >>confdefs.h <<\_ACEOF -#define PRId64 "Ld" -_ACEOF - - cat >>confdefs.h <<\_ACEOF -#define PRIo64 "Lo" -_ACEOF - - cat >>confdefs.h <<\_ACEOF -#define PRIx64 "Lx" -_ACEOF - - cat >>confdefs.h <<\_ACEOF -#define PRIu64 "Lu" -_ACEOF - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) - - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - - - echo "$as_me:$LINENO: checking whether %qx can be used to format 64-bit integers" >&5 -echo $ECHO_N "checking whether %qx can be used to format 64-bit integers... $ECHO_C" >&6 - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - cat >conftest.$ac_ext <<_ACEOF - - #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -# ifdef HAVE_INTTYPES_H - #include <inttypes.h> -# endif -# ifdef HAVE_SYS_BITYPES_H - #include <sys/bitypes.h> -# endif - #include <stdio.h> - #include <sys/types.h> - - main() - { - u_int64_t t = 1; - char strbuf[16+1]; - sprintf(strbuf, "%016qx", t << 32); - if (strcmp(strbuf, "0000000100000000") == 0) - exit(0); - else - exit(1); - } - - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cat >>confdefs.h <<\_ACEOF -#define PRId64 "qd" -_ACEOF - - cat >>confdefs.h <<\_ACEOF -#define PRIo64 "qo" -_ACEOF - - cat >>confdefs.h <<\_ACEOF -#define PRIx64 "qx" -_ACEOF - - cat >>confdefs.h <<\_ACEOF -#define PRIu64 "qu" -_ACEOF - - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) - - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - - { { echo "$as_me:$LINENO: error: neither %llx nor %Lx nor %qx worked on a 64-bit integer" >&5 -echo "$as_me: error: neither %llx nor %Lx nor %qx worked on a 64-bit integer" >&2;} - { (exit 1); exit 1; }; } - - -fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - - -fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - - -fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - - -fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - -fi - -rm -f os-proto.h - if test "${LBL_CFLAGS+set}" = set; then - V_CCOPT="$V_CCOPT ${LBL_CFLAGS}" - fi - if test -f .devel ; then - if test "$GCC" = yes ; then - if test "${LBL_CFLAGS+set}" != set; then - if test "$ac_cv_prog_cc_g" = yes ; then - V_CCOPT="-g $V_CCOPT" - fi - V_CCOPT="$V_CCOPT -Wall" - if test $ac_cv_lbl_gcc_vers -gt 1 ; then - V_CCOPT="$V_CCOPT -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -W" - fi - fi - else - case "$host_os" in - - irix6*) - V_CCOPT="$V_CCOPT -n32" - ;; - - *) - ;; - esac - fi - os=`echo $host_os | sed -e 's/\([0-9][0-9]*\)[^0-9].*$/\1/'` - name="lbl/os-$os.h" - if test -f $name ; then - ln -s $name os-proto.h - cat >>confdefs.h <<\_ACEOF -#define HAVE_OS_PROTO_H 1 -_ACEOF - - else - { echo "$as_me:$LINENO: WARNING: can't find $name" >&5 -echo "$as_me: WARNING: can't find $name" >&2;} - fi - fi - -echo "$as_me:$LINENO: checking if sockaddr struct has sa_len member" >&5 -echo $ECHO_N "checking if sockaddr struct has sa_len member... $ECHO_C" >&6 - if test "${ac_cv_lbl_sockaddr_has_sa_len+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -# include <sys/types.h> -# include <sys/socket.h> -int -main () -{ -u_int i = sizeof(((struct sockaddr *)0)->sa_len) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lbl_sockaddr_has_sa_len=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lbl_sockaddr_has_sa_len=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $ac_cv_lbl_sockaddr_has_sa_len" >&5 -echo "${ECHO_T}$ac_cv_lbl_sockaddr_has_sa_len" >&6 - if test $ac_cv_lbl_sockaddr_has_sa_len = yes ; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_SOCKADDR_SA_LEN 1 -_ACEOF - - fi - -echo "$as_me:$LINENO: checking if unaligned accesses fail" >&5 -echo $ECHO_N "checking if unaligned accesses fail... $ECHO_C" >&6 - if test "${ac_cv_lbl_unaligned_fail+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case "$host_cpu" in - - # - # These are CPU types where: - # - # the CPU faults on an unaligned access, but at least some - # OSes that support that CPU catch the fault and simulate - # the unaligned access (e.g., Alpha/{Digital,Tru64} UNIX) - - # the simulation is slow, so we don't want to use it; - # - # the CPU, I infer (from the old - # - # XXX: should also check that they don't do weird things (like on arm) - # - # comment) doesn't fault on unaligned accesses, but doesn't - # do a normal unaligned fetch, either (e.g., presumably, ARM); - # - # for whatever reason, the test program doesn't work - # (this has been claimed to be the case for several of those - # CPUs - I don't know what the problem is; the problem - # was reported as "the test program dumps core" for SuperH, - # but that's what the test program is *supposed* to do - - # it dumps core before it writes anything, so the test - # for an empty output file should find an empty output - # file and conclude that unaligned accesses don't work). - # - # This run-time test won't work if you're cross-compiling, so - # in order to support cross-compiling for a particular CPU, - # we have to wire in the list of CPU types anyway, as far as - # I know, so perhaps we should just have a set of CPUs on - # which we know it doesn't work, a set of CPUs on which we - # know it does work, and have the script just fail on other - # cpu types and update it when such a failure occurs. - # - alpha*|arm*|hp*|mips*|sh*|sparc*|ia64|nv1) - ac_cv_lbl_unaligned_fail=yes - ;; - - *) - cat >conftest.c <<EOF -# include <sys/types.h> -# include <sys/wait.h> -# include <stdio.h> - unsigned char a[5] = { 1, 2, 3, 4, 5 }; - main() { - unsigned int i; - pid_t pid; - int status; - /* avoid "core dumped" message */ - pid = fork(); - if (pid < 0) - exit(2); - if (pid > 0) { - /* parent */ - pid = waitpid(pid, &status, 0); - if (pid < 0) - exit(3); - exit(!WIFEXITED(status)); - } - /* child */ - i = *(unsigned int *)&a[1]; - printf("%d\n", i); - exit(0); - } -EOF - ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \ - conftest.c $LIBS >/dev/null 2>&1 - if test ! -x conftest ; then - ac_cv_lbl_unaligned_fail=yes - else - ./conftest >conftest.out - if test ! -s conftest.out ; then - ac_cv_lbl_unaligned_fail=yes - else - ac_cv_lbl_unaligned_fail=no - fi - fi - rm -f conftest* core core.conftest - ;; - esac -fi - - echo "$as_me:$LINENO: result: $ac_cv_lbl_unaligned_fail" >&5 -echo "${ECHO_T}$ac_cv_lbl_unaligned_fail" >&6 - if test $ac_cv_lbl_unaligned_fail = yes ; then - cat >>confdefs.h <<\_ACEOF -#define LBL_ALIGN 1 -_ACEOF - - fi - - - echo "$as_me:$LINENO: checking for h_errno" >&5 -echo $ECHO_N "checking for h_errno... $ECHO_C" >&6 - if test "${ac_cv_var_h_errno+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -# include <sys/types.h> -# include <netdb.h> -int -main () -{ -int foo = h_errno; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_var_h_errno=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_var_h_errno=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi - - echo "$as_me:$LINENO: result: $ac_cv_var_h_errno" >&5 -echo "${ECHO_T}$ac_cv_var_h_errno" >&6 - if test "$ac_cv_var_h_errno" = "yes"; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_H_ERRNO 1 -_ACEOF - - fi - - - -# Check whether --with-crypto or --without-crypto was given. -if test "${with_crypto+set}" = set; then - withval="$with_crypto" - -else - -echo "$as_me:$LINENO: checking for SSLeay" >&5 -echo $ECHO_N "checking for SSLeay... $ECHO_C" >&6 -ac_cv_ssleay_path=no -incdir=no - -# -# 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 - # - # XXX - is there a better way to check if a given library is - # in a given directory than checking each of the possible - # shared library suffixes? - # - # Are there any other suffixes we need to look for? Do we have to - # worry about ".so.{version}"? - # - # Or should we just look for "libcrypto.*"? - # - if test -d $dir/lib -a \( -f $dir/lib/libcrypto.a -o \ - -f $dir/lib/libcrypto.so -o \ - -f $dir/lib/libcrypto.sl -o \ - -f $dir/lib/libcrypto.dylib \); then - ac_cv_ssleay_path=$dir - fi - if test -d $dir/include/openssl -a -f $dir/include/openssl/des.h; then - incdir="-I$dir/include" - fi - if test "$ac_cv_ssleay_path" != "no" -a "$incdir" != "no"; then - break; - else - ac_cv_ssleay_path=no - incdir=no - fi -done -echo "$as_me:$LINENO: result: $ac_cv_ssleay_path" >&5 -echo "${ECHO_T}$ac_cv_ssleay_path" >&6 -if test "$ac_cv_ssleay_path" != no; then - V_INCLS="$V_INCLS $incdir" - LDFLAGS="-L$dir/lib $LDFLAGS" - if test -f $ac_cv_ssleay_path/lib/libRSAglue.a; then - LIBS="$LIBS -lRSAglue" - fi - if test -f $ac_cv_ssleay_path/lib/librsaref.a; then - LIBS="$LIBS -lrsaref" - fi - -echo "$as_me:$LINENO: checking for DES_cbc_encrypt in -lcrypto" >&5 -echo $ECHO_N "checking for DES_cbc_encrypt in -lcrypto... $ECHO_C" >&6 -if test "${ac_cv_lib_crypto_DES_cbc_encrypt+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcrypto $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char DES_cbc_encrypt (); -int -main () -{ -DES_cbc_encrypt (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_crypto_DES_cbc_encrypt=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_crypto_DES_cbc_encrypt=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_DES_cbc_encrypt" >&5 -echo "${ECHO_T}$ac_cv_lib_crypto_DES_cbc_encrypt" >&6 -if test $ac_cv_lib_crypto_DES_cbc_encrypt = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBCRYPTO 1 -_ACEOF - - LIBS="-lcrypto $LIBS" - -fi - - - CPPFLAGS="$CPPFLAGS $V_INCLS" - -for ac_header in openssl/evp.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; - no:yes ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -fi - -fi; - -if test "$missing_includes" = "yes"; then - CPPFLAGS="$CPPFLAGS -I\$(srcdir)/missing" - V_INCLS="$V_INCLS -I\$(srcdir)/missing" -fi - - - - - - - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL=$ac_install_sh - fi -fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - - ac_config_headers="$ac_config_headers config.h" - - - ac_config_commands="$ac_config_commands default-1" - - ac_config_files="$ac_config_files Makefile" -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -{ - (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} | - sed ' - t clear - : clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" - cat confcache >$cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_i=`echo "$ac_i" | - sed 's/\$U\././;s/\.o$//;s/\.obj$//'` - # 2. Add them. - ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - -: ${CONFIG_STATUS=./config.status} -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi - -# Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - -exec 6>&1 - -# Open the log real soon, to keep \$[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - -This file was extended by $as_me, which was -generated by GNU Autoconf 2.57. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 -_ACEOF - -# Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi - -cat >>$CONFIG_STATUS <<\_ACEOF - -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to <bug-autoconf@gnu.org>." -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.57, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" - -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir -INSTALL="$INSTALL" -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - ac_shift=: - ;; - -*) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; - esac - - case $ac_option in - # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" - ac_need_defaults=false;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -fi - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -# -# INIT-COMMANDS section. -# - - - -_ACEOF - - - -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF - -# -# CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@DEFS@,$DEFS,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@LIBS@,$LIBS,;t t -s,@build@,$build,;t t -s,@build_cpu@,$build_cpu,;t t -s,@build_vendor@,$build_vendor,;t t -s,@build_os@,$build_os,;t t -s,@host@,$host,;t t -s,@host_cpu@,$host_cpu,;t t -s,@host_vendor@,$host_vendor,;t t -s,@host_os@,$host_os,;t t -s,@SHLICC2@,$SHLICC2,;t t -s,@CC@,$CC,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@CPP@,$CPP,;t t -s,@EGREP@,$EGREP,;t t -s,@LIBOBJS@,$LIBOBJS,;t t -s,@V_CCOPT@,$V_CCOPT,;t t -s,@V_DEFS@,$V_DEFS,;t t -s,@V_GROUP@,$V_GROUP,;t t -s,@V_INCLS@,$V_INCLS,;t t -s,@V_PCAPDEP@,$V_PCAPDEP,;t t -s,@LOCALSRC@,$LOCALSRC,;t t -s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -s,@INSTALL_DATA@,$INSTALL_DATA,;t t -s,@LTLIBOBJS@,$LTLIBOBJS,;t t -CEOF - -_ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` - - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_builddir$INSTALL ;; - esac - - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - -_ACEOF - -# Transform confdefs.h into two sed scripts, `conftest.defines' and -# `conftest.undefs', that substitutes the proper values into -# config.h.in to produce config.h. The first handles `#define' -# templates, and the second `#undef' templates. -# And first: Protect against being on the right side of a sed subst in -# config.status. Protect against being in an unquoted here document -# in config.status. -rm -f conftest.defines conftest.undefs -# Using a here document instead of a string reduces the quoting nightmare. -# Putting comments in sed scripts is not portable. -# -# `end' is used to avoid that the second main sed command (meant for -# 0-ary CPP macros) applies to n-ary macro definitions. -# See the Autoconf documentation for `clear'. -cat >confdef2sed.sed <<\_ACEOF -s/[\\&,]/\\&/g -s,[\\$`],\\&,g -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -t end -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp -: end -_ACEOF -# If some macros were called several times there might be several times -# the same #defines, which is useless. Nevertheless, we may not want to -# sort them, since we want the *last* AC-DEFINE to be honored. -uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines -sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs -rm -f confdef2sed.sed - -# This sed command replaces #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -cat >>conftest.undefs <<\_ACEOF -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -_ACEOF - -# Break up conftest.defines because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS -echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS -echo ' :' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.defines >/dev/null -do - # Write a limited-size here document to $tmp/defines.sed. - echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS - # Speed up: don't consider the non `#define' lines. - echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/defines.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines -echo ' fi # grep' >>$CONFIG_STATUS -echo >>$CONFIG_STATUS - -# Break up conftest.undefs because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #undef templates' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.undefs >/dev/null -do - # Write a limited-size here document to $tmp/undefs.sed. - echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS - # Speed up: don't consider the non `#undef' - echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/undefs.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail - rm -f conftest.undefs - mv conftest.tail conftest.undefs -done -rm -f conftest.undefs - -cat >>$CONFIG_STATUS <<\_ACEOF - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in - if test x"$ac_file" != x-; then - if diff $ac_file $tmp/config.h >/dev/null 2>&1; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} - else - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - rm -f $ac_file - mv $tmp/config.h $ac_file - fi - else - cat $tmp/config.h - rm -f $tmp/config.h - fi -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` - - - { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 -echo "$as_me: executing $ac_dest commands" >&6;} - case $ac_dest in - default-1 ) if test -f .devel; then - echo timestamp > stamp-h - cat Makefile-devel-adds >> Makefile - make depend -fi ;; - esac -done -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -{ (exit 0); exit 0; } -_ACEOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi - -exit 0 diff --git a/contrib/tcpdump/configure.in b/contrib/tcpdump/configure.in deleted file mode 100755 index 7a331c5ec479c..0000000000000 --- a/contrib/tcpdump/configure.in +++ /dev/null @@ -1,989 +0,0 @@ -dnl @(#) $Header: /tcpdump/master/tcpdump/configure.in,v 1.188.2.7 2005/09/21 16:50:01 guy Exp $ (LBL) -dnl -dnl Copyright (c) 1994, 1995, 1996, 1997 -dnl The Regents of the University of California. All rights reserved. -dnl -dnl Process this file with autoconf to produce a configure script. -dnl - -AC_REVISION($Revision: 1.188.2.7 $) -AC_PREREQ(2.50) -AC_INIT(tcpdump.c) - -AC_CANONICAL_HOST - -AC_LBL_C_INIT(V_CCOPT, V_INCLS) -AC_LBL_C_INLINE -AC_C___ATTRIBUTE__ -AC_CHECK_HEADERS(fcntl.h rpc/rpcent.h netdnet/dnetdb.h) -AC_CHECK_HEADERS(netinet/if_ether.h, , , [#include <sys/types.h> -#include <sys/socket.h>]) -if test "$ac_cv_header_netinet_if_ether_h" != yes; then - # - # The simple test didn't work. - # Do we need to include <net/if.h> first? - # Unset ac_cv_header_netinet_if_ether_h so we don't - # treat the previous failure as a cached value and - # suppress the next test. - # - AC_MSG_NOTICE([Rechecking with some additional includes]) - unset ac_cv_header_netinet_if_ether_h - AC_CHECK_HEADERS(netinet/if_ether.h, , , [#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -struct mbuf; -struct rtentry; -#include <net/if.h>]) -fi - -AC_HEADER_TIME - -case "$host_os" in - -linux*) - AC_MSG_CHECKING(Linux kernel version) - if test "$cross_compiling" = yes; then - AC_CACHE_VAL(ac_cv_linux_vers, - ac_cv_linux_vers=unknown) - else - AC_CACHE_VAL(ac_cv_linux_vers, - ac_cv_linux_vers=`uname -r 2>&1 | \ - sed -n -e '$s/.* //' -e '$s/\..*//p'`) - fi - AC_MSG_RESULT($ac_cv_linux_vers) - if test $ac_cv_linux_vers = unknown ; then - AC_MSG_ERROR(cannot determine linux version when cross-compiling) - fi - if test $ac_cv_linux_vers -lt 2 ; then - AC_MSG_ERROR(version 2 or higher required; see the INSTALL doc for more info) - fi - ;; - -*) - ;; -esac - - -AC_CHECK_HEADERS(smi.h) -AC_CHECK_LIB(smi, smiInit) -if test "$ac_cv_header_smi_h" = yes -a "$ac_cv_lib_smi_smiInit" = yes -then -AC_MSG_CHECKING([whether to enable libsmi]) - AC_TRY_RUN([ /* libsmi available check */ -#include <smi.h> -main() -{ - int current, revision, age, n; - const int required = 2; - if (smiInit("")) - exit(1); - if (strcmp(SMI_LIBRARY_VERSION, smi_library_version)) - exit(2); - n = sscanf(smi_library_version, "%d:%d:%d", ¤t, &revision, &age); - if (n != 3) - exit(3); - if (required < current - age || required > current) - exit(4); - exit(0); -} -], -[ AC_MSG_RESULT(yes) - AC_DEFINE(LIBSMI) - libsmi=yes], -dnl autoconf documentation says that $? contains the exit value. -dnl reality is that it does not. We leave this in just in case -dnl autoconf ever comes back to match the documentation. -[ case $? in - 1) AC_MSG_RESULT(no - smiInit failed) ;; - 2) AC_MSG_RESULT(no - header/library version mismatch) ;; - 3) AC_MSG_RESULT(no - can't determine library version) ;; - 4) AC_MSG_RESULT(no - too old) ;; - *) AC_MSG_RESULT(no) ;; - esac - libsmi=no], -[ AC_MSG_RESULT(not when cross-compiling) - libsmi=no] -) -fi - -AC_MSG_CHECKING([whether to enable the possibly-buggy SMB printer]) -AC_ARG_ENABLE(smb, -[ --enable-smb enable possibly-buggy SMB printer [default=yes] - --disable-smb disable possibly-buggy SMB printer],, - enableval=yes) -case "$enableval" in -yes) AC_MSG_RESULT(yes) - AC_WARN([The SMB printer may have exploitable buffer overflows!!!]) - AC_DEFINE(TCPDUMP_DO_SMB) - LOCALSRC="print-smb.c smbutil.c $LOCALSRC" - ;; -*) AC_MSG_RESULT(no) - ;; -esac - -AC_ARG_WITH(user, [ --with-user=USERNAME drop privileges by default to USERNAME]) -AC_MSG_CHECKING([whether to drop root privileges by default]) -if test ! -z "$with_user" ; then - AC_DEFINE_UNQUOTED(WITH_USER, "$withval") - AC_MSG_RESULT(to \"$withval\") -else - AC_MSG_RESULT(no) -fi - -AC_ARG_WITH(chroot, [ --with-chroot=DIRECTORY when dropping privileges, chroot to DIRECTORY]) -AC_MSG_CHECKING([whether to chroot]) -if test ! -z "$with_chroot" ; then - AC_DEFINE_UNQUOTED(WITH_CHROOT, "$withval") - AC_MSG_RESULT(to \"$withval\") -else - AC_MSG_RESULT(no) -fi - -AC_MSG_CHECKING([whether to enable ipv6]) -AC_ARG_ENABLE(ipv6, -[ --enable-ipv6 enable ipv6 (with ipv4) support - --disable-ipv6 disable ipv6 support], -[ case "$enableval" in -yes) AC_MSG_RESULT(yes) - LOCALSRC="print-ip6.c print-ip6opts.c print-mobility.c print-ripng.c print-icmp6.c print-frag6.c print-rt6.c print-ospf6.c print-dhcp6.c $LOCALSRC" - AC_DEFINE(INET6) - ipv6=yes - ;; -*) - AC_MSG_RESULT(no) - ipv6=no - ;; - esac ], - - AC_TRY_RUN([ /* AF_INET6 available check */ -#include <sys/types.h> -#include <sys/socket.h> -main() -{ - if (socket(AF_INET6, SOCK_STREAM, 0) < 0) - exit(1); - else - exit(0); -} -], -[ AC_MSG_RESULT(yes) - LOCALSRC="print-ip6.c print-ip6opts.c print-mobility.c print-ripng.c print-icmp6.c print-frag6.c print-rt6.c print-ospf6.c print-dhcp6.c $LOCALSRC" - AC_DEFINE(INET6) - ipv6=yes], -[ AC_MSG_RESULT(no) - ipv6=no], -[ AC_MSG_RESULT(no) - ipv6=no] -)) - -ipv6type=unknown -ipv6lib=none -ipv6trylibc=no - -if test "$ipv6" = "yes"; then - AC_MSG_CHECKING([ipv6 stack type]) - for i in inria kame linux-glibc linux-libinet6 toshiba v6d zeta; do - case $i in - inria) - dnl http://www.kame.net/ - AC_EGREP_CPP(yes, -[#include <netinet/in.h> -#ifdef IPV6_INRIA_VERSION -yes -#endif], - [ipv6type=$i; - CFLAGS="-DINET6 $CFLAGS"]) - ;; - kame) - dnl http://www.kame.net/ - AC_EGREP_CPP(yes, -[#include <netinet/in.h> -#ifdef __KAME__ -yes -#endif], - [ipv6type=$i; - ipv6lib=inet6; - ipv6libdir=/usr/local/v6/lib; - ipv6trylibc=yes; - CFLAGS="-DINET6 $CFLAGS"]) - ;; - linux-glibc) - dnl http://www.v6.linux.or.jp/ - AC_EGREP_CPP(yes, -[#include <features.h> -#if defined(__GLIBC__) && __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 -yes -#endif], - [ipv6type=$i; - CFLAGS="-DINET6 $CFLAGS"]) - ;; - linux-libinet6) - dnl http://www.v6.linux.or.jp/ - dnl - dnl This also matches Solaris 8 and Tru64 UNIX 5.1, - dnl and possibly other versions of those OSes - dnl - if test -d /usr/inet6 -o -f /usr/include/netinet/ip6.h; then - ipv6type=$i - ipv6lib=inet6 - ipv6libdir=/usr/inet6/lib - ipv6trylibc=yes; - CFLAGS="-DINET6 -I/usr/inet6/include $CFLAGS" - fi - ;; - toshiba) - AC_EGREP_CPP(yes, -[#include <sys/param.h> -#ifdef _TOSHIBA_INET6 -yes -#endif], - [ipv6type=$i; - ipv6lib=inet6; - ipv6libdir=/usr/local/v6/lib; - CFLAGS="-DINET6 $CFLAGS"]) - ;; - v6d) - AC_EGREP_CPP(yes, -[#include </usr/local/v6/include/sys/v6config.h> -#ifdef __V6D__ -yes -#endif], - [ipv6type=$i; - ipv6lib=v6; - ipv6libdir=/usr/local/v6/lib; - CFLAGS="-I/usr/local/v6/include $CFLAGS"]) - ;; - zeta) - AC_EGREP_CPP(yes, -[#include <sys/param.h> -#ifdef _ZETA_MINAMI_INET6 -yes -#endif], - [ipv6type=$i; - ipv6lib=inet6; - ipv6libdir=/usr/local/v6/lib; - CFLAGS="-DINET6 $CFLAGS"]) - ;; - esac - if test "$ipv6type" != "unknown"; then - break - fi - done - AC_MSG_RESULT($ipv6type) -fi - -if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then - if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then - LIBS="-L$ipv6libdir -l$ipv6lib $LIBS" - echo "You have $ipv6lib library, using it" - else - if test "$ipv6trylibc" = "yes"; then - echo "You do not have $ipv6lib library, using libc" - else - echo 'Fatal: no $ipv6lib library found. cannot continue.' - echo "You need to fetch lib$ipv6lib.a from appropriate" - echo 'ipv6 kit and compile beforehand.' - exit 1 - fi - fi -fi - - -if test "$ipv6" = "yes"; then - # - # XXX - on Tru64 UNIX 5.1, there is no "getaddrinfo()" - # function in libc; there are "ngetaddrinfo()" and - # "ogetaddrinfo()" functions, and <netdb.h> #defines - # "getaddrinfo" to be either "ngetaddrinfo" or - # "ogetaddrinfo", depending on whether _SOCKADDR_LEN - # or _XOPEN_SOURCE_EXTENDED are defined or not. - # - # So this test doesn't work on Tru64 5.1, and possibly - # on other 5.x releases. This causes the configure - # script to become confused, and results in libpcap - # being unbuildable. - # - AC_SEARCH_LIBS(getaddrinfo, socket, [dnl - AC_MSG_CHECKING(getaddrinfo bug) - AC_CACHE_VAL(td_cv_buggygetaddrinfo, [AC_TRY_RUN([ -#include <sys/types.h> -#include <netdb.h> -#include <string.h> -#include <sys/socket.h> -#include <netinet/in.h> - -main() -{ - int passive, gaierr, inet4 = 0, inet6 = 0; - struct addrinfo hints, *ai, *aitop; - char straddr[INET6_ADDRSTRLEN], strport[16]; - - for (passive = 0; passive <= 1; passive++) { - memset(&hints, 0, sizeof(hints)); - hints.ai_family = AF_UNSPEC; - hints.ai_flags = passive ? AI_PASSIVE : 0; - hints.ai_socktype = SOCK_STREAM; - hints.ai_protocol = IPPROTO_TCP; - if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) { - (void)gai_strerror(gaierr); - goto bad; - } - for (ai = aitop; ai; ai = ai->ai_next) { - if (ai->ai_addr == NULL || - ai->ai_addrlen == 0 || - getnameinfo(ai->ai_addr, ai->ai_addrlen, - straddr, sizeof(straddr), strport, sizeof(strport), - NI_NUMERICHOST|NI_NUMERICSERV) != 0) { - goto bad; - } - switch (ai->ai_family) { - case AF_INET: - if (strcmp(strport, "54321") != 0) { - goto bad; - } - if (passive) { - if (strcmp(straddr, "0.0.0.0") != 0) { - goto bad; - } - } else { - if (strcmp(straddr, "127.0.0.1") != 0) { - goto bad; - } - } - inet4++; - break; - case AF_INET6: - if (strcmp(strport, "54321") != 0) { - goto bad; - } - if (passive) { - if (strcmp(straddr, "::") != 0) { - goto bad; - } - } else { - if (strcmp(straddr, "::1") != 0) { - goto bad; - } - } - inet6++; - break; - case AF_UNSPEC: - goto bad; - break; -#ifdef AF_UNIX - case AF_UNIX: -#else -#ifdef AF_LOCAL - case AF_LOCAL: -#endif -#endif - default: - /* another family support? */ - break; - } - } - } - - /* supported family should be 2, unsupported family should be 0 */ - if (!(inet4 == 0 || inet4 == 2)) - goto bad; - if (!(inet6 == 0 || inet6 == 2)) - goto bad; - - if (aitop) - freeaddrinfo(aitop); - exit(0); - - bad: - if (aitop) - freeaddrinfo(aitop); - exit(1); -} -], - td_cv_buggygetaddrinfo=no, - td_cv_buggygetaddrinfo=yes, - td_cv_buggygetaddrinfo=yes)]) - if test "$td_cv_buggygetaddrinfo" = no; then - AC_MSG_RESULT(good) - else - AC_MSG_RESULT(buggy) - fi - - if test "$td_cv_buggygetaddrinfo" = "yes"; then - # - # XXX - it doesn't appear that "ipv6type" can ever be - # set to "linux". Should this be testing for - # "linux-glibc", or for that *or* "linux-libinet6"? - # If the latter, note that "linux-libinet6" is also - # the type given to some non-Linux OSes. - # - if test "$ipv6type" != "linux"; then - echo 'Fatal: You must get working getaddrinfo() function.' - echo ' or you can specify "--disable-ipv6"'. - exit 1 - else - echo 'Warning: getaddrinfo() implementation on your system seems be buggy.' - echo ' Better upgrade your system library to newest version' - echo ' of GNU C library (aka glibc).' - fi - fi - ]) - AC_REPLACE_FUNCS(getaddrinfo getnameinfo) -fi - -AC_CACHE_CHECK([for dnet_htoa declaration in netdnet/dnetdb.h], -[td_cv_decl_netdnet_dnetdb_h_dnet_htoa], -[AC_EGREP_HEADER(dnet_htoa, netdnet/dnetdb.h, - td_cv_decl_netdnet_dnetdb_h_dnet_htoa=yes, - td_cv_decl_netdnet_dnetdb_h_dnet_htoa=no)]) -if test "$td_cv_decl_netdnet_dnetdb_h_dnet_htoa" = yes; then - AC_DEFINE(HAVE_NETDNET_DNETDB_H_DNET_HTOA) -fi - -dnl -dnl check sizeof basic types. -dnl They're very likely to be wrong for cross-compiling. -AC_CHECK_SIZEOF(char, 1) -AC_CHECK_SIZEOF(short, 2) -AC_CHECK_SIZEOF(int, 4) -AC_CHECK_SIZEOF(long, 4) -AC_CHECK_SIZEOF(long long, 8) - -dnl -dnl Checks for u_intXX_t -dnl AC_CHECK_BITTYPES(ac_cv_bittypes) -dnl if test "$ac_cv_bittypes" = no; then -dnl missing_includes=yes -dnl fi - -dnl -dnl Checks for addrinfo structure -AC_STRUCT_ADDRINFO(ac_cv_addrinfo) -if test "$ac_cv_addrinfo" = no; then - missing_includes=yes -fi - -dnl -dnl Checks for NI_MAXSERV -AC_NI_MAXSERV(ac_cv_maxserv) -if test "$ac_cv_maxserv" = no; then - missing_includes=yes -fi - -dnl -dnl Checks for NI_NAMEREQD -AC_NI_NAMEREQD(ac_cv_namereqd) -if test "$ac_cv_namereqd" = no; then - missing_includes=yes -fi - -dnl -dnl Checks for sockaddr_storage structure -AC_STRUCT_SA_STORAGE(ac_cv_sa_storage) -if test "$ac_cv_sa_storage" = no; then - missing_includes=yes -fi - -dnl -dnl Checks for IN[6]ADDRSZ -AC_CHECK_ADDRSZ(ac_cv_addrsz) -if test "$ac_cv_addrsz" = no; then - missing_includes=yes -fi - -dnl -dnl Checks for RES_USE_INET6 -AC_CHECK_RES_USE_INET6(ac_cv_res_inet6) -if test "$ac_cv_res_inet6" = no; then - missing_includes=yes -fi - -dnl -dnl Checks for res_state_ext structure -AC_STRUCT_RES_STATE_EXT(ac_cv_res_state_ext) -if test "$ac_cv_res_state_ext" = no; then - missing_includes=yes -fi - -dnl -dnl Checks if res_state structure has nsort member. -AC_STRUCT_RES_STATE(ac_cv_res_state) - - -AC_REPLACE_FUNCS(vfprintf strcasecmp strlcat strlcpy strdup strsep) -AC_CHECK_FUNCS(strftime) -AC_CHECK_FUNCS(setlinebuf alarm) - -needsnprintf=no -AC_CHECK_FUNCS(vsnprintf snprintf,, - [needsnprintf=yes]) -if test $needsnprintf = yes; then - AC_LIBOBJ(snprintf) -fi - -AC_LBL_TYPE_SIGNAL - -AC_SEARCH_LIBS(dnet_htoa, dnet, AC_DEFINE(HAVE_DNET_HTOA)) - -AC_CHECK_LIB(rpc, main) dnl It's unclear why we might need -lrpc - -dnl Some platforms may need -lnsl for getrpcbynumber. -AC_SEARCH_LIBS(getrpcbynumber, nsl, AC_DEFINE(HAVE_GETRPCBYNUMBER)) - -dnl AC_CHECK_LIB(z, uncompress) -dnl AC_CHECK_HEADERS(zlib.h) - -AC_LBL_LIBPCAP(V_PCAPDEP, V_INCLS) - -# -# Check for these after AC_LBL_LIBPCAP, so we link with the appropriate -# libraries (e.g., "-lsocket -lnsl" on Solaris). -# -# We don't use AC_REPLACE_FUNCS because that uses AC_CHECK_FUNCS which -# use AC_CHECK_FUNC which doesn't let us specify the right #includes -# to make this work on BSD/OS 4.x. BSD/OS 4.x ships with the BIND8 -# resolver, and the way it defines inet_{ntop,pton} is rather strange; -# it does not ship with a libc symbol "inet_ntop()", it ships with -# "_inet_ntop()", and has a #define macro in one of the system headers -# to rename it. -# -dnl AC_TRY_COMPILE(inet_ntop inet_pton inet_aton) -AC_MSG_CHECKING(for inet_ntop) -AC_TRY_LINK([#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h>], [char src[4], dst[128]; -inet_ntop(AF_INET, src, dst, sizeof(dst));], - [AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no) - AC_LIBOBJ(inet_ntop)]) -AC_MSG_CHECKING(for inet_pton) -AC_TRY_LINK([#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h>], [char src[128], dst[4]; -inet_pton(AF_INET, src, dst);], - [AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no) - AC_LIBOBJ(inet_pton)]) -AC_MSG_CHECKING(for inet_aton) -AC_TRY_LINK([#include <sys/types.h> -#include <netinet/in.h> -#include <arpa/inet.h>], [char src[128]; -struct in_addr dst; -inet_aton(src, &dst);], - [AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no) - AC_LIBOBJ(inet_aton)]) - -# -# Check for these after AC_LBL_LIBPCAP, for the same reason. -# -# You are in a twisty little maze of UN*Xes, all different. -# Some might not have ether_ntohost(). -# Some might have it, but not declare it in any header file. -# Some might have it, but declare it in <netinet/if_ether.h>. -# Some might have it, but declare it in <netinet/ether.h> -# (And some might have it but document it as something declared in -# <netinet/ethernet.h>, although <netinet/if_ether.h> appears to work.) -# -# Before you is a C compiler. -# -AC_CHECK_FUNCS(ether_ntohost, [ - AC_CACHE_CHECK(for buggy ether_ntohost, ac_cv_buggy_ether_ntohost, [ - AC_TRY_RUN([ - #include <netdb.h> - #include <sys/types.h> - #include <sys/param.h> - #include <sys/socket.h> - - int - main(int argc, char **argv) - { - u_char ea[6] = { 0xff, 0xff, 0xff, 0xff, 0xff }; - char name[MAXHOSTNAMELEN]; - - ether_ntohost(name, (struct ether_addr *)ea); - exit(0); - } - ], [ac_cv_buggy_ether_ntohost=no], - [ac_cv_buggy_ether_ntohost=yes], - [ac_cv_buggy_ether_ntohost="not while cross-compiling"])]) - if test "$ac_cv_buggy_ether_ntohost" = "no"; then - AC_DEFINE(USE_ETHER_NTOHOST) - fi -]) -if test "$ac_cv_func_ether_ntohost" = yes -a \ - "$ac_cv_buggy_ether_ntohost" = "no"; then - # - # OK, we have ether_ntohost(). Do we have <netinet/if_ether.h>? - # - if test "$ac_cv_header_netinet_if_ether_h" = yes; then - # - # Yes. Does it declare ether_ntohost()? - # - AC_CHECK_DECL(ether_ntohost, - [ - AC_DEFINE(NETINET_IF_ETHER_H_DECLARES_ETHER_NTOHOST,, - [Define to 1 if netinet/if_ether.h declares `ether_ntohost']) - ],, - [ -#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> -struct mbuf; -struct rtentry; -#include <net/if.h> -#include <netinet/if_ether.h> - ]) - fi - # - # Did that succeed? - # - if test "$ac_cv_have_decl_ether_ntohost" != yes; then - # - # No, how about <netinet/ether.h>, as on Linux? - # - AC_CHECK_HEADERS(netinet/ether.h) - if test "$ac_cv_header_netinet_ether_h" = yes; then - # - # We have it - does it declare ether_ntohost()? - # Unset ac_cv_have_decl_ether_ntohost so we don't - # treat the previous failure as a cached value and - # suppress the next test. - # - unset ac_cv_have_decl_ether_ntohost - AC_CHECK_DECL(ether_ntohost, - [ - AC_DEFINE(NETINET_ETHER_H_DECLARES_ETHER_NTOHOST,, - [Define to 1 if netinet/ether.h declares `ether_ntohost']) - ],, - [ -#include <netinet/ether.h> - ]) - fi - fi - # - # Is ether_ntohost() declared? - # - if test "$ac_cv_have_decl_ether_ntohost" != yes; then - # - # No, we'll have to declare it ourselves. - # Do we have "struct ether_addr"? - # - AC_CHECK_TYPES(struct ether_addr,,, - [ -#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> -struct mbuf; -struct rtentry; -#include <net/if.h> -#include <netinet/if_ether.h> - ]) - AC_DEFINE(HAVE_DECL_ETHER_NTOHOST, 0, - [Define to 1 if you have the declaration of `ether_ntohost', and to 0 if you -don't.]) - else - AC_DEFINE(HAVE_DECL_ETHER_NTOHOST, 1, - [Define to 1 if you have the declaration of `ether_ntohost', and to 0 if you -don't.]) - fi -fi - -dnl portability macros for getaddrinfo/getnameinfo -dnl -dnl Check for sa_len -AC_CHECK_SA_LEN(ac_cv_sockaddr_has_sa_len) -if test "$ac_cv_sockaddr_has_sa_len" = no; then - missing_includes=yes -fi - -AC_CHECK_FUNCS(pcap_findalldevs pcap_dump_flush pcap_lib_version) -if test $ac_cv_func_pcap_findalldevs = "yes" ; then -dnl Check for Mac OS X, which may ship pcap.h from 0.6 but libpcap may -dnl be 0.8; this means that lib has pcap_findalldevs but header doesn't -dnl have pcap_if_t. - savedcflags="$CFLAGS" - CFLAGS="$CFLAGS $V_INCLS" - AC_CHECK_TYPES(pcap_if_t, , , [#include <pcap.h>]) - CFLAGS="$savedcflags" -fi - -if test $ac_cv_func_pcap_lib_version = "no" ; then - AC_MSG_CHECKING(whether pcap_version is defined by libpcap) - AC_TRY_LINK([], - [ - extern char pcap_version[]; - - return (int)pcap_version; - ], - ac_lbl_cv_pcap_version_defined=yes, - ac_lbl_cv_pcap_version_defined=no) - if test "$ac_lbl_cv_pcap_version_defined" = yes ; then - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_PCAP_VERSION) - else - AC_MSG_RESULT(no) - fi -fi -AC_MSG_CHECKING(whether pcap_debug is defined by libpcap) -AC_TRY_LINK([], - [ - extern int pcap_debug; - - return pcap_debug; - ], - ac_lbl_cv_pcap_debug_defined=yes, - ac_lbl_cv_pcap_debug_defined=no) -if test "$ac_lbl_cv_pcap_debug_defined" = yes ; then - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_PCAP_DEBUG) -else - AC_MSG_RESULT(no) - # - # OK, what about "yydebug"? - # - AC_MSG_CHECKING(whether yydebug is defined by libpcap) - AC_TRY_LINK([], - [ - extern int yydebug; - - return yydebug; - ], - ac_lbl_cv_yydebug_defined=yes, - ac_lbl_cv_yydebug_defined=no) - if test "$ac_lbl_cv_yydebug_defined" = yes ; then - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_YYDEBUG) - else - AC_MSG_RESULT(no) - fi -fi -AC_REPLACE_FUNCS(bpf_dump) dnl moved to libpcap in 0.6 - -V_GROUP=0 -if test -f /etc/group -a ! -z "`grep '^wheel:' /etc/group`" ; then - V_GROUP=wheel -fi -case "$host_os" in - -aix*) - dnl Workaround to enable certain features - AC_DEFINE(_SUN) - ;; - -irix*) - V_GROUP=sys - ;; - -osf*) - V_GROUP=system - ;; - -solaris*) - V_GROUP=sys - ;; -esac - -if test -f /dev/bpf0 ; then - V_GROUP=bpf -fi - -AC_CHECK_HEADERS(sys/bitypes.h) - -AC_CHECK_TYPE([int8_t], , - [AC_DEFINE([int8_t], [signed char], - [Define to `signed char' if int8_t not defined.])]) -AC_CHECK_TYPE([u_int8_t], , - [AC_DEFINE([u_int8_t], [unsigned char], - [Define to `unsigned char' if u_int8_t not defined.])], - [AC_INCLUDES_DEFAULT -#ifdef HAVE_SYS_BITYPES_H -#include <sys/bitypes.h> -#endif]) -AC_CHECK_TYPE([int16_t], , - [AC_DEFINE([int16_t], [short], - [Define to `short' if int16_t not defined.])]) -AC_CHECK_TYPE([u_int16_t], , - [AC_DEFINE([u_int16_t], [unsigned short], - [Define to `unsigned short' if u_int16_t not defined.])], - [AC_INCLUDES_DEFAULT -#ifdef HAVE_SYS_BITYPES_H -#include <sys/bitypes.h> -#endif]) -AC_CHECK_TYPE([int32_t], , - [AC_DEFINE([int32_t], [int], - [Define to `int' if int32_t not defined.])]) -AC_CHECK_TYPE([u_int32_t], , - [AC_DEFINE([u_int32_t], [unsigned int], - [Define to `unsigned int' if u_int32_t not defined.])], - [AC_INCLUDES_DEFAULT -#ifdef HAVE_SYS_BITYPES_H -#include <sys/bitypes.h> -#endif]) -AC_CHECK_TYPE([int64_t], , - [AC_DEFINE([int64_t], [long long], - [Define to `long long' if int64_t not defined.])]) -AC_CHECK_TYPE([u_int64_t], , - [AC_DEFINE([u_int64_t], [unsigned long long], - [Define to `unsigned long long' if u_int64_t not defined.])], - [AC_INCLUDES_DEFAULT -#ifdef HAVE_SYS_BITYPES_H -#include <sys/bitypes.h> -#endif]) - -# -# We can't just check for <inttypes.h> - some systems have one that -# doesn't define all the PRI[doxu]64 macros. -# -AC_CHECK_HEADERS(inttypes.h, - [ - # - # OK, we have inttypes.h, but does it define those macros? - # - AC_MSG_CHECKING([[whether inttypes.h defines the PRI[doxu]64 macros]]) - AC_COMPILE_IFELSE( - [ - AC_LANG_SOURCE( - [[ - #include <inttypes.h> - #include <stdio.h> - #include <sys/types.h> - #ifdef HAVE_SYS_BITYPES_H - #include <sys/bitypes.h> - #endif - - main() - { - printf("%" PRId64 "\n", (u_int64_t)1); - printf("%" PRIo64 "\n", (u_int64_t)1); - printf("%" PRIx64 "\n", (u_int64_t)1); - printf("%" PRIu64 "\n", (u_int64_t)1); - } - ]]) - ], - [ - AC_MSG_RESULT(yes) - ac_lbl_inttypes_h_defines_formats=yes - ], - [ - AC_MSG_RESULT(no) - ac_lbl_inttypes_h_defines_formats=no - ]) - ], - [ - # - # We don't have inttypes.h, so it obviously can't define those - # macros. - # - ac_lbl_inttypes_h_defines_formats=no - ]) -if test "$ac_lbl_inttypes_h_defines_formats" = no; then - AC_LBL_CHECK_64BIT_FORMAT(l, - [ - AC_LBL_CHECK_64BIT_FORMAT(ll, - [ - AC_LBL_CHECK_64BIT_FORMAT(L, - [ - AC_LBL_CHECK_64BIT_FORMAT(q, - [ - AC_MSG_ERROR([neither %llx nor %Lx nor %qx worked on a 64-bit integer]) - ]) - ]) - ]) - ]) -fi - -AC_LBL_DEVEL(V_CCOPT) - -AC_LBL_SOCKADDR_SA_LEN - -AC_LBL_UNALIGNED_ACCESS - -AC_VAR_H_ERRNO - -AC_ARG_WITH(crypto, [ --without-crypto disable crypto support], - [], [ -AC_MSG_CHECKING(for SSLeay) -ac_cv_ssleay_path=no -incdir=no - -# -# 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 - # - # XXX - is there a better way to check if a given library is - # in a given directory than checking each of the possible - # shared library suffixes? - # - # Are there any other suffixes we need to look for? Do we have to - # worry about ".so.{version}"? - # - # Or should we just look for "libcrypto.*"? - # - if test -d $dir/lib -a \( -f $dir/lib/libcrypto.a -o \ - -f $dir/lib/libcrypto.so -o \ - -f $dir/lib/libcrypto.sl -o \ - -f $dir/lib/libcrypto.dylib \); then - ac_cv_ssleay_path=$dir - fi - if test -d $dir/include/openssl -a -f $dir/include/openssl/des.h; then - incdir="-I$dir/include" - fi - if test "$ac_cv_ssleay_path" != "no" -a "$incdir" != "no"; then - break; - else - ac_cv_ssleay_path=no - incdir=no - fi -done -AC_MSG_RESULT($ac_cv_ssleay_path) -if test "$ac_cv_ssleay_path" != no; then - V_INCLS="$V_INCLS $incdir" - LDFLAGS="-L$dir/lib $LDFLAGS" - if test -f $ac_cv_ssleay_path/lib/libRSAglue.a; then - LIBS="$LIBS -lRSAglue" - fi - if test -f $ac_cv_ssleay_path/lib/librsaref.a; then - LIBS="$LIBS -lrsaref" - fi - AC_CHECK_LIB(crypto, DES_cbc_encrypt) - - CPPFLAGS="$CPPFLAGS $V_INCLS" - AC_CHECK_HEADERS(openssl/evp.h) -fi -]) - -dnl -dnl set additional include path if necessary -if test "$missing_includes" = "yes"; then - CPPFLAGS="$CPPFLAGS -I\$(srcdir)/missing" - V_INCLS="$V_INCLS -I\$(srcdir)/missing" -fi - -AC_SUBST(V_CCOPT) -AC_SUBST(V_DEFS) -AC_SUBST(V_GROUP) -AC_SUBST(V_INCLS) -AC_SUBST(V_PCAPDEP) -AC_SUBST(LOCALSRC) - -AC_PROG_INSTALL - -AC_CONFIG_HEADER(config.h) - -AC_OUTPUT_COMMANDS([if test -f .devel; then - echo timestamp > stamp-h - cat Makefile-devel-adds >> Makefile - make depend -fi]) -AC_OUTPUT(Makefile) -exit 0 diff --git a/contrib/tcpdump/cpack.c b/contrib/tcpdump/cpack.c deleted file mode 100644 index 14c0a9ee2a3e0..0000000000000 --- a/contrib/tcpdump/cpack.c +++ /dev/null @@ -1,144 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 David Young. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of David Young may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY DAVID YOUNG ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DAVID - * YOUNG BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <stdlib.h> -#include <string.h> -#include <tcpdump-stdinc.h> - -#include "cpack.h" -#include "extract.h" - -static u_int8_t * -cpack_next_boundary(u_int8_t *buf, u_int8_t *p, size_t alignment) -{ - size_t misalignment = (size_t)(p - buf) % alignment; - - if (misalignment == 0) - return p; - - return p + (alignment - misalignment); -} - -/* Advance to the next wordsize boundary. Return NULL if fewer than - * wordsize bytes remain in the buffer after the boundary. Otherwise, - * return a pointer to the boundary. - */ -static u_int8_t * -cpack_align_and_reserve(struct cpack_state *cs, size_t wordsize) -{ - u_int8_t *next; - - /* Ensure alignment. */ - next = cpack_next_boundary(cs->c_buf, cs->c_next, wordsize); - - /* Too little space for wordsize bytes? */ - if (next - cs->c_buf + wordsize > cs->c_len) - return NULL; - - return next; -} - -int -cpack_init(struct cpack_state *cs, u_int8_t *buf, size_t buflen) -{ - memset(cs, 0, sizeof(*cs)); - - cs->c_buf = buf; - cs->c_len = buflen; - cs->c_next = cs->c_buf; - - return 0; -} - -/* Unpack a 64-bit unsigned integer. */ -int -cpack_uint64(struct cpack_state *cs, u_int64_t *u) -{ - u_int8_t *next; - - if ((next = cpack_align_and_reserve(cs, sizeof(*u))) == NULL) - return -1; - - *u = EXTRACT_LE_64BITS(next); - - /* Move pointer past the u_int64_t. */ - cs->c_next = next + sizeof(*u); - return 0; -} - -/* Unpack a 32-bit unsigned integer. */ -int -cpack_uint32(struct cpack_state *cs, u_int32_t *u) -{ - u_int8_t *next; - - if ((next = cpack_align_and_reserve(cs, sizeof(*u))) == NULL) - return -1; - - *u = EXTRACT_LE_32BITS(next); - - /* Move pointer past the u_int32_t. */ - cs->c_next = next + sizeof(*u); - return 0; -} - -/* Unpack a 16-bit unsigned integer. */ -int -cpack_uint16(struct cpack_state *cs, u_int16_t *u) -{ - u_int8_t *next; - - if ((next = cpack_align_and_reserve(cs, sizeof(*u))) == NULL) - return -1; - - *u = EXTRACT_LE_16BITS(next); - - /* Move pointer past the u_int16_t. */ - cs->c_next = next + sizeof(*u); - return 0; -} - -/* Unpack an 8-bit unsigned integer. */ -int -cpack_uint8(struct cpack_state *cs, u_int8_t *u) -{ - /* No space left? */ - if ((size_t)(cs->c_next - cs->c_buf) >= cs->c_len) - return -1; - - *u = *cs->c_next; - - /* Move pointer past the u_int8_t. */ - cs->c_next++; - return 0; -} diff --git a/contrib/tcpdump/cpack.h b/contrib/tcpdump/cpack.h deleted file mode 100644 index 14ed37692cd95..0000000000000 --- a/contrib/tcpdump/cpack.h +++ /dev/null @@ -1,51 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 David Young. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of David Young may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY DAVID YOUNG ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DAVID - * YOUNG BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - */ - -#ifndef _CPACK_H -#define _CPACK_H - -struct cpack_state { - u_int8_t *c_buf; - u_int8_t *c_next; - size_t c_len; -}; - -int cpack_init(struct cpack_state *, u_int8_t *, size_t); - -int cpack_uint8(struct cpack_state *, u_int8_t *); -int cpack_uint16(struct cpack_state *, u_int16_t *); -int cpack_uint32(struct cpack_state *, u_int32_t *); -int cpack_uint64(struct cpack_state *, u_int64_t *); - -#define cpack_int8(__s, __p) cpack_uint8((__s), (u_int8_t*)(__p)) -#define cpack_int16(__s, __p) cpack_uint16((__s), (u_int16_t*)(__p)) -#define cpack_int32(__s, __p) cpack_uint32((__s), (u_int32_t*)(__p)) -#define cpack_int64(__s, __p) cpack_uint64((__s), (u_int64_t*)(__p)) - -#endif /* _CPACK_H */ diff --git a/contrib/tcpdump/dccp.h b/contrib/tcpdump/dccp.h deleted file mode 100644 index 8e987e4960596..0000000000000 --- a/contrib/tcpdump/dccp.h +++ /dev/null @@ -1,137 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/dccp.h,v 1.1.2.2 2005/09/20 06:25:45 guy Exp $ (LBL) */ -/* - * Copyright (C) Arnaldo Carvalho de Melo 2004 - * Copyright (C) Ian McDonald 2005 <iam4@cs.waikato.ac.nz> - * Copyright (C) Yoshifumi Nishida 2005 - * - * This software may be distributed either under the terms of the - * BSD-style license that accompanies tcpdump or the GNU GPL version 2 - */ - -#ifndef __DCCP_HDR__ -#define __DCCP_HDR__ - -/** - * struct dccp_hdr - generic part of DCCP packet header - * - * @dccph_sport - Relevant port on the endpoint that sent this packet - * @dccph_dport - Relevant port on the other endpoint - * @dccph_doff - Data Offset from the start of the DCCP header, in 32-bit words - * @dccph_ccval - Used by the HC-Sender CCID - * @dccph_cscov - Parts of the packet that are covered by the Checksum field - * @dccph_checksum - Internet checksum, depends on dccph_cscov - * @dccph_x - 0 = 24 bit sequence number, 1 = 48 - * @dccph_type - packet type, see DCCP_PKT_ prefixed macros - * @dccph_seq - sequence number high or low order 24 bits, depends on dccph_x - */ -struct dccp_hdr { - u_int16_t dccph_sport, - dccph_dport; - u_int8_t dccph_doff; - u_int8_t dccph_ccval_cscov; - u_int16_t dccph_checksum; - union { - u_int8_t dccph_xtr; - u_int32_t dccph_seq; - } dccph_xtrs; -}; - -#define DCCPH_CCVAL(dh) (((dh)->dccph_ccval_cscov) & 0x0F) -#define DCCPH_CSCOV(dh) (((dh)->dccph_ccval_cscov >> 4) & 0x0F) - -#define DCCPH_X(dh) ((dh)->dccph_xtrs.dccph_xtr & 1) -#define DCCPH_TYPE(dh) (((dh)->dccph_xtrs.dccph_xtr >> 1) & 0xF) -#define DCCPH_SEQ(dh) (((dh)->dccph_xtrs.dccph_seq) >> 8) - -/** - * struct dccp_hdr_ext - the low bits of a 48 bit seq packet - * - * @dccph_seq_low - low 24 bits of a 48 bit seq packet - */ -struct dccp_hdr_ext { - u_int32_t dccph_seq_low; -}; - -/** - * struct dccp_hdr_request - Conection initiation request header - * - * @dccph_req_service - Service to which the client app wants to connect - */ -struct dccp_hdr_request { - u_int32_t dccph_req_service; -}; - -/** - * struct dccp_hdr_ack_bits - acknowledgment bits common to most packets - * - * @dccph_resp_ack_nr_high - 48 bit ack number high order bits, contains GSR - * @dccph_resp_ack_nr_low - 48 bit ack number low order bits, contains GSR - */ -struct dccp_hdr_ack_bits { - u_int32_t dccph_ra; - u_int32_t dccph_ack_nr_low; -}; - -#define DCCPH_ACK(dh_ack) ((dh_ack)->dccph_ra >> 8) - -/** - * struct dccp_hdr_response - Conection initiation response header - * - * @dccph_resp_ack_nr_high - 48 bit ack number high order bits, contains GSR - * @dccph_resp_ack_nr_low - 48 bit ack number low order bits, contains GSR - * @dccph_resp_service - Echoes the Service Code on a received DCCP-Request - */ -struct dccp_hdr_response { - struct dccp_hdr_ack_bits dccph_resp_ack; - u_int32_t dccph_resp_service; -}; - -static inline struct dccp_hdr_data *dccp_hdr_data(struct dccp_hdr *hdrg) -{ - const int ext = DCCPH_X(hdrg) ? sizeof(struct dccp_hdr_ext) : 0; - - return (struct dccp_hdr_data *)(((u_char *)hdrg) + sizeof(hdrg) + ext); -} - -/** - * struct dccp_hdr_reset - Unconditionally shut down a connection - * - * @dccph_reset_service - Echoes the Service Code on a received DCCP-Request - */ -struct dccp_hdr_reset { - struct dccp_hdr_ack_bits dccph_reset_ack; - u_int8_t dccph_reset_code, - dccph_reset_data[3]; -}; - -enum dccp_pkt_type { - DCCP_PKT_REQUEST = 0, - DCCP_PKT_RESPONSE, - DCCP_PKT_DATA, - DCCP_PKT_ACK, - DCCP_PKT_DATAACK, - DCCP_PKT_CLOSEREQ, - DCCP_PKT_CLOSE, - DCCP_PKT_RESET, - DCCP_PKT_SYNC, - DCCP_PKT_SYNCACK, - DCCP_PKT_INVALID, -}; - -enum dccp_reset_codes { - DCCP_RESET_CODE_UNSPECIFIED = 0, - DCCP_RESET_CODE_CLOSED, - DCCP_RESET_CODE_ABORTED, - DCCP_RESET_CODE_NO_CONNECTION, - DCCP_RESET_CODE_PACKET_ERROR, - DCCP_RESET_CODE_OPTION_ERROR, - DCCP_RESET_CODE_MANDATORY_ERROR, - DCCP_RESET_CODE_CONNECTION_REFUSED, - DCCP_RESET_CODE_BAD_SERVICE_CODE, - DCCP_RESET_CODE_TOO_BUSY, - DCCP_RESET_CODE_BAD_INIT_COOKIE, - DCCP_RESET_CODE_AGGRESSION_PENALTY, - __DCCP_RESET_CODE_LAST, -}; - -#endif /* __DCCP_HDR__ */ diff --git a/contrib/tcpdump/decnet.h b/contrib/tcpdump/decnet.h deleted file mode 100644 index 9a5c147703c99..0000000000000 --- a/contrib/tcpdump/decnet.h +++ /dev/null @@ -1,461 +0,0 @@ -/* - * Copyright (c) 1992, 1994, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * @(#) $Header: /tcpdump/master/tcpdump/decnet.h,v 1.11 2002/12/11 07:13:50 guy Exp $ (LBL) - */ - -#ifndef WIN32 -typedef u_int8_t byte[1]; /* single byte field */ -#else -/* - * the keyword 'byte' generates conflicts in Windows - */ -typedef unsigned char Byte[1]; /* single byte field */ -#define byte Byte -#endif /* WIN32 */ -typedef u_int8_t word[2]; /* 2 byte field */ -typedef u_int8_t longword[4]; /* 4 bytes field */ - -/* - * Definitions for DECNET Phase IV protocol headers - */ -union etheraddress { - u_int8_t dne_addr[6]; /* full ethernet address */ - struct { - u_int8_t dne_hiord[4]; /* DECnet HIORD prefix */ - u_int8_t dne_nodeaddr[2]; /* DECnet node address */ - } dne_remote; -}; - -typedef union etheraddress etheraddr; /* Ethernet address */ - -#define HIORD 0x000400aa /* high 32-bits of address (swapped) */ - -#define AREAMASK 0176000 /* mask for area field */ -#define AREASHIFT 10 /* bit-offset for area field */ -#define NODEMASK 01777 /* mask for node address field */ - -#define DN_MAXADDL 20 /* max size of DECnet address */ -struct dn_naddr { - u_int16_t a_len; /* length of address */ - u_int8_t a_addr[DN_MAXADDL]; /* address as bytes */ -}; - -/* - * Define long and short header formats. - */ -struct shorthdr - { - byte sh_flags; /* route flags */ - word sh_dst; /* destination node address */ - word sh_src; /* source node address */ - byte sh_visits; /* visit count */ - }; - -struct longhdr - { - byte lg_flags; /* route flags */ - byte lg_darea; /* destination area (reserved) */ - byte lg_dsarea; /* destination subarea (reserved) */ - etheraddr lg_dst; /* destination id */ - byte lg_sarea; /* source area (reserved) */ - byte lg_ssarea; /* source subarea (reserved) */ - etheraddr lg_src; /* source id */ - byte lg_nextl2; /* next level 2 router (reserved) */ - byte lg_visits; /* visit count */ - byte lg_service; /* service class (reserved) */ - byte lg_pt; /* protocol type (reserved) */ - }; - -union routehdr - { - struct shorthdr rh_short; /* short route header */ - struct longhdr rh_long; /* long route header */ - }; - -/* - * Define the values of various fields in the protocol messages. - * - * 1. Data packet formats. - */ -#define RMF_MASK 7 /* mask for message type */ -#define RMF_SHORT 2 /* short message format */ -#define RMF_LONG 6 /* long message format */ -#ifndef RMF_RQR -#define RMF_RQR 010 /* request return to sender */ -#define RMF_RTS 020 /* returning to sender */ -#define RMF_IE 040 /* intra-ethernet packet */ -#endif /* RMR_RQR */ -#define RMF_FVER 0100 /* future version flag */ -#define RMF_PAD 0200 /* pad field */ -#define RMF_PADMASK 0177 /* pad field mask */ - -#define VIS_MASK 077 /* visit field mask */ - -/* - * 2. Control packet formats. - */ -#define RMF_CTLMASK 017 /* mask for message type */ -#define RMF_CTLMSG 01 /* control message indicator */ -#define RMF_INIT 01 /* initialization message */ -#define RMF_VER 03 /* verification message */ -#define RMF_TEST 05 /* hello and test message */ -#define RMF_L1ROUT 07 /* level 1 routing message */ -#define RMF_L2ROUT 011 /* level 2 routing message */ -#define RMF_RHELLO 013 /* router hello message */ -#define RMF_EHELLO 015 /* endnode hello message */ - -#define TI_L2ROUT 01 /* level 2 router */ -#define TI_L1ROUT 02 /* level 1 router */ -#define TI_ENDNODE 03 /* endnode */ -#define TI_VERIF 04 /* verification required */ -#define TI_BLOCK 010 /* blocking requested */ - -#define VE_VERS 2 /* version number (2) */ -#define VE_ECO 0 /* ECO number */ -#define VE_UECO 0 /* user ECO number (0) */ - -#define P3_VERS 1 /* phase III version number (1) */ -#define P3_ECO 3 /* ECO number (3) */ -#define P3_UECO 0 /* user ECO number (0) */ - -#define II_L2ROUT 01 /* level 2 router */ -#define II_L1ROUT 02 /* level 1 router */ -#define II_ENDNODE 03 /* endnode */ -#define II_VERIF 04 /* verification required */ -#define II_NOMCAST 040 /* no multicast traffic accepted */ -#define II_BLOCK 0100 /* blocking requested */ -#define II_TYPEMASK 03 /* mask for node type */ - -#define TESTDATA 0252 /* test data bytes */ -#define TESTLEN 1 /* length of transmitted test data */ - -/* - * Define control message formats. - */ -struct initmsgIII /* phase III initialization message */ - { - byte inIII_flags; /* route flags */ - word inIII_src; /* source node address */ - byte inIII_info; /* routing layer information */ - word inIII_blksize; /* maximum data link block size */ - byte inIII_vers; /* version number */ - byte inIII_eco; /* ECO number */ - byte inIII_ueco; /* user ECO number */ - byte inIII_rsvd; /* reserved image field */ - }; - -struct initmsg /* initialization message */ - { - byte in_flags; /* route flags */ - word in_src; /* source node address */ - byte in_info; /* routing layer information */ - word in_blksize; /* maximum data link block size */ - byte in_vers; /* version number */ - byte in_eco; /* ECO number */ - byte in_ueco; /* user ECO number */ - word in_hello; /* hello timer */ - byte in_rsvd; /* reserved image field */ - }; - -struct verifmsg /* verification message */ - { - byte ve_flags; /* route flags */ - word ve_src; /* source node address */ - byte ve_fcnval; /* function value image field */ - }; - -struct testmsg /* hello and test message */ - { - byte te_flags; /* route flags */ - word te_src; /* source node address */ - byte te_data; /* test data image field */ - }; - -struct l1rout /* level 1 routing message */ - { - byte r1_flags; /* route flags */ - word r1_src; /* source node address */ - byte r1_rsvd; /* reserved field */ - }; - -struct l2rout /* level 2 routing message */ - { - byte r2_flags; /* route flags */ - word r2_src; /* source node address */ - byte r2_rsvd; /* reserved field */ - }; - -struct rhellomsg /* router hello message */ - { - byte rh_flags; /* route flags */ - byte rh_vers; /* version number */ - byte rh_eco; /* ECO number */ - byte rh_ueco; /* user ECO number */ - etheraddr rh_src; /* source id */ - byte rh_info; /* routing layer information */ - word rh_blksize; /* maximum data link block size */ - byte rh_priority; /* router's priority */ - byte rh_area; /* reserved */ - word rh_hello; /* hello timer */ - byte rh_mpd; /* reserved */ - }; - -struct ehellomsg /* endnode hello message */ - { - byte eh_flags; /* route flags */ - byte eh_vers; /* version number */ - byte eh_eco; /* ECO number */ - byte eh_ueco; /* user ECO number */ - etheraddr eh_src; /* source id */ - byte eh_info; /* routing layer information */ - word eh_blksize; /* maximum data link block size */ - byte eh_area; /* area (reserved) */ - byte eh_seed[8]; /* verification seed */ - etheraddr eh_router; /* designated router */ - word eh_hello; /* hello timer */ - byte eh_mpd; /* (reserved) */ - byte eh_data; /* test data image field */ - }; - -union controlmsg - { - struct initmsg cm_init; /* initialization message */ - struct verifmsg cm_ver; /* verification message */ - struct testmsg cm_test; /* hello and test message */ - struct l1rout cm_l1rou; /* level 1 routing message */ - struct l2rout cm_l2rout; /* level 2 routing message */ - struct rhellomsg cm_rhello; /* router hello message */ - struct ehellomsg cm_ehello; /* endnode hello message */ - }; - -/* Macros for decoding routing-info fields */ -#define RI_COST(x) ((x)&0777) -#define RI_HOPS(x) (((x)>>10)&037) - -/* - * NSP protocol fields and values. - */ - -#define NSP_TYPEMASK 014 /* mask to isolate type code */ -#define NSP_SUBMASK 0160 /* mask to isolate subtype code */ -#define NSP_SUBSHFT 4 /* shift to move subtype code */ - -#define MFT_DATA 0 /* data message */ -#define MFT_ACK 04 /* acknowledgement message */ -#define MFT_CTL 010 /* control message */ - -#define MFS_ILS 020 /* data or I/LS indicator */ -#define MFS_BOM 040 /* beginning of message (data) */ -#define MFS_MOM 0 /* middle of message (data) */ -#define MFS_EOM 0100 /* end of message (data) */ -#define MFS_INT 040 /* interrupt message */ - -#define MFS_DACK 0 /* data acknowledgement */ -#define MFS_IACK 020 /* I/LS acknowledgement */ -#define MFS_CACK 040 /* connect acknowledgement */ - -#define MFS_NOP 0 /* no operation */ -#define MFS_CI 020 /* connect initiate */ -#define MFS_CC 040 /* connect confirm */ -#define MFS_DI 060 /* disconnect initiate */ -#define MFS_DC 0100 /* disconnect confirm */ -#define MFS_RCI 0140 /* retransmitted connect initiate */ - -#define SGQ_ACK 0100000 /* ack */ -#define SGQ_NAK 0110000 /* negative ack */ -#define SGQ_OACK 0120000 /* other channel ack */ -#define SGQ_ONAK 0130000 /* other channel negative ack */ -#define SGQ_MASK 07777 /* mask to isolate seq # */ -#define SGQ_OTHER 020000 /* other channel qualifier */ -#define SGQ_DELAY 010000 /* ack delay flag */ - -#define SGQ_EOM 0100000 /* pseudo flag for end-of-message */ - -#define LSM_MASK 03 /* mask for modifier field */ -#define LSM_NOCHANGE 0 /* no change */ -#define LSM_DONOTSEND 1 /* do not send data */ -#define LSM_SEND 2 /* send data */ - -#define LSI_MASK 014 /* mask for interpretation field */ -#define LSI_DATA 0 /* data segment or message count */ -#define LSI_INTR 4 /* interrupt request count */ -#define LSI_INTM 0377 /* funny marker for int. message */ - -#define COS_MASK 014 /* mask for flow control field */ -#define COS_NONE 0 /* no flow control */ -#define COS_SEGMENT 04 /* segment flow control */ -#define COS_MESSAGE 010 /* message flow control */ -#define COS_CRYPTSER 020 /* cryptographic services requested */ -#define COS_DEFAULT 1 /* default value for field */ - -#define COI_MASK 3 /* mask for version field */ -#define COI_32 0 /* version 3.2 */ -#define COI_31 1 /* version 3.1 */ -#define COI_40 2 /* version 4.0 */ -#define COI_41 3 /* version 4.1 */ - -#define MNU_MASK 140 /* mask for session control version */ -#define MNU_10 000 /* session V1.0 */ -#define MNU_20 040 /* session V2.0 */ -#define MNU_ACCESS 1 /* access control present */ -#define MNU_USRDATA 2 /* user data field present */ -#define MNU_INVKPROXY 4 /* invoke proxy field present */ -#define MNU_UICPROXY 8 /* use uic-based proxy */ - -#define DC_NORESOURCES 1 /* no resource reason code */ -#define DC_NOLINK 41 /* no link terminate reason code */ -#define DC_COMPLETE 42 /* disconnect complete reason code */ - -#define DI_NOERROR 0 /* user disconnect */ -#define DI_SHUT 3 /* node is shutting down */ -#define DI_NOUSER 4 /* destination end user does not exist */ -#define DI_INVDEST 5 /* invalid end user destination */ -#define DI_REMRESRC 6 /* insufficient remote resources */ -#define DI_TPA 8 /* third party abort */ -#define DI_PROTOCOL 7 /* protocol error discovered */ -#define DI_ABORT 9 /* user abort */ -#define DI_LOCALRESRC 32 /* insufficient local resources */ -#define DI_REMUSERRESRC 33 /* insufficient remote user resources */ -#define DI_BADACCESS 34 /* bad access control information */ -#define DI_BADACCNT 36 /* bad ACCOUNT information */ -#define DI_CONNECTABORT 38 /* connect request cancelled */ -#define DI_TIMEDOUT 38 /* remote node or user crashed */ -#define DI_UNREACHABLE 39 /* local timers expired due to ... */ -#define DI_BADIMAGE 43 /* bad image data in connect */ -#define DI_SERVMISMATCH 54 /* cryptographic service mismatch */ - -#define UC_OBJREJECT 0 /* object rejected connect */ -#define UC_USERDISCONNECT 0 /* user disconnect */ -#define UC_RESOURCES 1 /* insufficient resources (local or remote) */ -#define UC_NOSUCHNODE 2 /* unrecognized node name */ -#define UC_REMOTESHUT 3 /* remote node shutting down */ -#define UC_NOSUCHOBJ 4 /* unrecognized object */ -#define UC_INVOBJFORMAT 5 /* invalid object name format */ -#define UC_OBJTOOBUSY 6 /* object too busy */ -#define UC_NETWORKABORT 8 /* network abort */ -#define UC_USERABORT 9 /* user abort */ -#define UC_INVNODEFORMAT 10 /* invalid node name format */ -#define UC_LOCALSHUT 11 /* local node shutting down */ -#define UC_ACCESSREJECT 34 /* invalid access control information */ -#define UC_NORESPONSE 38 /* no response from object */ -#define UC_UNREACHABLE 39 /* node unreachable */ - -/* - * NSP message formats. - */ -struct nsphdr /* general nsp header */ - { - byte nh_flags; /* message flags */ - word nh_dst; /* destination link address */ - word nh_src; /* source link address */ - }; - -struct seghdr /* data segment header */ - { - byte sh_flags; /* message flags */ - word sh_dst; /* destination link address */ - word sh_src; /* source link address */ - word sh_seq[3]; /* sequence numbers */ - }; - -struct minseghdr /* minimum data segment header */ - { - byte ms_flags; /* message flags */ - word ms_dst; /* destination link address */ - word ms_src; /* source link address */ - word ms_seq; /* sequence number */ - }; - -struct lsmsg /* link service message (after hdr) */ - { - byte ls_lsflags; /* link service flags */ - byte ls_fcval; /* flow control value */ - }; - -struct ackmsg /* acknowledgement message */ - { - byte ak_flags; /* message flags */ - word ak_dst; /* destination link address */ - word ak_src; /* source link address */ - word ak_acknum[2]; /* acknowledgement numbers */ - }; - -struct minackmsg /* minimum acknowledgement message */ - { - byte mk_flags; /* message flags */ - word mk_dst; /* destination link address */ - word mk_src; /* source link address */ - word mk_acknum; /* acknowledgement number */ - }; - -struct ciackmsg /* connect acknowledgement message */ - { - byte ck_flags; /* message flags */ - word ck_dst; /* destination link address */ - }; - -struct cimsg /* connect initiate message */ - { - byte ci_flags; /* message flags */ - word ci_dst; /* destination link address (0) */ - word ci_src; /* source link address */ - byte ci_services; /* requested services */ - byte ci_info; /* information */ - word ci_segsize; /* maximum segment size */ - }; - -struct ccmsg /* connect confirm message */ - { - byte cc_flags; /* message flags */ - word cc_dst; /* destination link address */ - word cc_src; /* source link address */ - byte cc_services; /* requested services */ - byte cc_info; /* information */ - word cc_segsize; /* maximum segment size */ - byte cc_optlen; /* optional data length */ - }; - -struct cnmsg /* generic connect message */ - { - byte cn_flags; /* message flags */ - word cn_dst; /* destination link address */ - word cn_src; /* source link address */ - byte cn_services; /* requested services */ - byte cn_info; /* information */ - word cn_segsize; /* maximum segment size */ - }; - -struct dimsg /* disconnect initiate message */ - { - byte di_flags; /* message flags */ - word di_dst; /* destination link address */ - word di_src; /* source link address */ - word di_reason; /* reason code */ - byte di_optlen; /* optional data length */ - }; - -struct dcmsg /* disconnect confirm message */ - { - byte dc_flags; /* message flags */ - word dc_dst; /* destination link address */ - word dc_src; /* source link address */ - word dc_reason; /* reason code */ - }; diff --git a/contrib/tcpdump/decode_prefix.h b/contrib/tcpdump/decode_prefix.h deleted file mode 100644 index b73847142f023..0000000000000 --- a/contrib/tcpdump/decode_prefix.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 1999 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Extensively modified by Hannes Gredler (hannes@juniper.net) for more - * complete BGP support. - */ - -#ifndef tcpdump_decode_prefix_h -#define tcpdump_decode_prefix_h - -extern int decode_prefix4(const u_char *pptr, char *buf, u_int buflen); -#ifdef INET6 -extern int decode_prefix6(const u_char *pd, char *buf, u_int buflen); -#endif - -#endif diff --git a/contrib/tcpdump/dhcp6.h b/contrib/tcpdump/dhcp6.h deleted file mode 100644 index 8381b11f9195c..0000000000000 --- a/contrib/tcpdump/dhcp6.h +++ /dev/null @@ -1,200 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/Attic/dhcp6.h,v 1.4 2000/12/17 23:07:48 guy Exp $ (LBL) */ -/* - * Copyright (C) 1998 and 1999 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -/* - * draft-ietf-dhc-dhcpv6-15 - */ - -#ifndef __DHCP6_H_DEFINED -#define __DHCP6_H_DEFINED - -/* Error Values */ -#define DH6ERR_FAILURE 16 -#define DH6ERR_AUTHFAIL 17 -#define DH6ERR_POORLYFORMED 18 -#define DH6ERR_UNAVAIL 19 -#define DH6ERR_NOBINDING 20 -#define DH6ERR_INVALIDSOURCE 21 -#define DH6ERR_NOSERVER 23 -#define DH6ERR_ICMPERROR 64 - -/* Message type */ -#define DH6_SOLICIT 1 -#define DH6_ADVERT 2 -#define DH6_REQUEST 3 -#define DH6_REPLY 4 -#define DH6_RELEASE 5 -#define DH6_RECONFIG 6 - -/* Predefined addresses */ -#define DH6ADDR_ALLAGENT "ff02::1:2" -#define DH6ADDR_ALLSERVER "ff05::1:3" -#define DH6ADDR_ALLRELAY "ff05::1:4" -#define DH6PORT_DOWNSTREAM "546" -#define DH6PORT_UPSTREAM "547" - -/* Protocol constants */ -#define ADV_CLIENT_WAIT 2 /* sec */ -#define DEFAULT_SOLICIT_HOPCOUNT 4 -#define SERVER_MIN_ADV_DELAY 100 /* msec */ -#define SERVER_MAX_ADV_DELAY 1000 /* msec */ -#define REPLY_MSG_TIMEOUT 2 /* sec */ -#define REQUEST_MSG_MIN_RETRANS 10 /* retransmissions */ -#define RECONF_MSG_MIN_RETRANS 10 /* retransmissions */ -#define RECONF_MSG_RETRANS_INTERVAL 12 /* sec */ -#define RECONF_MMSG_MIN_RESP 2 /* sec */ -#define RECONF_MMSG_MAX_RESP 10 /* sec */ -#define RECONF_MULTICAST_REQUEST_WAIT 120 /* sec */ -#define MIN_SOLICIT_DELAY 1 /* sec */ -#define MAX_SOLICIT_DELAY 5 /* sec */ -#define XID_TIMEOUT 600 /* sec */ - -/* DHCP6 base packet format */ -struct dhcp6_solicit { - u_int8_t dh6sol_msgtype; /* DH6_SOLICIT */ - u_int8_t dh6sol_flags; -#define DH6SOL_CLOSE 0x80 -#define DH6SOL_PREFIX 0x40 - /* XXX: solicit-ID is a 9-bit field...ugly! */ -#define DH6SOL_SOLICIT_ID_MASK 0x01ff -#define DH6SOL_SOLICIT_ID_SHIFT 0 -#define DH6SOL_SOLICIT_ID(x) \ - (((x) & DH6SOL_SOLICIT_ID_MASK) >> DH6SOL_SOLICIT_ID_SHIFT) -#define DH6SOL_SOLICIT_PLEN_MASK 0xfe00 -#define DH6SOL_SOLICIT_PLEN_SHIFT 9 -#define DH6SOL_SOLICIT_PLEN(x) \ - (((x) & DH6SOL_SOLICIT_PLEN_MASK) >> DH6SOL_SOLICIT_PLEN_SHIFT) - u_int16_t dh6sol_plen_id; /* prefix-len and solict-ID */ - struct in6_addr dh6sol_cliaddr; /* client's lladdr */ - struct in6_addr dh6sol_relayaddr; /* relay agent's lladdr */ -}; - -struct dhcp6_advert { - u_int8_t dh6adv_msgtype; /* DH6_ADVERT */ - u_int8_t dh6adv_rsv_id; /* reserved and uppermost bit of ID */ - u_int8_t dh6adv_solcit_id; /* lower 8 bits of solicit-ID */ - u_int8_t dh6adv_pref; - struct in6_addr dh6adv_cliaddr; /* client's link-local addr */ - struct in6_addr dh6adv_relayaddr; /* relay agent's (non-ll) addr */ - struct in6_addr dh6adv_serveraddr; /* server's addr */ - /* extensions */ -}; - -struct dhcp6_request { - u_int8_t dh6req_msgtype; /* DH6_REQUEST */ - u_int8_t dh6req_flags; -#define DH6REQ_CLOSE 0x80 -#define DH6REQ_REBOOT 0x40 - u_int16_t dh6req_xid; /* transaction-ID */ - struct in6_addr dh6req_cliaddr; /* client's lladdr */ - struct in6_addr dh6req_relayaddr; /* relay agent's (non-ll) addr */ - struct in6_addr dh6req_serveraddr; /* server's addr */ - /* extensions */ -}; - -struct dhcp6_reply { - u_int8_t dh6rep_msgtype; /* DH6_REPLY */ - u_int8_t dh6rep_flagandstat; -#define DH6REP_RELAYPRESENT 0x80 -#define DH6REP_STATMASK 0x7f - u_int16_t dh6rep_xid; /* transaction-ID */ - struct in6_addr dh6rep_cliaddr; /* client's lladdr */ - /* struct in6_addr dh6rep_relayaddr; optional: relay address */ - /* extensions */ -}; - -/* XXX: followings are based on older drafts */ -struct dhcp6_release { - u_int8_t dh6rel_msgtype; /* DH6_RELEASE */ - u_int8_t dh6rel_flags; -#define DH6REL_DIRECT 0x80 - u_int16_t dh6rel_xid; /* transaction-ID */ - struct in6_addr dh6rel_cliaddr; /* client's lladdr */ - struct in6_addr dh6rel_relayaddr; /* relay agent's (non-ll) addr */ - struct in6_addr dh6rel_reladdr; /* server's addr to be released */ - /* extensions */ -}; - -struct dhcp6_reconfig { - u_int8_t dh6cfg_msgtype; /* DH6_RECONFIG */ - u_int8_t dh6cfg_flags; -#define DH6REP_NOREPLY 0x80 - u_int16_t dh6cfg_xid; /* transaction-ID */ - struct in6_addr dh6cfg_servaddr; /* server's addr */ - /* extensions */ -}; - -union dhcp6 { - u_int8_t dh6_msgtype; - struct dhcp6_solicit dh6_sol; - struct dhcp6_advert dh6_adv; - struct dhcp6_request dh6_req; - struct dhcp6_reply dh6_rep; - struct dhcp6_release dh6_rel; - struct dhcp6_reconfig dh6_cfg; -}; - -/* DHCP6 extension */ -struct dhcp6e_ipaddr { - u_int16_t dh6eip_type; - u_int16_t dh6eip_len; - u_int8_t dh6eip_status; -#define DH6EX_IP_SUCCESS 0 /* request granted, no errors */ -#define DH6EX_IP_SECFAIL 18 /* Security parameters failed */ -#define DH6EX_IP_AAAAFAIL 20 /* AAAA Record Parameter Problem */ -#define DH6EX_IP_PTRFAIL 21 /* PTR Record Parameter Problem */ -#define DH6EX_IP_PARAMFAIL 22 /* Unable to honor required params */ -#define DH6EX_IP_DNSNAMEFAIL 23 /* DNS name string error */ -#define DH6EX_IP_NODYNDNS 24 /* dynDNS Not Implemented */ -#define DH6EX_IP_NOAUTHDNS 25 /* Authoritative DNS Server not found */ -#define DH6EX_IP_DNSFORMFAIL 33 /* DNS format error */ -#define DH6EX_IP_SERVFAIL 34 /* dynDNS unavailable at this time */ -#define DH6EX_IP_NXDOMAIN 35 /* name does not exist */ -#define DH6EX_IP_NOTIMP 36 /* DNS does not support the Opcode */ -#define DH6EX_IP_REFUSED 37 /* DNS refuses specified operation */ -#define DH6EX_IP_YXDOMAIN 38 /* name does not exist */ -#define DH6EX_IP_YXRRSET 39 /* RRset does not exist */ -#define DH6EX_IP_NXRRSET 40 /* RRset does not exist */ -#define DH6EX_IP_NOTAUTH 41 /* non authoritative name server */ -#define DH6EX_IP_NOTZONE 42 /* prerequisite out of zone */ - u_int8_t dh6eip_flags; -#define DH6EX_IP_CLIANTADDR 0x80 /* C: cliant's addr */ -#define DH6EX_IP_LIFETIME 0x40 /* L: preferred/valid lifetime */ -#define DH6EX_IP_FORCEOPTS 0x20 /* Q: options are mandatory */ -#define DH6EX_IP_AAAA 0x10 /* A: DNS dynamic update for AAAA */ -#define DH6EX_IP_PTR 0x08 /* P: DNS dynamic update for PTR*/ - u_int8_t dh6eip_pad; - u_int8_t dh6eip_prefixlen; - /* struct in6_addr: client's address (if C bit = 1) */ - /* u_int: preferred lifetime (if L bit = 1) */ - /* u_int: valid lifetime (if L bit = 1) */ - /* string: DNS name */ -}; - -#endif /*__DHCP6_H_DEFINED*/ diff --git a/contrib/tcpdump/dhcp6opt.h b/contrib/tcpdump/dhcp6opt.h deleted file mode 100644 index fc6534dd1bb99..0000000000000 --- a/contrib/tcpdump/dhcp6opt.h +++ /dev/null @@ -1,81 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/Attic/dhcp6opt.h,v 1.4 2001/09/17 21:57:51 fenner Exp $ (LBL) */ -/* - * Copyright (C) 1998 and 1999 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * draft-ietf-dhc-v6exts-11 - */ - -#ifndef __DHCP6OPT_H_DEFINED -#define __DHCP6OPT_H_DEFINED - -#define OL6_N -1 -#define OL6_16N -2 -#define OL6_Z -3 - -#define OT6_NONE 0 -#define OT6_V6 1 -#define OT6_STR 2 -#define OT6_NUM 3 - -struct dhcp6_opt { - u_int code; - int len; - const char *name; - int type; -}; - -/* index to parameters */ -#define DH6T_CLIENT_ADV_WAIT 1 /* milliseconds */ -#define DH6T_DEFAULT_SOLICIT_HOPCOUNT 2 /* times */ -#define DH6T_SERVER_MIN_ADV_DELAY 3 /* milliseconds */ -#define DH6T_SERVER_MAX_ADV_DELAY 4 /* milliseconds */ -#define DH6T_REQUEST_MSG_MIN_RETRANS 5 /* retransmissions */ -#define DH6T_REPLY_MSG_TIMEOUT 6 /* milliseconds */ -#define DH6T_REPLY_MSG_RETRANS_INTERVAL 7 /* milliseconds */ -#define DH6T_RECONF_MSG_TIMEOUT 8 /* milliseconds */ -#define DH6T_RECONF_MSG_MIN_RETRANS 9 /* retransmissions */ -#define DH6T_RECONF_MSG_RETRANS_INTERVAL 10 /* milliseconds */ -#define DH6T_RECONF_MMSG_MIN_RESP 11 /* milliseconds */ -#define DH6T_RECONF_MMSG_MAX_RESP 12 /* milliseconds */ -#define DH6T_MIN_SOLICIT_DELAY 13 /* milliseconds */ -#define DH6T_MAX_SOLICIT_DELAY 14 /* milliseconds */ -#define DH6T_XID_TIMEOUT 15 /* milliseconds */ -#define DH6T_RECONF_MULTICAST_REQUEST_WAIT 16 /* milliseconds */ - -#if 0 -extern struct dhcp6_opt *dh6o_pad; -extern struct dhcp6_opt *dh6o_end; -extern int dhcp6_param[]; -extern void dhcp6opttab_init (void); -extern struct dhcp6_opt *dhcp6opttab_byname (char *); -extern struct dhcp6_opt *dhcp6opttab_bycode (u_int); -#endif - -#endif /*__DHCP6OPT_H_DEFINED*/ diff --git a/contrib/tcpdump/enc.h b/contrib/tcpdump/enc.h deleted file mode 100644 index f54b4eb6950a9..0000000000000 --- a/contrib/tcpdump/enc.h +++ /dev/null @@ -1,47 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/enc.h,v 1.1 2003/03/08 08:55:33 guy Exp $ (LBL) */ -/* From $OpenBSD: if_enc.h,v 1.8 2001/06/25 05:14:00 angelos Exp $ */ -/* - * The authors of this code are John Ioannidis (ji@tla.org), - * Angelos D. Keromytis (kermit@csd.uch.gr) and - * Niels Provos (provos@physnet.uni-hamburg.de). - * - * This code was written by John Ioannidis for BSD/OS in Athens, Greece, - * in November 1995. - * - * Ported to OpenBSD and NetBSD, with additional transforms, in December 1996, - * by Angelos D. Keromytis. - * - * Additional transforms and features in 1997 and 1998 by Angelos D. Keromytis - * and Niels Provos. - * - * Copyright (C) 1995, 1996, 1997, 1998 by John Ioannidis, Angelos D. Keromytis - * and Niels Provos. - * Copyright (c) 2001, Angelos D. Keromytis. - * - * Permission to use, copy, and modify this software with or without fee - * is hereby granted, provided that this entire notice is included in - * all copies of any software which is or includes a copy or - * modification of this software. - * You may use this code under the GNU public license if you so wish. Please - * contribute changes back to the authors under this freer than GPL license - * so that we may further the use of strong encryption without limitations to - * all. - * - * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTY. IN PARTICULAR, NONE OF THE AUTHORS MAKES ANY - * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE - * MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR - * PURPOSE. - */ - -#define ENC_HDRLEN 12 - -/* From $OpenBSD: mbuf.h,v 1.56 2002/01/25 15:50:23 art Exp $ */ -#define M_CONF 0x0400 /* packet was encrypted (ESP-transport) */ -#define M_AUTH 0x0800 /* packet was authenticated (AH) */ - -struct enchdr { - u_int32_t af; - u_int32_t spi; - u_int32_t flags; -}; diff --git a/contrib/tcpdump/esp.h b/contrib/tcpdump/esp.h deleted file mode 100644 index 56cdada01e2d9..0000000000000 --- a/contrib/tcpdump/esp.h +++ /dev/null @@ -1,68 +0,0 @@ -/* $NetBSD: esp.h,v 1.13 2000/09/26 08:37:38 itojun Exp $ */ -/* $KAME: esp.h,v 1.15 2000/09/20 18:15:22 itojun Exp $ */ - -/* - * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * RFC1827/2406 Encapsulated Security Payload. - */ - -#ifndef _NETINET6_ESP_H_ -#define _NETINET6_ESP_H_ - -struct esp { - u_int32_t esp_spi; /* ESP */ - /*variable size, 32bit bound*/ /* Initialization Vector */ - /*variable size*/ /* Payload data */ - /*variable size*/ /* padding */ - /*8bit*/ /* pad size */ - /*8bit*/ /* next header */ - /*8bit*/ /* next header */ - /*variable size, 32bit bound*/ /* Authentication data (new IPsec) */ -}; - -struct newesp { - u_int32_t esp_spi; /* ESP */ - u_int32_t esp_seq; /* Sequence number */ - /*variable size*/ /* (IV and) Payload data */ - /*variable size*/ /* padding */ - /*8bit*/ /* pad size */ - /*8bit*/ /* next header */ - /*8bit*/ /* next header */ - /*variable size, 32bit bound*/ /* Authentication data */ -}; - -struct esptail { - u_int8_t esp_padlen; /* pad length */ - u_int8_t esp_nxt; /* Next header */ - /*variable size, 32bit bound*/ /* Authentication data (new IPsec)*/ -}; - -#endif /*_NETINET6_ESP_H_*/ diff --git a/contrib/tcpdump/ether.h b/contrib/tcpdump/ether.h deleted file mode 100644 index 3d3f3be501468..0000000000000 --- a/contrib/tcpdump/ether.h +++ /dev/null @@ -1,59 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/ether.h,v 1.8 2002/12/11 07:13:51 guy Exp $ (LBL) */ -/* - * Copyright (c) 1982, 1986, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)if_ether.h 8.3 (Berkeley) 5/2/95 - */ - -#define ETHERMTU 1500 - -/* - * The number of bytes in an ethernet (MAC) address. - */ -#define ETHER_ADDR_LEN 6 - -/* - * Structure of a DEC/Intel/Xerox or 802.3 Ethernet header. - */ -struct ether_header { - u_int8_t ether_dhost[ETHER_ADDR_LEN]; - u_int8_t ether_shost[ETHER_ADDR_LEN]; - u_int16_t ether_type; -}; - -/* - * Length of a DEC/Intel/Xerox or 802.3 Ethernet header; note that some - * compilers may pad "struct ether_header" to a multiple of 4 bytes, - * for example, so "sizeof (struct ether_header)" may not give the right - * answer. - */ -#define ETHER_HDRLEN 14 diff --git a/contrib/tcpdump/ethertype.h b/contrib/tcpdump/ethertype.h deleted file mode 100644 index 36dc8e24d3040..0000000000000 --- a/contrib/tcpdump/ethertype.h +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 1993, 1994, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * @(#) $Header: /tcpdump/master/tcpdump/ethertype.h,v 1.24.2.1 2005/07/10 14:51:10 hannes Exp $ (LBL) - */ - -/* - * Ethernet types. - * - * We wrap the declarations with #ifdef, so that if a file includes - * <netinet/if_ether.h>, which may declare some of these, we don't - * get a bunch of complaints from the C compiler about redefinitions - * of these values. - * - * We declare all of them here so that no file has to include - * <netinet/if_ether.h> if all it needs are ETHERTYPE_ values. - */ - -#ifndef ETHERTYPE_LEN -#define ETHERTYPE_LEN 2 -#endif - -#ifndef ETHERTYPE_GRE_ISO -#define ETHERTYPE_GRE_ISO 0x00FE /* not really an ethertype only used in GRE */ -#endif -#ifndef ETHERTYPE_PUP -#define ETHERTYPE_PUP 0x0200 /* PUP protocol */ -#endif -#ifndef ETHERTYPE_IP -#define ETHERTYPE_IP 0x0800 /* IP protocol */ -#endif -#ifndef ETHERTYPE_ARP -#define ETHERTYPE_ARP 0x0806 /* Addr. resolution protocol */ -#endif -#ifndef ETHERTYPE_REVARP -#define ETHERTYPE_REVARP 0x8035 /* reverse Addr. resolution protocol */ -#endif -#ifndef ETHERTYPE_NS -#define ETHERTYPE_NS 0x0600 -#endif -#ifndef ETHERTYPE_SPRITE -#define ETHERTYPE_SPRITE 0x0500 -#endif -#ifndef ETHERTYPE_TRAIL -#define ETHERTYPE_TRAIL 0x1000 -#endif -#ifndef ETHERTYPE_MOPDL -#define ETHERTYPE_MOPDL 0x6001 -#endif -#ifndef ETHERTYPE_MOPRC -#define ETHERTYPE_MOPRC 0x6002 -#endif -#ifndef ETHERTYPE_DN -#define ETHERTYPE_DN 0x6003 -#endif -#ifndef ETHERTYPE_LAT -#define ETHERTYPE_LAT 0x6004 -#endif -#ifndef ETHERTYPE_SCA -#define ETHERTYPE_SCA 0x6007 -#endif -#ifndef ETHERTYPE_LANBRIDGE -#define ETHERTYPE_LANBRIDGE 0x8038 -#endif -#ifndef ETHERTYPE_DECDNS -#define ETHERTYPE_DECDNS 0x803c -#endif -#ifndef ETHERTYPE_DECDTS -#define ETHERTYPE_DECDTS 0x803e -#endif -#ifndef ETHERTYPE_VEXP -#define ETHERTYPE_VEXP 0x805b -#endif -#ifndef ETHERTYPE_VPROD -#define ETHERTYPE_VPROD 0x805c -#endif -#ifndef ETHERTYPE_ATALK -#define ETHERTYPE_ATALK 0x809b -#endif -#ifndef ETHERTYPE_AARP -#define ETHERTYPE_AARP 0x80f3 -#endif -#ifndef ETHERTYPE_8021Q -#define ETHERTYPE_8021Q 0x8100 -#endif -#ifndef ETHERTYPE_IPX -#define ETHERTYPE_IPX 0x8137 -#endif -#ifndef ETHERTYPE_IPV6 -#define ETHERTYPE_IPV6 0x86dd -#endif -#ifndef ETHERTYPE_PPP -#define ETHERTYPE_PPP 0x880b -#endif -#ifndef ETHERTYPE_SLOW -#define ETHERTYPE_SLOW 0x8809 -#endif -#ifndef ETHERTYPE_MPLS -#define ETHERTYPE_MPLS 0x8847 -#endif -#ifndef ETHERTYPE_MPLS_MULTI -#define ETHERTYPE_MPLS_MULTI 0x8848 -#endif -#ifndef ETHERTYPE_PPPOED -#define ETHERTYPE_PPPOED 0x8863 -#endif -#ifndef ETHERTYPE_PPPOES -#define ETHERTYPE_PPPOES 0x8864 -#endif -#ifndef ETHERTYPE_JUMBO -#define ETHERTYPE_JUMBO 0x8870 -#endif -#ifndef ETHERTYPE_EAPOL -#define ETHERTYPE_EAPOL 0x888e -#endif -#ifndef ETHERTYPE_LOOPBACK -#define ETHERTYPE_LOOPBACK 0x9000 -#endif -#ifndef ETHERTYPE_VMAN -#define ETHERTYPE_VMAN 0x9100 /* Extreme VMAN Protocol */ -#endif -#ifndef ETHERTYPE_ISO -#define ETHERTYPE_ISO 0xfefe /* nonstandard - used in Cisco HDLC encapsulation */ -#endif - -extern const struct tok ethertype_values[]; diff --git a/contrib/tcpdump/extract.h b/contrib/tcpdump/extract.h deleted file mode 100644 index f3db2505dd410..0000000000000 --- a/contrib/tcpdump/extract.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (c) 1992, 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * @(#) $Header: /tcpdump/master/tcpdump/extract.h,v 1.24 2005/01/15 02:06:50 guy Exp $ (LBL) - */ - -/* - * Macros to extract possibly-unaligned big-endian integral values. - */ -#ifdef LBL_ALIGN -/* - * The processor doesn't natively handle unaligned loads. - */ -#ifdef HAVE___ATTRIBUTE__ -/* - * We have __attribute__; we assume that means we have __attribute__((packed)). - * Declare packed structures containing a u_int16_t and a u_int32_t, - * cast the pointer to point to one of those, and fetch through it; - * the GCC manual doesn't appear to explicitly say that - * __attribute__((packed)) causes the compiler to generate unaligned-safe - * code, but it apppears to do so. - * - * We do this in case the compiler can generate, for this instruction set, - * better code to do an unaligned load and pass stuff to "ntohs()" or - * "ntohl()" than the code to fetch the bytes one at a time and - * assemble them. (That might not be the case on a little-endian platform, - * where "ntohs()" and "ntohl()" might not be done inline.) - */ -typedef struct { - u_int16_t val; -} __attribute__((packed)) unaligned_u_int16_t; - -typedef struct { - u_int32_t val; -} __attribute__((packed)) unaligned_u_int32_t; - -#define EXTRACT_16BITS(p) \ - ((u_int16_t)ntohs(((const unaligned_u_int16_t *)(p))->val)) -#define EXTRACT_32BITS(p) \ - ((u_int32_t)ntohl(((const unaligned_u_int32_t *)(p))->val)) -#define EXTRACT_64BITS(p) \ - ((u_int64_t)(((u_int64_t)ntohl(((const unaligned_u_int32_t *)(p) + 0)->val)) << 32 | \ - ((u_int64_t)ntohl(((const unaligned_u_int32_t *)(p) + 1)->val)) << 0)) - -#else /* HAVE___ATTRIBUTE__ */ -/* - * We don't have __attribute__, so do unaligned loads of big-endian - * quantities the hard way - fetch the bytes one at a time and - * assemble them. - */ -#define EXTRACT_16BITS(p) \ - ((u_int16_t)((u_int16_t)*((const u_int8_t *)(p) + 0) << 8 | \ - (u_int16_t)*((const u_int8_t *)(p) + 1))) -#define EXTRACT_32BITS(p) \ - ((u_int32_t)((u_int32_t)*((const u_int8_t *)(p) + 0) << 24 | \ - (u_int32_t)*((const u_int8_t *)(p) + 1) << 16 | \ - (u_int32_t)*((const u_int8_t *)(p) + 2) << 8 | \ - (u_int32_t)*((const u_int8_t *)(p) + 3))) -#define EXTRACT_64BITS(p) \ - ((u_int64_t)((u_int64_t)*((const u_int8_t *)(p) + 0) << 56 | \ - (u_int64_t)*((const u_int8_t *)(p) + 1) << 48 | \ - (u_int64_t)*((const u_int8_t *)(p) + 2) << 40 | \ - (u_int64_t)*((const u_int8_t *)(p) + 3) << 32 | \ - (u_int64_t)*((const u_int8_t *)(p) + 4) << 24 | \ - (u_int64_t)*((const u_int8_t *)(p) + 5) << 16 | \ - (u_int64_t)*((const u_int8_t *)(p) + 6) << 8 | \ - (u_int64_t)*((const u_int8_t *)(p) + 7))) -#endif /* HAVE___ATTRIBUTE__ */ -#else /* LBL_ALIGN */ -/* - * The processor natively handles unaligned loads, so we can just - * cast the pointer and fetch through it. - */ -#define EXTRACT_16BITS(p) \ - ((u_int16_t)ntohs(*(const u_int16_t *)(p))) -#define EXTRACT_32BITS(p) \ - ((u_int32_t)ntohl(*(const u_int32_t *)(p))) -#define EXTRACT_64BITS(p) \ - ((u_int64_t)(((u_int64_t)ntohl(*((const u_int32_t *)(p) + 0))) << 32 | \ - ((u_int64_t)ntohl(*((const u_int32_t *)(p) + 1))) << 0)) -#endif /* LBL_ALIGN */ - -#define EXTRACT_24BITS(p) \ - ((u_int32_t)((u_int32_t)*((const u_int8_t *)(p) + 0) << 16 | \ - (u_int32_t)*((const u_int8_t *)(p) + 1) << 8 | \ - (u_int32_t)*((const u_int8_t *)(p) + 2))) - -/* - * Macros to extract possibly-unaligned little-endian integral values. - * XXX - do loads on little-endian machines that support unaligned loads? - */ -#define EXTRACT_LE_8BITS(p) (*(p)) -#define EXTRACT_LE_16BITS(p) \ - ((u_int16_t)((u_int16_t)*((const u_int8_t *)(p) + 1) << 8 | \ - (u_int16_t)*((const u_int8_t *)(p) + 0))) -#define EXTRACT_LE_32BITS(p) \ - ((u_int32_t)((u_int32_t)*((const u_int8_t *)(p) + 3) << 24 | \ - (u_int32_t)*((const u_int8_t *)(p) + 2) << 16 | \ - (u_int32_t)*((const u_int8_t *)(p) + 1) << 8 | \ - (u_int32_t)*((const u_int8_t *)(p) + 0))) -#define EXTRACT_LE_64BITS(p) \ - ((u_int64_t)((u_int64_t)*((const u_int8_t *)(p) + 7) << 56 | \ - (u_int64_t)*((const u_int8_t *)(p) + 6) << 48 | \ - (u_int64_t)*((const u_int8_t *)(p) + 5) << 40 | \ - (u_int64_t)*((const u_int8_t *)(p) + 4) << 32 | \ - (u_int64_t)*((const u_int8_t *)(p) + 3) << 24 | \ - (u_int64_t)*((const u_int8_t *)(p) + 2) << 16 | \ - (u_int64_t)*((const u_int8_t *)(p) + 1) << 8 | \ - (u_int64_t)*((const u_int8_t *)(p) + 0))) diff --git a/contrib/tcpdump/fddi.h b/contrib/tcpdump/fddi.h deleted file mode 100644 index 690af48d87478..0000000000000 --- a/contrib/tcpdump/fddi.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 1992, 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * @(#) $Header: /tcpdump/master/tcpdump/fddi.h,v 1.11 2002/12/11 07:13:51 guy Exp $ (LBL) - */ - -/* - * Based on Ultrix if_fddi.h - */ - -/* - * This stuff should come from a system header file, but there's no - * obviously portable way to do that and it's not really going - * to change from system to system (except for the padding business). - */ - -struct fddi_header { - u_char fddi_fc; /* frame control */ - u_char fddi_dhost[6]; - u_char fddi_shost[6]; -}; - -/* - * Length of an FDDI header; note that some compilers may pad - * "struct fddi_header" to a multiple of 4 bytes, for example, so - * "sizeof (struct fddi_header)" may not give the right - * answer. - */ -#define FDDI_HDRLEN 13 - -/* Useful values for fddi_fc (frame control) field */ - -/* - * FDDI Frame Control bits - */ -#define FDDIFC_C 0x80 /* Class bit */ -#define FDDIFC_L 0x40 /* Address length bit */ -#define FDDIFC_F 0x30 /* Frame format bits */ -#define FDDIFC_Z 0x0f /* Control bits */ - -/* - * FDDI Frame Control values. (48-bit addressing only). - */ -#define FDDIFC_VOID 0x40 /* Void frame */ -#define FDDIFC_NRT 0x80 /* Nonrestricted token */ -#define FDDIFC_RT 0xc0 /* Restricted token */ -#define FDDIFC_SMT_INFO 0x41 /* SMT Info */ -#define FDDIFC_SMT_NSA 0x4F /* SMT Next station adrs */ -#define FDDIFC_MAC_BEACON 0xc2 /* MAC Beacon frame */ -#define FDDIFC_MAC_CLAIM 0xc3 /* MAC Claim frame */ -#define FDDIFC_LLC_ASYNC 0x50 /* Async. LLC frame */ -#define FDDIFC_LLC_SYNC 0xd0 /* Sync. LLC frame */ -#define FDDIFC_IMP_ASYNC 0x60 /* Implementor Async. */ -#define FDDIFC_IMP_SYNC 0xe0 /* Implementor Synch. */ -#define FDDIFC_SMT 0x40 /* SMT frame */ -#define FDDIFC_MAC 0xc0 /* MAC frame */ - -#define FDDIFC_CLFF 0xF0 /* Class/Length/Format bits */ -#define FDDIFC_ZZZZ 0x0F /* Control bits */ diff --git a/contrib/tcpdump/gmpls.c b/contrib/tcpdump/gmpls.c deleted file mode 100644 index 4d4b9aeb39856..0000000000000 --- a/contrib/tcpdump/gmpls.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - * 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. - * - * Original code by Hannes Gredler (hannes@juniper.net) - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/gmpls.c,v 1.5.2.1 2005/05/19 06:44:02 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include "interface.h" - -/* rfc3471 */ -struct tok gmpls_link_prot_values[] = { - { 0x01, "Extra Traffic"}, - { 0x02, "Unprotected"}, - { 0x04, "Shared"}, - { 0x08, "Dedicated 1:1"}, - { 0x10, "Dedicated 1+1"}, - { 0x20, "Enhanced"}, - { 0x40, "Reserved"}, - { 0x80, "Reserved"}, - { 0, NULL } -}; - -/* rfc3471 */ -struct tok gmpls_switch_cap_values[] = { - { 1, "Packet-Switch Capable-1"}, - { 2, "Packet-Switch Capable-2"}, - { 3, "Packet-Switch Capable-3"}, - { 4, "Packet-Switch Capable-4"}, - { 51, "Layer-2 Switch Capable"}, - { 100, "Time-Division-Multiplex"}, - { 150, "Lambda-Switch Capable"}, - { 200, "Fiber-Switch Capable"}, - { 0, NULL } -}; - -/* rfc3471 */ -struct tok gmpls_encoding_values[] = { - { 1, "Packet"}, - { 2, "Ethernet V2/DIX"}, - { 3, "ANSI/ETSI PDH"}, - { 4, "Reserved"}, - { 5, "SDH ITU-T G.707/SONET ANSI T1.105"}, - { 6, "Reserved"}, - { 7, "Digital Wrapper"}, - { 8, "Lambda (photonic)"}, - { 9, "Fiber"}, - { 10, "Reserved"}, - { 11, "FiberChannel"}, - { 0, NULL } -}; - -/* rfc3471 */ -struct tok gmpls_payload_values[] = { - { 0, "Unknown"}, - { 1, "Reserved"}, - { 2, "Reserved"}, - { 3, "Reserved"}, - { 4, "Reserved"}, - { 5, "Asynchronous mapping of E4"}, - { 6, "Asynchronous mapping of DS3/T3"}, - { 7, "Asynchronous mapping of E3"}, - { 8, "Bit synchronous mapping of E3"}, - { 9, "Byte synchronous mapping of E3"}, - { 10, "Asynchronous mapping of DS2/T2"}, - { 11, "Bit synchronous mapping of DS2/T2"}, - { 12, "Reserved"}, - { 13, "Asynchronous mapping of E1"}, - { 14, "Byte synchronous mapping of E1"}, - { 15, "Byte synchronous mapping of 31 * DS0"}, - { 16, "Asynchronous mapping of DS1/T1"}, - { 17, "Bit synchronous mapping of DS1/T1"}, - { 18, "Byte synchronous mapping of DS1/T1"}, - { 19, "VC-11 in VC-12"}, - { 20, "Reserved"}, - { 21, "Reserved"}, - { 22, "DS1 SF Asynchronous"}, - { 23, "DS1 ESF Asynchronous"}, - { 24, "DS3 M23 Asynchronous"}, - { 25, "DS3 C-Bit Parity Asynchronous"}, - { 26, "VT/LOVC"}, - { 27, "STS SPE/HOVC"}, - { 28, "POS - No Scrambling, 16 bit CRC"}, - { 29, "POS - No Scrambling, 32 bit CRC"}, - { 30, "POS - Scrambling, 16 bit CRC"}, - { 31, "POS - Scrambling, 32 bit CRC"}, - { 32, "ATM mapping"}, - { 33, "Ethernet PHY"}, - { 34, "SONET/SDH"}, - { 35, "Reserved (SONET deprecated)"}, - { 36, "Digital Wrapper"}, - { 37, "Lambda"}, - { 38, "ANSI/ETSI PDH"}, - { 39, "Reserved"}, - { 40, "Link Access Protocol SDH (X.85 and X.86)"}, - { 41, "FDDI"}, - { 42, "DQDB (ETSI ETS 300 216)"}, - { 43, "FiberChannel-3 (Services)"}, - { 44, "HDLC"}, - { 45, "Ethernet V2/DIX (only)"}, - { 46, "Ethernet 802.3 (only)"}, -/* draft-ietf-ccamp-gmpls-g709-04.txt */ - { 47, "G.709 ODUj"}, - { 48, "G.709 OTUk(v)"}, - { 49, "CBR/CBRa"}, - { 50, "CBRb"}, - { 51, "BSOT"}, - { 52, "BSNT"}, - { 53, "IP/PPP (GFP)"}, - { 54, "Ethernet MAC (framed GFP)"}, - { 55, "Ethernet PHY (transparent GFP)"}, - { 56, "ESCON"}, - { 57, "FICON"}, - { 58, "Fiber Channel"}, - { 0, NULL } -}; - -/* - * Link Type values used by LMP Service Discovery (specifically, the Client - * Port Service Attributes Object). See UNI 1.0 section 9.4.2 for details. - */ -struct tok lmp_sd_service_config_cpsa_link_type_values[] = { - { 5, "SDH ITU-T G.707"}, - { 6, "SONET ANSI T1.105"}, - { 0, NULL} -}; - -/* - * Signal Type values for SDH links used by LMP Service Discovery (specifically, - * the Client Port Service Attributes Object). See UNI 1.0 section 9.4.2 for - * details. - */ -struct tok lmp_sd_service_config_cpsa_signal_type_sdh_values[] = { - { 5, "VC-3"}, - { 6, "VC-4"}, - { 7, "STM-0"}, - { 8, "STM-1"}, - { 9, "STM-4"}, - { 10, "STM-16"}, - { 11, "STM-64"}, - { 12, "STM-256"}, - { 0, NULL} -}; - -/* - * Signal Type values for SONET links used by LMP Service Discovery (specifically, - * the Client Port Service Attributes Object). See UNI 1.0 section 9.4.2 for - * details. - */ -struct tok lmp_sd_service_config_cpsa_signal_type_sonet_values[] = { - { 5, "STS-1 SPE"}, - { 6, "STS-3c SPE"}, - { 7, "STS-1"}, - { 8, "STM-3"}, - { 9, "STM-12"}, - { 10, "STM-48"}, - { 11, "STM-192"}, - { 12, "STM-768"}, - { 0, NULL} -}; - -#define DIFFSERV_BC_MODEL_RDM 0 /* draft-ietf-tewg-diff-te-proto-07 */ -#define DIFFSERV_BC_MODEL_MAM 1 /* draft-ietf-tewg-diff-te-proto-07 */ -#define DIFFSERV_BC_MODEL_EXTD_MAM 254 /* experimental */ - -struct tok diffserv_te_bc_values[] = { - { DIFFSERV_BC_MODEL_RDM, "Russian dolls"}, - { DIFFSERV_BC_MODEL_MAM, "Maximum allocation"}, - { DIFFSERV_BC_MODEL_EXTD_MAM, "Maximum allocation with E-LSP support"}, - { 0, NULL } -}; diff --git a/contrib/tcpdump/gmpls.h b/contrib/tcpdump/gmpls.h deleted file mode 100644 index 8c3f051ecc60d..0000000000000 --- a/contrib/tcpdump/gmpls.h +++ /dev/null @@ -1,24 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/gmpls.h,v 1.3.2.1 2005/05/19 06:44:03 guy Exp $ (LBL) */ -/* - * 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. - * - * Original code by Hannes Gredler (hannes@juniper.net) - */ - -extern struct tok gmpls_link_prot_values[]; -extern struct tok gmpls_switch_cap_values[]; -extern struct tok gmpls_encoding_values[]; -extern struct tok gmpls_payload_values[]; -extern struct tok diffserv_te_bc_values[]; -extern struct tok lmp_sd_service_config_cpsa_link_type_values[]; -extern struct tok lmp_sd_service_config_cpsa_signal_type_sdh_values[]; -extern struct tok lmp_sd_service_config_cpsa_signal_type_sonet_values[]; diff --git a/contrib/tcpdump/gmt2local.c b/contrib/tcpdump/gmt2local.c deleted file mode 100644 index 926e86cfb7fcc..0000000000000 --- a/contrib/tcpdump/gmt2local.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/gmt2local.c,v 1.9 2003/11/16 09:36:09 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> - -#ifdef HAVE_OS_PROTO_H -#include "os-proto.h" -#endif - -#include "gmt2local.h" - -/* - * Returns the difference between gmt and local time in seconds. - * Use gmtime() and localtime() to keep things simple. - */ -int32_t -gmt2local(time_t t) -{ - register int dt, dir; - register struct tm *gmt, *loc; - struct tm sgmt; - - if (t == 0) - t = time(NULL); - gmt = &sgmt; - *gmt = *gmtime(&t); - loc = localtime(&t); - dt = (loc->tm_hour - gmt->tm_hour) * 60 * 60 + - (loc->tm_min - gmt->tm_min) * 60; - - /* - * If the year or julian day is different, we span 00:00 GMT - * and must add or subtract a day. Check the year first to - * avoid problems when the julian day wraps. - */ - dir = loc->tm_year - gmt->tm_year; - if (dir == 0) - dir = loc->tm_yday - gmt->tm_yday; - dt += dir * 24 * 60 * 60; - - return (dt); -} diff --git a/contrib/tcpdump/gmt2local.h b/contrib/tcpdump/gmt2local.h deleted file mode 100644 index 81b0e96072353..0000000000000 --- a/contrib/tcpdump/gmt2local.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * @(#) $Header: /tcpdump/master/tcpdump/gmt2local.h,v 1.2.1.1 1999/10/07 23:47:10 mcr Exp $ (LBL) - */ -#ifndef gmt2local_h -#define gmt2local_h - -int32_t gmt2local(time_t); -#endif diff --git a/contrib/tcpdump/icmp6.h b/contrib/tcpdump/icmp6.h deleted file mode 100644 index 20a51e3a61982..0000000000000 --- a/contrib/tcpdump/icmp6.h +++ /dev/null @@ -1,456 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/icmp6.h,v 1.16.2.1 2005/09/05 09:29:28 guy Exp $ (LBL) */ -/* $NetBSD: icmp6.h,v 1.13 2000/08/03 16:30:37 itojun Exp $ */ -/* $KAME: icmp6.h,v 1.22 2000/08/03 15:25:16 jinmei Exp $ */ - -/* - * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * Copyright (c) 1982, 1986, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)ip_icmp.h 8.1 (Berkeley) 6/10/93 - */ - -#ifndef _NETINET_ICMP6_H_ -#define _NETINET_ICMP6_H_ - -struct icmp6_hdr { - u_int8_t icmp6_type; /* type field */ - u_int8_t icmp6_code; /* code field */ - u_int16_t icmp6_cksum; /* checksum field */ - union { - u_int32_t icmp6_un_data32[1]; /* type-specific field */ - u_int16_t icmp6_un_data16[2]; /* type-specific field */ - u_int8_t icmp6_un_data8[4]; /* type-specific field */ - } icmp6_dataun; -}; - -#define icmp6_data32 icmp6_dataun.icmp6_un_data32 -#define icmp6_data16 icmp6_dataun.icmp6_un_data16 -#define icmp6_data8 icmp6_dataun.icmp6_un_data8 -#define icmp6_pptr icmp6_data32[0] /* parameter prob */ -#define icmp6_mtu icmp6_data32[0] /* packet too big */ -#define icmp6_id icmp6_data16[0] /* echo request/reply */ -#define icmp6_seq icmp6_data16[1] /* echo request/reply */ -#define icmp6_maxdelay icmp6_data16[0] /* mcast group membership */ - -#define ICMP6_DST_UNREACH 1 /* dest unreachable, codes: */ -#define ICMP6_PACKET_TOO_BIG 2 /* packet too big */ -#define ICMP6_TIME_EXCEEDED 3 /* time exceeded, code: */ -#define ICMP6_PARAM_PROB 4 /* ip6 header bad */ - -#define ICMP6_ECHO_REQUEST 128 /* echo service */ -#define ICMP6_ECHO_REPLY 129 /* echo reply */ -#define ICMP6_MEMBERSHIP_QUERY 130 /* group membership query */ -#define MLD6_LISTENER_QUERY 130 /* multicast listener query */ -#define ICMP6_MEMBERSHIP_REPORT 131 /* group membership report */ -#define MLD6_LISTENER_REPORT 131 /* multicast listener report */ -#define ICMP6_MEMBERSHIP_REDUCTION 132 /* group membership termination */ -#define MLD6_LISTENER_DONE 132 /* multicast listener done */ - -#define ND_ROUTER_SOLICIT 133 /* router solicitation */ -#define ND_ROUTER_ADVERT 134 /* router advertisement */ -#define ND_NEIGHBOR_SOLICIT 135 /* neighbor solicitation */ -#define ND_NEIGHBOR_ADVERT 136 /* neighbor advertisement */ -#define ND_REDIRECT 137 /* redirect */ - -#define ICMP6_ROUTER_RENUMBERING 138 /* router renumbering */ - -#define ICMP6_WRUREQUEST 139 /* who are you request */ -#define ICMP6_WRUREPLY 140 /* who are you reply */ -#define ICMP6_FQDN_QUERY 139 /* FQDN query */ -#define ICMP6_FQDN_REPLY 140 /* FQDN reply */ -#define ICMP6_NI_QUERY 139 /* node information request */ -#define ICMP6_NI_REPLY 140 /* node information reply */ -#define IND_SOLICIT 141 /* inverse neighbor solicitation */ -#define IND_ADVERT 142 /* inverse neighbor advertisement */ - -#define ICMP6_V2_MEMBERSHIP_REPORT 143 /* v2 membership report */ -#define MLDV2_LISTENER_REPORT 143 /* v2 multicast listener report */ -#define ICMP6_HADISCOV_REQUEST 144 -#define ICMP6_HADISCOV_REPLY 145 -#define ICMP6_MOBILEPREFIX_SOLICIT 146 -#define ICMP6_MOBILEPREFIX_ADVERT 147 - -#define MLD6_MTRACE_RESP 200 /* mtrace response(to sender) */ -#define MLD6_MTRACE 201 /* mtrace messages */ - -#define ICMP6_MAXTYPE 201 - -#define ICMP6_DST_UNREACH_NOROUTE 0 /* no route to destination */ -#define ICMP6_DST_UNREACH_ADMIN 1 /* administratively prohibited */ -#define ICMP6_DST_UNREACH_NOTNEIGHBOR 2 /* not a neighbor(obsolete) */ -#define ICMP6_DST_UNREACH_BEYONDSCOPE 2 /* beyond scope of source address */ -#define ICMP6_DST_UNREACH_ADDR 3 /* address unreachable */ -#define ICMP6_DST_UNREACH_NOPORT 4 /* port unreachable */ - -#define ICMP6_TIME_EXCEED_TRANSIT 0 /* ttl==0 in transit */ -#define ICMP6_TIME_EXCEED_REASSEMBLY 1 /* ttl==0 in reass */ - -#define ICMP6_PARAMPROB_HEADER 0 /* erroneous header field */ -#define ICMP6_PARAMPROB_NEXTHEADER 1 /* unrecognized next header */ -#define ICMP6_PARAMPROB_OPTION 2 /* unrecognized option */ - -#define ICMP6_INFOMSG_MASK 0x80 /* all informational messages */ - -#define ICMP6_NI_SUBJ_IPV6 0 /* Query Subject is an IPv6 address */ -#define ICMP6_NI_SUBJ_FQDN 1 /* Query Subject is a Domain name */ -#define ICMP6_NI_SUBJ_IPV4 2 /* Query Subject is an IPv4 address */ - -#define ICMP6_NI_SUCCESS 0 /* node information successful reply */ -#define ICMP6_NI_REFUSED 1 /* node information request is refused */ -#define ICMP6_NI_UNKNOWN 2 /* unknown Qtype */ - -#define ICMP6_ROUTER_RENUMBERING_COMMAND 0 /* rr command */ -#define ICMP6_ROUTER_RENUMBERING_RESULT 1 /* rr result */ -#define ICMP6_ROUTER_RENUMBERING_SEQNUM_RESET 255 /* rr seq num reset */ - -/* Used in kernel only */ -#define ND_REDIRECT_ONLINK 0 /* redirect to an on-link node */ -#define ND_REDIRECT_ROUTER 1 /* redirect to a better router */ - -/* - * Multicast Listener Discovery - */ -struct mld6_hdr { - struct icmp6_hdr mld6_hdr; - struct in6_addr mld6_addr; /* multicast address */ -}; - -#define mld6_type mld6_hdr.icmp6_type -#define mld6_code mld6_hdr.icmp6_code -#define mld6_cksum mld6_hdr.icmp6_cksum -#define mld6_maxdelay mld6_hdr.icmp6_data16[0] -#define mld6_reserved mld6_hdr.icmp6_data16[1] - -#define MLD_MINLEN 24 -#define MLDV2_MINLEN 28 - -/* - * Neighbor Discovery - */ - -struct nd_router_solicit { /* router solicitation */ - struct icmp6_hdr nd_rs_hdr; - /* could be followed by options */ -}; - -#define nd_rs_type nd_rs_hdr.icmp6_type -#define nd_rs_code nd_rs_hdr.icmp6_code -#define nd_rs_cksum nd_rs_hdr.icmp6_cksum -#define nd_rs_reserved nd_rs_hdr.icmp6_data32[0] - -struct nd_router_advert { /* router advertisement */ - struct icmp6_hdr nd_ra_hdr; - u_int32_t nd_ra_reachable; /* reachable time */ - u_int32_t nd_ra_retransmit; /* retransmit timer */ - /* could be followed by options */ -}; - -#define nd_ra_type nd_ra_hdr.icmp6_type -#define nd_ra_code nd_ra_hdr.icmp6_code -#define nd_ra_cksum nd_ra_hdr.icmp6_cksum -#define nd_ra_curhoplimit nd_ra_hdr.icmp6_data8[0] -#define nd_ra_flags_reserved nd_ra_hdr.icmp6_data8[1] -#define ND_RA_FLAG_MANAGED 0x80 -#define ND_RA_FLAG_OTHER 0x40 -#define ND_RA_FLAG_HOME_AGENT 0x20 - -/* - * Router preference values based on draft-draves-ipngwg-router-selection-01. - * These are non-standard definitions. - */ -#define ND_RA_FLAG_RTPREF_MASK 0x18 /* 00011000 */ - -#define ND_RA_FLAG_RTPREF_HIGH 0x08 /* 00001000 */ -#define ND_RA_FLAG_RTPREF_MEDIUM 0x00 /* 00000000 */ -#define ND_RA_FLAG_RTPREF_LOW 0x18 /* 00011000 */ -#define ND_RA_FLAG_RTPREF_RSV 0x10 /* 00010000 */ - -#define nd_ra_router_lifetime nd_ra_hdr.icmp6_data16[1] - -struct nd_neighbor_solicit { /* neighbor solicitation */ - struct icmp6_hdr nd_ns_hdr; - struct in6_addr nd_ns_target; /*target address */ - /* could be followed by options */ -}; - -#define nd_ns_type nd_ns_hdr.icmp6_type -#define nd_ns_code nd_ns_hdr.icmp6_code -#define nd_ns_cksum nd_ns_hdr.icmp6_cksum -#define nd_ns_reserved nd_ns_hdr.icmp6_data32[0] - -struct nd_neighbor_advert { /* neighbor advertisement */ - struct icmp6_hdr nd_na_hdr; - struct in6_addr nd_na_target; /* target address */ - /* could be followed by options */ -}; - -#define nd_na_type nd_na_hdr.icmp6_type -#define nd_na_code nd_na_hdr.icmp6_code -#define nd_na_cksum nd_na_hdr.icmp6_cksum -#define nd_na_flags_reserved nd_na_hdr.icmp6_data32[0] - -#define ND_NA_FLAG_ROUTER 0x80000000 -#define ND_NA_FLAG_SOLICITED 0x40000000 -#define ND_NA_FLAG_OVERRIDE 0x20000000 - -struct nd_redirect { /* redirect */ - struct icmp6_hdr nd_rd_hdr; - struct in6_addr nd_rd_target; /* target address */ - struct in6_addr nd_rd_dst; /* destination address */ - /* could be followed by options */ -}; - -#define nd_rd_type nd_rd_hdr.icmp6_type -#define nd_rd_code nd_rd_hdr.icmp6_code -#define nd_rd_cksum nd_rd_hdr.icmp6_cksum -#define nd_rd_reserved nd_rd_hdr.icmp6_data32[0] - -struct nd_opt_hdr { /* Neighbor discovery option header */ - u_int8_t nd_opt_type; - u_int8_t nd_opt_len; - /* followed by option specific data*/ -}; - -#define ND_OPT_SOURCE_LINKADDR 1 -#define ND_OPT_TARGET_LINKADDR 2 -#define ND_OPT_PREFIX_INFORMATION 3 -#define ND_OPT_REDIRECTED_HEADER 4 -#define ND_OPT_MTU 5 -#define ND_OPT_ADVINTERVAL 7 -#define ND_OPT_HOMEAGENT_INFO 8 -#define ND_OPT_ROUTE_INFO 9 /* draft-ietf-ipngwg-router-preference, not officially assigned yet */ - - -struct nd_opt_prefix_info { /* prefix information */ - u_int8_t nd_opt_pi_type; - u_int8_t nd_opt_pi_len; - u_int8_t nd_opt_pi_prefix_len; - u_int8_t nd_opt_pi_flags_reserved; - u_int8_t nd_opt_pi_valid_time[4]; - u_int8_t nd_opt_pi_preferred_time[4]; - u_int8_t nd_opt_pi_reserved2[4]; - struct in6_addr nd_opt_pi_prefix; -}; - -#define ND_OPT_PI_FLAG_ONLINK 0x80 -#define ND_OPT_PI_FLAG_AUTO 0x40 -#define ND_OPT_PI_FLAG_ROUTER 0x20 /*2292bis*/ - -struct nd_opt_rd_hdr { /* redirected header */ - u_int8_t nd_opt_rh_type; - u_int8_t nd_opt_rh_len; - u_int16_t nd_opt_rh_reserved1; - u_int32_t nd_opt_rh_reserved2; - /* followed by IP header and data */ -}; - -struct nd_opt_mtu { /* MTU option */ - u_int8_t nd_opt_mtu_type; - u_int8_t nd_opt_mtu_len; - u_int16_t nd_opt_mtu_reserved; - u_int32_t nd_opt_mtu_mtu; -}; - -struct nd_opt_advinterval { /* Advertisement interval option */ - u_int8_t nd_opt_adv_type; - u_int8_t nd_opt_adv_len; - u_int16_t nd_opt_adv_reserved; - u_int32_t nd_opt_adv_interval; -}; - -struct nd_opt_homeagent_info { /* Home Agent info */ - u_int8_t nd_opt_hai_type; - u_int8_t nd_opt_hai_len; - u_int16_t nd_opt_hai_reserved; - int16_t nd_opt_hai_preference; - u_int16_t nd_opt_hai_lifetime; -}; - -struct nd_opt_route_info { /* route info */ - u_int8_t nd_opt_rti_type; - u_int8_t nd_opt_rti_len; - u_int8_t nd_opt_rti_prefixlen; - u_int8_t nd_opt_rti_flags; - u_int32_t nd_opt_rti_lifetime; - /* prefix follows */ -}; - -/* - * icmp6 namelookup - */ - -struct icmp6_namelookup { - struct icmp6_hdr icmp6_nl_hdr; - u_int8_t icmp6_nl_nonce[8]; - int32_t icmp6_nl_ttl; -#if 0 - u_int8_t icmp6_nl_len; - u_int8_t icmp6_nl_name[3]; -#endif - /* could be followed by options */ -}; - -/* - * icmp6 node information - */ -struct icmp6_nodeinfo { - struct icmp6_hdr icmp6_ni_hdr; - u_int8_t icmp6_ni_nonce[8]; - /* could be followed by reply data */ -}; - -#define ni_type icmp6_ni_hdr.icmp6_type -#define ni_code icmp6_ni_hdr.icmp6_code -#define ni_cksum icmp6_ni_hdr.icmp6_cksum -#define ni_qtype icmp6_ni_hdr.icmp6_data16[0] -#define ni_flags icmp6_ni_hdr.icmp6_data16[1] - -#define NI_QTYPE_NOOP 0 /* NOOP */ -#define NI_QTYPE_SUPTYPES 1 /* Supported Qtypes */ -#define NI_QTYPE_FQDN 2 /* FQDN (draft 04) */ -#define NI_QTYPE_DNSNAME 2 /* DNS Name */ -#define NI_QTYPE_NODEADDR 3 /* Node Addresses */ -#define NI_QTYPE_IPV4ADDR 4 /* IPv4 Addresses */ - -/* network endian */ -#define NI_SUPTYPE_FLAG_COMPRESS ((u_int16_t)htons(0x1)) -#define NI_FQDN_FLAG_VALIDTTL ((u_int16_t)htons(0x1)) - -/* network endian */ -#define NI_NODEADDR_FLAG_TRUNCATE ((u_int16_t)htons(0x1)) -#define NI_NODEADDR_FLAG_ALL ((u_int16_t)htons(0x2)) -#define NI_NODEADDR_FLAG_COMPAT ((u_int16_t)htons(0x4)) -#define NI_NODEADDR_FLAG_LINKLOCAL ((u_int16_t)htons(0x8)) -#define NI_NODEADDR_FLAG_SITELOCAL ((u_int16_t)htons(0x10)) -#define NI_NODEADDR_FLAG_GLOBAL ((u_int16_t)htons(0x20)) -#define NI_NODEADDR_FLAG_ANYCAST ((u_int16_t)htons(0x40)) /* just experimental. not in spec */ - -struct ni_reply_fqdn { - u_int32_t ni_fqdn_ttl; /* TTL */ - u_int8_t ni_fqdn_namelen; /* length in octets of the FQDN */ - u_int8_t ni_fqdn_name[3]; /* XXX: alignment */ -}; - -/* - * Router Renumbering. as router-renum-08.txt - */ -struct icmp6_router_renum { /* router renumbering header */ - struct icmp6_hdr rr_hdr; - u_int8_t rr_segnum; - u_int8_t rr_flags; - u_int16_t rr_maxdelay; - u_int32_t rr_reserved; -}; -#define ICMP6_RR_FLAGS_TEST 0x80 -#define ICMP6_RR_FLAGS_REQRESULT 0x40 -#define ICMP6_RR_FLAGS_FORCEAPPLY 0x20 -#define ICMP6_RR_FLAGS_SPECSITE 0x10 -#define ICMP6_RR_FLAGS_PREVDONE 0x08 - -#define rr_type rr_hdr.icmp6_type -#define rr_code rr_hdr.icmp6_code -#define rr_cksum rr_hdr.icmp6_cksum -#define rr_seqnum rr_hdr.icmp6_data32[0] - -struct rr_pco_match { /* match prefix part */ - u_int8_t rpm_code; - u_int8_t rpm_len; - u_int8_t rpm_ordinal; - u_int8_t rpm_matchlen; - u_int8_t rpm_minlen; - u_int8_t rpm_maxlen; - u_int16_t rpm_reserved; - struct in6_addr rpm_prefix; -}; - -#define RPM_PCO_ADD 1 -#define RPM_PCO_CHANGE 2 -#define RPM_PCO_SETGLOBAL 3 -#define RPM_PCO_MAX 4 - -struct rr_pco_use { /* use prefix part */ - u_int8_t rpu_uselen; - u_int8_t rpu_keeplen; - u_int8_t rpu_ramask; - u_int8_t rpu_raflags; - u_int32_t rpu_vltime; - u_int32_t rpu_pltime; - u_int32_t rpu_flags; - struct in6_addr rpu_prefix; -}; -#define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK 0x80 -#define ICMP6_RR_PCOUSE_RAFLAGS_AUTO 0x40 - -/* network endian */ -#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME ((u_int32_t)htonl(0x80000000)) -#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME ((u_int32_t)htonl(0x40000000)) - -struct rr_result { /* router renumbering result message */ - u_int16_t rrr_flags; - u_int8_t rrr_ordinal; - u_int8_t rrr_matchedlen; - u_int32_t rrr_ifid; - struct in6_addr rrr_prefix; -}; -/* network endian */ -#define ICMP6_RR_RESULT_FLAGS_OOB ((u_int16_t)htons(0x0002)) -#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN ((u_int16_t)htons(0x0001)) - -#endif /* not _NETINET_ICMP6_H_ */ diff --git a/contrib/tcpdump/ieee802_11.h b/contrib/tcpdump/ieee802_11.h deleted file mode 100644 index fa5a555ff760e..0000000000000 --- a/contrib/tcpdump/ieee802_11.h +++ /dev/null @@ -1,285 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/ieee802_11.h,v 1.9 2003/07/22 17:36:57 guy Exp $ (LBL) */ -/* - * Copyright (c) 2001 - * Fortress Technologies - * Charlie Lenahan ( clenahan@fortresstech.com ) - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -/* Lengths of 802.11 header components. */ -#define IEEE802_11_FC_LEN 2 -#define IEEE802_11_DUR_LEN 2 -#define IEEE802_11_DA_LEN 6 -#define IEEE802_11_SA_LEN 6 -#define IEEE802_11_BSSID_LEN 6 -#define IEEE802_11_RA_LEN 6 -#define IEEE802_11_TA_LEN 6 -#define IEEE802_11_SEQ_LEN 2 -#define IEEE802_11_IV_LEN 3 -#define IEEE802_11_KID_LEN 1 - -/* Frame check sequence length. */ -#define IEEE802_11_FCS_LEN 4 - -/* Lengths of beacon components. */ -#define IEEE802_11_TSTAMP_LEN 8 -#define IEEE802_11_BCNINT_LEN 2 -#define IEEE802_11_CAPINFO_LEN 2 -#define IEEE802_11_LISTENINT_LEN 2 - -#define IEEE802_11_AID_LEN 2 -#define IEEE802_11_STATUS_LEN 2 -#define IEEE802_11_REASON_LEN 2 - -/* Length of previous AP in reassocation frame */ -#define IEEE802_11_AP_LEN 6 - -#define T_MGMT 0x0 /* management */ -#define T_CTRL 0x1 /* control */ -#define T_DATA 0x2 /* data */ -#define T_RESV 0x3 /* reserved */ - -#define ST_ASSOC_REQUEST 0x0 -#define ST_ASSOC_RESPONSE 0x1 -#define ST_REASSOC_REQUEST 0x2 -#define ST_REASSOC_RESPONSE 0x3 -#define ST_PROBE_REQUEST 0x4 -#define ST_PROBE_RESPONSE 0x5 -/* RESERVED 0x6 */ -/* RESERVED 0x7 */ -#define ST_BEACON 0x8 -#define ST_ATIM 0x9 -#define ST_DISASSOC 0xA -#define ST_AUTH 0xB -#define ST_DEAUTH 0xC -/* RESERVED 0xD */ -/* RESERVED 0xE */ -/* RESERVED 0xF */ - - -#define CTRL_PS_POLL 0xA -#define CTRL_RTS 0xB -#define CTRL_CTS 0xC -#define CTRL_ACK 0xD -#define CTRL_CF_END 0xE -#define CTRL_END_ACK 0xF - -#define DATA_DATA 0x0 -#define DATA_DATA_CF_ACK 0x1 -#define DATA_DATA_CF_POLL 0x2 -#define DATA_DATA_CF_ACK_POLL 0x3 -#define DATA_NODATA 0x4 -#define DATA_NODATA_CF_ACK 0x5 -#define DATA_NODATA_CF_POLL 0x6 -#define DATA_NODATA_CF_ACK_POLL 0x7 - -/* - * Bits in the frame control field. - */ -#define FC_VERSION(fc) ((fc) & 0x3) -#define FC_TYPE(fc) (((fc) >> 2) & 0x3) -#define FC_SUBTYPE(fc) (((fc) >> 4) & 0xF) -#define FC_TO_DS(fc) ((fc) & 0x0100) -#define FC_FROM_DS(fc) ((fc) & 0x0200) -#define FC_MORE_FLAG(fc) ((fc) & 0x0400) -#define FC_RETRY(fc) ((fc) & 0x0800) -#define FC_POWER_MGMT(fc) ((fc) & 0x1000) -#define FC_MORE_DATA(fc) ((fc) & 0x2000) -#define FC_WEP(fc) ((fc) & 0x4000) -#define FC_ORDER(fc) ((fc) & 0x8000) - -struct mgmt_header_t { - u_int16_t fc; - u_int16_t duration; - u_int8_t da[6]; - u_int8_t sa[6]; - u_int8_t bssid[6]; - u_int16_t seq_ctrl; -}; - -#define MGMT_HDRLEN (IEEE802_11_FC_LEN+IEEE802_11_DUR_LEN+\ - IEEE802_11_DA_LEN+IEEE802_11_SA_LEN+\ - IEEE802_11_BSSID_LEN+IEEE802_11_SEQ_LEN) - -#define CAPABILITY_ESS(cap) ((cap) & 0x0001) -#define CAPABILITY_IBSS(cap) ((cap) & 0x0002) -#define CAPABILITY_CFP(cap) ((cap) & 0x0004) -#define CAPABILITY_CFP_REQ(cap) ((cap) & 0x0008) -#define CAPABILITY_PRIVACY(cap) ((cap) & 0x0010) - -struct ssid_t { - u_int8_t element_id; - u_int8_t length; - u_char ssid[33]; /* 32 + 1 for null */ -}; - -struct rates_t { - u_int8_t element_id; - u_int8_t length; - u_int8_t rate[8]; -}; - -struct challenge_t { - u_int8_t element_id; - u_int8_t length; - u_int8_t text[254]; /* 1-253 + 1 for null */ -}; -struct fh_t { - u_int8_t element_id; - u_int8_t length; - u_int16_t dwell_time; - u_int8_t hop_set; - u_int8_t hop_pattern; - u_int8_t hop_index; -}; - -struct ds_t { - u_int8_t element_id; - u_int8_t length; - u_int8_t channel; -}; - -struct cf_t { - u_int8_t element_id; - u_int8_t length; - u_int8_t count; - u_int8_t period; - u_int16_t max_duration; - u_int16_t dur_remaing; -}; - -struct tim_t { - u_int8_t element_id; - u_int8_t length; - u_int8_t count; - u_int8_t period; - u_int8_t bitmap_control; - u_int8_t bitmap[251]; -}; - -#define E_SSID 0 -#define E_RATES 1 -#define E_FH 2 -#define E_DS 3 -#define E_CF 4 -#define E_TIM 5 -#define E_IBSS 6 -/* reserved 7 */ -/* reserved 8 */ -/* reserved 9 */ -/* reserved 10 */ -/* reserved 11 */ -/* reserved 12 */ -/* reserved 13 */ -/* reserved 14 */ -/* reserved 15 */ -/* reserved 16 */ - -#define E_CHALLENGE 16 -/* reserved 17 */ -/* reserved 18 */ -/* reserved 19 */ -/* reserved 16 */ -/* reserved 16 */ - - -struct mgmt_body_t { - u_int8_t timestamp[8]; - u_int16_t beacon_interval; - u_int16_t listen_interval; - u_int16_t status_code; - u_int16_t aid; - u_char ap[6]; - u_int16_t reason_code; - u_int16_t auth_alg; - u_int16_t auth_trans_seq_num; - struct challenge_t challenge; - u_int16_t capability_info; - struct ssid_t ssid; - struct rates_t rates; - struct ds_t ds; - struct cf_t cf; - struct fh_t fh; - struct tim_t tim; -}; - -struct ctrl_rts_t { - u_int16_t fc; - u_int16_t duration; - u_int8_t ra[6]; - u_int8_t ta[6]; - u_int8_t fcs[4]; -}; - -#define CTRL_RTS_HDRLEN (IEEE802_11_FC_LEN+IEEE802_11_DUR_LEN+\ - IEEE802_11_RA_LEN+IEEE802_11_TA_LEN) - -struct ctrl_cts_t { - u_int16_t fc; - u_int16_t duration; - u_int8_t ra[6]; - u_int8_t fcs[4]; -}; - -#define CTRL_CTS_HDRLEN (IEEE802_11_FC_LEN+IEEE802_11_DUR_LEN+IEEE802_11_RA_LEN) - -struct ctrl_ack_t { - u_int16_t fc; - u_int16_t duration; - u_int8_t ra[6]; - u_int8_t fcs[4]; -}; - -#define CTRL_ACK_HDRLEN (IEEE802_11_FC_LEN+IEEE802_11_DUR_LEN+IEEE802_11_RA_LEN) - -struct ctrl_ps_poll_t { - u_int16_t fc; - u_int16_t aid; - u_int8_t bssid[6]; - u_int8_t ta[6]; - u_int8_t fcs[4]; -}; - -#define CTRL_PS_POLL_HDRLEN (IEEE802_11_FC_LEN+IEEE802_11_AID_LEN+\ - IEEE802_11_BSSID_LEN+IEEE802_11_TA_LEN) - -struct ctrl_end_t { - u_int16_t fc; - u_int16_t duration; - u_int8_t ra[6]; - u_int8_t bssid[6]; - u_int8_t fcs[4]; -}; - -#define CTRL_END_HDRLEN (IEEE802_11_FC_LEN+IEEE802_11_DUR_LEN+\ - IEEE802_11_RA_LEN+IEEE802_11_BSSID_LEN) - -struct ctrl_end_ack_t { - u_int16_t fc; - u_int16_t duration; - u_int8_t ra[6]; - u_int8_t bssid[6]; - u_int8_t fcs[4]; -}; - -#define CTRL_END_ACK_HDRLEN (IEEE802_11_FC_LEN+IEEE802_11_DUR_LEN+\ - IEEE802_11_RA_LEN+IEEE802_11_BSSID_LEN) - -#define IV_IV(iv) ((iv) & 0xFFFFFF) -#define IV_PAD(iv) (((iv) >> 24) & 0x3F) -#define IV_KEYID(iv) (((iv) >> 30) & 0x03) diff --git a/contrib/tcpdump/ieee802_11_radio.h b/contrib/tcpdump/ieee802_11_radio.h deleted file mode 100644 index c56be0183fc1d..0000000000000 --- a/contrib/tcpdump/ieee802_11_radio.h +++ /dev/null @@ -1,201 +0,0 @@ -/* $FreeBSD$ */ -/* $NetBSD: ieee80211_radiotap.h,v 1.3 2003/11/16 09:02:42 dyoung Exp $ */ -/* $Header: /tcpdump/master/tcpdump/ieee802_11_radio.h,v 1.1 2004/09/23 21:33:10 dyoung Exp $ */ - -/*- - * Copyright (c) 2003, 2004 David Young. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of David Young may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY DAVID YOUNG ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DAVID - * YOUNG BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - */ -#ifndef _NET_IF_IEEE80211RADIOTAP_H_ -#define _NET_IF_IEEE80211RADIOTAP_H_ - -/* A generic radio capture format is desirable. There is one for - * Linux, but it is neither rigidly defined (there were not even - * units given for some fields) nor easily extensible. - * - * I suggest the following extensible radio capture format. It is - * based on a bitmap indicating which fields are present. - * - * I am trying to describe precisely what the application programmer - * should expect in the following, and for that reason I tell the - * units and origin of each measurement (where it applies), or else I - * use sufficiently weaselly language ("is a monotonically nondecreasing - * function of...") that I cannot set false expectations for lawyerly - * readers. - */ -#ifdef _KERNEL -#ifndef DLT_IEEE802_11_RADIO -#define DLT_IEEE802_11_RADIO 127 /* 802.11 plus WLAN header */ -#endif -#endif /* _KERNEL */ - -/* The radio capture header precedes the 802.11 header. */ -struct ieee80211_radiotap_header { - u_int8_t it_version; /* Version 0. Only increases - * for drastic changes, - * introduction of compatible - * new fields does not count. - */ - u_int8_t it_pad; - u_int16_t it_len; /* length of the whole - * header in bytes, including - * it_version, it_pad, - * it_len, and data fields. - */ - u_int32_t it_present; /* A bitmap telling which - * fields are present. Set bit 31 - * (0x80000000) to extend the - * bitmap by another 32 bits. - * Additional extensions are made - * by setting bit 31. - */ -} __attribute__((__packed__)); - -/* Name Data type Units - * ---- --------- ----- - * - * IEEE80211_RADIOTAP_TSFT u_int64_t microseconds - * - * Value in microseconds of the MAC's 64-bit 802.11 Time - * Synchronization Function timer when the first bit of the - * MPDU arrived at the MAC. For received frames, only. - * - * IEEE80211_RADIOTAP_CHANNEL 2 x u_int16_t MHz, bitmap - * - * Tx/Rx frequency in MHz, followed by flags (see below). - * - * IEEE80211_RADIOTAP_FHSS u_int16_t see below - * - * For frequency-hopping radios, the hop set (first byte) - * and pattern (second byte). - * - * IEEE80211_RADIOTAP_RATE u_int8_t 500kb/s - * - * Tx/Rx data rate - * - * IEEE80211_RADIOTAP_DBM_ANTSIGNAL int8_t decibels from - * one milliwatt (dBm) - * - * RF signal power at the antenna, decibel difference from - * one milliwatt. - * - * IEEE80211_RADIOTAP_DBM_ANTNOISE int8_t decibels from - * one milliwatt (dBm) - * - * RF noise power at the antenna, decibel difference from one - * milliwatt. - * - * IEEE80211_RADIOTAP_DB_ANTSIGNAL u_int8_t decibel (dB) - * - * RF signal power at the antenna, decibel difference from an - * arbitrary, fixed reference. - * - * IEEE80211_RADIOTAP_DB_ANTNOISE u_int8_t decibel (dB) - * - * RF noise power at the antenna, decibel difference from an - * arbitrary, fixed reference point. - * - * IEEE80211_RADIOTAP_BARKER_CODE_LOCK u_int16_t unitless - * - * Quality of Barker code lock. Unitless. Monotonically - * nondecreasing with "better" lock strength. Called "Signal - * Quality" in datasheets. (Is there a standard way to measure - * this?) - * - * IEEE80211_RADIOTAP_TX_ATTENUATION u_int16_t unitless - * - * Transmit power expressed as unitless distance from max - * power set at factory calibration. 0 is max power. - * Monotonically nondecreasing with lower power levels. - * - * IEEE80211_RADIOTAP_DB_TX_ATTENUATION u_int16_t decibels (dB) - * - * Transmit power expressed as decibel distance from max power - * set at factory calibration. 0 is max power. Monotonically - * nondecreasing with lower power levels. - * - * IEEE80211_RADIOTAP_DBM_TX_POWER int8_t decibels from - * one milliwatt (dBm) - * - * Transmit power expressed as dBm (decibels from a 1 milliwatt - * reference). This is the absolute power level measured at - * the antenna port. - * - * IEEE80211_RADIOTAP_FLAGS u_int8_t bitmap - * - * Properties of transmitted and received frames. See flags - * defined below. - * - * IEEE80211_RADIOTAP_ANTENNA u_int8_t antenna index - * - * Unitless indication of the Rx/Tx antenna for this packet. - * The first antenna is antenna 0. - */ -enum ieee80211_radiotap_type { - IEEE80211_RADIOTAP_TSFT = 0, - IEEE80211_RADIOTAP_FLAGS = 1, - IEEE80211_RADIOTAP_RATE = 2, - IEEE80211_RADIOTAP_CHANNEL = 3, - IEEE80211_RADIOTAP_FHSS = 4, - IEEE80211_RADIOTAP_DBM_ANTSIGNAL = 5, - IEEE80211_RADIOTAP_DBM_ANTNOISE = 6, - IEEE80211_RADIOTAP_LOCK_QUALITY = 7, - IEEE80211_RADIOTAP_TX_ATTENUATION = 8, - IEEE80211_RADIOTAP_DB_TX_ATTENUATION = 9, - IEEE80211_RADIOTAP_DBM_TX_POWER = 10, - IEEE80211_RADIOTAP_ANTENNA = 11, - IEEE80211_RADIOTAP_DB_ANTSIGNAL = 12, - IEEE80211_RADIOTAP_DB_ANTNOISE = 13, - IEEE80211_RADIOTAP_EXT = 31 -}; - -#ifndef _KERNEL -/* Channel flags. */ -#define IEEE80211_CHAN_TURBO 0x0010 /* Turbo channel */ -#define IEEE80211_CHAN_CCK 0x0020 /* CCK channel */ -#define IEEE80211_CHAN_OFDM 0x0040 /* OFDM channel */ -#define IEEE80211_CHAN_2GHZ 0x0080 /* 2 GHz spectrum channel. */ -#define IEEE80211_CHAN_5GHZ 0x0100 /* 5 GHz spectrum channel */ -#define IEEE80211_CHAN_PASSIVE 0x0200 /* Only passive scan allowed */ -#endif /* !_KERNEL */ - -/* For IEEE80211_RADIOTAP_FLAGS */ -#define IEEE80211_RADIOTAP_F_CFP 0x01 /* sent/received - * during CFP - */ -#define IEEE80211_RADIOTAP_F_SHORTPRE 0x02 /* sent/received - * with short - * preamble - */ -#define IEEE80211_RADIOTAP_F_WEP 0x04 /* sent/received - * with WEP encryption - */ -#define IEEE80211_RADIOTAP_F_FRAG 0x08 /* sent/received - * with fragmentation - */ - -#endif /* _NET_IF_IEEE80211RADIOTAP_H_ */ diff --git a/contrib/tcpdump/igrp.h b/contrib/tcpdump/igrp.h deleted file mode 100644 index 78876d3d84286..0000000000000 --- a/contrib/tcpdump/igrp.h +++ /dev/null @@ -1,33 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/igrp.h,v 1.6 2002/12/11 07:13:52 guy Exp $ (LBL) */ -/* Cisco IGRP definitions */ - -/* IGRP Header */ - -struct igrphdr { - u_int8_t ig_vop; /* protocol version number / opcode */ -#define IGRP_V(x) (((x) & 0xf0) >> 4) -#define IGRP_OP(x) ((x) & 0x0f) - u_int8_t ig_ed; /* edition number */ - u_int16_t ig_as; /* autonomous system number */ - u_int16_t ig_ni; /* number of subnet in local net */ - u_int16_t ig_ns; /* number of networks in AS */ - u_int16_t ig_nx; /* number of networks ouside AS */ - u_int16_t ig_sum; /* checksum of IGRP header & data */ -}; - -#define IGRP_UPDATE 1 -#define IGRP_REQUEST 2 - -/* IGRP routing entry */ - -struct igrprte { - u_int8_t igr_net[3]; /* 3 significant octets of IP address */ - u_int8_t igr_dly[3]; /* delay in tens of microseconds */ - u_int8_t igr_bw[3]; /* bandwidth in units of 1 kb/s */ - u_int8_t igr_mtu[2]; /* MTU in octets */ - u_int8_t igr_rel; /* percent packets successfully tx/rx */ - u_int8_t igr_ld; /* percent of channel occupied */ - u_int8_t igr_hct; /* hop count */ -}; - -#define IGRP_RTE_SIZE 14 /* don't believe sizeof ! */ diff --git a/contrib/tcpdump/install-sh b/contrib/tcpdump/install-sh deleted file mode 100755 index ebc66913e9401..0000000000000 --- a/contrib/tcpdump/install-sh +++ /dev/null @@ -1,250 +0,0 @@ -#! /bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5 (mit/util/scripts/install.sh). -# -# Copyright 1991 by the Massachusetts Institute of Technology -# -# Permission to use, copy, modify, distribute, and sell this software and its -# documentation for any purpose is hereby granted without fee, provided that -# the above copyright notice appear in all copies and that both that -# copyright notice and this permission notice appear in supporting -# documentation, and that the name of M.I.T. not be used in advertising or -# publicity pertaining to distribution of the software without specific, -# written prior permission. M.I.T. makes no representations about the -# suitability of this software for any purpose. It is provided "as is" -# without express or implied warranty. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - true -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - else - instcmd=mkdir - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f $src -o -d $src ] - then - true - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - true - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d $dst ] - then - dst="$dst"/`basename $src` - else - true - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' -' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - true - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - true - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 diff --git a/contrib/tcpdump/interface.h b/contrib/tcpdump/interface.h deleted file mode 100644 index dcbd9b29d4750..0000000000000 --- a/contrib/tcpdump/interface.h +++ /dev/null @@ -1,365 +0,0 @@ -/* - * Copyright (c) 1988-2002 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * @(#) $Header: /tcpdump/master/tcpdump/interface.h,v 1.244.2.18 2005/09/29 07:46:45 hannes Exp $ (LBL) - */ - -#ifndef tcpdump_interface_h -#define tcpdump_interface_h - -#ifdef HAVE_OS_PROTO_H -#include "os-proto.h" -#endif - -#ifndef HAVE___ATTRIBUTE__ -#define __attribute__(x) -#endif - -/* snprintf et al */ - -#include <stdarg.h> - -#if HAVE_STDINT_H -#include <stdint.h> -#endif - -#if !defined(HAVE_SNPRINTF) -int snprintf(char *, size_t, const char *, ...) - __attribute__((format(printf, 3, 4))); -#endif - -#if !defined(HAVE_VSNPRINTF) -int vsnprintf(char *, size_t, const char *, va_list) - __attribute__((format(printf, 3, 0))); -#endif - -#ifndef HAVE_STRLCAT -extern size_t strlcat(char *, const char *, size_t); -#endif -#ifndef HAVE_STRLCPY -extern size_t strlcpy(char *, const char *, size_t); -#endif - -#ifndef HAVE_STRDUP -extern char *strdup(const char *); -#endif - -#ifndef HAVE_STRSEP -extern char *strsep(char **, const char *); -#endif - -#define PT_VAT 1 /* Visual Audio Tool */ -#define PT_WB 2 /* distributed White Board */ -#define PT_RPC 3 /* Remote Procedure Call */ -#define PT_RTP 4 /* Real-Time Applications protocol */ -#define PT_RTCP 5 /* Real-Time Applications control protocol */ -#define PT_SNMP 6 /* Simple Network Management Protocol */ -#define PT_CNFP 7 /* Cisco NetFlow protocol */ -#define PT_TFTP 8 /* trivial file transfer protocol */ -#define PT_AODV 9 /* Ad-hoc On-demand Distance Vector Protocol */ - -#ifndef min -#define min(a,b) ((a)>(b)?(b):(a)) -#endif -#ifndef max -#define max(a,b) ((b)>(a)?(b):(a)) -#endif - -/* - * The default snapshot length. This value allows most printers to print - * useful information while keeping the amount of unwanted data down. - */ -#ifndef INET6 -#define DEFAULT_SNAPLEN 68 /* ether + IPv4 + TCP + 14 */ -#else -#define DEFAULT_SNAPLEN 96 /* ether + IPv6 + TCP + 22 */ -#endif - -#ifndef BIG_ENDIAN -#define BIG_ENDIAN 4321 -#define LITTLE_ENDIAN 1234 -#endif - -#define ESRC(ep) ((ep)->ether_shost) -#define EDST(ep) ((ep)->ether_dhost) - -#ifndef NTOHL -#define NTOHL(x) (x) = ntohl(x) -#define NTOHS(x) (x) = ntohs(x) -#define HTONL(x) (x) = htonl(x) -#define HTONS(x) (x) = htons(x) -#endif -#endif - -extern char *program_name; /* used to generate self-identifying messages */ - -extern int32_t thiszone; /* seconds offset from gmt to local time */ - -/* - * True if "l" bytes of "var" were captured. - * - * The "snapend - (l) <= snapend" checks to make sure "l" isn't so large - * that "snapend - (l)" underflows. - * - * The check is for <= rather than < because "l" might be 0. - */ -#define TTEST2(var, l) (snapend - (l) <= snapend && \ - (const u_char *)&(var) <= snapend - (l)) - -/* True if "var" was captured */ -#define TTEST(var) TTEST2(var, sizeof(var)) - -/* Bail if "l" bytes of "var" were not captured */ -#define TCHECK2(var, l) if (!TTEST2(var, l)) goto trunc - -/* Bail if "var" was not captured */ -#define TCHECK(var) TCHECK2(var, sizeof(var)) - -extern void ts_print(const struct timeval *); -extern void relts_print(int); - -extern int fn_print(const u_char *, const u_char *); -extern int fn_printn(const u_char *, u_int, const u_char *); -extern int fn_printzp(const u_char *, u_int, const u_char *); -extern int mask2plen(u_int32_t); -extern const char *tok2strary_internal(const char **, int, const char *, int); -#define tok2strary(a,f,i) tok2strary_internal(a, sizeof(a)/sizeof(a[0]),f,i) - -extern const char *dnaddr_string(u_short); - -extern void error(const char *, ...) - __attribute__((noreturn, format (printf, 1, 2))); -extern void warning(const char *, ...) __attribute__ ((format (printf, 1, 2))); - -extern char *read_infile(char *); -extern char *copy_argv(char **); - -extern void safeputchar(int); -extern void safeputs(const char *); - -extern const char *isonsap_string(const u_char *, register u_int); -extern const char *protoid_string(const u_char *); -extern const char *ipxsap_string(u_short); -extern const char *dnname_string(u_short); -extern const char *dnnum_string(u_short); - -/* The printer routines. */ - -#include <pcap.h> - -extern int print_unknown_data(const u_char *, const char *,int); -extern void ascii_print(const u_char *, u_int); -extern void hex_and_ascii_print_with_offset(const char *, const u_char *, - u_int, u_int); -extern void hex_and_ascii_print(const char *, const u_char *, u_int); -extern void hex_print_with_offset(const char *, const u_char *, u_int, u_int); -extern void hex_print(const char *, const u_char *, u_int); -extern void telnet_print(const u_char *, u_int); -extern int ether_encap_print(u_short, const u_char *, u_int, u_int, u_short *); -extern int llc_print(const u_char *, u_int, u_int, const u_char *, - const u_char *, u_short *); -extern int snap_print(const u_char *, u_int, u_int, u_short *, u_int); -extern void aarp_print(const u_char *, u_int); -extern void aodv_print(const u_char *, u_int, int); -extern void atalk_print(const u_char *, u_int); -extern void atm_print(u_int, u_int, u_int, const u_char *, u_int, u_int); -extern u_int atm_if_print(const struct pcap_pkthdr *, const u_char *); -extern u_int sunatm_if_print(const struct pcap_pkthdr *, const u_char *); -extern int oam_print(const u_char *, u_int, u_int); -extern void bootp_print(const u_char *, u_int); -extern void bgp_print(const u_char *, int); -extern void beep_print(const u_char *, u_int); -extern void cnfp_print(const u_char *, const u_char *); -extern void decnet_print(const u_char *, u_int, u_int); -extern void default_print(const u_char *, u_int); -extern void dvmrp_print(const u_char *, u_int); -extern void egp_print(const u_char *, u_int); -extern u_int enc_if_print(const struct pcap_pkthdr *, const u_char *); -extern u_int pflog_if_print(const struct pcap_pkthdr *, const u_char *); -extern u_int arcnet_if_print(const struct pcap_pkthdr *, const u_char *); -extern u_int arcnet_linux_if_print(const struct pcap_pkthdr *, const u_char *); -extern void ether_print(const u_char *, u_int, u_int); -extern u_int ether_if_print(const struct pcap_pkthdr *, const u_char *); -extern u_int token_print(const u_char *, u_int, u_int); -extern u_int token_if_print(const struct pcap_pkthdr *, const u_char *); -extern void fddi_print(const u_char *, u_int, u_int); -extern u_int fddi_if_print(const struct pcap_pkthdr *, const u_char *); -extern u_int fr_if_print(const struct pcap_pkthdr *, const u_char *); -extern u_int fr_print(register const u_char *, u_int); -extern u_int mfr_print(register const u_char *, u_int); -extern u_int ieee802_11_if_print(const struct pcap_pkthdr *, const u_char *); -extern u_int ieee802_11_radio_if_print(const struct pcap_pkthdr *, - const u_char *); -extern u_int ap1394_if_print(const struct pcap_pkthdr *, const u_char *); -extern void gre_print(const u_char *, u_int); -extern void icmp_print(const u_char *, u_int, const u_char *, int); -extern void igmp_print(const u_char *, u_int); -extern void igrp_print(const u_char *, u_int, const u_char *); -extern void ipN_print(const u_char *, u_int); -extern u_int ipfc_if_print(const struct pcap_pkthdr *, const u_char *); -extern void ipx_print(const u_char *, u_int); -extern void isoclns_print(const u_char *, u_int, u_int); -extern void krb_print(const u_char *); -extern u_int llap_print(const u_char *, u_int); -extern u_int ltalk_if_print(const struct pcap_pkthdr *, const u_char *); -extern void msdp_print(const unsigned char *, u_int); -extern void nfsreply_print(const u_char *, u_int, const u_char *); -extern void nfsreq_print(const u_char *, u_int, const u_char *); -extern void ns_print(const u_char *, u_int, int); -extern void ntp_print(const u_char *, u_int); -extern u_int null_if_print(const struct pcap_pkthdr *, const u_char *); -extern void ospf_print(const u_char *, u_int, const u_char *); -extern void pimv1_print(const u_char *, u_int); -extern void cisco_autorp_print(const u_char *, u_int); -extern void rsvp_print(const u_char *, u_int); -extern void ldp_print(const u_char *, u_int); -extern void lmp_print(const u_char *, u_int); -extern void lspping_print(const u_char *, u_int); -extern void eigrp_print(const u_char *, u_int); -extern void mobile_print(const u_char *, u_int); -extern void pim_print(const u_char *, u_int); -extern u_int pppoe_print(const u_char *, u_int); -extern u_int ppp_print(register const u_char *, u_int); -extern u_int ppp_if_print(const struct pcap_pkthdr *, const u_char *); -extern u_int ppp_hdlc_if_print(const struct pcap_pkthdr *, const u_char *); -extern u_int ppp_bsdos_if_print(const struct pcap_pkthdr *, const u_char *); -extern u_int pppoe_if_print(const struct pcap_pkthdr *, const u_char *); -extern u_int prism_if_print(const struct pcap_pkthdr *, const u_char *); -extern void q933_print(const u_char *, u_int); -extern int vjc_print(register const char *, u_short); -extern u_int raw_if_print(const struct pcap_pkthdr *, const u_char *); -extern void rip_print(const u_char *, u_int); -extern u_int sl_if_print(const struct pcap_pkthdr *, const u_char *); -extern void lane_print(const u_char *, u_int, u_int); -extern u_int lane_if_print(const struct pcap_pkthdr *, const u_char *); -extern u_int cip_if_print(const struct pcap_pkthdr *, const u_char *); -extern u_int sl_bsdos_if_print(const struct pcap_pkthdr *, const u_char *); -extern u_int chdlc_if_print(const struct pcap_pkthdr *, const u_char *); -extern u_int chdlc_print(register const u_char *, u_int); -extern u_int juniper_atm1_print(const struct pcap_pkthdr *, const u_char *); -extern u_int juniper_atm2_print(const struct pcap_pkthdr *, const u_char *); -extern u_int juniper_mfr_print(const struct pcap_pkthdr *, register const u_char *); -extern u_int juniper_mlfr_print(const struct pcap_pkthdr *, const u_char *); -extern u_int juniper_mlppp_print(const struct pcap_pkthdr *, const u_char *); -extern u_int juniper_pppoe_print(const struct pcap_pkthdr *, const u_char *); -extern u_int juniper_pppoe_atm_print(const struct pcap_pkthdr *, const u_char *); -extern u_int juniper_ggsn_print(const struct pcap_pkthdr *, const u_char *); -extern u_int juniper_es_print(const struct pcap_pkthdr *, const u_char *); -extern u_int juniper_monitor_print(const struct pcap_pkthdr *, const u_char *); -extern u_int juniper_services_print(const struct pcap_pkthdr *, const u_char *); -extern u_int juniper_ether_print(const struct pcap_pkthdr *, const u_char *); -extern u_int juniper_ppp_print(const struct pcap_pkthdr *, const u_char *); -extern u_int juniper_frelay_print(const struct pcap_pkthdr *, const u_char *); -extern u_int juniper_chdlc_print(const struct pcap_pkthdr *, const u_char *); -extern u_int sll_if_print(const struct pcap_pkthdr *, const u_char *); -extern void snmp_print(const u_char *, u_int); -extern void sunrpcrequest_print(const u_char *, u_int, const u_char *); -extern u_int symantec_if_print(const struct pcap_pkthdr *, const u_char *); -extern void tcp_print(const u_char *, u_int, const u_char *, int); -extern void tftp_print(const u_char *, u_int); -extern void timed_print(const u_char *); -extern void udp_print(const u_char *, u_int, const u_char *, int); -extern void wb_print(const void *, u_int); -extern int ah_print(register const u_char *); -extern int ipcomp_print(register const u_char *, int *); -extern void rx_print(register const u_char *, int, int, int, u_char *); -extern void netbeui_print(u_short, const u_char *, int); -extern void ipx_netbios_print(const u_char *, u_int); -extern void nbt_tcp_print(const u_char *, int); -extern void nbt_udp137_print(const u_char *, int); -extern void nbt_udp138_print(const u_char *, int); -extern char *smb_errstr(int, int); -extern const char *nt_errstr(u_int32_t); -extern void print_data(const unsigned char *, int); -extern void l2tp_print(const u_char *, u_int); -extern void vrrp_print(const u_char *, u_int, int); -extern void slow_print(const u_char *, u_int); -extern void pgm_print(const u_char *, u_int, const u_char *); -extern void cdp_print(const u_char *, u_int, u_int); -extern void stp_print(const u_char *, u_int); -extern void radius_print(const u_char *, u_int); -extern void lwres_print(const u_char *, u_int); -extern void pptp_print(const u_char *); -extern void dccp_print(const u_char *, const u_char *, u_int); -extern void sctp_print(const u_char *, const u_char *, u_int); -extern void mpls_print(const u_char *, u_int); -extern void mpls_lsp_ping_print(const u_char *, u_int); -extern void zephyr_print(const u_char *, int); -extern void hsrp_print(const u_char *, u_int); -extern void bfd_print(const u_char *, u_int, u_int); -extern void sip_print(const u_char *, u_int); -extern void syslog_print(const u_char *, u_int); - -#ifdef INET6 -extern void ip6_print(const u_char *, u_int); -extern void ip6_opt_print(const u_char *, int); -extern int hbhopt_print(const u_char *); -extern int dstopt_print(const u_char *); -extern int frag6_print(const u_char *, const u_char *); -extern int mobility_print(const u_char *, const u_char *); -extern void icmp6_print(const u_char *, u_int, const u_char *, int); -extern void ripng_print(const u_char *, unsigned int); -extern int rt6_print(const u_char *, const u_char *); -extern void ospf6_print(const u_char *, u_int); -extern void dhcp6_print(const u_char *, u_int); -#endif /*INET6*/ -extern u_short in_cksum(const u_short *, register u_int, int); -extern u_int16_t in_cksum_shouldbe(u_int16_t, u_int16_t); - -#ifndef HAVE_BPF_DUMP -struct bpf_program; - -extern void bpf_dump(struct bpf_program *, int); - -#endif - -#include "netdissect.h" - -/* forward compatibility */ - -extern netdissect_options *gndo; - -#define eflag gndo->ndo_eflag -#define fflag gndo->ndo_fflag -#define nflag gndo->ndo_nflag -#define Nflag gndo->ndo_Nflag -#define Oflag gndo->ndo_Oflag -#define pflag gndo->ndo_pflag -#define qflag gndo->ndo_qflag -#define Rflag gndo->ndo_Rflag -#define sflag gndo->ndo_sflag -#define Sflag gndo->ndo_Sflag -#define tflag gndo->ndo_tflag -#define Uflag gndo->ndo_Uflag -#define uflag gndo->ndo_uflag -#define vflag gndo->ndo_vflag -#define xflag gndo->ndo_xflag -#define Xflag gndo->ndo_Xflag -#define Cflag gndo->ndo_Cflag -#define Aflag gndo->ndo_Aflag -#define suppress_default_print gndo->ndo_suppress_default_print -#define packettype gndo->ndo_packettype -#define tcpmd5secret gndo->ndo_tcpmd5secret -#define Wflag gndo->ndo_Wflag -#define WflagChars gndo->ndo_WflagChars -#define Cflag_count gndo->ndo_Cflag_count -#define snaplen gndo->ndo_snaplen -#define snapend gndo->ndo_snapend - diff --git a/contrib/tcpdump/ip.h b/contrib/tcpdump/ip.h deleted file mode 100644 index 6dbd9def03cac..0000000000000 --- a/contrib/tcpdump/ip.h +++ /dev/null @@ -1,163 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/ip.h,v 1.11 2004/09/27 21:13:10 hannes Exp $ (LBL) */ -/* - * Copyright (c) 1982, 1986, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)ip.h 8.2 (Berkeley) 6/1/94 - */ - -/* - * Definitions for internet protocol version 4. - * Per RFC 791, September 1981. - */ -#define IPVERSION 4 - -/* - * Structure of an internet header, naked of options. - * - * We declare ip_len and ip_off to be short, rather than u_short - * pragmatically since otherwise unsigned comparisons can result - * against negative integers quite easily, and fail in subtle ways. - */ -struct ip { - u_int8_t ip_vhl; /* header length, version */ -#define IP_V(ip) (((ip)->ip_vhl & 0xf0) >> 4) -#define IP_HL(ip) ((ip)->ip_vhl & 0x0f) - u_int8_t ip_tos; /* type of service */ - u_int16_t ip_len; /* total length */ - u_int16_t ip_id; /* identification */ - u_int16_t ip_off; /* fragment offset field */ -#define IP_DF 0x4000 /* dont fragment flag */ -#define IP_MF 0x2000 /* more fragments flag */ -#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ - u_int8_t ip_ttl; /* time to live */ - u_int8_t ip_p; /* protocol */ - u_int16_t ip_sum; /* checksum */ - struct in_addr ip_src,ip_dst; /* source and dest address */ -}; - -#define IP_MAXPACKET 65535 /* maximum packet size */ - -/* - * Definitions for IP type of service (ip_tos) - */ -#define IPTOS_LOWDELAY 0x10 -#define IPTOS_THROUGHPUT 0x08 -#define IPTOS_RELIABILITY 0x04 - -/* - * Definitions for IP precedence (also in ip_tos) (hopefully unused) - */ -#define IPTOS_PREC_NETCONTROL 0xe0 -#define IPTOS_PREC_INTERNETCONTROL 0xc0 -#define IPTOS_PREC_CRITIC_ECP 0xa0 -#define IPTOS_PREC_FLASHOVERRIDE 0x80 -#define IPTOS_PREC_FLASH 0x60 -#define IPTOS_PREC_IMMEDIATE 0x40 -#define IPTOS_PREC_PRIORITY 0x20 -#define IPTOS_PREC_ROUTINE 0x00 - -/* - * Definitions for options. - */ -#define IPOPT_COPIED(o) ((o)&0x80) -#define IPOPT_CLASS(o) ((o)&0x60) -#define IPOPT_NUMBER(o) ((o)&0x1f) - -#define IPOPT_CONTROL 0x00 -#define IPOPT_RESERVED1 0x20 -#define IPOPT_DEBMEAS 0x40 -#define IPOPT_RESERVED2 0x60 - -#define IPOPT_EOL 0 /* end of option list */ -#define IPOPT_NOP 1 /* no operation */ - -#define IPOPT_RR 7 /* record packet route */ -#define IPOPT_TS 68 /* timestamp */ -#define IPOPT_SECURITY 130 /* provide s,c,h,tcc */ -#define IPOPT_LSRR 131 /* loose source route */ -#define IPOPT_SATID 136 /* satnet id */ -#define IPOPT_SSRR 137 /* strict source route */ -#define IPOPT_RA 148 /* router-alert, rfc2113 */ - -/* - * Offsets to fields in options other than EOL and NOP. - */ -#define IPOPT_OPTVAL 0 /* option ID */ -#define IPOPT_OLEN 1 /* option length */ -#define IPOPT_OFFSET 2 /* offset within option */ -#define IPOPT_MINOFF 4 /* min value of above */ - -/* - * Time stamp option structure. - */ -struct ip_timestamp { - u_int8_t ipt_code; /* IPOPT_TS */ - u_int8_t ipt_len; /* size of structure (variable) */ - u_int8_t ipt_ptr; /* index of current entry */ - u_int8_t ipt_oflwflg; /* flags, overflow counter */ -#define IPTS_OFLW(ip) (((ipt)->ipt_oflwflg & 0xf0) >> 4) -#define IPTS_FLG(ip) ((ipt)->ipt_oflwflg & 0x0f) - union ipt_timestamp { - u_int32_t ipt_time[1]; - struct ipt_ta { - struct in_addr ipt_addr; - u_int32_t ipt_time; - } ipt_ta[1]; - } ipt_timestamp; -}; - -/* flag bits for ipt_flg */ -#define IPOPT_TS_TSONLY 0 /* timestamps only */ -#define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */ -#define IPOPT_TS_PRESPEC 3 /* specified modules only */ - -/* bits for security (not byte swapped) */ -#define IPOPT_SECUR_UNCLASS 0x0000 -#define IPOPT_SECUR_CONFID 0xf135 -#define IPOPT_SECUR_EFTO 0x789a -#define IPOPT_SECUR_MMMM 0xbc4d -#define IPOPT_SECUR_RESTR 0xaf13 -#define IPOPT_SECUR_SECRET 0xd788 -#define IPOPT_SECUR_TOPSECRET 0x6bc5 - -/* - * Internet implementation parameters. - */ -#define MAXTTL 255 /* maximum time to live (seconds) */ -#define IPDEFTTL 64 /* default ttl, from RFC 1340 */ -#define IPFRAGTTL 60 /* time to live for frags, slowhz */ -#define IPTTLDEC 1 /* subtracted when forwarding */ - -#define IP_MSS 576 /* default maximum segment size */ - -/* in print-ip.c */ -extern u_int32_t ip_finddst(const struct ip *); diff --git a/contrib/tcpdump/ip6.h b/contrib/tcpdump/ip6.h deleted file mode 100644 index acf465c6b0825..0000000000000 --- a/contrib/tcpdump/ip6.h +++ /dev/null @@ -1,191 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/ip6.h,v 1.6.4.1 2005/04/20 10:04:37 guy Exp $ (LBL) */ -/* $NetBSD: ip6.h,v 1.9 2000/07/13 05:34:21 itojun Exp $ */ -/* $KAME: ip6.h,v 1.9 2000/07/02 21:01:32 itojun Exp $ */ - -/* - * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * Copyright (c) 1982, 1986, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)ip.h 8.1 (Berkeley) 6/10/93 - */ - -#ifndef _NETINET_IP6_H_ -#define _NETINET_IP6_H_ - -/* - * Definition for internet protocol version 6. - * RFC 2460 - */ - -struct ip6_hdr { - union { - struct ip6_hdrctl { - u_int32_t ip6_un1_flow; /* 20 bits of flow-ID */ - u_int16_t ip6_un1_plen; /* payload length */ - u_int8_t ip6_un1_nxt; /* next header */ - u_int8_t ip6_un1_hlim; /* hop limit */ - } ip6_un1; - u_int8_t ip6_un2_vfc; /* 4 bits version, top 4 bits class */ - } ip6_ctlun; - struct in6_addr ip6_src; /* source address */ - struct in6_addr ip6_dst; /* destination address */ -}; - -#define ip6_vfc ip6_ctlun.ip6_un2_vfc -#define ip6_flow ip6_ctlun.ip6_un1.ip6_un1_flow -#define ip6_plen ip6_ctlun.ip6_un1.ip6_un1_plen -#define ip6_nxt ip6_ctlun.ip6_un1.ip6_un1_nxt -#define ip6_hlim ip6_ctlun.ip6_un1.ip6_un1_hlim -#define ip6_hops ip6_ctlun.ip6_un1.ip6_un1_hlim - -/* in network endian */ -#define IPV6_FLOWINFO_MASK ((u_int32_t)htonl(0x0fffffff)) /* flow info (28 bits) */ -#define IPV6_FLOWLABEL_MASK ((u_int32_t)htonl(0x000fffff)) /* flow label (20 bits) */ -#if 1 -/* ECN bits proposed by Sally Floyd */ -#define IP6TOS_CE 0x01 /* congestion experienced */ -#define IP6TOS_ECT 0x02 /* ECN-capable transport */ -#endif - -/* - * Extension Headers - */ - -struct ip6_ext { - u_char ip6e_nxt; - u_char ip6e_len; -}; - -/* Hop-by-Hop options header */ -/* XXX should we pad it to force alignment on an 8-byte boundary? */ -struct ip6_hbh { - u_int8_t ip6h_nxt; /* next header */ - u_int8_t ip6h_len; /* length in units of 8 octets */ - /* followed by options */ -}; - -/* Destination options header */ -/* XXX should we pad it to force alignment on an 8-byte boundary? */ -struct ip6_dest { - u_int8_t ip6d_nxt; /* next header */ - u_int8_t ip6d_len; /* length in units of 8 octets */ - /* followed by options */ -}; - -/* Option types and related macros */ -#define IP6OPT_PAD1 0x00 /* 00 0 00000 */ -#define IP6OPT_PADN 0x01 /* 00 0 00001 */ -#define IP6OPT_JUMBO 0xC2 /* 11 0 00010 = 194 */ -#define IP6OPT_JUMBO_LEN 6 -#define IP6OPT_ROUTER_ALERT 0x05 /* 00 0 00101 */ - -#define IP6OPT_RTALERT_LEN 4 -#define IP6OPT_RTALERT_MLD 0 /* Datagram contains an MLD message */ -#define IP6OPT_RTALERT_RSVP 1 /* Datagram contains an RSVP message */ -#define IP6OPT_RTALERT_ACTNET 2 /* contains an Active Networks msg */ -#define IP6OPT_MINLEN 2 - -#define IP6OPT_BINDING_UPDATE 0xc6 /* 11 0 00110 */ -#define IP6OPT_BINDING_ACK 0x07 /* 00 0 00111 */ -#define IP6OPT_BINDING_REQ 0x08 /* 00 0 01000 */ -#define IP6OPT_HOME_ADDRESS 0xc9 /* 11 0 01001 */ -#define IP6OPT_EID 0x8a /* 10 0 01010 */ - -#define IP6OPT_TYPE(o) ((o) & 0xC0) -#define IP6OPT_TYPE_SKIP 0x00 -#define IP6OPT_TYPE_DISCARD 0x40 -#define IP6OPT_TYPE_FORCEICMP 0x80 -#define IP6OPT_TYPE_ICMP 0xC0 - -#define IP6OPT_MUTABLE 0x20 - -/* Routing header */ -struct ip6_rthdr { - u_int8_t ip6r_nxt; /* next header */ - u_int8_t ip6r_len; /* length in units of 8 octets */ - u_int8_t ip6r_type; /* routing type */ - u_int8_t ip6r_segleft; /* segments left */ - /* followed by routing type specific data */ -}; - -/* Type 0 Routing header */ -struct ip6_rthdr0 { - u_int8_t ip6r0_nxt; /* next header */ - u_int8_t ip6r0_len; /* length in units of 8 octets */ - u_int8_t ip6r0_type; /* always zero */ - u_int8_t ip6r0_segleft; /* segments left */ - u_int8_t ip6r0_reserved; /* reserved field */ - u_int8_t ip6r0_slmap[3]; /* strict/loose bit map */ - struct in6_addr ip6r0_addr[1]; /* up to 23 addresses */ -}; - -/* Fragment header */ -struct ip6_frag { - u_int8_t ip6f_nxt; /* next header */ - u_int8_t ip6f_reserved; /* reserved field */ - u_int16_t ip6f_offlg; /* offset, reserved, and flag */ - u_int32_t ip6f_ident; /* identification */ -}; - -#define IP6F_OFF_MASK 0xfff8 /* mask out offset from ip6f_offlg */ -#define IP6F_RESERVED_MASK 0x0006 /* reserved bits in ip6f_offlg */ -#define IP6F_MORE_FRAG 0x0001 /* more-fragments flag */ - -#endif /* not _NETINET_IP6_H_ */ diff --git a/contrib/tcpdump/ipfc.h b/contrib/tcpdump/ipfc.h deleted file mode 100644 index f822d4af2e797..0000000000000 --- a/contrib/tcpdump/ipfc.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 1992, 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * @(#) $Header: /tcpdump/master/tcpdump/ipfc.h,v 1.4 2002/12/11 07:13:53 guy Exp $ (LBL) - */ - -struct ipfc_header { - u_char ipfc_dhost[8]; - u_char ipfc_shost[8]; -}; - -#define IPFC_HDRLEN 16 diff --git a/contrib/tcpdump/ipproto.c b/contrib/tcpdump/ipproto.c deleted file mode 100755 index 66ea3563ce8f1..0000000000000 --- a/contrib/tcpdump/ipproto.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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. - * - * Original code by Hannes Gredler (hannes@juniper.net) - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/ipproto.c,v 1.3.2.3 2005/09/20 06:05:37 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include "interface.h" -#include "ipproto.h" - -struct tok ipproto_values[] = { - { IPPROTO_HOPOPTS, "Options" }, - { IPPROTO_ICMP, "ICMP" }, - { IPPROTO_IGMP, "IGMP" }, - { IPPROTO_IPV4, "IPIP" }, - { IPPROTO_TCP, "TCP" }, - { IPPROTO_EGP, "EGP" }, - { IPPROTO_PIGP, "IGRP" }, - { IPPROTO_UDP, "UDP" }, - { IPPROTO_DCCP, "DCCP" }, - { IPPROTO_IPV6, "IPv6" }, - { IPPROTO_ROUTING, "Routing" }, - { IPPROTO_FRAGMENT, "Fragment" }, - { IPPROTO_RSVP, "RSVP" }, - { IPPROTO_GRE, "GRE" }, - { IPPROTO_ESP, "ESP" }, - { IPPROTO_AH, "AH" }, - { IPPROTO_MOBILE, "Mobile IP" }, - { IPPROTO_ICMPV6, "ICMPv6" }, - { IPPROTO_MOBILITY_OLD, "Mobile IP (old)" }, - { IPPROTO_EIGRP, "EIGRP" }, - { IPPROTO_OSPF, "OSPF" }, - { IPPROTO_PIM, "PIM" }, - { IPPROTO_IPCOMP, "Compressed IP" }, - { IPPROTO_VRRP, "VRRP" }, - { IPPROTO_PGM, "PGM" }, - { IPPROTO_SCTP, "SCTP" }, - { IPPROTO_MOBILITY, "Mobility" }, - { 0, NULL } -}; - diff --git a/contrib/tcpdump/ipproto.h b/contrib/tcpdump/ipproto.h deleted file mode 100644 index 1800db4580da2..0000000000000 --- a/contrib/tcpdump/ipproto.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (c) 1982, 1986, 1990, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#) $Header: /tcpdump/master/tcpdump/ipproto.h,v 1.4.2.2 2005/09/20 06:05:37 guy Exp $ (LBL) - * - * From: - * @(#)in.h 8.3 (Berkeley) 1/3/94 - * $FreeBSD$ - */ - -extern struct tok ipproto_values[]; - -#ifndef IPPROTO_IP -#define IPPROTO_IP 0 /* dummy for IP */ -#endif -#ifndef IPPROTO_HOPOPTS -#define IPPROTO_HOPOPTS 0 /* IPv6 hop-by-hop options */ -#endif -#ifndef IPPROTO_ICMP -#define IPPROTO_ICMP 1 /* control message protocol */ -#endif -#ifndef IPPROTO_IGMP -#define IPPROTO_IGMP 2 /* group mgmt protocol */ -#endif -#ifndef IPPROTO_IPV4 -#define IPPROTO_IPV4 4 -#endif -#ifndef IPPROTO_TCP -#define IPPROTO_TCP 6 /* tcp */ -#endif -#ifndef IPPROTO_EGP -#define IPPROTO_EGP 8 /* exterior gateway protocol */ -#endif -#ifndef IPPROTO_PIGP -#define IPPROTO_PIGP 9 -#endif -#ifndef IPPROTO_UDP -#define IPPROTO_UDP 17 /* user datagram protocol */ -#endif -#ifndef IPPROTO_DCCP -#define IPPROTO_DCCP 33 /* datagram congestion control protocol */ -#endif -#ifndef IPPROTO_IPV6 -#define IPPROTO_IPV6 41 -#endif -#ifndef IPPROTO_ROUTING -#define IPPROTO_ROUTING 43 /* IPv6 routing header */ -#endif -#ifndef IPPROTO_FRAGMENT -#define IPPROTO_FRAGMENT 44 /* IPv6 fragmentation header */ -#endif -#ifndef IPPROTO_RSVP -#define IPPROTO_RSVP 46 /* resource reservation */ -#endif -#ifndef IPPROTO_GRE -#define IPPROTO_GRE 47 /* General Routing Encap. */ -#endif -#ifndef IPPROTO_ESP -#define IPPROTO_ESP 50 /* SIPP Encap Sec. Payload */ -#endif -#ifndef IPPROTO_AH -#define IPPROTO_AH 51 /* SIPP Auth Header */ -#endif -#ifndef IPPROTO_MOBILE -#define IPPROTO_MOBILE 55 -#endif -#ifndef IPPROTO_ICMPV6 -#define IPPROTO_ICMPV6 58 /* ICMPv6 */ -#endif -#ifndef IPPROTO_NONE -#define IPPROTO_NONE 59 /* IPv6 no next header */ -#endif -#ifndef IPPROTO_DSTOPTS -#define IPPROTO_DSTOPTS 60 /* IPv6 destination options */ -#endif -#ifndef IPPROTO_MOBILITY_OLD -/* - * The current Protocol Numbers list says that the IP protocol number for - * mobility headers is 135; it cites draft-ietf-mobileip-ipv6-24, but - * that draft doesn't actually give a number. - * - * It appears that 62 used to be used, even though that's assigned to - * a protocol called CFTP; however, the only reference for CFTP is a - * Network Message from BBN back in 1982, so, for now, we support 62, - * aas well as 135, as a protocol number for mobility headers. - */ -#define IPPROTO_MOBILITY_OLD 62 -#endif -#ifndef IPPROTO_ND -#define IPPROTO_ND 77 /* Sun net disk proto (temp.) */ -#endif -#ifndef IPPROTO_EIGRP -#define IPPROTO_EIGRP 88 /* Cisco/GXS IGRP */ -#endif -#ifndef IPPROTO_OSPF -#define IPPROTO_OSPF 89 -#endif -#ifndef IPPROTO_PIM -#define IPPROTO_PIM 103 -#endif -#ifndef IPPROTO_IPCOMP -#define IPPROTO_IPCOMP 108 -#endif -#ifndef IPPROTO_VRRP -#define IPPROTO_VRRP 112 -#endif -#ifndef IPPROTO_PGM -#define IPPROTO_PGM 113 -#endif -#ifndef IPPROTO_SCTP -#define IPPROTO_SCTP 132 -#endif -#ifndef IPPROTO_MOBILITY -#define IPPROTO_MOBILITY 135 -#endif diff --git a/contrib/tcpdump/ipsec_doi.h b/contrib/tcpdump/ipsec_doi.h deleted file mode 100644 index 83d05ea54badc..0000000000000 --- a/contrib/tcpdump/ipsec_doi.h +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -/* YIPS @(#)$Id: ipsec_doi.h,v 1.7 2002/12/11 07:13:53 guy Exp $ */ - -/* refer to RFC 2407 */ - -#if !defined(_IPSEC_DOI_H_) -#define _IPSEC_DOI_H_ - -#define IPSEC_DOI 1 - -/* 4.2 IPSEC Situation Definition */ -#define IPSECDOI_SIT_IDENTITY_ONLY 0x00000001 -#define IPSECDOI_SIT_SECRECY 0x00000002 -#define IPSECDOI_SIT_INTEGRITY 0x00000004 - -/* 4.4.1 IPSEC Security Protocol Identifiers */ - /* 4.4.2 IPSEC ISAKMP Transform Values */ -#define IPSECDOI_PROTO_ISAKMP 1 -#define IPSECDOI_KEY_IKE 1 - -/* 4.4.1 IPSEC Security Protocol Identifiers */ -#define IPSECDOI_PROTO_IPSEC_AH 2 - /* 4.4.3 IPSEC AH Transform Values */ -#define IPSECDOI_AH_MD5 2 -#define IPSECDOI_AH_SHA 3 -#define IPSECDOI_AH_DES 4 -#define IPSECDOI_AH_SHA2_256 5 -#define IPSECDOI_AH_SHA2_384 6 -#define IPSECDOI_AH_SHA2_512 7 - -/* 4.4.1 IPSEC Security Protocol Identifiers */ -#define IPSECDOI_PROTO_IPSEC_ESP 3 - /* 4.4.4 IPSEC ESP Transform Identifiers */ -#define IPSECDOI_ESP_DES_IV64 1 -#define IPSECDOI_ESP_DES 2 -#define IPSECDOI_ESP_3DES 3 -#define IPSECDOI_ESP_RC5 4 -#define IPSECDOI_ESP_IDEA 5 -#define IPSECDOI_ESP_CAST 6 -#define IPSECDOI_ESP_BLOWFISH 7 -#define IPSECDOI_ESP_3IDEA 8 -#define IPSECDOI_ESP_DES_IV32 9 -#define IPSECDOI_ESP_RC4 10 -#define IPSECDOI_ESP_NULL 11 -#define IPSECDOI_ESP_RIJNDAEL 12 -#define IPSECDOI_ESP_AES 12 - -/* 4.4.1 IPSEC Security Protocol Identifiers */ -#define IPSECDOI_PROTO_IPCOMP 4 - /* 4.4.5 IPSEC IPCOMP Transform Identifiers */ -#define IPSECDOI_IPCOMP_OUI 1 -#define IPSECDOI_IPCOMP_DEFLATE 2 -#define IPSECDOI_IPCOMP_LZS 3 - -/* 4.5 IPSEC Security Association Attributes */ -#define IPSECDOI_ATTR_SA_LTYPE 1 /* B */ -#define IPSECDOI_ATTR_SA_LTYPE_DEFAULT 1 -#define IPSECDOI_ATTR_SA_LTYPE_SEC 1 -#define IPSECDOI_ATTR_SA_LTYPE_KB 2 -#define IPSECDOI_ATTR_SA_LDUR 2 /* V */ -#define IPSECDOI_ATTR_SA_LDUR_DEFAULT 28800 /* 8 hours */ -#define IPSECDOI_ATTR_GRP_DESC 3 /* B */ -#define IPSECDOI_ATTR_ENC_MODE 4 /* B */ - /* default value: host dependent */ -#define IPSECDOI_ATTR_ENC_MODE_TUNNEL 1 -#define IPSECDOI_ATTR_ENC_MODE_TRNS 2 -#define IPSECDOI_ATTR_AUTH 5 /* B */ - /* 0 means not to use authentication. */ -#define IPSECDOI_ATTR_AUTH_HMAC_MD5 1 -#define IPSECDOI_ATTR_AUTH_HMAC_SHA1 2 -#define IPSECDOI_ATTR_AUTH_DES_MAC 3 -#define IPSECDOI_ATTR_AUTH_KPDK 4 /*RFC-1826(Key/Pad/Data/Key)*/ - /* - * When negotiating ESP without authentication, the Auth - * Algorithm attribute MUST NOT be included in the proposal. - * When negotiating ESP without confidentiality, the Auth - * Algorithm attribute MUST be included in the proposal and - * the ESP transform ID must be ESP_NULL. - */ -#define IPSECDOI_ATTR_KEY_LENGTH 6 /* B */ -#define IPSECDOI_ATTR_KEY_ROUNDS 7 /* B */ -#define IPSECDOI_ATTR_COMP_DICT_SIZE 8 /* B */ -#define IPSECDOI_ATTR_COMP_PRIVALG 9 /* V */ - -/* 4.6.1 Security Association Payload */ -struct ipsecdoi_sa { - struct isakmp_gen h; - u_int32_t doi; /* Domain of Interpretation */ - u_int32_t sit; /* Situation */ -}; - -struct ipsecdoi_secrecy_h { - u_int16_t len; - u_int16_t reserved; -}; - -/* 4.6.2.1 Identification Type Values */ -struct ipsecdoi_id { - struct isakmp_gen h; - u_int8_t type; /* ID Type */ - u_int8_t proto_id; /* Protocol ID */ - u_int16_t port; /* Port */ - /* Identification Data */ -}; - -#define IPSECDOI_ID_IPV4_ADDR 1 -#define IPSECDOI_ID_FQDN 2 -#define IPSECDOI_ID_USER_FQDN 3 -#define IPSECDOI_ID_IPV4_ADDR_SUBNET 4 -#define IPSECDOI_ID_IPV6_ADDR 5 -#define IPSECDOI_ID_IPV6_ADDR_SUBNET 6 -#define IPSECDOI_ID_IPV4_ADDR_RANGE 7 -#define IPSECDOI_ID_IPV6_ADDR_RANGE 8 -#define IPSECDOI_ID_DER_ASN1_DN 9 -#define IPSECDOI_ID_DER_ASN1_GN 10 -#define IPSECDOI_ID_KEY_ID 11 - -/* 4.6.3 IPSEC DOI Notify Message Types */ -/* Notify Messages - Status Types */ -#define IPSECDOI_NTYPE_RESPONDER_LIFETIME 24576 -#define IPSECDOI_NTYPE_REPLAY_STATUS 24577 -#define IPSECDOI_NTYPE_INITIAL_CONTACT 24578 - -#endif /* !defined(_IPSEC_DOI_H_) */ diff --git a/contrib/tcpdump/ipx.h b/contrib/tcpdump/ipx.h deleted file mode 100644 index a8c1cd5115eba..0000000000000 --- a/contrib/tcpdump/ipx.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * IPX protocol formats - * - * @(#) $Header: /tcpdump/master/tcpdump/ipx.h,v 1.8 2002/12/11 07:13:54 guy Exp $ - */ - -/* well-known sockets */ -#define IPX_SKT_NCP 0x0451 -#define IPX_SKT_SAP 0x0452 -#define IPX_SKT_RIP 0x0453 -#define IPX_SKT_NETBIOS 0x0455 -#define IPX_SKT_DIAGNOSTICS 0x0456 -#define IPX_SKT_NWLINK_DGM 0x0553 /* NWLink datagram, may contain SMB */ -#define IPX_SKT_EIGRP 0x85be /* Cisco EIGRP over IPX */ - -/* IPX transport header */ -struct ipxHdr { - u_int16_t cksum; /* Checksum */ - u_int16_t length; /* Length, in bytes, including header */ - u_int8_t tCtl; /* Transport Control (i.e. hop count) */ - u_int8_t pType; /* Packet Type (i.e. level 2 protocol) */ - u_int16_t dstNet[2]; /* destination net */ - u_int8_t dstNode[6]; /* destination node */ - u_int16_t dstSkt; /* destination socket */ - u_int16_t srcNet[2]; /* source net */ - u_int8_t srcNode[6]; /* source node */ - u_int16_t srcSkt; /* source socket */ -}; - -#define ipxSize 30 - diff --git a/contrib/tcpdump/isakmp.h b/contrib/tcpdump/isakmp.h deleted file mode 100644 index 94fac401d48e9..0000000000000 --- a/contrib/tcpdump/isakmp.h +++ /dev/null @@ -1,378 +0,0 @@ -/* - * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -/* YIPS @(#)$Id: isakmp.h,v 1.10 2002/12/11 07:13:54 guy Exp $ */ - -/* refer to RFC 2408 */ - -/* must include <netinet/in.h> */ - -#if !defined(_ISAKMP_H_) -#define _ISAKMP_H_ - -typedef u_char cookie_t[8]; -typedef u_char msgid_t[4]; - -typedef struct { /* i_cookie + r_cookie */ - cookie_t i_ck; - cookie_t r_ck; -} isakmp_index; - -#define INITIATOR 1 -#define RESPONDER 2 - -#define PORT_ISAKMP 500 - -#define GENERATE 1 -#define VALIDATE 0 - -/* Phase of oakley definition */ -/* - 0000 0000 0000 0000 - | |||| |||| - | |||| ++++--> negosiation number in phase - | ++++-------> phase number - +---------------> expire ? - */ -#define ISAKMP_PH1 0x0010 -#define ISAKMP_PH2 0x0020 -#define ISAKMP_EXPIRED 0x0100 - -#define ISAKMP_NGP_0 0x0000 -#define ISAKMP_NGP_1 0x0001 -#define ISAKMP_NGP_2 0x0002 -#define ISAKMP_NGP_3 0x0003 -#define ISAKMP_NGP_4 0x0004 - -#define ISAKMP_PH1_N (ISAKMP_PH1 | ISAKMP_NGP_0) /* i.e. spawn */ -#define ISAKMP_PH1_1 (ISAKMP_PH1 | ISAKMP_NGP_1) -#define ISAKMP_PH1_2 (ISAKMP_PH1 | ISAKMP_NGP_2) -#define ISAKMP_PH1_3 (ISAKMP_PH1 | ISAKMP_NGP_3) -#define ISAKMP_PH2_N (ISAKMP_PH2 | ISAKMP_NGP_0) -#define ISAKMP_PH2_1 (ISAKMP_PH2 | ISAKMP_NGP_1) -#define ISAKMP_PH2_2 (ISAKMP_PH2 | ISAKMP_NGP_2) -#define ISAKMP_PH2_3 (ISAKMP_PH2 | ISAKMP_NGP_3) - -#define ISAKMP_TIMER_DEFAULT 10 /* seconds */ -#define ISAKMP_TRY_DEFAULT 3 /* times */ - -/* 3.1 ISAKMP Header Format - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - ! Initiator ! - ! Cookie ! - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - ! Responder ! - ! Cookie ! - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - ! Next Payload ! MjVer ! MnVer ! Exchange Type ! Flags ! - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - ! Message ID ! - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - ! Length ! - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -*/ -struct isakmp { - cookie_t i_ck; /* Initiator Cookie */ - cookie_t r_ck; /* Responder Cookie */ - u_int8_t np; /* Next Payload Type */ - u_int8_t vers; -#define ISAKMP_VERS_MAJOR 0xf0 -#define ISAKMP_VERS_MAJOR_SHIFT 4 -#define ISAKMP_VERS_MINOR 0x0f -#define ISAKMP_VERS_MINOR_SHIFT 0 - u_int8_t etype; /* Exchange Type */ - u_int8_t flags; /* Flags */ - msgid_t msgid; - u_int32_t len; /* Length */ -}; - -/* Next Payload Type */ -#define ISAKMP_NPTYPE_NONE 0 /* NONE*/ -#define ISAKMP_NPTYPE_SA 1 /* Security Association */ -#define ISAKMP_NPTYPE_P 2 /* Proposal */ -#define ISAKMP_NPTYPE_T 3 /* Transform */ -#define ISAKMP_NPTYPE_KE 4 /* Key Exchange */ -#define ISAKMP_NPTYPE_ID 5 /* Identification */ -#define ISAKMP_NPTYPE_CERT 6 /* Certificate */ -#define ISAKMP_NPTYPE_CR 7 /* Certificate Request */ -#define ISAKMP_NPTYPE_HASH 8 /* Hash */ -#define ISAKMP_NPTYPE_SIG 9 /* Signature */ -#define ISAKMP_NPTYPE_NONCE 10 /* Nonce */ -#define ISAKMP_NPTYPE_N 11 /* Notification */ -#define ISAKMP_NPTYPE_D 12 /* Delete */ -#define ISAKMP_NPTYPE_VID 13 /* Vendor ID */ - -#define ISAKMP_MAJOR_VERSION 1 -#define ISAKMP_MINOR_VERSION 0 - -/* Exchange Type */ -#define ISAKMP_ETYPE_NONE 0 /* NONE */ -#define ISAKMP_ETYPE_BASE 1 /* Base */ -#define ISAKMP_ETYPE_IDENT 2 /* Identity Proteciton */ -#define ISAKMP_ETYPE_AUTH 3 /* Authentication Only */ -#define ISAKMP_ETYPE_AGG 4 /* Aggressive */ -#define ISAKMP_ETYPE_INF 5 /* Informational */ - -/* Flags */ -#define ISAKMP_FLAG_E 0x01 /* Encryption Bit */ -#define ISAKMP_FLAG_C 0x02 /* Commit Bit */ - -/* 3.2 Payload Generic Header - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - ! Next Payload ! RESERVED ! Payload Length ! - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -*/ -struct isakmp_gen { - u_int8_t np; /* Next Payload */ - u_int8_t reserved; /* RESERVED, unused, must set to 0 */ - u_int16_t len; /* Payload Length */ -}; - -/* 3.3 Data Attributes - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - !A! Attribute Type ! AF=0 Attribute Length ! - !F! ! AF=1 Attribute Value ! - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - . AF=0 Attribute Value . - . AF=1 Not Transmitted . - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -*/ -struct isakmp_data { - u_int16_t type; /* defined by DOI-spec, and Attribute Format */ - u_int16_t lorv; /* if f equal 1, Attribute Length */ - /* if f equal 0, Attribute Value */ - /* if f equal 1, Attribute Value */ -}; -#define ISAKMP_GEN_TLV 0x0000 -#define ISAKMP_GEN_TV 0x8000 - /* mask for type of attribute format */ -#define ISAKMP_GEN_MASK 0x8000 - -/* 3.4 Security Association Payload */ - /* MAY NOT be used, because of being defined in ipsec-doi. */ - /* - If the current payload is the last in the message, - then the value of the next payload field will be 0. - This field MUST NOT contain the - values for the Proposal or Transform payloads as they are considered - part of the security association negotiation. For example, this - field would contain the value "10" (Nonce payload) in the first - message of a Base Exchange (see Section 4.4) and the value "0" in the - first message of an Identity Protect Exchange (see Section 4.5). - */ -struct isakmp_pl_sa { - struct isakmp_gen h; - u_int32_t doi; /* Domain of Interpretation */ - u_int32_t sit; /* Situation */ -}; - -/* 3.5 Proposal Payload */ - /* - The value of the next payload field MUST only contain the value "2" - or "0". If there are additional Proposal payloads in the message, - then this field will be 2. If the current Proposal payload is the - last within the security association proposal, then this field will - be 0. - */ -struct isakmp_pl_p { - struct isakmp_gen h; - u_int8_t p_no; /* Proposal # */ - u_int8_t prot_id; /* Protocol */ - u_int8_t spi_size; /* SPI Size */ - u_int8_t num_t; /* Number of Transforms */ - /* SPI */ -}; - -/* 3.6 Transform Payload */ - /* - The value of the next payload field MUST only contain the value "3" - or "0". If there are additional Transform payloads in the proposal, - then this field will be 3. If the current Transform payload is the - last within the proposal, then this field will be 0. - */ -struct isakmp_pl_t { - struct isakmp_gen h; - u_int8_t t_no; /* Transform # */ - u_int8_t t_id; /* Transform-Id */ - u_int16_t reserved; /* RESERVED2 */ - /* SA Attributes */ -}; - -/* 3.7 Key Exchange Payload */ -struct isakmp_pl_ke { - struct isakmp_gen h; - /* Key Exchange Data */ -}; - -/* 3.8 Identification Payload */ - /* MUST NOT to be used, because of being defined in ipsec-doi. */ -struct isakmp_pl_id { - struct isakmp_gen h; - union { - u_int8_t id_type; /* ID Type */ - u_int32_t doi_data; /* DOI Specific ID Data */ - } d; - /* Identification Data */ -}; - -/* 3.9 Certificate Payload */ -struct isakmp_pl_cert { - struct isakmp_gen h; - u_int8_t encode; /* Cert Encoding */ - char cert; /* Certificate Data */ - /* - This field indicates the type of - certificate or certificate-related information contained in the - Certificate Data field. - */ -}; - -/* Certificate Type */ -#define ISAKMP_CERT_NONE 0 -#define ISAKMP_CERT_PKCS 1 -#define ISAKMP_CERT_PGP 2 -#define ISAKMP_CERT_DNS 3 -#define ISAKMP_CERT_SIGN 4 -#define ISAKMP_CERT_KE 5 -#define ISAKMP_CERT_KT 6 -#define ISAKMP_CERT_CRL 7 -#define ISAKMP_CERT_ARL 8 -#define ISAKMP_CERT_SPKI 9 - -/* 3.10 Certificate Request Payload */ -struct isakmp_pl_cr { - struct isakmp_gen h; - u_int8_t num_cert; /* # Cert. Types */ - /* - Certificate Types (variable length) - -- Contains a list of the types of certificates requested, - sorted in order of preference. Each individual certificate - type is 1 octet. This field is NOT requiredo - */ - /* # Certificate Authorities (1 octet) */ - /* Certificate Authorities (variable length) */ -}; - -/* 3.11 Hash Payload */ - /* may not be used, because of having only data. */ -struct isakmp_pl_hash { - struct isakmp_gen h; - /* Hash Data */ -}; - -/* 3.12 Signature Payload */ - /* may not be used, because of having only data. */ -struct isakmp_pl_sig { - struct isakmp_gen h; - /* Signature Data */ -}; - -/* 3.13 Nonce Payload */ - /* may not be used, because of having only data. */ -struct isakmp_pl_nonce { - struct isakmp_gen h; - /* Nonce Data */ -}; - -/* 3.14 Notification Payload */ -struct isakmp_pl_n { - struct isakmp_gen h; - u_int32_t doi; /* Domain of Interpretation */ - u_int8_t prot_id; /* Protocol-ID */ - u_int8_t spi_size; /* SPI Size */ - u_int16_t type; /* Notify Message Type */ - /* SPI */ - /* Notification Data */ -}; - -/* 3.14.1 Notify Message Types */ -/* NOTIFY MESSAGES - ERROR TYPES */ -#define ISAKMP_NTYPE_INVALID_PAYLOAD_TYPE 1 -#define ISAKMP_NTYPE_DOI_NOT_SUPPORTED 2 -#define ISAKMP_NTYPE_SITUATION_NOT_SUPPORTED 3 -#define ISAKMP_NTYPE_INVALID_COOKIE 4 -#define ISAKMP_NTYPE_INVALID_MAJOR_VERSION 5 -#define ISAKMP_NTYPE_INVALID_MINOR_VERSION 6 -#define ISAKMP_NTYPE_INVALID_EXCHANGE_TYPE 7 -#define ISAKMP_NTYPE_INVALID_FLAGS 8 -#define ISAKMP_NTYPE_INVALID_MESSAGE_ID 9 -#define ISAKMP_NTYPE_INVALID_PROTOCOL_ID 10 -#define ISAKMP_NTYPE_INVALID_SPI 11 -#define ISAKMP_NTYPE_INVALID_TRANSFORM_ID 12 -#define ISAKMP_NTYPE_ATTRIBUTES_NOT_SUPPORTED 13 -#define ISAKMP_NTYPE_NO_PROPOSAL_CHOSEN 14 -#define ISAKMP_NTYPE_BAD_PROPOSAL_SYNTAX 15 -#define ISAKMP_NTYPE_PAYLOAD_MALFORMED 16 -#define ISAKMP_NTYPE_INVALID_KEY_INFORMATION 17 -#define ISAKMP_NTYPE_INVALID_ID_INFORMATION 18 -#define ISAKMP_NTYPE_INVALID_CERT_ENCODING 19 -#define ISAKMP_NTYPE_INVALID_CERTIFICATE 20 -#define ISAKMP_NTYPE_BAD_CERT_REQUEST_SYNTAX 21 -#define ISAKMP_NTYPE_INVALID_CERT_AUTHORITY 22 -#define ISAKMP_NTYPE_INVALID_HASH_INFORMATION 23 -#define ISAKMP_NTYPE_AUTHENTICATION_FAILED 24 -#define ISAKMP_NTYPE_INVALID_SIGNATURE 25 -#define ISAKMP_NTYPE_ADDRESS_NOTIFICATION 26 -/* NOTIFY MESSAGES - STATUS TYPES */ -#define ISAKMP_NTYPE_CONNECTED 16384 -/* using only to log */ -#define ISAKMP_LOG_RETRY_LIMIT_REACHED 65530 - -/* 3.15 Delete Payload */ -struct isakmp_pl_d { - struct isakmp_gen h; - u_int32_t doi; /* Domain of Interpretation */ - u_int8_t prot_id; /* Protocol-Id */ - u_int8_t spi_size; /* SPI Size */ - u_int16_t num_spi; /* # of SPIs */ - /* SPI(es) */ -}; - - -struct isakmp_ph1tab { - struct isakmp_ph1 *head; - struct isakmp_ph1 *tail; - int len; -}; - -struct isakmp_ph2tab { - struct isakmp_ph2 *head; - struct isakmp_ph2 *tail; - int len; -}; - -#define EXCHANGE_PROXY 1 -#define EXCHANGE_MYSELF 0 - -#define PFS_NEED 1 -#define PFS_NONEED 0 - -#endif /* !defined(_ISAKMP_H_) */ diff --git a/contrib/tcpdump/l2tp.h b/contrib/tcpdump/l2tp.h deleted file mode 100644 index 156888347f56b..0000000000000 --- a/contrib/tcpdump/l2tp.h +++ /dev/null @@ -1,62 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/l2tp.h,v 1.5 2001/11/05 10:03:27 guy Exp $ (LBL) */ -/* - * Copyright (c) 1991, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * L2TP support contributed by Motonori Shindo (mshindo@mshindo.net) - */ - - -#define L2TP_FLAG_TYPE 0x8000 /* Type (0=Data, 1=Control) */ -#define L2TP_FLAG_LENGTH 0x4000 /* Length */ -#define L2TP_FLAG_SEQUENCE 0x0800 /* Sequence */ -#define L2TP_FLAG_OFFSET 0x0200 /* Offset */ -#define L2TP_FLAG_PRIORITY 0x0100 /* Priority */ - -#define L2TP_VERSION_MASK 0x000f /* Version Mask */ -#define L2TP_VERSION_L2F 0x0001 /* L2F */ -#define L2TP_VERSION_L2TP 0x0002 /* L2TP */ - -#define L2TP_AVP_HDR_FLAG_MANDATORY 0x8000 /* Mandatory Flag */ -#define L2TP_AVP_HDR_FLAG_HIDDEN 0x4000 /* Hidden Flag */ -#define L2TP_AVP_HDR_LEN_MASK 0x03ff /* Length Mask */ - -#define L2TP_FRAMING_CAP_SYNC_MASK 0x00000001 /* Synchronous */ -#define L2TP_FRAMING_CAP_ASYNC_MASK 0x00000002 /* Asynchronous */ - -#define L2TP_FRAMING_TYPE_SYNC_MASK 0x00000001 /* Synchronous */ -#define L2TP_FRAMING_TYPE_ASYNC_MASK 0x00000002 /* Asynchronous */ - -#define L2TP_BEARER_CAP_DIGITAL_MASK 0x00000001 /* Digital */ -#define L2TP_BEARER_CAP_ANALOG_MASK 0x00000002 /* Analog */ - -#define L2TP_BEARER_TYPE_DIGITAL_MASK 0x00000001 /* Digital */ -#define L2TP_BEARER_TYPE_ANALOG_MASK 0x00000002 /* Analog */ - -/* Authen Type */ -#define L2TP_AUTHEN_TYPE_RESERVED 0x0000 /* Reserved */ -#define L2TP_AUTHEN_TYPE_TEXTUAL 0x0001 /* Textual username/password exchange */ -#define L2TP_AUTHEN_TYPE_CHAP 0x0002 /* PPP CHAP */ -#define L2TP_AUTHEN_TYPE_PAP 0x0003 /* PPP PAP */ -#define L2TP_AUTHEN_TYPE_NO_AUTH 0x0004 /* No Authentication */ -#define L2TP_AUTHEN_TYPE_MSCHAPv1 0x0005 /* MSCHAPv1 */ - -#define L2TP_PROXY_AUTH_ID_MASK 0x00ff - - diff --git a/contrib/tcpdump/l2vpn.c b/contrib/tcpdump/l2vpn.c deleted file mode 100755 index d98e69adfd162..0000000000000 --- a/contrib/tcpdump/l2vpn.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * 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. - * - * Original code by Hannes Gredler (hannes@juniper.net) - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/l2vpn.c,v 1.1 2004/06/15 09:42:40 hannes Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> -#include "interface.h" -#include "l2vpn.h" - -/* draft-ietf-pwe3-iana-allocation-04 */ -struct tok l2vpn_encaps_values[] = { - { 0x00, "Reserved"}, - { 0x01, "Frame Relay"}, - { 0x02, "ATM AAL5 VCC transport"}, - { 0x03, "ATM transparent cell transport"}, - { 0x04, "Ethernet VLAN"}, - { 0x05, "Ethernet"}, - { 0x06, "Cisco-HDLC"}, - { 0x07, "PPP"}, - { 0x08, "SONET/SDH Circuit Emulation Service over MPLS"}, - { 0x09, "ATM n-to-one VCC cell transport"}, - { 0x0a, "ATM n-to-one VPC cell transport"}, - { 0x0b, "IP Layer2 Transport"}, - { 0x0c, "ATM one-to-one VCC Cell Mode"}, - { 0x0d, "ATM one-to-one VPC Cell Mode"}, - { 0x0e, "ATM AAL5 PDU VCC transport"}, - { 0x0f, "Frame-Relay Port mode"}, - { 0x10, "SONET/SDH Circuit Emulation over Packet"}, - { 0x11, "Structure-agnostic E1 over Packet"}, - { 0x12, "Structure-agnostic T1 (DS1) over Packet"}, - { 0x13, "Structure-agnostic E3 over Packet"}, - { 0x14, "Structure-agnostic T3 (DS3) over Packet"}, - { 0x15, "CESoPSN basic mode"}, - { 0x16, "TDMoIP basic mode"}, - { 0x17, "CESoPSN TDM with CAS"}, - { 0x18, "TDMoIP TDM with CAS"}, - { 0x40, "IP-interworking"}, - { 0, NULL} -}; diff --git a/contrib/tcpdump/l2vpn.h b/contrib/tcpdump/l2vpn.h deleted file mode 100755 index 64eb0247b7d2e..0000000000000 --- a/contrib/tcpdump/l2vpn.h +++ /dev/null @@ -1,17 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/l2vpn.h,v 1.1 2004/06/15 09:42:41 hannes Exp $ (LBL) */ -/* - * 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. - * - * Original code by Hannes Gredler (hannes@juniper.net) - */ - -extern struct tok l2vpn_encaps_values[]; diff --git a/contrib/tcpdump/lane.h b/contrib/tcpdump/lane.h deleted file mode 100644 index 51b6e19c93925..0000000000000 --- a/contrib/tcpdump/lane.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Marko Kiiskila carnil@cs.tut.fi - * - * Tampere University of Technology - Telecommunications Laboratory - * - * Permission to use, copy, modify and distribute this - * software and its documentation is hereby granted, - * provided that both the copyright notice and this - * permission notice appear in all copies of the software, - * derivative works or modified versions, and any portions - * thereof, that both notices appear in supporting - * documentation, and that the use of this software is - * acknowledged in any publications resulting from using - * the software. - * - * TUT ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION AND DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS - * SOFTWARE. - * - */ - -/* $Id: lane.h,v 1.7 2002/12/11 07:13:54 guy Exp $ */ - -#ifndef ETHER_ADDR_LEN -#define ETHER_ADDR_LEN 6 -#endif - -struct lecdatahdr_8023 { - u_int16_t le_header; - u_int8_t h_dest[ETHER_ADDR_LEN]; - u_int8_t h_source[ETHER_ADDR_LEN]; - u_int16_t h_type; -}; - -struct lane_controlhdr { - u_int16_t lec_header; - u_int8_t lec_proto; - u_int8_t lec_vers; - u_int16_t lec_opcode; -}; diff --git a/contrib/tcpdump/lbl/gnuc.h b/contrib/tcpdump/lbl/gnuc.h deleted file mode 100644 index 1615d437675f4..0000000000000 --- a/contrib/tcpdump/lbl/gnuc.h +++ /dev/null @@ -1,43 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/lbl/gnuc.h,v 1.3.1.1 1999/10/07 23:47:13 mcr Exp $ (LBL) */ - -/* Define __P() macro, if necessary */ -#ifndef __P -#if __STDC__ -#define __P(protos) protos -#else -#define __P(protos) () -#endif -#endif - -/* inline foo */ -#ifdef __GNUC__ -#define inline __inline -#else -#define inline -#endif - -/* - * Handle new and old "dead" routine prototypes - * - * For example: - * - * __dead void foo(void) __attribute__((volatile)); - * - */ -#ifdef __GNUC__ -#ifndef __dead -#define __dead volatile -#endif -#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) -#ifndef __attribute__ -#define __attribute__(args) -#endif -#endif -#else -#ifndef __dead -#define __dead -#endif -#ifndef __attribute__ -#define __attribute__(args) -#endif -#endif diff --git a/contrib/tcpdump/lbl/os-osf4.h b/contrib/tcpdump/lbl/os-osf4.h deleted file mode 100644 index 62866ede58523..0000000000000 --- a/contrib/tcpdump/lbl/os-osf4.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * @(#) $Header: /tcpdump/master/tcpdump/lbl/os-osf4.h,v 1.1 2002/12/11 05:03:13 guy Exp $ (LBL) - */ - -/* Prototypes missing in Digital UNIX 4.x */ -int snprintf(char *, size_t, const char *, ...); -int vsnprintf(char *, size_t, const char *, va_list); diff --git a/contrib/tcpdump/lbl/os-solaris2.h b/contrib/tcpdump/lbl/os-solaris2.h deleted file mode 100644 index de481c2f7e19a..0000000000000 --- a/contrib/tcpdump/lbl/os-solaris2.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * @(#) $Header: /tcpdump/master/tcpdump/lbl/os-solaris2.h,v 1.19 2000/10/11 04:02:15 guy Exp $ (LBL) - */ - -/* Prototypes missing in SunOS 5 */ -#if defined(_STDIO_H) && defined(HAVE_SETLINEBUF) -int setlinebuf(FILE *); -#endif -char *strerror(int); -int snprintf(char *, size_t, const char *, ...); -int strcasecmp(const char *, const char *); diff --git a/contrib/tcpdump/lbl/os-sunos4.h b/contrib/tcpdump/lbl/os-sunos4.h deleted file mode 100644 index 2e0f25fc5827e..0000000000000 --- a/contrib/tcpdump/lbl/os-sunos4.h +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright (c) 1989, 1990, 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * @(#) $Header: /tcpdump/master/tcpdump/lbl/os-sunos4.h,v 1.32.1.1 1999/10/07 23:47:13 mcr Exp $ (LBL) - */ - -/* Prototypes missing in SunOS 4 */ -#ifdef FILE -int _filbuf(FILE *); -int _flsbuf(u_char, FILE *); -int fclose(FILE *); -int fflush(FILE *); -int fgetc(FILE *); -int fprintf(FILE *, const char *, ...); -int fputc(int, FILE *); -int fputs(const char *, FILE *); -u_int fread(void *, u_int, u_int, FILE *); -int fseek(FILE *, long, int); -u_int fwrite(const void *, u_int, u_int, FILE *); -int pclose(FILE *); -void rewind(FILE *); -void setbuf(FILE *, char *); -int setlinebuf(FILE *); -int ungetc(int, FILE *); -int vfprintf(FILE *, const char *, ...); -int vprintf(const char *, ...); -#endif - -#if __GNUC__ <= 1 -int read(int, char *, u_int); -int write(int, char *, u_int); -#endif - -long a64l(const char *); -#ifdef __STDC__ -struct sockaddr; -#endif -int accept(int, struct sockaddr *, int *); -int bind(int, struct sockaddr *, int); -int bcmp(const void *, const void *, u_int); -void bcopy(const void *, void *, u_int); -void bzero(void *, int); -int chroot(const char *); -int close(int); -void closelog(void); -int connect(int, struct sockaddr *, int); -char *crypt(const char *, const char *); -int daemon(int, int); -int fchmod(int, int); -int fchown(int, int, int); -void endgrent(void); -void endpwent(void); -void endservent(void); -#ifdef __STDC__ -struct ether_addr; -#endif -struct ether_addr *ether_aton(const char *); -int flock(int, int); -#ifdef __STDC__ -struct stat; -#endif -int fstat(int, struct stat *); -#ifdef __STDC__ -struct statfs; -#endif -int fstatfs(int, struct statfs *); -int fsync(int); -#ifdef __STDC__ -struct timeb; -#endif -int ftime(struct timeb *); -int ftruncate(int, off_t); -int getdtablesize(void); -long gethostid(void); -int gethostname(char *, int); -int getopt(int, char * const *, const char *); -int getpagesize(void); -char *getpass(char *); -int getpeername(int, struct sockaddr *, int *); -int getpriority(int, int); -#ifdef __STDC__ -struct rlimit; -#endif -int getrlimit(int, struct rlimit *); -int getsockname(int, struct sockaddr *, int *); -int getsockopt(int, int, int, char *, int *); -#ifdef __STDC__ -struct timeval; -struct timezone; -#endif -int gettimeofday(struct timeval *, struct timezone *); -char *getusershell(void); -char *getwd(char *); -int initgroups(const char *, int); -int ioctl(int, int, caddr_t); -int iruserok(u_long, int, char *, char *); -int isatty(int); -int killpg(int, int); -int listen(int, int); -#ifdef __STDC__ -struct utmp; -#endif -void login(struct utmp *); -int logout(const char *); -off_t lseek(int, off_t, int); -int lstat(const char *, struct stat *); -int mkstemp(char *); -char *mktemp(char *); -int munmap(caddr_t, int); -void openlog(const char *, int, int); -void perror(const char *); -int printf(const char *, ...); -int puts(const char *); -long random(void); -int readlink(const char *, char *, int); -#ifdef __STDC__ -struct iovec; -#endif -int readv(int, struct iovec *, int); -int recv(int, char *, u_int, int); -int recvfrom(int, char *, u_int, int, struct sockaddr *, int *); -int rename(const char *, const char *); -int rcmd(char **, u_short, char *, char *, char *, int *); -int rresvport(int *); -int send(int, char *, u_int, int); -int sendto(int, char *, u_int, int, struct sockaddr *, int); -int setenv(const char *, const char *, int); -int seteuid(int); -int setpriority(int, int, int); -int select(int, fd_set *, fd_set *, fd_set *, struct timeval *); -int setpgrp(int, int); -void setpwent(void); -int setrlimit(int, struct rlimit *); -void setservent(int); -int setsockopt(int, int, int, char *, int); -int shutdown(int, int); -int sigblock(int); -void (*signal (int, void (*) (int))) (int); -int sigpause(int); -int sigsetmask(int); -#ifdef __STDC__ -struct sigvec; -#endif -int sigvec(int, struct sigvec *, struct sigvec*); -int snprintf(char *, size_t, const char *, ...); -int socket(int, int, int); -int socketpair(int, int, int, int *); -int symlink(const char *, const char *); -void srandom(int); -int sscanf(char *, const char *, ...); -int stat(const char *, struct stat *); -int statfs(char *, struct statfs *); -char *strerror(int); -int strcasecmp(const char *, const char *); -#ifdef __STDC__ -struct tm; -#endif -int strftime(char *, int, char *, struct tm *); -int strncasecmp(const char *, const char *, int); -long strtol(const char *, char **, int); -void sync(void); -void syslog(int, const char *, ...); -int system(const char *); -long tell(int); -time_t time(time_t *); -char *timezone(int, int); -int tolower(int); -int toupper(int); -int truncate(char *, off_t); -void unsetenv(const char *); -int vfork(void); -int vsprintf(char *, const char *, ...); -int writev(int, struct iovec *, int); -#ifdef __STDC__ -struct rusage; -#endif -int utimes(const char *, struct timeval *); -#if __GNUC__ <= 1 -int wait(int *); -pid_t wait3(int *, int, struct rusage *); -#endif - -/* Ugly signal hacking */ -#ifdef SIG_ERR -#undef SIG_ERR -#define SIG_ERR (void (*)(int))-1 -#undef SIG_DFL -#define SIG_DFL (void (*)(int))0 -#undef SIG_IGN -#define SIG_IGN (void (*)(int))1 - -#ifdef KERNEL -#undef SIG_CATCH -#define SIG_CATCH (void (*)(int))2 -#endif -#undef SIG_HOLD -#define SIG_HOLD (void (*)(int))3 -#endif diff --git a/contrib/tcpdump/lbl/os-ultrix4.h b/contrib/tcpdump/lbl/os-ultrix4.h deleted file mode 100644 index 676b3bdd93ebb..0000000000000 --- a/contrib/tcpdump/lbl/os-ultrix4.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 1990, 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * @(#) $Header: /tcpdump/master/tcpdump/lbl/os-ultrix4.h,v 1.19.1.1 1999/10/07 23:47:13 mcr Exp $ (LBL) - */ - -/* Prototypes missing in Ultrix 4 */ -int bcmp(const char *, const char *, u_int); -void bcopy(const void *, void *, u_int); -void bzero(void *, u_int); -void endservent(void); -int getopt(int, char * const *, const char *); -#ifdef __STDC__ -struct timeval; -struct timezone; -#endif -int gettimeofday(struct timeval *, struct timezone *); -int ioctl(int, int, caddr_t); -int pfopen(char *, int); -int setlinebuf(FILE *); -int socket(int, int, int); -int strcasecmp(const char *, const char *); diff --git a/contrib/tcpdump/llc.h b/contrib/tcpdump/llc.h deleted file mode 100644 index f8c4e7d28b136..0000000000000 --- a/contrib/tcpdump/llc.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (c) 1993, 1994, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * @(#) $Header: /tcpdump/master/tcpdump/llc.h,v 1.17.2.2 2005/09/29 07:40:12 hannes Exp $ (LBL) - */ - -/* - * Definitions for information in the LLC header. - */ - -#define LLC_U_FMT 3 -#define LLC_GSAP 1 -#define LLC_IG 1 /* Individual / Group */ -#define LLC_S_FMT 1 - -#define LLC_U_POLL 0x10 -#define LLC_IS_POLL 0x0100 -#define LLC_XID_FI 0x81 - -#define LLC_U_CMD(u) ((u) & 0xef) -#define LLC_UI 0x03 -#define LLC_UA 0x63 -#define LLC_DISC 0x43 -#define LLC_DM 0x0f -#define LLC_SABME 0x6f -#define LLC_TEST 0xe3 -#define LLC_XID 0xaf -#define LLC_FRMR 0x87 - -#define LLC_S_CMD(is) (((is) >> 1) & 0x03) -#define LLC_RR 0x0001 -#define LLC_RNR 0x0005 -#define LLC_REJ 0x0009 - -#define LLC_IS_NR(is) (((is) >> 9) & 0x7f) -#define LLC_I_NS(is) (((is) >> 1) & 0x7f) - -#ifndef LLCSAP_NULL -#define LLCSAP_NULL 0x00 -#endif -#ifndef LLCSAP_GLOBAL -#define LLCSAP_GLOBAL 0xff -#endif -#ifndef LLCSAP_8021B_I -#define LLCSAP_8021B_I 0x02 -#endif -#ifndef LLCSAP_8021B_G -#define LLCSAP_8021B_G 0x03 -#endif -#ifndef LLCSAP_SNA -#define LLCSAP_SNA 0x04 -#endif -#ifndef LLCSAP_IP -#define LLCSAP_IP 0x06 -#endif -#ifndef LLCSAP_PROWAYNM -#define LLCSAP_PROWAYNM 0x0e -#endif -#ifndef LLCSAP_8021D -#define LLCSAP_8021D 0x42 -#endif -#ifndef LLCSAP_RS511 -#define LLCSAP_RS511 0x4e -#endif -#ifndef LLCSAP_ISO8208 -#define LLCSAP_ISO8208 0x7e -#endif -#ifndef LLCSAP_PROWAY -#define LLCSAP_PROWAY 0x8e -#endif -#ifndef LLCSAP_SNAP -#define LLCSAP_SNAP 0xaa -#endif -#ifndef LLCSAP_IPX -#define LLCSAP_IPX 0xe0 -#endif -#ifndef LLCSAP_NETBEUI -#define LLCSAP_NETBEUI 0xf0 -#endif -#ifndef LLCSAP_ISONS -#define LLCSAP_ISONS 0xfe -#endif - -/* - * PIDs for use with OUI_CISCO. - */ -#define PID_CISCO_CDP 0x2000 /* Cisco Discovery Protocol */ - -/* - * PIDs for use with OUI_RFC2684. - */ -#define PID_RFC2684_ETH_FCS 0x0001 /* Ethernet, with FCS */ -#define PID_RFC2684_ETH_NOFCS 0x0007 /* Ethernet, without FCS */ -#define PID_RFC2684_802_4_FCS 0x0002 /* 802.4, with FCS */ -#define PID_RFC2684_802_4_NOFCS 0x0008 /* 802.4, without FCS */ -#define PID_RFC2684_802_5_FCS 0x0003 /* 802.5, with FCS */ -#define PID_RFC2684_802_5_NOFCS 0x0009 /* 802.5, without FCS */ -#define PID_RFC2684_FDDI_FCS 0x0004 /* FDDI, with FCS */ -#define PID_RFC2684_FDDI_NOFCS 0x000a /* FDDI, without FCS */ -#define PID_RFC2684_802_6_FCS 0x0005 /* 802.6, with FCS */ -#define PID_RFC2684_802_6_NOFCS 0x000b /* 802.6, without FCS */ -#define PID_RFC2684_BPDU 0x000e /* BPDUs */ diff --git a/contrib/tcpdump/machdep.c b/contrib/tcpdump/machdep.c deleted file mode 100644 index 5b04503a72819..0000000000000 --- a/contrib/tcpdump/machdep.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/machdep.c,v 1.13 2003/12/15 03:53:21 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -/* - * XXX - all we need, on platforms other than DEC OSF/1 (a/k/a Digital UNIX, - * a/k/a Tru64 UNIX), is "size_t", which is a standard C type; what do we - * need to do to get it defined? This is clearly wrong, as we shouldn't - * have to include UNIX or Windows system header files to get it. - */ -#include <tcpdump-stdinc.h> - -#ifndef HAVE___ATTRIBUTE__ -#define __attribute__(x) -#endif /* HAVE___ATTRIBUTE__ */ - -#ifdef __osf__ -#include <sys/sysinfo.h> -#include <sys/proc.h> - -#if !defined(HAVE_SNPRINTF) -int snprintf(char *, size_t, const char *, ...) - __attribute__((format(printf, 3, 4))); -#endif /* !defined(HAVE_SNPRINTF) */ -#endif /* __osf__ */ - -#include "machdep.h" - -int -abort_on_misalignment(char *ebuf _U_, size_t ebufsiz _U_) -{ -#ifdef __osf__ - static int buf[2] = { SSIN_UACPROC, UAC_SIGBUS }; - - if (setsysinfo(SSI_NVPAIRS, (caddr_t)buf, 1, 0, 0) < 0) { - (void)snprintf(ebuf, ebufsiz, "setsysinfo: errno %d", errno); - return (-1); - } -#endif - return (0); -} diff --git a/contrib/tcpdump/machdep.h b/contrib/tcpdump/machdep.h deleted file mode 100644 index 8d49a7af716b1..0000000000000 --- a/contrib/tcpdump/machdep.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * @(#) $Header: /tcpdump/master/tcpdump/machdep.h,v 1.2 2000/01/17 06:24:24 itojun Exp $ (LBL) - */ -#ifndef tcpdump_machdep_h -#define tcpdump_machdep_h - -int abort_on_misalignment(char *, size_t); -#endif diff --git a/contrib/tcpdump/makemib b/contrib/tcpdump/makemib deleted file mode 100755 index 2c80bef05832a..0000000000000 --- a/contrib/tcpdump/makemib +++ /dev/null @@ -1,249 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 1990, 1996 -# John Robert LoVerso. All rights reserved. -# SMIv2 parsing copyright (c) 1999 -# William C. Fenner. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# 1. Redistributions of source code must retain the above copyright -# notices, this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notices, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# @(#) $Id: makemib,v 1.3 2001/09/17 22:16:52 fenner Exp $ (jlv) - -# -# This script will read either ASN.1-style MIB files or the ".defs" files -# created by the ISODE "mosy" program on such files. -# -# The output of this script is the "mib.h" file used by tcpdumps' ASN.1/SNMP -# decoding code. -# -# This script needs to be run by "gawk" (GNU awk). "nawk" will work, but -# dump will get a recursion error if you process LARGE mibs. While it would -# by farily easy to rewrite this not to use recursion (and also easy to -# eliminate use of gsub and functions to use classic "awk"), you have to -# order the structure declarations in defined-first order for the compiler -# not to barf; too bad tsort doesn't take arguments. -# - -cat << EOF -/* - * This file was generated by tcpdump/makemib on `date` - * You probably don't want to edit this by hand! - * - * struct mib somename = { desc, oid-octet, type, child-pointer, next-pointer -}; - */ - -EOF - -awk ' -BEGIN { - debug=0; - # for sanity, we prep the namespace with objects from RFC-1155 - # (we manually establish the root) - oid["iso"]=1 - oidadd("org", "iso", 3) - oidadd("dod", "org", 6) - oidadd("internet", "dod", 1) - oidadd("directory", "internet", 1) - oidadd("mgmt", "internet", 2) -#XXX oidadd("mib", "mgmt", 1) - oidadd("mib-2", "mgmt", 1) - oidadd("experimental", "internet", 3) - oidadd("private", "internet", 4) - oidadd("enterprises", "private", 1) - oidadd("ip", "mib-2", 4) - oidadd("transmission", "mib-2", 10) - - holddesc="none" -} - -# -# Read mosy "*.defs" file. mosy does all the parsing work; we just read -# its simple and straightforward output. It would not be too hard to make -# tcpdump directly read mosy output, but... -# -# Ignore these unless the current file is called something.defs; false -# positives are too common in DESCRIPTIONs. - -NF > 1 && index($2,".")>0 && FILENAME ~ /\.defs/ { - # currently ignore items of the form "{ iso.3.6.1 }" - if (split($2, p, ".") == 2) { - oidadd($1, p[1], p[2]) - } - next -} - -# -# Must be a MIB file -# Make it easier to parse - used to be done by sed -{ sub(/--\*.*\*--/, ""); sub(/--.*/, ""); gsub(/[{}]/, " & "); } - -# -# this next section is simple and naive, but does the job ok -# - -# foo OBJECT IDENTIFIER ::= { baz 17 } -# or -# foo OBJECT IDENTIFIER ::= -# { baz 17 } -$2$3$4 == "OBJECTIDENTIFIER::=" { - holddesc="none" - if (NF == 8) - oidadd($1, $6, $7) - if (NF == 4) - holddesc=$1 - next -} -$1 == "{" && holddesc != "none" && NF == 4 { - oidadd(holddesc, $2, $3) - holddesc="none" -} -# -# foo OBJECT IDENTIFIER -# ::= { bar 1 } -$2$3 == "OBJECTIDENTIFIER" && $1 != "SYNTAX" && NF == 3 { - holddesc=$1 -} -# -# foo -# OBJECT IDENTIFIER ::= { bar 1 } -# a couple of heuristics to exclude single words in e.g. long -# DESCRIPTION clauses -NF == 1 && $1 ~ "[a-z][a-z]*[A-Z]" && $1 !~ /[(){}.,]/ && holddesc == "none" { - holddesc=$1 -} -$1$2$3 == "OBJECTIDENTIFIER::=" && holddesc != "none" { - oidadd(holddesc, $5, $6) - holddesc="none" -} -# -# "normal" style -# foo OBJECT-TYPE ... -# ... -# ::= { baz 5 } -$2 == "MODULE-IDENTITY" || $2 == "MODULE-COMPLIANCE" || - $2 == "OBJECT-IDENTITY" || $2 == "OBJECT-TYPE" || - $2 == "OBJECT-GROUP" || - $2 == "NOTIFICATION-TYPE" || $2 == "NOTIFICATION-GROUP" { - holddesc=$1 -} -$1 == "::=" && holddesc != "none" && NF == 5 { - oidadd(holddesc, $3, $4) - holddesc="none" -} -# -# foo ::= { baz 17 } -$2$3 == "::={" { - oidadd($1,$4,$5) - holddesc="none" -} - - -# -# End of the road - output the data. -# - -END { - print "struct obj" - dump("iso") - print "*mibroot = &_iso_obj;" -} - -function inn(file) { - if (file == "" || file == "-") - return "" - return " in " file -} - -# -# add a new object to the tree -# -# new OBJECT IDENTIFIER ::= { parent value } -# - -function oidadd(new, parent, value) { - # Ignore 0.0 - if (parent == "0" && value == 0) - return - if (debug) - print "/* oidadd" inn(FILENAME) ":", new, "in", parent, "as", value, "line", $0, "*/" - # use safe C identifiers - gsub(/[-&\/]/,"",new) - gsub(/[-&\/]/,"",parent) - # check if parent missing - if (oid[parent] == "") { - printf "/* parse problem%s: no parent for %s.%s(%d) */\n", \ - inn(FILENAME), parent, new, value - return - } - # check if parent.value already exists - if (oid[new] > 0 && oid[new] != value) { - printf "/* parse problem%s: dup %s.%s(%d) != old (%d) */\n", \ - inn(FILENAME), parent, new, value, oid[new] - return - } - # check for new name for parent.value - if (child[parent] != "") { - for (sib = child[parent]; sib != ""; sib = sibling[sib]) - if (oid[sib] == value) { - if (new != sib) - printf "/* parse problem%s: new name" \ - " \"%s\"" \ - " for %s.%s(%d) ignored */\n", \ - inn(FILENAME), new, parent, \ - sib, value - return - } - } - - oid[new]=value - if (child[parent] == "") { - child[parent] = new - } else { - sibling[new] = child[parent] - child[parent] = new - } -} - -# -# old(?) routine to recurse down the tree (in postfix order for convenience) -# - -function dump(item, c, s) { -# newitem=sofar"."item"("oid[item]")" -# printf "/* %s c=%s s=%s */\n", newitem, child[item], sibling[item] - c="NULL" - if (child[item] != "") { - dump(child[item]) - c = "&_"child[item]"_obj" - } - s="NULL" - if (sibling[item] != "") { - dump(sibling[item]) - s = "&_"sibling[item]"_obj" - } - printf "_%s_obj = {\n\t\"%s\", %d, 0,\n\t%s, %s\n},\n", \ - item, item, oid[item], c, s -} -' $@ -exit 0 diff --git a/contrib/tcpdump/mib.h b/contrib/tcpdump/mib.h deleted file mode 100644 index 92c6c2c58f00b..0000000000000 --- a/contrib/tcpdump/mib.h +++ /dev/null @@ -1,1460 +0,0 @@ -/* - * This file was generated by tcpdump/makemib on Wed Sep 26 12:12:31 EDT 1990 - * You probably don't want to edit this by hand! - * - * struct mib somename = { desc, oid-octet, type, child-pointer, next-pointer -}; - */ - -/* parse problem: new name "mib" for mgmt.mib(1) ignored */ -/* parse problem: no parent for 0.nullSpecific(0) */ -struct obj -_proteon_obj = { - "proteon", 1, 0, - NULL, NULL -}, -_ibm_obj = { - "ibm", 2, 0, - NULL, &_proteon_obj -}, -_cmu_obj = { - "cmu", 3, 0, - NULL, &_ibm_obj -}, -_unix_obj = { - "unix", 4, 0, - NULL, &_cmu_obj -}, -_acc_obj = { - "acc", 5, 0, - NULL, &_unix_obj -}, -_twg_obj = { - "twg", 6, 0, - NULL, &_acc_obj -}, -_cayman_obj = { - "cayman", 7, 0, - NULL, &_twg_obj -}, -_nysernet_obj = { - "nysernet", 8, 0, - NULL, &_cayman_obj -}, -_cisco_obj = { - "cisco", 9, 0, - NULL, &_nysernet_obj -}, -_nsc_obj = { - "nsc", 10, 0, - NULL, &_cisco_obj -}, -_hp_obj = { - "hp", 11, 0, - NULL, &_nsc_obj -}, -_epilogue_obj = { - "epilogue", 12, 0, - NULL, &_hp_obj -}, -_utennessee_obj = { - "utennessee", 13, 0, - NULL, &_epilogue_obj -}, -_bbn_obj = { - "bbn", 14, 0, - NULL, &_utennessee_obj -}, -_xylogics_obj = { - "xylogics", 15, 0, - NULL, &_bbn_obj -}, -_unisys_obj = { - "unisys", 16, 0, - NULL, &_xylogics_obj -}, -_canstar_obj = { - "canstar", 17, 0, - NULL, &_unisys_obj -}, -_wellfleet_obj = { - "wellfleet", 18, 0, - NULL, &_canstar_obj -}, -_trw_obj = { - "trw", 19, 0, - NULL, &_wellfleet_obj -}, -_mit_obj = { - "mit", 20, 0, - NULL, &_trw_obj -}, -_eon_obj = { - "eon", 21, 0, - NULL, &_mit_obj -}, -_spartacus_obj = { - "spartacus", 22, 0, - NULL, &_eon_obj -}, -_excelan_obj = { - "excelan", 23, 0, - NULL, &_spartacus_obj -}, -_spider_obj = { - "spider", 24, 0, - NULL, &_excelan_obj -}, -_nsfnet_obj = { - "nsfnet", 25, 0, - NULL, &_spider_obj -}, -_sytek_obj = { - "sytek", 26, 0, - NULL, &_nsfnet_obj -}, -_intergraph_obj = { - "intergraph", 27, 0, - NULL, &_sytek_obj -}, -_interlan_obj = { - "interlan", 28, 0, - NULL, &_intergraph_obj -}, -_vitalink_obj = { - "vitalink", 29, 0, - NULL, &_interlan_obj -}, -_ulana_obj = { - "ulana", 30, 0, - NULL, &_vitalink_obj -}, -_nswc_obj = { - "nswc", 31, 0, - NULL, &_ulana_obj -}, -_santacruzoperation_obj = { - "santacruzoperation", 32, 0, - NULL, &_nswc_obj -}, -_xyplex_obj = { - "xyplex", 33, 0, - NULL, &_santacruzoperation_obj -}, -_cray_obj = { - "cray", 34, 0, - NULL, &_xyplex_obj -}, -_bellnorthernresearch_obj = { - "bellnorthernresearch", 35, 0, - NULL, &_cray_obj -}, -_dec_obj = { - "dec", 36, 0, - NULL, &_bellnorthernresearch_obj -}, -_touch_obj = { - "touch", 37, 0, - NULL, &_dec_obj -}, -_networkresearchcorp_obj = { - "networkresearchcorp", 38, 0, - NULL, &_touch_obj -}, -_baylor_obj = { - "baylor", 39, 0, - NULL, &_networkresearchcorp_obj -}, -_nmfeccllnl_obj = { - "nmfeccllnl", 40, 0, - NULL, &_baylor_obj -}, -_sri_obj = { - "sri", 41, 0, - NULL, &_nmfeccllnl_obj -}, -_sun_obj = { - "sun", 42, 0, - NULL, &_sri_obj -}, -_3com_obj = { - "3com", 43, 0, - NULL, &_sun_obj -}, -_cmc_obj = { - "cmc", 44, 0, - NULL, &_3com_obj -}, -_synoptics_obj = { - "synoptics", 45, 0, - NULL, &_cmc_obj -}, -_cheyenne_obj = { - "cheyenne", 46, 0, - NULL, &_synoptics_obj -}, -_prime_obj = { - "prime", 47, 0, - NULL, &_cheyenne_obj -}, -_mcnc_obj = { - "mcnc", 48, 0, - NULL, &_prime_obj -}, -_chipcom_obj = { - "chipcom", 49, 0, - NULL, &_mcnc_obj -}, -_opticaldatasystems_obj = { - "opticaldatasystems", 50, 0, - NULL, &_chipcom_obj -}, -_gated_obj = { - "gated", 51, 0, - NULL, &_opticaldatasystems_obj -}, -_cabletron_obj = { - "cabletron", 52, 0, - NULL, &_gated_obj -}, -_apollo_obj = { - "apollo", 53, 0, - NULL, &_cabletron_obj -}, -_desktalksystems_obj = { - "desktalksystems", 54, 0, - NULL, &_apollo_obj -}, -_ssds_obj = { - "ssds", 55, 0, - NULL, &_desktalksystems_obj -}, -_castlerock_obj = { - "castlerock", 56, 0, - NULL, &_ssds_obj -}, -_mips_obj = { - "mips", 57, 0, - NULL, &_castlerock_obj -}, -_tgv_obj = { - "tgv", 58, 0, - NULL, &_mips_obj -}, -_silicongraphics_obj = { - "silicongraphics", 59, 0, - NULL, &_tgv_obj -}, -_ubc_obj = { - "ubc", 60, 0, - NULL, &_silicongraphics_obj -}, -_merit_obj = { - "merit", 61, 0, - NULL, &_ubc_obj -}, -_fibercom_obj = { - "fibercom", 62, 0, - NULL, &_merit_obj -}, -_apple_obj = { - "apple", 63, 0, - NULL, &_fibercom_obj -}, -_gandalf_obj = { - "gandalf", 64, 0, - NULL, &_apple_obj -}, -_dartmouth_obj = { - "dartmouth", 65, 0, - NULL, &_gandalf_obj -}, -_davidsystems_obj = { - "davidsystems", 66, 0, - NULL, &_dartmouth_obj -}, -_reuter_obj = { - "reuter", 67, 0, - NULL, &_davidsystems_obj -}, -_cornell_obj = { - "cornell", 68, 0, - NULL, &_reuter_obj -}, -_tmac_obj = { - "tmac", 69, 0, - NULL, &_cornell_obj -}, -_locus_obj = { - "locus", 70, 0, - NULL, &_tmac_obj -}, -_nasa_obj = { - "nasa", 71, 0, - NULL, &_locus_obj -}, -_retix_obj = { - "retix", 72, 0, - NULL, &_nasa_obj -}, -_boeing_obj = { - "boeing", 73, 0, - NULL, &_retix_obj -}, -_att_obj = { - "att", 74, 0, - NULL, &_boeing_obj -}, -_ungermannbass_obj = { - "ungermannbass", 75, 0, - NULL, &_att_obj -}, -_digitalanalysis_obj = { - "digitalanalysis", 76, 0, - NULL, &_ungermannbass_obj -}, -_hplanman_obj = { - "hplanman", 77, 0, - NULL, &_digitalanalysis_obj -}, -_netlabs_obj = { - "netlabs", 78, 0, - NULL, &_hplanman_obj -}, -_icl_obj = { - "icl", 79, 0, - NULL, &_netlabs_obj -}, -_auspex_obj = { - "auspex", 80, 0, - NULL, &_icl_obj -}, -_lannet_obj = { - "lannet", 81, 0, - NULL, &_auspex_obj -}, -_ncd_obj = { - "ncd", 82, 0, - NULL, &_lannet_obj -}, -_raycom_obj = { - "raycom", 83, 0, - NULL, &_ncd_obj -}, -_pirellifocom_obj = { - "pirellifocom", 84, 0, - NULL, &_raycom_obj -}, -_datability_obj = { - "datability", 85, 0, - NULL, &_pirellifocom_obj -}, -_networkappltech_obj = { - "networkappltech", 86, 0, - NULL, &_datability_obj -}, -_link_obj = { - "link", 87, 0, - NULL, &_networkappltech_obj -}, -_nyu_obj = { - "nyu", 88, 0, - NULL, &_link_obj -}, -_rnd_obj = { - "rnd", 89, 0, - NULL, &_nyu_obj -}, -_intercon_obj = { - "intercon", 90, 0, - NULL, &_rnd_obj -}, -_learningtree_obj = { - "learningtree", 91, 0, - NULL, &_intercon_obj -}, -_webstercomputer_obj = { - "webstercomputer", 92, 0, - NULL, &_learningtree_obj -}, -_frontier_obj = { - "frontier", 93, 0, - NULL, &_webstercomputer_obj -}, -_nokia_obj = { - "nokia", 94, 0, - NULL, &_frontier_obj -}, -_allenbradley_obj = { - "allenbradley", 95, 0, - NULL, &_nokia_obj -}, -_cern_obj = { - "cern", 96, 0, - NULL, &_allenbradley_obj -}, -_sigma_obj = { - "sigma", 97, 0, - NULL, &_cern_obj -}, -_emergingtech_obj = { - "emergingtech", 98, 0, - NULL, &_sigma_obj -}, -_snmpresearch_obj = { - "snmpresearch", 99, 0, - NULL, &_emergingtech_obj -}, -_ohiostate_obj = { - "ohiostate", 100, 0, - NULL, &_snmpresearch_obj -}, -_ultra_obj = { - "ultra", 101, 0, - NULL, &_ohiostate_obj -}, -_ccur_obj = { - "ccur", 136, 0, - NULL, &_ultra_obj -}, -_enterprises_obj = { - "enterprises", 1, 0, - &_ccur_obj, NULL -}, -_snmpInPkts_obj = { - "snmpInPkts", 1, 0, - NULL, NULL -}, -_snmpOutPkts_obj = { - "snmpOutPkts", 2, 0, - NULL, &_snmpInPkts_obj -}, -_snmpInBadVersions_obj = { - "snmpInBadVersions", 3, 0, - NULL, &_snmpOutPkts_obj -}, -_snmpInBadCommunityNames_obj = { - "snmpInBadCommunityNames", 4, 0, - NULL, &_snmpInBadVersions_obj -}, -_snmpInBadCommunityUses_obj = { - "snmpInBadCommunityUses", 5, 0, - NULL, &_snmpInBadCommunityNames_obj -}, -_snmpInASNParseErrs_obj = { - "snmpInASNParseErrs", 6, 0, - NULL, &_snmpInBadCommunityUses_obj -}, -_snmpInBadTypes_obj = { - "snmpInBadTypes", 7, 0, - NULL, &_snmpInASNParseErrs_obj -}, -_snmpInTooBigs_obj = { - "snmpInTooBigs", 8, 0, - NULL, &_snmpInBadTypes_obj -}, -_snmpInNoSuchNames_obj = { - "snmpInNoSuchNames", 9, 0, - NULL, &_snmpInTooBigs_obj -}, -_snmpInBadValues_obj = { - "snmpInBadValues", 10, 0, - NULL, &_snmpInNoSuchNames_obj -}, -_snmpInReadOnlys_obj = { - "snmpInReadOnlys", 11, 0, - NULL, &_snmpInBadValues_obj -}, -_snmpInGenErrs_obj = { - "snmpInGenErrs", 12, 0, - NULL, &_snmpInReadOnlys_obj -}, -_snmpInTotalReqVars_obj = { - "snmpInTotalReqVars", 13, 0, - NULL, &_snmpInGenErrs_obj -}, -_snmpInTotalSetVars_obj = { - "snmpInTotalSetVars", 14, 0, - NULL, &_snmpInTotalReqVars_obj -}, -_snmpInGetRequests_obj = { - "snmpInGetRequests", 15, 0, - NULL, &_snmpInTotalSetVars_obj -}, -_snmpInGetNexts_obj = { - "snmpInGetNexts", 16, 0, - NULL, &_snmpInGetRequests_obj -}, -_snmpInSetRequests_obj = { - "snmpInSetRequests", 17, 0, - NULL, &_snmpInGetNexts_obj -}, -_snmpInGetResponses_obj = { - "snmpInGetResponses", 18, 0, - NULL, &_snmpInSetRequests_obj -}, -_snmpInTraps_obj = { - "snmpInTraps", 19, 0, - NULL, &_snmpInGetResponses_obj -}, -_snmpOutTooBigs_obj = { - "snmpOutTooBigs", 20, 0, - NULL, &_snmpInTraps_obj -}, -_snmpOutNoSuchNames_obj = { - "snmpOutNoSuchNames", 21, 0, - NULL, &_snmpOutTooBigs_obj -}, -_snmpOutBadValues_obj = { - "snmpOutBadValues", 22, 0, - NULL, &_snmpOutNoSuchNames_obj -}, -_snmpOutReadOnlys_obj = { - "snmpOutReadOnlys", 23, 0, - NULL, &_snmpOutBadValues_obj -}, -_snmpOutGenErrs_obj = { - "snmpOutGenErrs", 24, 0, - NULL, &_snmpOutReadOnlys_obj -}, -_snmpOutGetRequests_obj = { - "snmpOutGetRequests", 25, 0, - NULL, &_snmpOutGenErrs_obj -}, -_snmpOutGetNexts_obj = { - "snmpOutGetNexts", 26, 0, - NULL, &_snmpOutGetRequests_obj -}, -_snmpOutSetRequests_obj = { - "snmpOutSetRequests", 27, 0, - NULL, &_snmpOutGetNexts_obj -}, -_snmpOutGetResponses_obj = { - "snmpOutGetResponses", 28, 0, - NULL, &_snmpOutSetRequests_obj -}, -_snmpOutTraps_obj = { - "snmpOutTraps", 29, 0, - NULL, &_snmpOutGetResponses_obj -}, -_snmpEnableAuthTraps_obj = { - "snmpEnableAuthTraps", 30, 0, - NULL, &_snmpOutTraps_obj -}, -_egpNeighState_obj = { - "egpNeighState", 1, 0, - NULL, NULL -}, -_egpNeighAddr_obj = { - "egpNeighAddr", 2, 0, - NULL, &_egpNeighState_obj -}, -_egpNeighAs_obj = { - "egpNeighAs", 3, 0, - NULL, &_egpNeighAddr_obj -}, -_egpNeighInMsgs_obj = { - "egpNeighInMsgs", 4, 0, - NULL, &_egpNeighAs_obj -}, -_egpNeighInErrs_obj = { - "egpNeighInErrs", 5, 0, - NULL, &_egpNeighInMsgs_obj -}, -_egpNeighOutMsgs_obj = { - "egpNeighOutMsgs", 6, 0, - NULL, &_egpNeighInErrs_obj -}, -_egpNeighOutErrs_obj = { - "egpNeighOutErrs", 7, 0, - NULL, &_egpNeighOutMsgs_obj -}, -_egpNeighInErrMsgs_obj = { - "egpNeighInErrMsgs", 8, 0, - NULL, &_egpNeighOutErrs_obj -}, -_egpNeighOutErrMsgs_obj = { - "egpNeighOutErrMsgs", 9, 0, - NULL, &_egpNeighInErrMsgs_obj -}, -_egpNeighStateUps_obj = { - "egpNeighStateUps", 10, 0, - NULL, &_egpNeighOutErrMsgs_obj -}, -_egpNeighStateDowns_obj = { - "egpNeighStateDowns", 11, 0, - NULL, &_egpNeighStateUps_obj -}, -_egpNeighIntervalHello_obj = { - "egpNeighIntervalHello", 12, 0, - NULL, &_egpNeighStateDowns_obj -}, -_egpNeighIntervalPoll_obj = { - "egpNeighIntervalPoll", 13, 0, - NULL, &_egpNeighIntervalHello_obj -}, -_egpNeighMode_obj = { - "egpNeighMode", 14, 0, - NULL, &_egpNeighIntervalPoll_obj -}, -_egpNeighEventTrigger_obj = { - "egpNeighEventTrigger", 15, 0, - NULL, &_egpNeighMode_obj -}, -_egpNeighEntry_obj = { - "egpNeighEntry", 1, 0, - &_egpNeighEventTrigger_obj, NULL -}, -_egpInMsgs_obj = { - "egpInMsgs", 1, 0, - NULL, NULL -}, -_egpInErrors_obj = { - "egpInErrors", 2, 0, - NULL, &_egpInMsgs_obj -}, -_egpOutMsgs_obj = { - "egpOutMsgs", 3, 0, - NULL, &_egpInErrors_obj -}, -_egpOutErrors_obj = { - "egpOutErrors", 4, 0, - NULL, &_egpOutMsgs_obj -}, -_egpNeighTable_obj = { - "egpNeighTable", 5, 0, - &_egpNeighEntry_obj, &_egpOutErrors_obj -}, -_egpAs_obj = { - "egpAs", 6, 0, - NULL, &_egpNeighTable_obj -}, -_udpLocalAddress_obj = { - "udpLocalAddress", 1, 0, - NULL, NULL -}, -_udpLocalPort_obj = { - "udpLocalPort", 2, 0, - NULL, &_udpLocalAddress_obj -}, -_udpEntry_obj = { - "udpEntry", 1, 0, - &_udpLocalPort_obj, NULL -}, -_udpInDatagrams_obj = { - "udpInDatagrams", 1, 0, - NULL, NULL -}, -_udpNoPorts_obj = { - "udpNoPorts", 2, 0, - NULL, &_udpInDatagrams_obj -}, -_udpInErrors_obj = { - "udpInErrors", 3, 0, - NULL, &_udpNoPorts_obj -}, -_udpOutDatagrams_obj = { - "udpOutDatagrams", 4, 0, - NULL, &_udpInErrors_obj -}, -_udpTable_obj = { - "udpTable", 5, 0, - &_udpEntry_obj, &_udpOutDatagrams_obj -}, -_tcpConnState_obj = { - "tcpConnState", 1, 0, - NULL, NULL -}, -_tcpConnLocalAddress_obj = { - "tcpConnLocalAddress", 2, 0, - NULL, &_tcpConnState_obj -}, -_tcpConnLocalPort_obj = { - "tcpConnLocalPort", 3, 0, - NULL, &_tcpConnLocalAddress_obj -}, -_tcpConnRemAddress_obj = { - "tcpConnRemAddress", 4, 0, - NULL, &_tcpConnLocalPort_obj -}, -_tcpConnRemPort_obj = { - "tcpConnRemPort", 5, 0, - NULL, &_tcpConnRemAddress_obj -}, -_tcpConnEntry_obj = { - "tcpConnEntry", 1, 0, - &_tcpConnRemPort_obj, NULL -}, -_tcpRtoAlgorithm_obj = { - "tcpRtoAlgorithm", 1, 0, - NULL, NULL -}, -_tcpRtoMin_obj = { - "tcpRtoMin", 2, 0, - NULL, &_tcpRtoAlgorithm_obj -}, -_tcpRtoMax_obj = { - "tcpRtoMax", 3, 0, - NULL, &_tcpRtoMin_obj -}, -_tcpMaxConn_obj = { - "tcpMaxConn", 4, 0, - NULL, &_tcpRtoMax_obj -}, -_tcpActiveOpens_obj = { - "tcpActiveOpens", 5, 0, - NULL, &_tcpMaxConn_obj -}, -_tcpPassiveOpens_obj = { - "tcpPassiveOpens", 6, 0, - NULL, &_tcpActiveOpens_obj -}, -_tcpAttemptFails_obj = { - "tcpAttemptFails", 7, 0, - NULL, &_tcpPassiveOpens_obj -}, -_tcpEstabResets_obj = { - "tcpEstabResets", 8, 0, - NULL, &_tcpAttemptFails_obj -}, -_tcpCurrEstab_obj = { - "tcpCurrEstab", 9, 0, - NULL, &_tcpEstabResets_obj -}, -_tcpInSegs_obj = { - "tcpInSegs", 10, 0, - NULL, &_tcpCurrEstab_obj -}, -_tcpOutSegs_obj = { - "tcpOutSegs", 11, 0, - NULL, &_tcpInSegs_obj -}, -_tcpRetransSegs_obj = { - "tcpRetransSegs", 12, 0, - NULL, &_tcpOutSegs_obj -}, -_tcpConnTable_obj = { - "tcpConnTable", 13, 0, - &_tcpConnEntry_obj, &_tcpRetransSegs_obj -}, -_tcpInErrs_obj = { - "tcpInErrs", 14, 0, - NULL, &_tcpConnTable_obj -}, -_tcpOutRsts_obj = { - "tcpOutRsts", 15, 0, - NULL, &_tcpInErrs_obj -}, -_icmpInMsgs_obj = { - "icmpInMsgs", 1, 0, - NULL, NULL -}, -_icmpInErrors_obj = { - "icmpInErrors", 2, 0, - NULL, &_icmpInMsgs_obj -}, -_icmpInDestUnreachs_obj = { - "icmpInDestUnreachs", 3, 0, - NULL, &_icmpInErrors_obj -}, -_icmpInTimeExcds_obj = { - "icmpInTimeExcds", 4, 0, - NULL, &_icmpInDestUnreachs_obj -}, -_icmpInParmProbs_obj = { - "icmpInParmProbs", 5, 0, - NULL, &_icmpInTimeExcds_obj -}, -_icmpInSrcQuenchs_obj = { - "icmpInSrcQuenchs", 6, 0, - NULL, &_icmpInParmProbs_obj -}, -_icmpInRedirects_obj = { - "icmpInRedirects", 7, 0, - NULL, &_icmpInSrcQuenchs_obj -}, -_icmpInEchos_obj = { - "icmpInEchos", 8, 0, - NULL, &_icmpInRedirects_obj -}, -_icmpInEchoReps_obj = { - "icmpInEchoReps", 9, 0, - NULL, &_icmpInEchos_obj -}, -_icmpInTimestamps_obj = { - "icmpInTimestamps", 10, 0, - NULL, &_icmpInEchoReps_obj -}, -_icmpInTimestampReps_obj = { - "icmpInTimestampReps", 11, 0, - NULL, &_icmpInTimestamps_obj -}, -_icmpInAddrMasks_obj = { - "icmpInAddrMasks", 12, 0, - NULL, &_icmpInTimestampReps_obj -}, -_icmpInAddrMaskReps_obj = { - "icmpInAddrMaskReps", 13, 0, - NULL, &_icmpInAddrMasks_obj -}, -_icmpOutMsgs_obj = { - "icmpOutMsgs", 14, 0, - NULL, &_icmpInAddrMaskReps_obj -}, -_icmpOutErrors_obj = { - "icmpOutErrors", 15, 0, - NULL, &_icmpOutMsgs_obj -}, -_icmpOutDestUnreachs_obj = { - "icmpOutDestUnreachs", 16, 0, - NULL, &_icmpOutErrors_obj -}, -_icmpOutTimeExcds_obj = { - "icmpOutTimeExcds", 17, 0, - NULL, &_icmpOutDestUnreachs_obj -}, -_icmpOutParmProbs_obj = { - "icmpOutParmProbs", 18, 0, - NULL, &_icmpOutTimeExcds_obj -}, -_icmpOutSrcQuenchs_obj = { - "icmpOutSrcQuenchs", 19, 0, - NULL, &_icmpOutParmProbs_obj -}, -_icmpOutRedirects_obj = { - "icmpOutRedirects", 20, 0, - NULL, &_icmpOutSrcQuenchs_obj -}, -_icmpOutEchos_obj = { - "icmpOutEchos", 21, 0, - NULL, &_icmpOutRedirects_obj -}, -_icmpOutEchoReps_obj = { - "icmpOutEchoReps", 22, 0, - NULL, &_icmpOutEchos_obj -}, -_icmpOutTimestamps_obj = { - "icmpOutTimestamps", 23, 0, - NULL, &_icmpOutEchoReps_obj -}, -_icmpOutTimestampReps_obj = { - "icmpOutTimestampReps", 24, 0, - NULL, &_icmpOutTimestamps_obj -}, -_icmpOutAddrMasks_obj = { - "icmpOutAddrMasks", 25, 0, - NULL, &_icmpOutTimestampReps_obj -}, -_icmpOutAddrMaskReps_obj = { - "icmpOutAddrMaskReps", 26, 0, - NULL, &_icmpOutAddrMasks_obj -}, -_ipNetToMediaIfIndex_obj = { - "ipNetToMediaIfIndex", 1, 0, - NULL, NULL -}, -_ipNetToMediaPhysAddress_obj = { - "ipNetToMediaPhysAddress", 2, 0, - NULL, &_ipNetToMediaIfIndex_obj -}, -_ipNetToMediaNetAddress_obj = { - "ipNetToMediaNetAddress", 3, 0, - NULL, &_ipNetToMediaPhysAddress_obj -}, -_ipNetToMediaType_obj = { - "ipNetToMediaType", 4, 0, - NULL, &_ipNetToMediaNetAddress_obj -}, -_ipNetToMediaEntry_obj = { - "ipNetToMediaEntry", 1, 0, - &_ipNetToMediaType_obj, NULL -}, -_ipRouteDest_obj = { - "ipRouteDest", 1, 0, - NULL, NULL -}, -_ipRouteIfIndex_obj = { - "ipRouteIfIndex", 2, 0, - NULL, &_ipRouteDest_obj -}, -_ipRouteMetric1_obj = { - "ipRouteMetric1", 3, 0, - NULL, &_ipRouteIfIndex_obj -}, -_ipRouteMetric2_obj = { - "ipRouteMetric2", 4, 0, - NULL, &_ipRouteMetric1_obj -}, -_ipRouteMetric3_obj = { - "ipRouteMetric3", 5, 0, - NULL, &_ipRouteMetric2_obj -}, -_ipRouteMetric4_obj = { - "ipRouteMetric4", 6, 0, - NULL, &_ipRouteMetric3_obj -}, -_ipRouteNextHop_obj = { - "ipRouteNextHop", 7, 0, - NULL, &_ipRouteMetric4_obj -}, -_ipRouteType_obj = { - "ipRouteType", 8, 0, - NULL, &_ipRouteNextHop_obj -}, -_ipRouteProto_obj = { - "ipRouteProto", 9, 0, - NULL, &_ipRouteType_obj -}, -_ipRouteAge_obj = { - "ipRouteAge", 10, 0, - NULL, &_ipRouteProto_obj -}, -_ipRouteMask_obj = { - "ipRouteMask", 11, 0, - NULL, &_ipRouteAge_obj -}, -_ipRouteEntry_obj = { - "ipRouteEntry", 1, 0, - &_ipRouteMask_obj, NULL -}, -_ipAdEntAddr_obj = { - "ipAdEntAddr", 1, 0, - NULL, NULL -}, -_ipAdEntIfIndex_obj = { - "ipAdEntIfIndex", 2, 0, - NULL, &_ipAdEntAddr_obj -}, -_ipAdEntNetMask_obj = { - "ipAdEntNetMask", 3, 0, - NULL, &_ipAdEntIfIndex_obj -}, -_ipAdEntBcastAddr_obj = { - "ipAdEntBcastAddr", 4, 0, - NULL, &_ipAdEntNetMask_obj -}, -_ipAdEntReasmMaxSize_obj = { - "ipAdEntReasmMaxSize", 5, 0, - NULL, &_ipAdEntBcastAddr_obj -}, -_ipAddrEntry_obj = { - "ipAddrEntry", 1, 0, - &_ipAdEntReasmMaxSize_obj, NULL -}, -_ipForwarding_obj = { - "ipForwarding", 1, 0, - NULL, NULL -}, -_ipDefaultTTL_obj = { - "ipDefaultTTL", 2, 0, - NULL, &_ipForwarding_obj -}, -_ipInReceives_obj = { - "ipInReceives", 3, 0, - NULL, &_ipDefaultTTL_obj -}, -_ipInHdrErrors_obj = { - "ipInHdrErrors", 4, 0, - NULL, &_ipInReceives_obj -}, -_ipInAddrErrors_obj = { - "ipInAddrErrors", 5, 0, - NULL, &_ipInHdrErrors_obj -}, -_ipForwDatagrams_obj = { - "ipForwDatagrams", 6, 0, - NULL, &_ipInAddrErrors_obj -}, -_ipInUnknownProtos_obj = { - "ipInUnknownProtos", 7, 0, - NULL, &_ipForwDatagrams_obj -}, -_ipInDiscards_obj = { - "ipInDiscards", 8, 0, - NULL, &_ipInUnknownProtos_obj -}, -_ipInDelivers_obj = { - "ipInDelivers", 9, 0, - NULL, &_ipInDiscards_obj -}, -_ipOutRequests_obj = { - "ipOutRequests", 10, 0, - NULL, &_ipInDelivers_obj -}, -_ipOutDiscards_obj = { - "ipOutDiscards", 11, 0, - NULL, &_ipOutRequests_obj -}, -_ipOutNoRoutes_obj = { - "ipOutNoRoutes", 12, 0, - NULL, &_ipOutDiscards_obj -}, -_ipReasmTimeout_obj = { - "ipReasmTimeout", 13, 0, - NULL, &_ipOutNoRoutes_obj -}, -_ipReasmReqds_obj = { - "ipReasmReqds", 14, 0, - NULL, &_ipReasmTimeout_obj -}, -_ipReasmOKs_obj = { - "ipReasmOKs", 15, 0, - NULL, &_ipReasmReqds_obj -}, -_ipReasmFails_obj = { - "ipReasmFails", 16, 0, - NULL, &_ipReasmOKs_obj -}, -_ipFragOKs_obj = { - "ipFragOKs", 17, 0, - NULL, &_ipReasmFails_obj -}, -_ipFragFails_obj = { - "ipFragFails", 18, 0, - NULL, &_ipFragOKs_obj -}, -_ipFragCreates_obj = { - "ipFragCreates", 19, 0, - NULL, &_ipFragFails_obj -}, -_ipAddrTable_obj = { - "ipAddrTable", 20, 0, - &_ipAddrEntry_obj, &_ipFragCreates_obj -}, -_ipRoutingTable_obj = { - "ipRoutingTable", 21, 0, - &_ipRouteEntry_obj, &_ipAddrTable_obj -}, -_ipNetToMediaTable_obj = { - "ipNetToMediaTable", 22, 0, - &_ipNetToMediaEntry_obj, &_ipRoutingTable_obj -}, -_atIfIndex_obj = { - "atIfIndex", 1, 0, - NULL, NULL -}, -_atPhysAddress_obj = { - "atPhysAddress", 2, 0, - NULL, &_atIfIndex_obj -}, -_atNetAddress_obj = { - "atNetAddress", 3, 0, - NULL, &_atPhysAddress_obj -}, -_atEntry_obj = { - "atEntry", 1, 0, - &_atNetAddress_obj, NULL -}, -_atTable_obj = { - "atTable", 1, 0, - &_atEntry_obj, NULL -}, -_ifIndex_obj = { - "ifIndex", 1, 0, - NULL, NULL -}, -_ifDescr_obj = { - "ifDescr", 2, 0, - NULL, &_ifIndex_obj -}, -_ifType_obj = { - "ifType", 3, 0, - NULL, &_ifDescr_obj -}, -_ifMtu_obj = { - "ifMtu", 4, 0, - NULL, &_ifType_obj -}, -_ifSpeed_obj = { - "ifSpeed", 5, 0, - NULL, &_ifMtu_obj -}, -_ifPhysAddress_obj = { - "ifPhysAddress", 6, 0, - NULL, &_ifSpeed_obj -}, -_ifAdminStatus_obj = { - "ifAdminStatus", 7, 0, - NULL, &_ifPhysAddress_obj -}, -_ifOperStatus_obj = { - "ifOperStatus", 8, 0, - NULL, &_ifAdminStatus_obj -}, -_ifLastChange_obj = { - "ifLastChange", 9, 0, - NULL, &_ifOperStatus_obj -}, -_ifInOctets_obj = { - "ifInOctets", 10, 0, - NULL, &_ifLastChange_obj -}, -_ifInUcastPkts_obj = { - "ifInUcastPkts", 11, 0, - NULL, &_ifInOctets_obj -}, -_ifInNUcastPkts_obj = { - "ifInNUcastPkts", 12, 0, - NULL, &_ifInUcastPkts_obj -}, -_ifInDiscards_obj = { - "ifInDiscards", 13, 0, - NULL, &_ifInNUcastPkts_obj -}, -_ifInErrors_obj = { - "ifInErrors", 14, 0, - NULL, &_ifInDiscards_obj -}, -_ifInUnknownProtos_obj = { - "ifInUnknownProtos", 15, 0, - NULL, &_ifInErrors_obj -}, -_ifOutOctets_obj = { - "ifOutOctets", 16, 0, - NULL, &_ifInUnknownProtos_obj -}, -_ifOutUcastPkts_obj = { - "ifOutUcastPkts", 17, 0, - NULL, &_ifOutOctets_obj -}, -_ifOutNUcastPkts_obj = { - "ifOutNUcastPkts", 18, 0, - NULL, &_ifOutUcastPkts_obj -}, -_ifOutDiscards_obj = { - "ifOutDiscards", 19, 0, - NULL, &_ifOutNUcastPkts_obj -}, -_ifOutErrors_obj = { - "ifOutErrors", 20, 0, - NULL, &_ifOutDiscards_obj -}, -_ifOutQLen_obj = { - "ifOutQLen", 21, 0, - NULL, &_ifOutErrors_obj -}, -_ifSpecific_obj = { - "ifSpecific", 22, 0, - NULL, &_ifOutQLen_obj -}, -_ifEntry_obj = { - "ifEntry", 1, 0, - &_ifSpecific_obj, NULL -}, -_ifNumber_obj = { - "ifNumber", 1, 0, - NULL, NULL -}, -_ifTable_obj = { - "ifTable", 2, 0, - &_ifEntry_obj, &_ifNumber_obj -}, -_sysDescr_obj = { - "sysDescr", 1, 0, - NULL, NULL -}, -_sysObjectID_obj = { - "sysObjectID", 2, 0, - NULL, &_sysDescr_obj -}, -_sysUpTime_obj = { - "sysUpTime", 3, 0, - NULL, &_sysObjectID_obj -}, -_sysContact_obj = { - "sysContact", 4, 0, - NULL, &_sysUpTime_obj -}, -_sysName_obj = { - "sysName", 5, 0, - NULL, &_sysContact_obj -}, -_sysLocation_obj = { - "sysLocation", 6, 0, - NULL, &_sysName_obj -}, -_sysServices_obj = { - "sysServices", 7, 0, - NULL, &_sysLocation_obj -}, -_system_obj = { - "system", 1, 0, - &_sysServices_obj, NULL -}, -_interfaces_obj = { - "interfaces", 2, 0, - &_ifTable_obj, &_system_obj -}, -_at_obj = { - "at", 3, 0, - &_atTable_obj, &_interfaces_obj -}, -_ip_obj = { - "ip", 4, 0, - &_ipNetToMediaTable_obj, &_at_obj -}, -_icmp_obj = { - "icmp", 5, 0, - &_icmpOutAddrMaskReps_obj, &_ip_obj -}, -_tcp_obj = { - "tcp", 6, 0, - &_tcpOutRsts_obj, &_icmp_obj -}, -_udp_obj = { - "udp", 7, 0, - &_udpTable_obj, &_tcp_obj -}, -_egp_obj = { - "egp", 8, 0, - &_egpAs_obj, &_udp_obj -}, -_transmission_obj = { - "transmission", 10, 0, - NULL, &_egp_obj -}, -_snmp_obj = { - "snmp", 11, 0, - &_snmpEnableAuthTraps_obj, &_transmission_obj -}, -_usmMIBCompliances_obj = { - "usmMIBCompliances", 1, 0, - NULL, NULL -}, -_usmMIBGroups_obj = { - "usmMIBGroups", 2, 0, - NULL, &_usmMIBCompliances_obj -}, -_usmUserEngineID_obj = { - "usmUserEngineID", 1, 0, - NULL, NULL -}, -_usmUserName_obj = { - "usmUserName", 2, 0, - NULL, &_usmUserEngineID_obj -}, -_usmUserSecurityName_obj = { - "usmUserSecurityName", 3, 0, - NULL, &_usmUserName_obj -}, -_usmUserCloneFrom_obj = { - "usmUserCloneFrom", 4, 0, - NULL, &_usmUserSecurityName_obj -}, -_usmUserAuthProtocol_obj = { - "usmUserAuthProtocol", 5, 0, - NULL, &_usmUserCloneFrom_obj -}, -_usmUserAuthKeyChange_obj = { - "usmUserAuthKeyChange", 6, 0, - NULL, &_usmUserAuthProtocol_obj -}, -_usmUserOwnAuthKeyChange_obj = { - "usmUserOwnAuthKeyChange", 7, 0, - NULL, &_usmUserAuthKeyChange_obj -}, -_usmUserPrivProtocol_obj = { - "usmUserPrivProtocol", 8, 0, - NULL, &_usmUserOwnAuthKeyChange_obj -}, -_usmUserPrivKeyChange_obj = { - "usmUserPrivKeyChange", 9, 0, - NULL, &_usmUserPrivProtocol_obj -}, -_usmUserOwnPrivKeyChange_obj = { - "usmUserOwnPrivKeyChange", 10, 0, - NULL, &_usmUserPrivKeyChange_obj -}, -_usmUserPublic_obj = { - "usmUserPublic", 11, 0, - NULL, &_usmUserOwnPrivKeyChange_obj -}, -_usmUserStorageType_obj = { - "usmUserStorageType", 12, 0, - NULL, &_usmUserPublic_obj -}, -_usmUserStatus_obj = { - "usmUserStatus", 13, 0, - NULL, &_usmUserStorageType_obj -}, -_usmUserEntry_obj = { - "usmUserEntry", 1, 0, - &_usmUserStatus_obj, NULL -}, -_usmUserSpinLock_obj = { - "usmUserSpinLock", 1, 0, - NULL, NULL -}, -_usmUserTable_obj = { - "usmUserTable", 2, 0, - &_usmUserEntry_obj, &_usmUserSpinLock_obj -}, -_usmStatsUnsupportedSecLevels_obj = { - "usmStatsUnsupportedSecLevels", 1, 0, - NULL, NULL -}, -_usmStatsNotInTimeWindows_obj = { - "usmStatsNotInTimeWindows", 2, 0, - NULL, &_usmStatsUnsupportedSecLevels_obj -}, -_usmStatsUnknownUserNames_obj = { - "usmStatsUnknownUserNames", 3, 0, - NULL, &_usmStatsNotInTimeWindows_obj -}, -_usmStatsUnknownEngineIDs_obj = { - "usmStatsUnknownEngineIDs", 4, 0, - NULL, &_usmStatsUnknownUserNames_obj -}, -_usmStatsWrongDigests_obj = { - "usmStatsWrongDigests", 5, 0, - NULL, &_usmStatsUnknownEngineIDs_obj -}, -_usmStatsDecryptionErrors_obj = { - "usmStatsDecryptionErrors", 6, 0, - NULL, &_usmStatsWrongDigests_obj -}, -_usmStats_obj = { - "usmStats", 1, 0, - &_usmStatsDecryptionErrors_obj, NULL -}, -_usmUser_obj = { - "usmUser", 2, 0, - &_usmUserTable_obj, &_usmStats_obj -}, -_usmMIBObjects_obj = { - "usmMIBObjects", 1, 0, - &_usmUser_obj, NULL -}, -_usmMIBConformance_obj = { - "usmMIBConformance", 2, 0, - &_usmMIBGroups_obj, &_usmMIBObjects_obj -}, -_snmpMPDMIBCompliances_obj = { - "snmpMPDMIBCompliances", 1, 0, - NULL, NULL -}, -_snmpMPDMIBGroups_obj = { - "snmpMPDMIBGroups", 2, 0, - NULL, &_snmpMPDMIBCompliances_obj -}, -_snmpUnknownSecurityModels_obj = { - "snmpUnknownSecurityModels", 1, 0, - NULL, NULL -}, -_snmpInvalidMsgs_obj = { - "snmpInvalidMsgs", 2, 0, - NULL, &_snmpUnknownSecurityModels_obj -}, -_snmpUnknownPDUHandlers_obj = { - "snmpUnknownPDUHandlers", 3, 0, - NULL, &_snmpInvalidMsgs_obj -}, -_snmpMPDStats_obj = { - "snmpMPDStats", 1, 0, - &_snmpUnknownPDUHandlers_obj, NULL -}, -_snmpMPDAdmin_obj = { - "snmpMPDAdmin", 1, 0, - NULL, NULL -}, -_snmpMPDMIBObjects_obj = { - "snmpMPDMIBObjects", 2, 0, - &_snmpMPDStats_obj, &_snmpMPDAdmin_obj -}, -_snmpMPDMIBConformance_obj = { - "snmpMPDMIBConformance", 3, 0, - &_snmpMPDMIBGroups_obj, &_snmpMPDMIBObjects_obj -}, -_snmpEngineID_obj = { - "snmpEngineID", 1, 0, - NULL, NULL -}, -_snmpEngineBoots_obj = { - "snmpEngineBoots", 2, 0, - NULL, &_snmpEngineID_obj -}, -_snmpEngineTime_obj = { - "snmpEngineTime", 3, 0, - NULL, &_snmpEngineBoots_obj -}, -_snmpEngineMaxMessageSize_obj = { - "snmpEngineMaxMessageSize", 4, 0, - NULL, &_snmpEngineTime_obj -}, -_snmpEngine_obj = { - "snmpEngine", 1, 0, - &_snmpEngineMaxMessageSize_obj, NULL -}, -_snmpFrameworkAdmin_obj = { - "snmpFrameworkAdmin", 1, 0, - NULL, NULL -}, -_snmpFrameworkMIBObjects_obj = { - "snmpFrameworkMIBObjects", 2, 0, - &_snmpEngine_obj, &_snmpFrameworkAdmin_obj -}, -_snmpFrameworkMIBConformance_obj = { - "snmpFrameworkMIBConformance", 3, 0, - NULL, &_snmpFrameworkMIBObjects_obj -}, -_snmpFrameworkMIB_obj = { - "snmpFrameworkMIB", 10, 0, - &_snmpFrameworkMIBConformance_obj, NULL -}, -_snmpMPDMIB_obj = { - "snmpMPDMIB", 11, 0, - &_snmpMPDMIBConformance_obj, &_snmpFrameworkMIB_obj -}, -_snmpUsmMIB_obj = { - "snmpUsmMIB", 15, 0, - &_usmMIBConformance_obj, &_snmpMPDMIB_obj -}, -_snmpModules_obj = { - "snmpModules", 3, 0, - &_snmpUsmMIB_obj, NULL -}, -_mib_obj = { - "mib", 1, 0, - &_snmp_obj, NULL -}, -_directory_obj = { - "directory", 1, 0, - NULL, NULL -}, -_mgmt_obj = { - "mgmt", 2, 0, - &_mib_obj, &_directory_obj -}, -_experimental_obj = { - "experimental", 3, 0, - NULL, &_mgmt_obj -}, -_private_obj = { - "private", 4, 0, - &_enterprises_obj, &_experimental_obj -}, -_security_obj = { - "security", 5, 0, - NULL, &_private_obj -}, -_snmpV2_obj = { - "snmpV2", 6, 0, - &_snmpModules_obj, &_security_obj -}, -_internet_obj = { - "internet", 1, 0, - &_snmpV2_obj, NULL -}, -_dod_obj = { - "dod", 6, 0, - &_internet_obj, NULL -}, -_org_obj = { - "org", 3, 0, - &_dod_obj, NULL -}, -_iso_obj = { - "iso", 1, 0, - &_org_obj, NULL -}, -*mibroot = &_iso_obj; diff --git a/contrib/tcpdump/missing/addrinfo.h b/contrib/tcpdump/missing/addrinfo.h deleted file mode 100644 index 09f6a425eaab3..0000000000000 --- a/contrib/tcpdump/missing/addrinfo.h +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* $Id: addrinfo.h,v 1.4 2002/06/11 17:13:36 itojun Exp $ */ - -#ifndef HAVE_ADDRINFO - -/* - * Error return codes from getaddrinfo() - */ -#define EAI_ADDRFAMILY 1 /* address family for hostname not supported */ -#define EAI_AGAIN 2 /* temporary failure in name resolution */ -#define EAI_BADFLAGS 3 /* invalid value for ai_flags */ -#define EAI_FAIL 4 /* non-recoverable failure in name resolution */ -#define EAI_FAMILY 5 /* ai_family not supported */ -#define EAI_MEMORY 6 /* memory allocation failure */ -#define EAI_NODATA 7 /* no address associated with hostname */ -#define EAI_NONAME 8 /* hostname nor servname provided, or not known */ -#define EAI_SERVICE 9 /* servname not supported for ai_socktype */ -#define EAI_SOCKTYPE 10 /* ai_socktype not supported */ -#define EAI_SYSTEM 11 /* system error returned in errno */ -#define EAI_BADHINTS 12 -#define EAI_PROTOCOL 13 -#define EAI_MAX 14 - -/* internal error */ -#define NETDB_INTERNAL -1 /* see errno */ - -/* - * Flag values for getaddrinfo() - */ -#define AI_PASSIVE 0x00000001 /* get address to use bind() */ -#define AI_CANONNAME 0x00000002 /* fill ai_canonname */ -#define AI_NUMERICHOST 0x00000004 /* prevent name resolution */ -/* valid flags for addrinfo */ -#define AI_MASK (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST) - -#define AI_ALL 0x00000100 /* IPv6 and IPv4-mapped (with AI_V4MAPPED) */ -#define AI_V4MAPPED_CFG 0x00000200 /* accept IPv4-mapped if kernel supports */ -#define AI_ADDRCONFIG 0x00000400 /* only if any address is assigned */ -#define AI_V4MAPPED 0x00000800 /* accept IPv4-mapped IPv6 address */ -/* special recommended flags for getipnodebyname */ -#define AI_DEFAULT (AI_V4MAPPED_CFG | AI_ADDRCONFIG) - -struct addrinfo { - int ai_flags; /* AI_PASSIVE, AI_CANONNAME */ - int ai_family; /* PF_xxx */ - int ai_socktype; /* SOCK_xxx */ - int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */ - size_t ai_addrlen; /* length of ai_addr */ - char *ai_canonname; /* canonical name for hostname */ - struct sockaddr *ai_addr; /* binary address */ - struct addrinfo *ai_next; /* next structure in linked list */ -}; - -extern void freeaddrinfo (struct addrinfo *); -extern void freehostent (struct hostent *); -extern char *gai_strerror (int); -extern int getaddrinfo (const char *, const char *, - const struct addrinfo *, struct addrinfo **); -extern int getnameinfo (const struct sockaddr *, size_t, char *, - size_t, char *, size_t, int); -extern struct hostent *getipnodebyaddr (const void *, size_t, int, int *); -extern struct hostent *getipnodebyname (const char *, int, int, int *); -extern int inet_pton (int, const char *, void *); -extern const char *inet_ntop (int, const void *, char *, size_t); -#endif /* HAVE_ADDRINFO */ - -/* - * Constants for getnameinfo() - */ -#ifndef NI_MAXHOST -#define NI_MAXHOST 1025 -#endif -#ifndef NI_MAXSERV -#define NI_MAXSERV 32 -#endif - -/* - * Flag values for getnameinfo() - */ -#ifndef NI_NOFQDN -#define NI_NOFQDN 0x00000001 -#endif -#ifndef NI_NUMERICHOST -#define NI_NUMERICHOST 0x00000002 -#endif -#ifndef NI_NAMEREQD -#define NI_NAMEREQD 0x00000004 -#endif -#ifndef NI_NUMERICSERV -#define NI_NUMERICSERV 0x00000008 -#endif -#ifndef NI_DGRAM -#define NI_DGRAM 0x00000010 -#endif diff --git a/contrib/tcpdump/missing/addrsize.h b/contrib/tcpdump/missing/addrsize.h deleted file mode 100644 index 13db4da9159de..0000000000000 --- a/contrib/tcpdump/missing/addrsize.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 1999 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -#ifndef INADDRSZ -#define INADDRSZ 4 /* IPv4 T_A */ -#endif - -#ifndef IN6ADDRSZ -#define IN6ADDRSZ 16 /* IPv6 T_AAAA */ -#endif - diff --git a/contrib/tcpdump/missing/bittypes.h b/contrib/tcpdump/missing/bittypes.h deleted file mode 100644 index 31013ae4552a1..0000000000000 --- a/contrib/tcpdump/missing/bittypes.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (C) 1999 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -#ifndef HAVE_U_INT8_T - -#if SIZEOF_CHAR == 1 -typedef unsigned char u_int8_t; -#elif SIZEOF_INT == 1 -typedef unsigned int u_int8_t; -#else /* XXX */ -#error "there's no appropriate type for u_int8_t" -#endif - -#endif /* HAVE_U_INT8_T */ - -#ifndef HAVE_U_INT16_T - -#if SIZEOF_SHORT == 2 -typedef unsigned short u_int16_t; -#elif SIZEOF_INT == 2 -typedef unsigned int u_int16_t; -#elif SIZEOF_CHAR == 2 -typedef unsigned char u_int16_t; -#else /* XXX */ -#error "there's no appropriate type for u_int16_t" -#endif - -#endif /* HAVE_U_INT16_T */ - -#ifndef HAVE_U_INT32_T - -#if SIZEOF_INT == 4 -typedef unsigned int u_int32_t; -#elif SIZEOF_LONG == 4 -typedef unsigned long u_int32_t; -#elif SIZEOF_SHORT == 4 -typedef unsigned short u_int32_t; -#else /* XXX */ -#error "there's no appropriate type for u_int32_t" -#endif - -#endif /* HAVE_U_INT32_T */ - -#ifndef HAVE_U_INT64_T - -#if SIZEOF_LONG_LONG == 8 -typedef unsigned long long u_int64_t; -#elif defined(_MSC_EXTENSIONS) -typedef unsigned _int64 u_int64_t; -#elif SIZEOF_INT == 8 -typedef unsigned int u_int64_t; -#elif SIZEOF_LONG == 8 -typedef unsigned long u_int64_t; -#elif SIZEOF_SHORT == 8 -typedef unsigned short u_int64_t; -#else /* XXX */ -#error "there's no appropriate type for u_int64_t" -#endif - -#endif /* HAVE_U_INT64_T */ - -#ifndef PRId64 -#ifdef _MSC_EXTENSIONS -#define PRId64 "I64d" -#else /* _MSC_EXTENSIONS */ -#define PRId64 "lld" -#endif /* _MSC_EXTENSIONS */ -#endif /* PRId64 */ - -#ifndef PRIo64 -#ifdef _MSC_EXTENSIONS -#define PRIo64 "I64o" -#else /* _MSC_EXTENSIONS */ -#define PRIo64 "llo" -#endif /* _MSC_EXTENSIONS */ -#endif /* PRIo64 */ - -#ifndef PRIx64 -#ifdef _MSC_EXTENSIONS -#define PRIx64 "I64x" -#else /* _MSC_EXTENSIONS */ -#define PRIx64 "llx" -#endif /* _MSC_EXTENSIONS */ -#endif /* PRIx64 */ - -#ifndef PRIu64 -#ifdef _MSC_EXTENSIONS -#define PRIu64 "I64u" -#else /* _MSC_EXTENSIONS */ -#define PRIu64 "llu" -#endif /* _MSC_EXTENSIONS */ -#endif /* PRIu64 */ diff --git a/contrib/tcpdump/missing/cdecl_ext.h b/contrib/tcpdump/missing/cdecl_ext.h deleted file mode 100644 index 9591db2645742..0000000000000 --- a/contrib/tcpdump/missing/cdecl_ext.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 1999 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -#ifndef HAVE_PORTABLE_PROTOTYPE - -#if defined(__STDC__) || defined(__cplusplus) -#define __P(protos) protos /* full-blown ANSI C */ -#else -#define __P(protos) () /* traditional C preprocessor */ -#endif - -#endif /* !HAVE_PORTABLE_PROTOTYPE */ diff --git a/contrib/tcpdump/missing/datalinks.c b/contrib/tcpdump/missing/datalinks.c deleted file mode 100644 index 2cc1267379453..0000000000000 --- a/contrib/tcpdump/missing/datalinks.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 1993, 1994, 1995, 1996, 1997, 1998 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the Computer Systems - * Engineering Group at Lawrence Berkeley Laboratory. - * 4. Neither the name of the University nor of the Laboratory may be used - * to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/missing/datalinks.c,v 1.3 2003/11/16 09:36:47 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <pcap.h> -#include <stdlib.h> -#include <stdio.h> - -#include "pcap-missing.h" - -/* - * Stub versions for platforms that don't support them. - */ -int -pcap_list_datalinks(pcap_t *p, int **dlt_buffer) -{ - /* - * This platform doesn't support changing the DLT for an - * interface. Return a list of DLTs containing only the - * DLT this device supports. - */ - *dlt_buffer = (int*)malloc(sizeof(**dlt_buffer)); - if (*dlt_buffer == NULL) - return (-1); - **dlt_buffer = pcap_datalink(p); - return (1); -} diff --git a/contrib/tcpdump/missing/dlnames.c b/contrib/tcpdump/missing/dlnames.c deleted file mode 100644 index f4f583ee8670d..0000000000000 --- a/contrib/tcpdump/missing/dlnames.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright (c) 1993, 1994, 1995, 1996, 1997, 1998 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the Computer Systems - * Engineering Group at Lawrence Berkeley Laboratory. - * 4. Neither the name of the University nor of the Laboratory may be used - * to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/missing/dlnames.c,v 1.5 2003/11/18 23:09:43 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <pcap.h> -#include <string.h> - -#include "pcap-missing.h" - -struct dlt_choice { - const char *name; - const char *description; - int dlt; -}; - -#define DLT_CHOICE(code, description) { #code, description, code } -#define DLT_CHOICE_SENTINEL { NULL, NULL, 0 } - -static struct dlt_choice dlt_choices[] = { - DLT_CHOICE(DLT_NULL, "BSD loopback"), - DLT_CHOICE(DLT_EN10MB, "Ethernet"), - DLT_CHOICE(DLT_IEEE802, "Token ring"), - DLT_CHOICE(DLT_ARCNET, "ARCNET"), - DLT_CHOICE(DLT_SLIP, "SLIP"), - DLT_CHOICE(DLT_PPP, "PPP"), - DLT_CHOICE(DLT_FDDI, "FDDI"), - DLT_CHOICE(DLT_ATM_RFC1483, "RFC 1483 IP-over-ATM"), - DLT_CHOICE(DLT_RAW, "Raw IP"), -#ifdef DLT_SLIP_BSDOS - DLT_CHOICE(DLT_SLIP_BSDOS, "BSD/OS SLIP"), -#endif -#ifdef DLT_PPP_BSDOS - DLT_CHOICE(DLT_PPP_BSDOS, "BSD/OS PPP"), -#endif -#ifdef DLT_ATM_CLIP - DLT_CHOICE(DLT_ATM_CLIP, "Linux Classical IP-over-ATM"), -#endif -#ifdef DLT_PPP_SERIAL - DLT_CHOICE(DLT_PPP_SERIAL, "PPP over serial"), -#endif -#ifdef DLT_PPP_ETHER - DLT_CHOICE(DLT_PPP_ETHER, "PPPoE"), -#endif -#ifdef DLT_C_HDLC - DLT_CHOICE(DLT_C_HDLC, "Cisco HDLC"), -#endif -#ifdef DLT_IEEE802_11 - DLT_CHOICE(DLT_IEEE802_11, "802.11"), -#endif -#ifdef DLT_FRELAY - DLT_CHOICE(DLT_FRELAY, "Frame Relay"), -#endif -#ifdef DLT_LOOP - DLT_CHOICE(DLT_LOOP, "OpenBSD loopback"), -#endif -#ifdef DLT_ENC - DLT_CHOICE(DLT_ENC, "OpenBSD encapsulated IP"), -#endif -#ifdef DLT_LINUX_SLL - DLT_CHOICE(DLT_LINUX_SLL, "Linux cooked"), -#endif -#ifdef DLT_LTALK - DLT_CHOICE(DLT_LTALK, "Localtalk"), -#endif -#ifdef DLT_PFLOG - DLT_CHOICE(DLT_PFLOG, "OpenBSD pflog file"), -#endif -#ifdef DLT_PRISM_HEADER - DLT_CHOICE(DLT_PRISM_HEADER, "802.11 plus Prism header"), -#endif -#ifdef DLT_IP_OVER_FC - DLT_CHOICE(DLT_IP_OVER_FC, "RFC 2625 IP-over-Fibre Channel"), -#endif -#ifdef DLT_SUNATM - DLT_CHOICE(DLT_SUNATM, "Sun raw ATM"), -#endif -#ifdef DLT_IEEE802_11_RADIO - DLT_CHOICE(DLT_IEEE802_11_RADIO, "802.11 plus radio information header"), -#endif -#ifdef DLT_ARCNET_LINUX - DLT_CHOICE(DLT_ARCNET_LINUX, "Linux ARCNET"), -#endif -#ifdef DLT_LINUX_IRDA - DLT_CHOICE(DLT_LINUX_IRDA, "Linux IrDA"), -#endif -#ifdef DLT_LANE8023 - DLT_CHOICE(DLT_LANE8023, "Linux 802.3 LANE"), -#endif -#ifdef DLT_CIP - DLT_CHOICE(DLT_CIP, "Linux Classical IP-over-ATM"), -#endif -#ifdef DLT_HDLC - DLT_CHOICE(DLT_HDLC, "Cisco HDLC"), -#endif - DLT_CHOICE_SENTINEL -}; - -#ifndef HAVE_PCAP_DATALINK_NAME_TO_VAL -int -pcap_datalink_name_to_val(const char *name) -{ - int i; - - for (i = 0; dlt_choices[i].name != NULL; i++) { - if (strcasecmp(dlt_choices[i].name + sizeof("DLT_") - 1, - name) == 0) - return (dlt_choices[i].dlt); - } - return (-1); -} - -const char * -pcap_datalink_val_to_name(int dlt) -{ - int i; - - for (i = 0; dlt_choices[i].name != NULL; i++) { - if (dlt_choices[i].dlt == dlt) - return (dlt_choices[i].name + sizeof("DLT_") - 1); - } - return (NULL); -} -#endif - -const char * -pcap_datalink_val_to_description(int dlt) -{ - int i; - - for (i = 0; dlt_choices[i].name != NULL; i++) { - if (dlt_choices[i].dlt == dlt) - return (dlt_choices[i].description); - } - return (NULL); -} diff --git a/contrib/tcpdump/missing/getaddrinfo.c b/contrib/tcpdump/missing/getaddrinfo.c deleted file mode 100644 index 883032282c417..0000000000000 --- a/contrib/tcpdump/missing/getaddrinfo.c +++ /dev/null @@ -1,1115 +0,0 @@ -/* - * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * "#ifdef FAITH" part is local hack for supporting IPv4-v6 translator. - * - * Issues to be discussed: - * - Thread safe-ness must be checked. - * - Return values. There are nonstandard return values defined and used - * in the source code. This is because RFC2553 is silent about which error - * code must be returned for which situation. - * Note: - * - We use getipnodebyname() just for thread-safeness. There's no intent - * to let it do PF_UNSPEC (actually we never pass PF_UNSPEC to - * getipnodebyname(). - * - The code filters out AFs that are not supported by the kernel, - * when globbing NULL hostname (to loopback, or wildcard). Is it the right - * thing to do? What is the relationship with post-RFC2553 AI_ADDRCONFIG - * in ai_flags? - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/missing/getaddrinfo.c,v 1.13 2003/11/16 09:36:48 guy Exp $"; -#endif - -#include <sys/types.h> -#include <sys/param.h> -#if 0 -#include <sys/sysctl.h> -#endif -#include <sys/socket.h> -#include <net/if.h> -#include <netinet/in.h> -#include <arpa/inet.h> -#include <arpa/nameser.h> -#include <netdb.h> -#include <resolv.h> -#include <string.h> -#include <stdlib.h> -#include <stddef.h> -#include <ctype.h> -#include <unistd.h> -#include <stdio.h> -#include <errno.h> - -#ifndef HAVE_U_INT32_T -#include "bittypes.h" -#endif - -#ifndef HAVE_SOCKADDR_STORAGE -#include "sockstorage.h" -#endif - -#ifdef NEED_ADDRINFO_H -#include "addrinfo.h" -#endif - -#if defined(__KAME__) && defined(INET6) -# define FAITH -#endif - -#define SUCCESS 0 -#define ANY 0 -#define YES 1 -#define NO 0 - -#ifdef FAITH -static int translate = NO; -static struct in6_addr faith_prefix = IN6ADDR_ANY_INIT; -#endif - -static const char in_addrany[] = { 0, 0, 0, 0 }; -static const char in6_addrany[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; -static const char in_loopback[] = { 127, 0, 0, 1 }; -static const char in6_loopback[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 -}; - -struct sockinet { - u_char si_len; - u_char si_family; - u_short si_port; - u_int32_t si_scope_id; -}; - -static const struct afd { - int a_af; - int a_addrlen; - int a_socklen; - int a_off; - const char *a_addrany; - const char *a_loopback; - int a_scoped; -} afdl [] = { -#ifdef INET6 - {PF_INET6, sizeof(struct in6_addr), - sizeof(struct sockaddr_in6), - offsetof(struct sockaddr_in6, sin6_addr), - in6_addrany, in6_loopback, 1}, -#endif - {PF_INET, sizeof(struct in_addr), - sizeof(struct sockaddr_in), - offsetof(struct sockaddr_in, sin_addr), - in_addrany, in_loopback, 0}, - {0, 0, 0, 0, NULL, NULL, 0}, -}; - -struct explore { - int e_af; - int e_socktype; - int e_protocol; - const char *e_protostr; - int e_wild; -#define WILD_AF(ex) ((ex)->e_wild & 0x01) -#define WILD_SOCKTYPE(ex) ((ex)->e_wild & 0x02) -#define WILD_PROTOCOL(ex) ((ex)->e_wild & 0x04) -}; - -static const struct explore explore[] = { -#if 0 - { PF_LOCAL, 0, ANY, ANY, NULL, 0x01 }, -#endif -#ifdef INET6 - { PF_INET6, SOCK_DGRAM, IPPROTO_UDP, "udp", 0x07 }, - { PF_INET6, SOCK_STREAM, IPPROTO_TCP, "tcp", 0x07 }, - { PF_INET6, SOCK_RAW, ANY, NULL, 0x05 }, -#endif - { PF_INET, SOCK_DGRAM, IPPROTO_UDP, "udp", 0x07 }, - { PF_INET, SOCK_STREAM, IPPROTO_TCP, "tcp", 0x07 }, - { PF_INET, SOCK_RAW, ANY, NULL, 0x05 }, - { -1, 0, 0, NULL, 0 }, -}; - -#ifdef INET6 -#define PTON_MAX 16 -#else -#define PTON_MAX 4 -#endif - - -static int str_isnumber (const char *); -static int explore_fqdn (const struct addrinfo *, const char *, - const char *, struct addrinfo **); -static int explore_null (const struct addrinfo *, const char *, - const char *, struct addrinfo **); -static int explore_numeric (const struct addrinfo *, const char *, - const char *, struct addrinfo **); -static int explore_numeric_scope (const struct addrinfo *, const char *, - const char *, struct addrinfo **); -static int get_name (const char *, const struct afd *, struct addrinfo **, - char *, const struct addrinfo *, const char *); -static int get_canonname (const struct addrinfo *, - struct addrinfo *, const char *); -static struct addrinfo *get_ai (const struct addrinfo *, - const struct afd *, const char *); -static int get_portmatch (const struct addrinfo *, const char *); -static int get_port (struct addrinfo *, const char *, int); -static const struct afd *find_afd (int); - -static char *ai_errlist[] = { - "Success", - "Address family for hostname not supported", /* EAI_ADDRFAMILY */ - "Temporary failure in name resolution", /* EAI_AGAIN */ - "Invalid value for ai_flags", /* EAI_BADFLAGS */ - "Non-recoverable failure in name resolution", /* EAI_FAIL */ - "ai_family not supported", /* EAI_FAMILY */ - "Memory allocation failure", /* EAI_MEMORY */ - "No address associated with hostname", /* EAI_NODATA */ - "hostname nor servname provided, or not known", /* EAI_NONAME */ - "servname not supported for ai_socktype", /* EAI_SERVICE */ - "ai_socktype not supported", /* EAI_SOCKTYPE */ - "System error returned in errno", /* EAI_SYSTEM */ - "Invalid value for hints", /* EAI_BADHINTS */ - "Resolved protocol is unknown", /* EAI_PROTOCOL */ - "Unknown error", /* EAI_MAX */ -}; - -/* XXX macros that make external reference is BAD. */ - -#define GET_AI(ai, afd, addr) \ -do { \ - /* external reference: pai, error, and label free */ \ - (ai) = get_ai(pai, (afd), (addr)); \ - if ((ai) == NULL) { \ - error = EAI_MEMORY; \ - goto free; \ - } \ -} while (0) - -#define GET_PORT(ai, serv) \ -do { \ - /* external reference: error and label free */ \ - error = get_port((ai), (serv), 0); \ - if (error != 0) \ - goto free; \ -} while (0) - -#define GET_CANONNAME(ai, str) \ -do { \ - /* external reference: pai, error and label free */ \ - error = get_canonname(pai, (ai), (str)); \ - if (error != 0) \ - goto free; \ -} while (0) - -#define ERR(err) \ -do { \ - /* external reference: error, and label bad */ \ - error = (err); \ - goto bad; \ -} while (0) - -#define MATCH_FAMILY(x, y, w) \ - ((x) == (y) || ((w) && ((x) == PF_UNSPEC || (y) == PF_UNSPEC))) -#define MATCH(x, y, w) \ - ((x) == (y) || ((w) && ((x) == ANY || (y) == ANY))) - -char * -gai_strerror(ecode) - int ecode; -{ - if (ecode < 0 || ecode > EAI_MAX) - ecode = EAI_MAX; - return ai_errlist[ecode]; -} - -void -freeaddrinfo(ai) - struct addrinfo *ai; -{ - struct addrinfo *next; - - do { - next = ai->ai_next; - if (ai->ai_canonname) - free(ai->ai_canonname); - /* no need to free(ai->ai_addr) */ - free(ai); - } while ((ai = next) != NULL); -} - -static int -str_isnumber(p) - const char *p; -{ - char *q = (char *)p; - while (*q) { - if (! isdigit(*q)) - return NO; - q++; - } - return YES; -} - -int -getaddrinfo(hostname, servname, hints, res) - const char *hostname, *servname; - const struct addrinfo *hints; - struct addrinfo **res; -{ - struct addrinfo sentinel; - struct addrinfo *cur; - int error = 0; - struct addrinfo ai; - struct addrinfo ai0; - struct addrinfo *pai; - const struct afd *afd; - const struct explore *ex; - -#ifdef FAITH - static int firsttime = 1; - - if (firsttime) { - /* translator hack */ - char *q = getenv("GAI"); - if (q && inet_pton(AF_INET6, q, &faith_prefix) == 1) - translate = YES; - firsttime = 0; - } -#endif - - sentinel.ai_next = NULL; - cur = &sentinel; - pai = &ai; - pai->ai_flags = 0; - pai->ai_family = PF_UNSPEC; - pai->ai_socktype = ANY; - pai->ai_protocol = ANY; - pai->ai_addrlen = 0; - pai->ai_canonname = NULL; - pai->ai_addr = NULL; - pai->ai_next = NULL; - - if (hostname == NULL && servname == NULL) - return EAI_NONAME; - if (hints) { - /* error check for hints */ - if (hints->ai_addrlen || hints->ai_canonname || - hints->ai_addr || hints->ai_next) - ERR(EAI_BADHINTS); /* xxx */ - if (hints->ai_flags & ~AI_MASK) - ERR(EAI_BADFLAGS); - switch (hints->ai_family) { - case PF_UNSPEC: - case PF_INET: -#ifdef INET6 - case PF_INET6: -#endif - break; - default: - ERR(EAI_FAMILY); - } - memcpy(pai, hints, sizeof(*pai)); - - /* - * if both socktype/protocol are specified, check if they - * are meaningful combination. - */ - if (pai->ai_socktype != ANY && pai->ai_protocol != ANY) { - for (ex = explore; ex->e_af >= 0; ex++) { - if (pai->ai_family != ex->e_af) - continue; - if (ex->e_socktype == ANY) - continue; - if (ex->e_protocol == ANY) - continue; - if (pai->ai_socktype == ex->e_socktype - && pai->ai_protocol != ex->e_protocol) { - ERR(EAI_BADHINTS); - } - } - } - } - - /* - * check for special cases. (1) numeric servname is disallowed if - * socktype/protocol are left unspecified. (2) servname is disallowed - * for raw and other inet{,6} sockets. - */ - if (MATCH_FAMILY(pai->ai_family, PF_INET, 1) -#ifdef PF_INET6 - || MATCH_FAMILY(pai->ai_family, PF_INET6, 1) -#endif - ) { - ai0 = *pai; - - if (pai->ai_family == PF_UNSPEC) { -#ifdef PF_INET6 - pai->ai_family = PF_INET6; -#else - pai->ai_family = PF_INET; -#endif - } - error = get_portmatch(pai, servname); - if (error) - ERR(error); - - *pai = ai0; - } - - ai0 = *pai; - - /* NULL hostname, or numeric hostname */ - for (ex = explore; ex->e_af >= 0; ex++) { - *pai = ai0; - - if (!MATCH_FAMILY(pai->ai_family, ex->e_af, WILD_AF(ex))) - continue; - if (!MATCH(pai->ai_socktype, ex->e_socktype, WILD_SOCKTYPE(ex))) - continue; - if (!MATCH(pai->ai_protocol, ex->e_protocol, WILD_PROTOCOL(ex))) - continue; - - if (pai->ai_family == PF_UNSPEC) - pai->ai_family = ex->e_af; - if (pai->ai_socktype == ANY && ex->e_socktype != ANY) - pai->ai_socktype = ex->e_socktype; - if (pai->ai_protocol == ANY && ex->e_protocol != ANY) - pai->ai_protocol = ex->e_protocol; - - if (hostname == NULL) - error = explore_null(pai, hostname, servname, &cur->ai_next); - else - error = explore_numeric_scope(pai, hostname, servname, &cur->ai_next); - - if (error) - goto free; - - while (cur && cur->ai_next) - cur = cur->ai_next; - } - - /* - * XXX - * If numreic representation of AF1 can be interpreted as FQDN - * representation of AF2, we need to think again about the code below. - */ - if (sentinel.ai_next) - goto good; - - if (pai->ai_flags & AI_NUMERICHOST) - ERR(EAI_NONAME); - if (hostname == NULL) - ERR(EAI_NONAME); - - /* - * hostname as alphabetical name. - * we would like to prefer AF_INET6 than AF_INET, so we'll make a - * outer loop by AFs. - */ - for (afd = afdl; afd->a_af; afd++) { - *pai = ai0; - - if (!MATCH_FAMILY(pai->ai_family, afd->a_af, 1)) - continue; - - for (ex = explore; ex->e_af >= 0; ex++) { - *pai = ai0; - - if (pai->ai_family == PF_UNSPEC) - pai->ai_family = afd->a_af; - - if (!MATCH_FAMILY(pai->ai_family, ex->e_af, WILD_AF(ex))) - continue; - if (!MATCH(pai->ai_socktype, ex->e_socktype, - WILD_SOCKTYPE(ex))) { - continue; - } - if (!MATCH(pai->ai_protocol, ex->e_protocol, - WILD_PROTOCOL(ex))) { - continue; - } - - if (pai->ai_family == PF_UNSPEC) - pai->ai_family = ex->e_af; - if (pai->ai_socktype == ANY && ex->e_socktype != ANY) - pai->ai_socktype = ex->e_socktype; - if (pai->ai_protocol == ANY && ex->e_protocol != ANY) - pai->ai_protocol = ex->e_protocol; - - error = explore_fqdn(pai, hostname, servname, - &cur->ai_next); - - while (cur && cur->ai_next) - cur = cur->ai_next; - } - } - - /* XXX */ - if (sentinel.ai_next) - error = 0; - - if (error) - goto free; - if (error == 0) { - if (sentinel.ai_next) { - good: - *res = sentinel.ai_next; - return SUCCESS; - } else - error = EAI_FAIL; - } - free: - bad: - if (sentinel.ai_next) - freeaddrinfo(sentinel.ai_next); - *res = NULL; - return error; -} - -/* - * FQDN hostname, DNS lookup - */ -static int -explore_fqdn(pai, hostname, servname, res) - const struct addrinfo *pai; - const char *hostname; - const char *servname; - struct addrinfo **res; -{ - struct hostent *hp; - int h_error; - int af; - char **aplist = NULL, *apbuf = NULL; - char *ap; - struct addrinfo sentinel, *cur; - int i; -#ifndef USE_GETIPNODEBY - int naddrs; -#endif - const struct afd *afd; - int error; - - *res = NULL; - sentinel.ai_next = NULL; - cur = &sentinel; - - /* - * Do not filter unsupported AFs here. We need to honor content of - * databases (/etc/hosts, DNS and others). Otherwise we cannot - * replace gethostbyname() by getaddrinfo(). - */ - - /* - * if the servname does not match socktype/protocol, ignore it. - */ - if (get_portmatch(pai, servname) != 0) - return 0; - - afd = find_afd(pai->ai_family); - - /* - * post-RFC2553: should look at (pai->ai_flags & AI_ADDRCONFIG) - * rather than hardcoding it. we may need to add AI_ADDRCONFIG - * handling code by ourselves in case we don't have getipnodebyname(). - */ -#ifdef USE_GETIPNODEBY - hp = getipnodebyname(hostname, pai->ai_family, AI_ADDRCONFIG, &h_error); -#else -#ifdef HAVE_GETHOSTBYNAME2 - hp = gethostbyname2(hostname, pai->ai_family); -#else - if (pai->ai_family != AF_INET) - return 0; - hp = gethostbyname(hostname); -#ifdef HAVE_H_ERRNO - h_error = h_errno; -#else - h_error = EINVAL; -#endif -#endif /*HAVE_GETHOSTBYNAME2*/ -#endif /*USE_GETIPNODEBY*/ - - if (hp == NULL) { - switch (h_error) { - case HOST_NOT_FOUND: - case NO_DATA: - error = EAI_NODATA; - break; - case TRY_AGAIN: - error = EAI_AGAIN; - break; - case NO_RECOVERY: - case NETDB_INTERNAL: - default: - error = EAI_FAIL; - break; - } - } else if ((hp->h_name == NULL) || (hp->h_name[0] == 0) - || (hp->h_addr_list[0] == NULL)) { -#ifdef USE_GETIPNODEBY - freehostent(hp); -#endif - hp = NULL; - error = EAI_FAIL; - } - - if (hp == NULL) - goto free; - -#ifdef USE_GETIPNODEBY - aplist = hp->h_addr_list; -#else - /* - * hp will be overwritten if we use gethostbyname2(). - * always deep copy for simplification. - */ - for (naddrs = 0; hp->h_addr_list[naddrs] != NULL; naddrs++) - ; - naddrs++; - aplist = (char **)malloc(sizeof(aplist[0]) * naddrs); - apbuf = (char *)malloc(hp->h_length * naddrs); - if (aplist == NULL || apbuf == NULL) { - error = EAI_MEMORY; - goto free; - } - memset(aplist, 0, sizeof(aplist[0]) * naddrs); - for (i = 0; i < naddrs; i++) { - if (hp->h_addr_list[i] == NULL) { - aplist[i] = NULL; - continue; - } - memcpy(&apbuf[i * hp->h_length], hp->h_addr_list[i], - hp->h_length); - aplist[i] = &apbuf[i * hp->h_length]; - } -#endif - - for (i = 0; aplist[i] != NULL; i++) { - af = hp->h_addrtype; - ap = aplist[i]; -#ifdef AF_INET6 - if (af == AF_INET6 - && IN6_IS_ADDR_V4MAPPED((struct in6_addr *)ap)) { - af = AF_INET; - ap = ap + sizeof(struct in6_addr) - - sizeof(struct in_addr); - } -#endif - - if (af != pai->ai_family) - continue; - - if ((pai->ai_flags & AI_CANONNAME) == 0) { - GET_AI(cur->ai_next, afd, ap); - GET_PORT(cur->ai_next, servname); - } else { - /* - * if AI_CANONNAME and if reverse lookup - * fail, return ai anyway to pacify - * calling application. - * - * XXX getaddrinfo() is a name->address - * translation function, and it looks - * strange that we do addr->name - * translation here. - */ - get_name(ap, afd, &cur->ai_next, - ap, pai, servname); - } - - while (cur && cur->ai_next) - cur = cur->ai_next; - } - - *res = sentinel.ai_next; - return 0; - -free: -#ifdef USE_GETIPNODEBY - if (hp) - freehostent(hp); -#endif - if (aplist) - free(aplist); - if (apbuf) - free(apbuf); - if (sentinel.ai_next) - freeaddrinfo(sentinel.ai_next); - return error; -} - -/* - * hostname == NULL. - * passive socket -> anyaddr (0.0.0.0 or ::) - * non-passive socket -> localhost (127.0.0.1 or ::1) - */ -static int -explore_null(pai, hostname, servname, res) - const struct addrinfo *pai; - const char *hostname; - const char *servname; - struct addrinfo **res; -{ - int s; - const struct afd *afd; - struct addrinfo *cur; - struct addrinfo sentinel; - int error; - - *res = NULL; - sentinel.ai_next = NULL; - cur = &sentinel; - - /* - * filter out AFs that are not supported by the kernel - * XXX errno? - */ - s = socket(pai->ai_family, SOCK_DGRAM, 0); - if (s < 0) { - if (errno != EMFILE) - return 0; - } else - close(s); - - /* - * if the servname does not match socktype/protocol, ignore it. - */ - if (get_portmatch(pai, servname) != 0) - return 0; - - afd = find_afd(pai->ai_family); - - if (pai->ai_flags & AI_PASSIVE) { - GET_AI(cur->ai_next, afd, afd->a_addrany); - /* xxx meaningless? - * GET_CANONNAME(cur->ai_next, "anyaddr"); - */ - GET_PORT(cur->ai_next, servname); - } else { - GET_AI(cur->ai_next, afd, afd->a_loopback); - /* xxx meaningless? - * GET_CANONNAME(cur->ai_next, "localhost"); - */ - GET_PORT(cur->ai_next, servname); - } - cur = cur->ai_next; - - *res = sentinel.ai_next; - return 0; - -free: - if (sentinel.ai_next) - freeaddrinfo(sentinel.ai_next); - return error; -} - -/* - * numeric hostname - */ -static int -explore_numeric(pai, hostname, servname, res) - const struct addrinfo *pai; - const char *hostname; - const char *servname; - struct addrinfo **res; -{ - const struct afd *afd; - struct addrinfo *cur; - struct addrinfo sentinel; - int error; - char pton[PTON_MAX]; - int flags; - - *res = NULL; - sentinel.ai_next = NULL; - cur = &sentinel; - - /* - * if the servname does not match socktype/protocol, ignore it. - */ - if (get_portmatch(pai, servname) != 0) - return 0; - - afd = find_afd(pai->ai_family); - flags = pai->ai_flags; - - if (inet_pton(afd->a_af, hostname, pton) == 1) { - u_int32_t v4a; -#ifdef INET6 - u_char pfx; -#endif - - switch (afd->a_af) { - case AF_INET: - v4a = (u_int32_t)ntohl(((struct in_addr *)pton)->s_addr); - if (IN_MULTICAST(v4a) || IN_EXPERIMENTAL(v4a)) - flags &= ~AI_CANONNAME; - v4a >>= IN_CLASSA_NSHIFT; - if (v4a == 0 || v4a == IN_LOOPBACKNET) - flags &= ~AI_CANONNAME; - break; -#ifdef INET6 - case AF_INET6: - pfx = ((struct in6_addr *)pton)->s6_addr[0]; - if (pfx == 0 || pfx == 0xfe || pfx == 0xff) - flags &= ~AI_CANONNAME; - break; -#endif - } - - if (pai->ai_family == afd->a_af || - pai->ai_family == PF_UNSPEC /*?*/) { - if ((flags & AI_CANONNAME) == 0) { - GET_AI(cur->ai_next, afd, pton); - GET_PORT(cur->ai_next, servname); - } else { - /* - * if AI_CANONNAME and if reverse lookup - * fail, return ai anyway to pacify - * calling application. - * - * XXX getaddrinfo() is a name->address - * translation function, and it looks - * strange that we do addr->name - * translation here. - */ - get_name(pton, afd, &cur->ai_next, - pton, pai, servname); - } - while (cur && cur->ai_next) - cur = cur->ai_next; - } else - ERR(EAI_FAMILY); /*xxx*/ - } - - *res = sentinel.ai_next; - return 0; - -free: -bad: - if (sentinel.ai_next) - freeaddrinfo(sentinel.ai_next); - return error; -} - -/* - * numeric hostname with scope - */ -static int -explore_numeric_scope(pai, hostname, servname, res) - const struct addrinfo *pai; - const char *hostname; - const char *servname; - struct addrinfo **res; -{ -#ifndef SCOPE_DELIMITER - return explore_numeric(pai, hostname, servname, res); -#else - const struct afd *afd; - struct addrinfo *cur; - int error; - char *cp, *hostname2 = NULL; - int scope; - struct sockaddr_in6 *sin6; - - /* - * if the servname does not match socktype/protocol, ignore it. - */ - if (get_portmatch(pai, servname) != 0) - return 0; - - afd = find_afd(pai->ai_family); - if (!afd->a_scoped) - return explore_numeric(pai, hostname, servname, res); - - cp = strchr(hostname, SCOPE_DELIMITER); - if (cp == NULL) - return explore_numeric(pai, hostname, servname, res); - - /* - * Handle special case of <scoped_address><delimiter><scope id> - */ - hostname2 = strdup(hostname); - if (hostname2 == NULL) - return EAI_MEMORY; - /* terminate at the delimiter */ - hostname2[cp - hostname] = '\0'; - - cp++; - switch (pai->ai_family) { -#ifdef INET6 - case AF_INET6: - scope = if_nametoindex(cp); - if (scope == 0) { - free(hostname2); - return (EAI_NONAME); - } - break; -#endif - } - - error = explore_numeric(pai, hostname2, servname, res); - if (error == 0) { - for (cur = *res; cur; cur = cur->ai_next) { - if (cur->ai_family != AF_INET6) - continue; - sin6 = (struct sockaddr_in6 *)cur->ai_addr; - if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr) || - IN6_IS_ADDR_MC_LINKLOCAL(&sin6->sin6_addr)) - sin6->sin6_scope_id = scope; - } - } - - free(hostname2); - - return error; -#endif -} - -static int -get_name(addr, afd, res, numaddr, pai, servname) - const char *addr; - const struct afd *afd; - struct addrinfo **res; - char *numaddr; - const struct addrinfo *pai; - const char *servname; -{ - struct hostent *hp = NULL; - struct addrinfo *cur = NULL; - int error = 0; - char *ap = NULL, *cn = NULL; -#ifdef USE_GETIPNODEBY - int h_error; - - hp = getipnodebyaddr(addr, afd->a_addrlen, afd->a_af, &h_error); -#else - hp = gethostbyaddr(addr, afd->a_addrlen, afd->a_af); -#endif - if (hp && hp->h_name && hp->h_name[0] && hp->h_addr_list[0]) { -#ifdef USE_GETIPNODEBY - GET_AI(cur, afd, hp->h_addr_list[0]); - GET_PORT(cur, servname); - GET_CANONNAME(cur, hp->h_name); -#else - /* hp will be damaged if we use gethostbyaddr() */ - if ((ap = (char *)malloc(hp->h_length)) == NULL) { - error = EAI_MEMORY; - goto free; - } - memcpy(ap, hp->h_addr_list[0], hp->h_length); - if ((cn = strdup(hp->h_name)) == NULL) { - error = EAI_MEMORY; - goto free; - } - - GET_AI(cur, afd, ap); - GET_PORT(cur, servname); - GET_CANONNAME(cur, cn); - free(ap); ap = NULL; - free(cn); cn = NULL; -#endif - } else { - GET_AI(cur, afd, numaddr); - GET_PORT(cur, servname); - } - -#ifdef USE_GETIPNODEBY - if (hp) - freehostent(hp); -#endif - *res = cur; - return SUCCESS; - free: - if (cur) - freeaddrinfo(cur); - if (ap) - free(ap); - if (cn) - free(cn); -#ifdef USE_GETIPNODEBY - if (hp) - freehostent(hp); -#endif - *res = NULL; - return error; -} - -static int -get_canonname(pai, ai, str) - const struct addrinfo *pai; - struct addrinfo *ai; - const char *str; -{ - if ((pai->ai_flags & AI_CANONNAME) != 0) { - ai->ai_canonname = (char *)malloc(strlen(str) + 1); - if (ai->ai_canonname == NULL) - return EAI_MEMORY; - strcpy(ai->ai_canonname, str); - } - return 0; -} - -static struct addrinfo * -get_ai(pai, afd, addr) - const struct addrinfo *pai; - const struct afd *afd; - const char *addr; -{ - char *p; - struct addrinfo *ai; - - ai = (struct addrinfo *)malloc(sizeof(struct addrinfo) - + (afd->a_socklen)); - if (ai == NULL) - return NULL; - - memcpy(ai, pai, sizeof(struct addrinfo)); - ai->ai_addr = (struct sockaddr *)(ai + 1); - memset(ai->ai_addr, 0, afd->a_socklen); -#ifdef HAVE_SOCKADDR_SA_LEN - ai->ai_addr->sa_len = afd->a_socklen; -#endif - ai->ai_addrlen = afd->a_socklen; - ai->ai_addr->sa_family = ai->ai_family = afd->a_af; - p = (char *)(ai->ai_addr); - memcpy(p + afd->a_off, addr, afd->a_addrlen); - return ai; -} - -static int -get_portmatch(ai, servname) - const struct addrinfo *ai; - const char *servname; -{ - - /* get_port does not touch first argument. when matchonly == 1. */ - return get_port((struct addrinfo *)ai, servname, 1); -} - -static int -get_port(ai, servname, matchonly) - struct addrinfo *ai; - const char *servname; - int matchonly; -{ - const char *proto; - struct servent *sp; - int port; - int allownumeric; - - if (servname == NULL) - return 0; - switch (ai->ai_family) { - case AF_INET: -#ifdef AF_INET6 - case AF_INET6: -#endif - break; - default: - return 0; - } - - switch (ai->ai_socktype) { - case SOCK_RAW: - return EAI_SERVICE; - case SOCK_DGRAM: - case SOCK_STREAM: - allownumeric = 1; - break; - case ANY: - allownumeric = 0; - break; - default: - return EAI_SOCKTYPE; - } - - if (str_isnumber(servname)) { - if (!allownumeric) - return EAI_SERVICE; - port = htons(atoi(servname)); - if (port < 0 || port > 65535) - return EAI_SERVICE; - } else { - switch (ai->ai_socktype) { - case SOCK_DGRAM: - proto = "udp"; - break; - case SOCK_STREAM: - proto = "tcp"; - break; - default: - proto = NULL; - break; - } - - if ((sp = getservbyname(servname, proto)) == NULL) - return EAI_SERVICE; - port = sp->s_port; - } - - if (!matchonly) { - switch (ai->ai_family) { - case AF_INET: - ((struct sockaddr_in *)ai->ai_addr)->sin_port = port; - break; -#ifdef INET6 - case AF_INET6: - ((struct sockaddr_in6 *)ai->ai_addr)->sin6_port = port; - break; -#endif - } - } - - return 0; -} - -static const struct afd * -find_afd(af) - int af; -{ - const struct afd *afd; - - if (af == PF_UNSPEC) - return NULL; - for (afd = afdl; afd->a_af; afd++) { - if (afd->a_af == af) - return afd; - } - return NULL; -} diff --git a/contrib/tcpdump/missing/getnameinfo.c b/contrib/tcpdump/missing/getnameinfo.c deleted file mode 100644 index 6bd5b474438ed..0000000000000 --- a/contrib/tcpdump/missing/getnameinfo.c +++ /dev/null @@ -1,281 +0,0 @@ -/* - * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * Issues to be discussed: - * - Thread safe-ness must be checked - * - Return values. There seems to be no standard for return value (RFC2553) - * but INRIA implementation returns EAI_xxx defined for getaddrinfo(). - * - RFC2553 says that we should raise error on short buffer. X/Open says - * we need to truncate the result. We obey RFC2553 (and X/Open should be - * modified). - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/missing/getnameinfo.c,v 1.11 2003/11/16 09:36:49 guy Exp $"; -#endif - -#include <sys/types.h> -#include <sys/socket.h> -#include <net/if.h> -#include <netinet/in.h> -#include <arpa/inet.h> -#include <arpa/nameser.h> -#include <netdb.h> -#include <resolv.h> -#include <string.h> -#include <stddef.h> -#include <errno.h> - -#ifdef NEED_ADDRINFO_H -#include "addrinfo.h" -#endif - -#define SUCCESS 0 -#define ANY 0 -#define YES 1 -#define NO 0 - -static struct afd { - int a_af; - int a_addrlen; - int a_socklen; - int a_off; -} afdl [] = { -#ifdef INET6 - {PF_INET6, sizeof(struct in6_addr), sizeof(struct sockaddr_in6), - offsetof(struct sockaddr_in6, sin6_addr)}, -#endif - {PF_INET, sizeof(struct in_addr), sizeof(struct sockaddr_in), - offsetof(struct sockaddr_in, sin_addr)}, - {0, 0, 0}, -}; - -struct sockinet { - u_char si_len; - u_char si_family; - u_short si_port; -}; - -#define ENI_NOSOCKET 0 -#define ENI_NOSERVNAME 1 -#define ENI_NOHOSTNAME 2 -#define ENI_MEMORY 3 -#define ENI_SYSTEM 4 -#define ENI_FAMILY 5 -#define ENI_SALEN 6 - -int -getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) - const struct sockaddr *sa; - size_t salen; - char *host; - size_t hostlen; - char *serv; - size_t servlen; - int flags; -{ - struct afd *afd; - struct servent *sp; - struct hostent *hp; - u_short port; - int family, i; - char *addr, *p; - u_int32_t v4a; - int h_error; - char numserv[512]; - char numaddr[512]; - - if (sa == NULL) - return ENI_NOSOCKET; - -#ifdef HAVE_SA_LEN /*XXX*/ - if (sa->sa_len != salen) - return ENI_SALEN; -#endif - - family = sa->sa_family; - for (i = 0; afdl[i].a_af; i++) - if (afdl[i].a_af == family) { - afd = &afdl[i]; - goto found; - } - return ENI_FAMILY; - - found: - if (salen != afd->a_socklen) - return ENI_SALEN; - - port = ((struct sockinet *)sa)->si_port; /* network byte order */ - addr = (char *)sa + afd->a_off; - - if (serv == NULL || servlen == 0) { - /* - * do nothing in this case. - * in case you are wondering if "&&" is more correct than - * "||" here: RFC2553 says that serv == NULL OR servlen == 0 - * means that the caller does not want the result. - */ - } else { - if (flags & NI_NUMERICSERV) - sp = NULL; - else { - sp = getservbyport(port, - (flags & NI_DGRAM) ? "udp" : "tcp"); - } - if (sp) { - if (strlen(sp->s_name) + 1 > servlen) - return ENI_MEMORY; - strcpy(serv, sp->s_name); - } else { - snprintf(numserv, sizeof(numserv), "%d", ntohs(port)); - if (strlen(numserv) + 1 > servlen) - return ENI_MEMORY; - strcpy(serv, numserv); - } - } - - switch (sa->sa_family) { - case AF_INET: - v4a = (u_int32_t) - ntohl(((struct sockaddr_in *)sa)->sin_addr.s_addr); - if (IN_MULTICAST(v4a) || IN_EXPERIMENTAL(v4a)) - flags |= NI_NUMERICHOST; - v4a >>= IN_CLASSA_NSHIFT; - if (v4a == 0) - flags |= NI_NUMERICHOST; - break; -#ifdef INET6 - case AF_INET6: - { - struct sockaddr_in6 *sin6; - sin6 = (struct sockaddr_in6 *)sa; - switch (sin6->sin6_addr.s6_addr[0]) { - case 0x00: - if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) - ; - else if (IN6_IS_ADDR_LOOPBACK(&sin6->sin6_addr)) - ; - else - flags |= NI_NUMERICHOST; - break; - default: - if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) { - flags |= NI_NUMERICHOST; - } - else if (IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr)) - flags |= NI_NUMERICHOST; - break; - } - } - break; -#endif - } - if (host == NULL || hostlen == 0) { - /* - * do nothing in this case. - * in case you are wondering if "&&" is more correct than - * "||" here: RFC2553 says that host == NULL OR hostlen == 0 - * means that the caller does not want the result. - */ - } else if (flags & NI_NUMERICHOST) { - /* NUMERICHOST and NAMEREQD conflicts with each other */ - if (flags & NI_NAMEREQD) - return ENI_NOHOSTNAME; - if (inet_ntop(afd->a_af, addr, numaddr, sizeof(numaddr)) - == NULL) - return ENI_SYSTEM; - if (strlen(numaddr) + 1 > hostlen) - return ENI_MEMORY; - strcpy(host, numaddr); -#if defined(INET6) && defined(NI_WITHSCOPEID) - if (afd->a_af == AF_INET6 && - (IN6_IS_ADDR_LINKLOCAL((struct in6_addr *)addr) || - IN6_IS_ADDR_MULTICAST((struct in6_addr *)addr)) && - ((struct sockaddr_in6 *)sa)->sin6_scope_id) { -#ifndef ALWAYS_WITHSCOPE - if (flags & NI_WITHSCOPEID) -#endif /* !ALWAYS_WITHSCOPE */ - { - char *ep = strchr(host, '\0'); - unsigned int ifindex = - ((struct sockaddr_in6 *)sa)->sin6_scope_id; - - *ep = SCOPE_DELIMITER; - if ((if_indextoname(ifindex, ep + 1)) == NULL) - /* XXX what should we do? */ - strncpy(ep + 1, "???", 3); - } - } -#endif /* INET6 */ - } else { -#ifdef USE_GETIPNODEBY - hp = getipnodebyaddr(addr, afd->a_addrlen, afd->a_af, &h_error); -#else - hp = gethostbyaddr(addr, afd->a_addrlen, afd->a_af); -#ifdef HAVE_H_ERRNO - h_error = h_errno; -#else - h_error = EINVAL; -#endif -#endif - - if (hp) { - if (flags & NI_NOFQDN) { - p = strchr(hp->h_name, '.'); - if (p) *p = '\0'; - } - if (strlen(hp->h_name) + 1 > hostlen) { -#ifdef USE_GETIPNODEBY - freehostent(hp); -#endif - return ENI_MEMORY; - } - strcpy(host, hp->h_name); -#ifdef USE_GETIPNODEBY - freehostent(hp); -#endif - } else { - if (flags & NI_NAMEREQD) - return ENI_NOHOSTNAME; - if (inet_ntop(afd->a_af, addr, numaddr, sizeof(numaddr)) - == NULL) - return ENI_NOHOSTNAME; - if (strlen(numaddr) + 1 > hostlen) - return ENI_MEMORY; - strcpy(host, numaddr); - } - } - return SUCCESS; -} diff --git a/contrib/tcpdump/missing/inet_aton.c b/contrib/tcpdump/missing/inet_aton.c deleted file mode 100644 index a4b2eeb3fa3ef..0000000000000 --- a/contrib/tcpdump/missing/inet_aton.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 1995, 1996, 1997 Kungliga Tekniska Högskolan - * (Royal Institute of Technology, Stockholm, Sweden). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the Kungliga Tekniska - * Högskolan and its contributors. - * - * 4. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* $Id: inet_aton.c,v 1.6 2003/11/16 09:36:49 guy Exp $ */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/missing/inet_aton.c,v 1.6 2003/11/16 09:36:49 guy Exp $"; -#endif - -#include <tcpdump-stdinc.h> - -/* Minimal implementation of inet_aton. - * Cannot distinguish between failure and a local broadcast address. */ - -#ifndef INADDR_NONE -#define INADDR_NONE 0xffffffff -#endif - -int -inet_aton(const char *cp, struct in_addr *addr) -{ - addr->s_addr = inet_addr(cp); - return (addr->s_addr == INADDR_NONE) ? 0 : 1; -} diff --git a/contrib/tcpdump/missing/inet_ntop.c b/contrib/tcpdump/missing/inet_ntop.c deleted file mode 100644 index 8bbbad619a220..0000000000000 --- a/contrib/tcpdump/missing/inet_ntop.c +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright (c) 1999 Kungliga Tekniska Högskolan - * (Royal Institute of Technology, Stockholm, Sweden). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the Kungliga Tekniska - * Högskolan and its contributors. - * - * 4. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* $Id: inet_ntop.c,v 1.8 2005/02/09 02:25:46 guy Exp $ */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/missing/inet_ntop.c,v 1.8 2005/02/09 02:25:46 guy Exp $"; -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <errno.h> - -/* - * - */ - -#ifndef IN6ADDRSZ -#define IN6ADDRSZ 16 /* IPv6 T_AAAA */ -#endif - -#ifndef INT16SZ -#define INT16SZ 2 /* word size */ -#endif - -static const char * -inet_ntop_v4 (const void *src, char *dst, size_t size) -{ - const char digits[] = "0123456789"; - int i; - struct in_addr *addr = (struct in_addr *)src; - u_long a = ntohl(addr->s_addr); - const char *orig_dst = dst; - - if (size < INET_ADDRSTRLEN) { - errno = ENOSPC; - return NULL; - } - for (i = 0; i < 4; ++i) { - int n = (a >> (24 - i * 8)) & 0xFF; - int non_zerop = 0; - - if (non_zerop || n / 100 > 0) { - *dst++ = digits[n / 100]; - n %= 100; - non_zerop = 1; - } - if (non_zerop || n / 10 > 0) { - *dst++ = digits[n / 10]; - n %= 10; - non_zerop = 1; - } - *dst++ = digits[n]; - if (i != 3) - *dst++ = '.'; - } - *dst++ = '\0'; - return orig_dst; -} - -#ifdef INET6 -/* - * Convert IPv6 binary address into presentation (printable) format. - */ -static const char * -inet_ntop_v6 (const u_char *src, char *dst, size_t size) -{ - /* - * Note that int32_t and int16_t need only be "at least" large enough - * to contain a value of the specified size. On some systems, like - * Crays, there is no such thing as an integer variable with 16 bits. - * Keep this in mind if you think this function should have been coded - * to use pointer overlays. All the world's not a VAX. - */ - char tmp [INET6_ADDRSTRLEN+1]; - char *tp; - struct { - long base; - long len; - } best, cur; - u_long words [IN6ADDRSZ / INT16SZ]; - int i; - - /* Preprocess: - * Copy the input (bytewise) array into a wordwise array. - * Find the longest run of 0x00's in src[] for :: shorthanding. - */ - memset (words, 0, sizeof(words)); - for (i = 0; i < IN6ADDRSZ; i++) - words[i/2] |= (src[i] << ((1 - (i % 2)) << 3)); - - best.base = -1; - cur.base = -1; - for (i = 0; i < (IN6ADDRSZ / INT16SZ); i++) - { - if (words[i] == 0) - { - if (cur.base == -1) - cur.base = i, cur.len = 1; - else cur.len++; - } - else if (cur.base != -1) - { - if (best.base == -1 || cur.len > best.len) - best = cur; - cur.base = -1; - } - } - if ((cur.base != -1) && (best.base == -1 || cur.len > best.len)) - best = cur; - if (best.base != -1 && best.len < 2) - best.base = -1; - - /* Format the result. - */ - tp = tmp; - for (i = 0; i < (IN6ADDRSZ / INT16SZ); i++) - { - /* Are we inside the best run of 0x00's? - */ - if (best.base != -1 && i >= best.base && i < (best.base + best.len)) - { - if (i == best.base) - *tp++ = ':'; - continue; - } - - /* Are we following an initial run of 0x00s or any real hex? - */ - if (i != 0) - *tp++ = ':'; - - /* Is this address an encapsulated IPv4? - */ - if (i == 6 && best.base == 0 && - (best.len == 6 || (best.len == 5 && words[5] == 0xffff))) - { - if (!inet_ntop_v4(src+12, tp, sizeof(tmp) - (tp - tmp))) - { - errno = ENOSPC; - return (NULL); - } - tp += strlen(tp); - break; - } - tp += sprintf (tp, "%lX", words[i]); - } - - /* Was it a trailing run of 0x00's? - */ - if (best.base != -1 && (best.base + best.len) == (IN6ADDRSZ / INT16SZ)) - *tp++ = ':'; - *tp++ = '\0'; - - /* Check for overflow, copy, and we're done. - */ - if ((size_t)(tp - tmp) > size) - { - errno = ENOSPC; - return (NULL); - } - return strcpy (dst, tmp); - return (NULL); -} -#endif /* INET6 */ - - -const char * -inet_ntop(int af, const void *src, char *dst, size_t size) -{ - switch (af) { - case AF_INET : - return inet_ntop_v4 (src, dst, size); -#ifdef INET6 - case AF_INET6: - return inet_ntop_v6 ((const u_char*)src, dst, size); -#endif - default : - errno = EAFNOSUPPORT; - return NULL; - } -} diff --git a/contrib/tcpdump/missing/inet_pton.c b/contrib/tcpdump/missing/inet_pton.c deleted file mode 100644 index 1b8abd2cbab1b..0000000000000 --- a/contrib/tcpdump/missing/inet_pton.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 1999 Kungliga Tekniska Högskolan - * (Royal Institute of Technology, Stockholm, Sweden). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the Kungliga Tekniska - * Högskolan and its contributors. - * - * 4. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* $Id: inet_pton.c,v 1.6 2003/11/16 09:36:51 guy Exp $ */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/missing/inet_pton.c,v 1.6 2003/11/16 09:36:51 guy Exp $"; -#endif - -#include <tcpdump-stdinc.h> - -#include <errno.h> - -int -inet_pton(int af, const char *src, void *dst) -{ - if (af != AF_INET) { - errno = EAFNOSUPPORT; - return -1; - } - return inet_aton (src, dst); -} diff --git a/contrib/tcpdump/missing/resolv6.h b/contrib/tcpdump/missing/resolv6.h deleted file mode 100644 index ccee03e6c4362..0000000000000 --- a/contrib/tcpdump/missing/resolv6.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 1999 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * Resolver options for IPv6. - * XXX: this should be in an offical include file. There may be conflicts... - */ -#ifndef HAVE_RES_USE_INET6 -#define RES_USE_INET6 0x80000000 /* use/map IPv6 in gethostbyname() */ -#endif diff --git a/contrib/tcpdump/missing/resolv_ext.h b/contrib/tcpdump/missing/resolv_ext.h deleted file mode 100644 index 92c531d860cc7..0000000000000 --- a/contrib/tcpdump/missing/resolv_ext.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 1999 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef MAXRESOLVSORT /* XXX */ -#define MAXRESOLVSORT 10 /* number of net to sort on */ -#endif - -#ifndef HAVE_RES_STATE_EXT -struct __res_state_ext { - struct sockaddr_storage nsaddr_list[MAXNS]; - struct { - int af; /* address family for addr, mask */ - union { - struct in_addr ina; -#ifdef INET6 - struct in6_addr in6a; -#endif - } addr, mask; - } sort_list[MAXRESOLVSORT]; -}; -#endif - -extern struct __res_state_ext _res_ext; diff --git a/contrib/tcpdump/missing/snprintf.c b/contrib/tcpdump/missing/snprintf.c deleted file mode 100644 index 4f2bb321238f7..0000000000000 --- a/contrib/tcpdump/missing/snprintf.c +++ /dev/null @@ -1,632 +0,0 @@ -/* - * Copyright (c) 1995-1999 Kungliga Tekniska Högskolan - * (Royal Institute of Technology, Stockholm, Sweden). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* $Id: snprintf.c,v 1.8 2003/11/16 09:36:51 guy Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/missing/snprintf.c,v 1.8 2003/11/16 09:36:51 guy Exp $"; -#endif - -#include <stdio.h> -#include <stdarg.h> -#include <stdlib.h> -#include <string.h> -#include <ctype.h> -#include <sys/types.h> - -#include <interface.h> - -enum format_flags { - minus_flag = 1, - plus_flag = 2, - space_flag = 4, - alternate_flag = 8, - zero_flag = 16 -}; - -/* - * Common state - */ - -struct state { - unsigned char *str; - unsigned char *s; - unsigned char *theend; - size_t sz; - size_t max_sz; - int (*append_char)(struct state *, unsigned char); - int (*reserve)(struct state *, size_t); - /* XXX - methods */ -}; - -#ifndef HAVE_VSNPRINTF -static int -sn_reserve (struct state *state, size_t n) -{ - return state->s + n > state->theend; -} - -static int -sn_append_char (struct state *state, unsigned char c) -{ - if (sn_reserve (state, 1)) { - return 1; - } else { - *state->s++ = c; - return 0; - } -} -#endif - -#if 0 -static int -as_reserve (struct state *state, size_t n) -{ - if (state->s + n > state->theend) { - int off = state->s - state->str; - unsigned char *tmp; - - if (state->max_sz && state->sz >= state->max_sz) - return 1; - - state->sz = max(state->sz * 2, state->sz + n); - if (state->max_sz) - state->sz = min(state->sz, state->max_sz); - tmp = realloc (state->str, state->sz); - if (tmp == NULL) - return 1; - state->str = tmp; - state->s = state->str + off; - state->theend = state->str + state->sz - 1; - } - return 0; -} - -static int -as_append_char (struct state *state, unsigned char c) -{ - if(as_reserve (state, 1)) - return 1; - else { - *state->s++ = c; - return 0; - } -} -#endif - -static int -append_number(struct state *state, - unsigned long num, unsigned base, char *rep, - int width, int prec, int flags, int minusp) -{ - int len = 0; - int i; - - /* given precision, ignore zero flag */ - if(prec != -1) - flags &= ~zero_flag; - else - prec = 1; - /* zero value with zero precision -> "" */ - if(prec == 0 && num == 0) - return 0; - do{ - if((*state->append_char)(state, rep[num % base])) - return 1; - len++; - num /= base; - }while(num); - prec -= len; - /* pad with prec zeros */ - while(prec-- > 0){ - if((*state->append_char)(state, '0')) - return 1; - len++; - } - /* add length of alternate prefix (added later) to len */ - if(flags & alternate_flag && (base == 16 || base == 8)) - len += base / 8; - /* pad with zeros */ - if(flags & zero_flag){ - width -= len; - if(minusp || (flags & space_flag) || (flags & plus_flag)) - width--; - while(width-- > 0){ - if((*state->append_char)(state, '0')) - return 1; - len++; - } - } - /* add alternate prefix */ - if(flags & alternate_flag && (base == 16 || base == 8)){ - if(base == 16) - if((*state->append_char)(state, rep[10] + 23)) /* XXX */ - return 1; - if((*state->append_char)(state, '0')) - return 1; - } - /* add sign */ - if(minusp){ - if((*state->append_char)(state, '-')) - return 1; - len++; - } else if(flags & plus_flag) { - if((*state->append_char)(state, '+')) - return 1; - len++; - } else if(flags & space_flag) { - if((*state->append_char)(state, ' ')) - return 1; - len++; - } - if(flags & minus_flag) - /* swap before padding with spaces */ - for(i = 0; i < len / 2; i++){ - char c = state->s[-i-1]; - state->s[-i-1] = state->s[-len+i]; - state->s[-len+i] = c; - } - width -= len; - while(width-- > 0){ - if((*state->append_char)(state, ' ')) - return 1; - len++; - } - if(!(flags & minus_flag)) - /* swap after padding with spaces */ - for(i = 0; i < len / 2; i++){ - char c = state->s[-i-1]; - state->s[-i-1] = state->s[-len+i]; - state->s[-len+i] = c; - } - - return 0; -} - -static int -append_string (struct state *state, - unsigned char *arg, - int width, - int prec, - int flags) -{ - if(prec != -1) - width -= prec; - else - width -= strlen((char *)arg); - if(!(flags & minus_flag)) - while(width-- > 0) - if((*state->append_char) (state, ' ')) - return 1; - if (prec != -1) { - while (*arg && prec--) - if ((*state->append_char) (state, *arg++)) - return 1; - } else { - while (*arg) - if ((*state->append_char) (state, *arg++)) - return 1; - } - if(flags & minus_flag) - while(width-- > 0) - if((*state->append_char) (state, ' ')) - return 1; - return 0; -} - -static int -append_char(struct state *state, - unsigned char arg, - int width, - int flags) -{ - while(!(flags & minus_flag) && --width > 0) - if((*state->append_char) (state, ' ')) - return 1; - - if((*state->append_char) (state, arg)) - return 1; - while((flags & minus_flag) && --width > 0) - if((*state->append_char) (state, ' ')) - return 1; - - return 0; -} - -/* - * This can't be made into a function... - */ - -#define PARSE_INT_FORMAT(res, arg, unsig) \ -if (long_flag) \ - res = (unsig long)va_arg(arg, unsig long); \ -else if (short_flag) \ - res = (unsig short)va_arg(arg, unsig int); \ -else \ - res = (unsig int)va_arg(arg, unsig int) - -/* - * zyxprintf - return 0 or -1 - */ - -static int -xyzprintf (struct state *state, const char *char_format, va_list ap) -{ - const unsigned char *format = (const unsigned char *)char_format; - unsigned char c; - - while((c = *format++)) { - if (c == '%') { - int flags = 0; - int width = 0; - int prec = -1; - int long_flag = 0; - int short_flag = 0; - - /* flags */ - while((c = *format++)){ - if(c == '-') - flags |= minus_flag; - else if(c == '+') - flags |= plus_flag; - else if(c == ' ') - flags |= space_flag; - else if(c == '#') - flags |= alternate_flag; - else if(c == '0') - flags |= zero_flag; - else - break; - } - - if((flags & space_flag) && (flags & plus_flag)) - flags ^= space_flag; - - if((flags & minus_flag) && (flags & zero_flag)) - flags ^= zero_flag; - - /* width */ - if (isdigit(c)) - do { - width = width * 10 + c - '0'; - c = *format++; - } while(isdigit(c)); - else if(c == '*') { - width = va_arg(ap, int); - c = *format++; - } - - /* precision */ - if (c == '.') { - prec = 0; - c = *format++; - if (isdigit(c)) - do { - prec = prec * 10 + c - '0'; - c = *format++; - } while(isdigit(c)); - else if (c == '*') { - prec = va_arg(ap, int); - c = *format++; - } - } - - /* size */ - - if (c == 'h') { - short_flag = 1; - c = *format++; - } else if (c == 'l') { - long_flag = 1; - c = *format++; - } - - switch (c) { - case 'c' : - if(append_char(state, va_arg(ap, int), width, flags)) - return -1; - break; - case 's' : - if (append_string(state, - va_arg(ap, unsigned char*), - width, - prec, - flags)) - return -1; - break; - case 'd' : - case 'i' : { - long arg; - unsigned long num; - int minusp = 0; - - PARSE_INT_FORMAT(arg, ap, signed); - - if (arg < 0) { - minusp = 1; - num = -arg; - } else - num = arg; - - if (append_number (state, num, 10, "0123456789", - width, prec, flags, minusp)) - return -1; - break; - } - case 'u' : { - unsigned long arg; - - PARSE_INT_FORMAT(arg, ap, unsigned); - - if (append_number (state, arg, 10, "0123456789", - width, prec, flags, 0)) - return -1; - break; - } - case 'o' : { - unsigned long arg; - - PARSE_INT_FORMAT(arg, ap, unsigned); - - if (append_number (state, arg, 010, "01234567", - width, prec, flags, 0)) - return -1; - break; - } - case 'x' : { - unsigned long arg; - - PARSE_INT_FORMAT(arg, ap, unsigned); - - if (append_number (state, arg, 0x10, "0123456789abcdef", - width, prec, flags, 0)) - return -1; - break; - } - case 'X' :{ - unsigned long arg; - - PARSE_INT_FORMAT(arg, ap, unsigned); - - if (append_number (state, arg, 0x10, "0123456789ABCDEF", - width, prec, flags, 0)) - return -1; - break; - } - case 'p' : { - unsigned long arg = (unsigned long)va_arg(ap, void*); - - if (append_number (state, arg, 0x10, "0123456789ABCDEF", - width, prec, flags, 0)) - return -1; - break; - } - case 'n' : { - int *arg = va_arg(ap, int*); - *arg = state->s - state->str; - break; - } - case '\0' : - --format; - /* FALLTHROUGH */ - case '%' : - if ((*state->append_char)(state, c)) - return -1; - break; - default : - if ( (*state->append_char)(state, '%') - || (*state->append_char)(state, c)) - return -1; - break; - } - } else - if ((*state->append_char) (state, c)) - return -1; - } - return 0; -} - -#ifndef HAVE_SNPRINTF -int -snprintf (char *str, size_t sz, const char *format, ...) -{ - va_list args; - int ret; - - va_start(args, format); - ret = vsnprintf (str, sz, format, args); - -#ifdef PARANOIA - { - int ret2; - char *tmp; - - tmp = malloc (sz); - if (tmp == NULL) - abort (); - - ret2 = vsprintf (tmp, format, args); - if (ret != ret2 || strcmp(str, tmp)) - abort (); - free (tmp); - } -#endif - - va_end(args); - return ret; -} -#endif - -#if 0 -#ifndef HAVE_ASPRINTF -int -asprintf (char **ret, const char *format, ...) -{ - va_list args; - int val; - - va_start(args, format); - val = vasprintf (ret, format, args); - -#ifdef PARANOIA - { - int ret2; - char *tmp; - tmp = malloc (val + 1); - if (tmp == NULL) - abort (); - - ret2 = vsprintf (tmp, format, args); - if (val != ret2 || strcmp(*ret, tmp)) - abort (); - free (tmp); - } -#endif - - va_end(args); - return val; -} -#endif - -#ifndef HAVE_ASNPRINTF -int -asnprintf (char **ret, size_t max_sz, const char *format, ...) -{ - va_list args; - int val; - - va_start(args, format); - val = vasnprintf (ret, max_sz, format, args); - -#ifdef PARANOIA - { - int ret2; - char *tmp; - tmp = malloc (val + 1); - if (tmp == NULL) - abort (); - - ret2 = vsprintf (tmp, format, args); - if (val != ret2 || strcmp(*ret, tmp)) - abort (); - free (tmp); - } -#endif - - va_end(args); - return val; -} -#endif - -#ifndef HAVE_VASPRINTF -int -vasprintf (char **ret, const char *format, va_list args) -{ - return vasnprintf (ret, 0, format, args); -} -#endif - - -#ifndef HAVE_VASNPRINTF -int -vasnprintf (char **ret, size_t max_sz, const char *format, va_list args) -{ - int st; - size_t len; - struct state state; - - state.max_sz = max_sz; - state.sz = 1; - state.str = malloc(state.sz); - if (state.str == NULL) { - *ret = NULL; - return -1; - } - state.s = state.str; - state.theend = state.s + state.sz - 1; - state.append_char = as_append_char; - state.reserve = as_reserve; - - st = xyzprintf (&state, format, args); - if (st) { - free (state.str); - *ret = NULL; - return -1; - } else { - char *tmp; - - *state.s = '\0'; - len = state.s - state.str; - tmp = realloc (state.str, len+1); - if (tmp == NULL) { - free (state.str); - *ret = NULL; - return -1; - } - *ret = tmp; - return len; - } -} -#endif -#endif - -#ifndef HAVE_VSNPRINTF -int -vsnprintf (char *str, size_t sz, const char *format, va_list args) -{ - struct state state; - int ret; - unsigned char *ustr = (unsigned char *)str; - - state.max_sz = 0; - state.sz = sz; - state.str = ustr; - state.s = ustr; - state.theend = ustr + sz - 1; - state.append_char = sn_append_char; - state.reserve = sn_reserve; - - ret = xyzprintf (&state, format, args); - *state.s = '\0'; - if (ret) - return sz; - else - return state.s - state.str; -} -#endif - diff --git a/contrib/tcpdump/missing/sockstorage.h b/contrib/tcpdump/missing/sockstorage.h deleted file mode 100644 index e7333289f176f..0000000000000 --- a/contrib/tcpdump/missing/sockstorage.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 1999 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -struct sockaddr_storage { -#ifdef HAVE_SOCKADDR_SA_LEN - u_int8_t ss_len; - u_int8_t ss_family; - u_int8_t fill[126]; -#else - u_int8_t ss_family; - u_int8_t fill[127]; -#endif /* HAVE_SOCKADDR_SA_LEN */ -}; diff --git a/contrib/tcpdump/missing/strdup.c b/contrib/tcpdump/missing/strdup.c deleted file mode 100644 index 103c3b26f6f3a..0000000000000 --- a/contrib/tcpdump/missing/strdup.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 1988, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#if defined(LIBC_SCCS) && !defined(lint) -static const char rcsid[] = - "@(#) $Header: /tcpdump/master/tcpdump/missing/strdup.c,v 1.1 2001/01/20 07:26:08 guy Exp $ (LBL)"; -#endif /* LIBC_SCCS and not lint */ - -#include <stddef.h> -#include <stdlib.h> -#include <string.h> - -#include "interface.h" - -char * -strdup(str) - const char *str; -{ - size_t len; - char *copy; - - len = strlen(str) + 1; - if ((copy = malloc(len)) == NULL) - return (NULL); - memcpy(copy, str, len); - return (copy); -} diff --git a/contrib/tcpdump/missing/strlcat.c b/contrib/tcpdump/missing/strlcat.c deleted file mode 100644 index fca2e8a2f5b64..0000000000000 --- a/contrib/tcpdump/missing/strlcat.c +++ /dev/null @@ -1,76 +0,0 @@ -/* $NetBSD: strlcat.c,v 1.5 1999/09/20 04:39:47 lukem Exp $ */ -/* from OpenBSD: strlcat.c,v 1.2 1999/06/17 16:28:58 millert Exp */ - -/* - * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/missing/strlcat.c,v 1.5 2003/11/16 09:36:51 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <tcpdump-stdinc.h> - -#include <string.h> - -/* - * Appends src to string dst of size siz (unlike strncat, siz is the - * full size of dst, not space left). At most siz-1 characters - * will be copied. Always NUL terminates (unless siz == 0). - * Returns strlen(src); if retval >= siz, truncation occurred. - */ -size_t -strlcat(char *dst, const char *src, size_t siz) -{ - register char *d = dst; - register const char *s = src; - register size_t n = siz; - size_t dlen; - - /* Find the end of dst and adjust bytes left but don't go past end */ - while (*d != '\0' && n-- != 0) - d++; - dlen = d - dst; - n = siz - dlen; - - if (n == 0) - return(dlen + strlen(s)); - while (*s != '\0') { - if (n != 1) { - *d++ = *s; - n--; - } - s++; - } - *d = '\0'; - - return(dlen + (s - src)); /* count does not include NUL */ -} diff --git a/contrib/tcpdump/missing/strlcpy.c b/contrib/tcpdump/missing/strlcpy.c deleted file mode 100644 index 3f1809a7b36d8..0000000000000 --- a/contrib/tcpdump/missing/strlcpy.c +++ /dev/null @@ -1,73 +0,0 @@ -/* $NetBSD: strlcpy.c,v 1.5 1999/09/20 04:39:47 lukem Exp $ */ -/* from OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp */ - -/* - * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/missing/strlcpy.c,v 1.5 2003/11/16 09:36:52 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <tcpdump-stdinc.h> - -#include <string.h> - -/* - * Copy src to string dst of size siz. At most siz-1 characters - * will be copied. Always NUL terminates (unless siz == 0). - * Returns strlen(src); if retval >= siz, truncation occurred. - */ -size_t -strlcpy(char *dst, const char *src, size_t siz) -{ - register char *d = dst; - register const char *s = src; - register size_t n = siz; - - /* Copy as many bytes as will fit */ - if (n != 0 && --n != 0) { - do { - if ((*d++ = *s++) == 0) - break; - } while (--n != 0); - } - - /* Not enough room in dst, add NUL and traverse rest of src */ - if (n == 0) { - if (siz != 0) - *d = '\0'; /* NUL-terminate dst */ - while (*s++) - ; - } - - return(s - src - 1); /* count does not include NUL */ -} diff --git a/contrib/tcpdump/missing/strsep.c b/contrib/tcpdump/missing/strsep.c deleted file mode 100644 index 19fb6b2c01780..0000000000000 --- a/contrib/tcpdump/missing/strsep.c +++ /dev/null @@ -1,83 +0,0 @@ -/*- - * Copyright (c) 1990, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#if defined(LIBC_SCCS) && !defined(lint) -static const char rcsid[] = - "@(#) $Header: /tcpdump/master/tcpdump/missing/strsep.c,v 1.3 2003/03/25 08:33:48 guy Exp $ (LBL)"; -#endif /* LIBC_SCCS and not lint */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <tcpdump-stdinc.h> - -#include <string.h> - -/* - * Get next token from string *stringp, where tokens are possibly-empty - * strings separated by characters from delim. - * - * Writes NULs into the string at *stringp to end tokens. - * delim need not remain constant from call to call. - * On return, *stringp points past the last NUL written (if there might - * be further tokens), or is NULL (if there are definitely no more tokens). - * - * If *stringp is NULL, strsep returns NULL. - */ -char * -strsep(char **stringp, const char *delim) -{ - register char *s; - register const char *spanp; - register int c, sc; - char *tok; - - if ((s = *stringp) == NULL) - return (NULL); - for (tok = s;;) { - c = *s++; - spanp = delim; - do { - if ((sc = *spanp++) == c) { - if (c == 0) - s = NULL; - else - s[-1] = 0; - *stringp = s; - return (tok); - } - } while (sc != 0); - } - /* NOTREACHED */ -} diff --git a/contrib/tcpdump/mkdep b/contrib/tcpdump/mkdep deleted file mode 100755 index 2a9c221b1f1d7..0000000000000 --- a/contrib/tcpdump/mkdep +++ /dev/null @@ -1,109 +0,0 @@ -#!/bin/sh - -# -# Copyright (c) 1994, 1996 -# The Regents of the University of California. All rights reserved. -# -# Redistribution and use in source and binary forms are permitted -# provided that this notice is preserved and that due credit is given -# to the University of California at Berkeley. The name of the University -# may not be used to endorse or promote products derived from this -# software without specific prior written permission. This software -# is provided ``as is'' without express or implied warranty. -# -# @(#)mkdep.sh 5.11 (Berkeley) 5/5/88 -# - -PATH=/bin:/usr/bin:/usr/ucb:/usr/local:/usr/local/bin -export PATH - -MAKE=Makefile # default makefile name is "Makefile" -CC=cc # default C compiler is "cc" - -while : - do case "$1" in - # -c allows you to specify the C compiler - -c) - CC=$2 - shift; shift ;; - - # -f allows you to select a makefile name - -f) - MAKE=$2 - shift; shift ;; - - # the -p flag produces "program: program.c" style dependencies - # so .o's don't get produced - -p) - SED='s;\.o;;' - shift ;; - *) - break ;; - esac -done - -if [ $# = 0 ] ; then - echo 'usage: mkdep [-p] [-c cc] [-f makefile] [flags] file ...' - exit 1 -fi - -if [ ! -w $MAKE ]; then - echo "mkdep: no writeable file \"$MAKE\"" - exit 1 -fi - -TMP=/tmp/mkdep$$ - -trap 'rm -f $TMP ; exit 1' 1 2 3 13 15 - -cp $MAKE ${MAKE}.bak - -sed -e '/DO NOT DELETE THIS LINE/,$d' < $MAKE > $TMP - -cat << _EOF_ >> $TMP -# DO NOT DELETE THIS LINE -- mkdep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - -_EOF_ - -# If your compiler doesn't have -M, add it. If you can't, the next two -# lines will try and replace the "cc -M". The real problem is that this -# hack can't deal with anything that requires a search path, and doesn't -# even try for anything using bracket (<>) syntax. -# -# egrep '^#include[ ]*".*"' /dev/null $* | -# sed -e 's/:[^"]*"\([^"]*\)".*/: \1/' -e 's/\.c/.o/' | - -# XXX this doesn't work with things like "-DDECLWAITSTATUS=union\ wait" -$CC -M $* | -sed " - s; \./; ;g - $SED" | -awk '{ - if ($1 != prev) { - if (rec != "") - print rec; - rec = $0; - prev = $1; - } - else { - if (length(rec $2) > 78) { - print rec; - rec = $0; - } - else - rec = rec " " $2 - } -} -END { - print rec -}' >> $TMP - -cat << _EOF_ >> $TMP - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY -_EOF_ - -# copy to preserve permissions -cp $TMP $MAKE -rm -f ${MAKE}.bak $TMP -exit 0 diff --git a/contrib/tcpdump/mpls.h b/contrib/tcpdump/mpls.h deleted file mode 100644 index 69fc9c9176d06..0000000000000 --- a/contrib/tcpdump/mpls.h +++ /dev/null @@ -1,41 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/mpls.h,v 1.1 2004/06/14 14:47:58 hannes Exp $ (LBL) - * Copyright (C) 2001 WIDE Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#define LABEL_MASK 0xfffff000 -#define LABEL_SHIFT 12 -#define EXP_MASK 0x00000e00 -#define EXP_SHIFT 9 -#define STACK_MASK 0x00000100 -#define STACK_SHIFT 8 -#define TTL_MASK 0x000000ff -#define TTL_SHIFT 0 - -#define MPLS_LABEL(x) (((x) & LABEL_MASK) >> LABEL_SHIFT) -#define MPLS_EXP(x) (((x) & EXP_MASK) >> EXP_SHIFT) -#define MPLS_STACK(x) (((x) & STACK_MASK) >> STACK_SHIFT) -#define MPLS_TTL(x) (((x) & TTL_MASK) >> TTL_SHIFT) diff --git a/contrib/tcpdump/nameser.h b/contrib/tcpdump/nameser.h deleted file mode 100644 index 2b94ee3b7570e..0000000000000 --- a/contrib/tcpdump/nameser.h +++ /dev/null @@ -1,295 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/nameser.h,v 1.14 2003/11/05 06:02:59 guy Exp $ (LBL) */ -/* - * Copyright (c) 1983, 1989, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)nameser.h 8.2 (Berkeley) 2/16/94 - * - - * Portions Copyright (c) 1993 by Digital Equipment Corporation. - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies, and that - * the name of Digital Equipment Corporation not be used in advertising or - * publicity pertaining to distribution of the document or software without - * specific, written prior permission. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT - * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - * - - * --Copyright-- - */ - -#ifndef _NAMESER_H_ -#define _NAMESER_H_ - -#include <sys/types.h> - -/* - * Define constants based on rfc883 - */ -#define PACKETSZ 512 /* maximum packet size */ -#define MAXDNAME 256 /* maximum domain name */ -#define MAXCDNAME 255 /* maximum compressed domain name */ -#define MAXLABEL 63 /* maximum length of domain label */ - /* Number of bytes of fixed size data in query structure */ -#define QFIXEDSZ 4 - /* number of bytes of fixed size data in resource record */ -#define RRFIXEDSZ 10 - -/* - * Internet nameserver port number - */ -#define NAMESERVER_PORT 53 -#define MULTICASTDNS_PORT 5353 - -/* - * Currently defined opcodes - */ -#define QUERY 0x0 /* standard query */ -#define IQUERY 0x1 /* inverse query */ -#define STATUS 0x2 /* nameserver status query */ -#if 0 -#define xxx 0x3 /* 0x3 reserved */ -#endif - /* non standard - supports ALLOW_UPDATES stuff from Mike Schwartz */ -#define UPDATEA 0x9 /* add resource record */ -#define UPDATED 0xa /* delete a specific resource record */ -#define UPDATEDA 0xb /* delete all named resource record */ -#define UPDATEM 0xc /* modify a specific resource record */ -#define UPDATEMA 0xd /* modify all named resource record */ - -#define ZONEINIT 0xe /* initial zone transfer */ -#define ZONEREF 0xf /* incremental zone referesh */ - -/* - * Undefine various #defines from various System V-flavored OSes (Solaris, - * SINIX, HP-UX) so the compiler doesn't whine that we redefine them. - */ -#ifdef T_NULL -#undef T_NULL -#endif -#ifdef T_OPT -#undef T_OPT -#endif -#ifdef T_UNSPEC -#undef T_UNSPEC -#endif -#ifdef NOERROR -#undef NOERROR -#endif - -/* - * Currently defined response codes - */ -#define NOERROR 0 /* no error */ -#define FORMERR 1 /* format error */ -#define SERVFAIL 2 /* server failure */ -#define NXDOMAIN 3 /* non existent domain */ -#define NOTIMP 4 /* not implemented */ -#define REFUSED 5 /* query refused */ - /* non standard */ -#define NOCHANGE 0xf /* update failed to change db */ - -/* - * Type values for resources and queries - */ -#define T_A 1 /* host address */ -#define T_NS 2 /* authoritative server */ -#define T_MD 3 /* mail destination */ -#define T_MF 4 /* mail forwarder */ -#define T_CNAME 5 /* connonical name */ -#define T_SOA 6 /* start of authority zone */ -#define T_MB 7 /* mailbox domain name */ -#define T_MG 8 /* mail group member */ -#define T_MR 9 /* mail rename name */ -#define T_NULL 10 /* null resource record */ -#define T_WKS 11 /* well known service */ -#define T_PTR 12 /* domain name pointer */ -#define T_HINFO 13 /* host information */ -#define T_MINFO 14 /* mailbox information */ -#define T_MX 15 /* mail routing information */ -#define T_TXT 16 /* text strings */ -#define T_RP 17 /* responsible person */ -#define T_AFSDB 18 /* AFS cell database */ -#define T_X25 19 /* X_25 calling address */ -#define T_ISDN 20 /* ISDN calling address */ -#define T_RT 21 /* router */ -#define T_NSAP 22 /* NSAP address */ -#define T_NSAP_PTR 23 /* reverse lookup for NSAP */ -#define T_SIG 24 /* security signature */ -#define T_KEY 25 /* security key */ -#define T_PX 26 /* X.400 mail mapping */ -#define T_GPOS 27 /* geographical position (withdrawn) */ -#define T_AAAA 28 /* IP6 Address */ -#define T_LOC 29 /* Location Information */ -#define T_NXT 30 /* Next Valid Name in Zone */ -#define T_EID 31 /* Endpoint identifier */ -#define T_NIMLOC 32 /* Nimrod locator */ -#define T_SRV 33 /* Server selection */ -#define T_ATMA 34 /* ATM Address */ -#define T_NAPTR 35 /* Naming Authority PoinTeR */ -#define T_A6 38 /* IP6 address */ -#define T_DNAME 39 /* non-terminal redirection */ -#define T_OPT 41 /* EDNS0 option (meta-RR) */ - /* non standard */ -#define T_UINFO 100 /* user (finger) information */ -#define T_UID 101 /* user ID */ -#define T_GID 102 /* group ID */ -#define T_UNSPEC 103 /* Unspecified format (binary data) */ -#define T_UNSPECA 104 /* "unspecified ascii". Ugly MIT hack */ - /* Query type values which do not appear in resource records */ -#define T_TKEY 249 /* Transaction Key [RFC2930] */ -#define T_TSIG 250 /* Transaction Signature [RFC2845] */ -#define T_IXFR 251 /* incremental transfer [RFC1995] */ -#define T_AXFR 252 /* transfer zone of authority */ -#define T_MAILB 253 /* transfer mailbox records */ -#define T_MAILA 254 /* transfer mail agent records */ -#define T_ANY 255 /* wildcard match */ - -/* - * Values for class field - */ - -#define C_IN 1 /* the arpa internet */ -#define C_CHAOS 3 /* for chaos net (MIT) */ -#define C_HS 4 /* for Hesiod name server (MIT) (XXX) */ - /* Query class values which do not appear in resource records */ -#define C_ANY 255 /* wildcard match */ -#define C_CACHE_FLUSH 0x8000 /* mDNS cache flush flag */ - -/* - * Status return codes for T_UNSPEC conversion routines - */ -#define CONV_SUCCESS 0 -#define CONV_OVERFLOW -1 -#define CONV_BADFMT -2 -#define CONV_BADCKSUM -3 -#define CONV_BADBUFLEN -4 - -/* - * Structure for query header. - */ -typedef struct { - u_int16_t id; /* query identification number */ - u_int8_t flags1; /* first byte of flags */ - u_int8_t flags2; /* second byte of flags */ - u_int16_t qdcount; /* number of question entries */ - u_int16_t ancount; /* number of answer entries */ - u_int16_t nscount; /* number of authority entries */ - u_int16_t arcount; /* number of resource entries */ -} HEADER; - -/* - * Macros for subfields of flag fields. - */ -#define DNS_QR(np) ((np)->flags1 & 0x80) /* response flag */ -#define DNS_OPCODE(np) ((((np)->flags1) >> 3) & 0xF) /* purpose of message */ -#define DNS_AA(np) ((np)->flags1 & 0x04) /* authoritative answer */ -#define DNS_TC(np) ((np)->flags1 & 0x02) /* truncated message */ -#define DNS_RD(np) ((np)->flags1 & 0x01) /* recursion desired */ - -#define DNS_RA(np) ((np)->flags2 & 0x80) /* recursion available */ -#define DNS_AD(np) ((np)->flags2 & 0x20) /* authentic data from named */ -#define DNS_CD(np) ((np)->flags2 & 0x10) /* checking disabled by resolver */ -#define DNS_RCODE(np) ((np)->flags2 & 0xF) /* response code */ - -/* - * Defines for handling compressed domain names, EDNS0 labels, etc. - */ -#define INDIR_MASK 0xc0 /* 11.... */ -#define EDNS0_MASK 0x40 /* 01.... */ -# define EDNS0_ELT_BITLABEL 0x01 - -/* - * Structure for passing resource records around. - */ -struct rrec { - int16_t r_zone; /* zone number */ - int16_t r_class; /* class number */ - int16_t r_type; /* type number */ - u_int32_t r_ttl; /* time to live */ - int r_size; /* size of data area */ - char *r_data; /* pointer to data */ -}; - -/* - * Inline versions of get/put short/long. Pointer is advanced. - * We also assume that a "u_int16_t" holds 2 "chars" - * and that a "u_int32_t" holds 4 "chars". - * - * These macros demonstrate the property of C whereby it can be - * portable or it can be elegant but never both. - */ -#define GETSHORT(s, cp) { \ - register u_char *t_cp = (u_char *)(cp); \ - (s) = ((u_int16_t)t_cp[0] << 8) | (u_int16_t)t_cp[1]; \ - (cp) += 2; \ -} - -#define GETLONG(l, cp) { \ - register u_char *t_cp = (u_char *)(cp); \ - (l) = (((u_int32_t)t_cp[0]) << 24) \ - | (((u_int32_t)t_cp[1]) << 16) \ - | (((u_int32_t)t_cp[2]) << 8) \ - | (((u_int32_t)t_cp[3])); \ - (cp) += 4; \ -} - -#define PUTSHORT(s, cp) { \ - register u_int16_t t_s = (u_int16_t)(s); \ - register u_char *t_cp = (u_char *)(cp); \ - *t_cp++ = t_s >> 8; \ - *t_cp = t_s; \ - (cp) += 2; \ -} - -/* - * Warning: PUTLONG --no-longer-- destroys its first argument. if you - * were depending on this "feature", you will lose. - */ -#define PUTLONG(l, cp) { \ - register u_int32_t t_l = (u_int32_t)(l); \ - register u_char *t_cp = (u_char *)(cp); \ - *t_cp++ = t_l >> 24; \ - *t_cp++ = t_l >> 16; \ - *t_cp++ = t_l >> 8; \ - *t_cp = t_l; \ - (cp) += 4; \ -} - -#endif /* !_NAMESER_H_ */ diff --git a/contrib/tcpdump/netbios.h b/contrib/tcpdump/netbios.h deleted file mode 100644 index 34abebae8ec01..0000000000000 --- a/contrib/tcpdump/netbios.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * NETBIOS protocol formats - * - * @(#) $Header: /tcpdump/master/tcpdump/netbios.h,v 1.3 2002/12/11 07:13:55 guy Exp $ - */ - -struct p8022Hdr { - u_char dsap; - u_char ssap; - u_char flags; -}; - -#define p8022Size 3 /* min 802.2 header size */ - -#define UI 0x03 /* 802.2 flags */ - diff --git a/contrib/tcpdump/netdissect.h b/contrib/tcpdump/netdissect.h deleted file mode 100644 index 8a83cf1c3aecd..0000000000000 --- a/contrib/tcpdump/netdissect.h +++ /dev/null @@ -1,436 +0,0 @@ -/* - * Copyright (c) 1988-1997 - * The Regents of the University of California. All rights reserved. - * - * Copyright (c) 1998-2004 Michael Richardson <mcr@tcpdump.org> - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * @(#) $Header: /tcpdump/master/tcpdump/netdissect.h,v 1.16.2.3 2005/09/29 07:46:46 hannes Exp $ (LBL) - */ - -#ifndef netdissect_h -#define netdissect_h - -#ifdef HAVE_OS_PROTO_H -#include "os-proto.h" -#endif -#include <sys/types.h> - -#ifndef HAVE___ATTRIBUTE__ -#define __attribute__(x) -#endif - -/* snprintf et al */ - -#include <stdarg.h> - -#if !defined(HAVE_SNPRINTF) -int snprintf (char *str, size_t sz, const char *format, ...) - __attribute__ ((format (printf, 3, 4))); -#endif - -#if !defined(HAVE_VSNPRINTF) -int vsnprintf (char *str, size_t sz, const char *format, va_list ap) - __attribute__((format (printf, 3, 0))); -#endif - -#ifndef HAVE_STRLCAT -extern size_t strlcat (char *, const char *, size_t); -#endif -#ifndef HAVE_STRLCPY -extern size_t strlcpy (char *, const char *, size_t); -#endif - -#ifndef HAVE_STRDUP -extern char *strdup (const char *str); -#endif - -#ifndef HAVE_STRSEP -extern char *strsep(char **, const char *); -#endif - -struct tok { - int v; /* value */ - const char *s; /* string */ -}; - -#define TOKBUFSIZE 128 -extern const char *tok2strbuf(const struct tok *, const char *, int, - char *buf, size_t bufsize); - -/* tok2str is deprecated */ -extern const char *tok2str(const struct tok *, const char *, int); -extern char *bittok2str(const struct tok *, const char *, int); - - -typedef struct netdissect_options netdissect_options; - -struct netdissect_options { - int ndo_aflag; /* translate network and broadcast addresses */ - int ndo_eflag; /* print ethernet header */ - int ndo_fflag; /* don't translate "foreign" IP address */ - int ndo_nflag; /* leave addresses as numbers */ - int ndo_Nflag; /* remove domains from printed host names */ - int ndo_qflag; /* quick (shorter) output */ - int ndo_Rflag; /* print sequence # field in AH/ESP*/ - int ndo_sflag; /* use the libsmi to translate OIDs */ - int ndo_Sflag; /* print raw TCP sequence numbers */ - int ndo_tflag; /* print packet arrival time */ - int ndo_Uflag; /* "unbuffered" output of dump files */ - int ndo_uflag; /* Print undecoded NFS handles */ - int ndo_vflag; /* verbose */ - int ndo_xflag; /* print packet in hex */ - int ndo_Xflag; /* print packet in hex/ascii */ - int ndo_Aflag; /* print packet only in ascii observing TAB, - * LF, CR and SPACE as graphical chars - */ - int ndo_Oflag; /* run filter code optimizer */ - int ndo_dlt; /* if != -1, ask libpcap for the DLT it names*/ - int ndo_pflag; /* don't go promiscuous */ - - int ndo_Cflag; /* rotate dump files after this many bytes */ - int ndo_Cflag_count; /* Keep track of which file number we're writing */ - int ndo_Wflag; /* recycle output files after this number of files */ - int ndo_WflagChars; - int ndo_suppress_default_print; /* don't use default_print() for unknown packet types */ - const char *ndo_dltname; - - char *ndo_espsecret; - struct sa_list *ndo_sa_list_head; /* used by print-esp.c */ - struct sa_list *ndo_sa_default; - - char *ndo_tcpmd5secret; /* TCP-MD5 secret key */ - - struct esp_algorithm *ndo_espsecret_xform; /* cache of decoded */ - char *ndo_espsecret_key; - - int ndo_packettype; /* as specified by -T */ - - char *ndo_program_name; /*used to generate self-identifying messages */ - - int32_t ndo_thiszone; /* seconds offset from gmt to local time */ - - int ndo_snaplen; - - /*global pointers to beginning and end of current packet (during printing) */ - const u_char *ndo_packetp; - const u_char *ndo_snapend; - - /* bookkeeping for ^T output */ - int ndo_infodelay; - - /* pointer to void function to output stuff */ - void (*ndo_default_print)(netdissect_options *, - register const u_char *bp, register u_int length); - void (*ndo_info)(netdissect_options *, int verbose); - - int (*ndo_printf)(netdissect_options *, - const char *fmt, ...); - void (*ndo_error)(netdissect_options *, - const char *fmt, ...); - void (*ndo_warning)(netdissect_options *, - const char *fmt, ...); -}; - -#define PT_VAT 1 /* Visual Audio Tool */ -#define PT_WB 2 /* distributed White Board */ -#define PT_RPC 3 /* Remote Procedure Call */ -#define PT_RTP 4 /* Real-Time Applications protocol */ -#define PT_RTCP 5 /* Real-Time Applications control protocol */ -#define PT_SNMP 6 /* Simple Network Management Protocol */ -#define PT_CNFP 7 /* Cisco NetFlow protocol */ - -#ifndef min -#define min(a,b) ((a)>(b)?(b):(a)) -#endif -#ifndef max -#define max(a,b) ((b)>(a)?(b):(a)) -#endif - -#ifndef INET6 -/* - * The default snapshot length. This value allows most printers to print - * useful information while keeping the amount of unwanted data down. - * In particular, it allows for an ethernet header, tcp/ip header, and - * 14 bytes of data (assuming no ip options). - */ -#define DEFAULT_SNAPLEN 68 -#else -#define DEFAULT_SNAPLEN 96 -#endif - -#ifndef BIG_ENDIAN -#define BIG_ENDIAN 4321 -#define LITTLE_ENDIAN 1234 -#endif - -#define ESRC(ep) ((ep)->ether_shost) -#define EDST(ep) ((ep)->ether_dhost) - -#ifndef NTOHL -#define NTOHL(x) (x) = ntohl(x) -#define NTOHS(x) (x) = ntohs(x) -#define HTONL(x) (x) = htonl(x) -#define HTONS(x) (x) = htons(x) -#endif - -/* - * True if "l" bytes of "var" were captured. - * - * The "ndo->ndo_snapend - (l) <= ndo->ndo_snapend" checks to make sure - * "l" isn't so large that "ndo->ndo_snapend - (l)" underflows. - * - * The check is for <= rather than < because "l" might be 0. - */ -#define ND_TTEST2(var, l) (ndo->ndo_snapend - (l) <= ndo->ndo_snapend && \ - (const u_char *)&(var) <= ndo->ndo_snapend - (l)) - -/* True if "var" was captured */ -#define ND_TTEST(var) ND_TTEST2(var, sizeof(var)) - -/* Bail if "l" bytes of "var" were not captured */ -#define ND_TCHECK2(var, l) if (!ND_TTEST2(var, l)) goto trunc - -/* Bail if "var" was not captured */ -#define ND_TCHECK(var) ND_TCHECK2(var, sizeof(var)) - -#define ND_PRINT(STUFF) (*ndo->ndo_printf)STUFF -#define ND_DEFAULTPRINT(ap, length) (*ndo->ndo_default_print)(ndo, ap, length) - -#if 0 -extern void ts_print(netdissect_options *ipdo, - const struct timeval *); -extern void relts_print(int); -#endif - -extern int fn_print(const u_char *, const u_char *); -extern int fn_printn(const u_char *, u_int, const u_char *); -extern const char *tok2str(const struct tok *, const char *, int); - -extern void wrapup(int); - -#if 0 -extern char *read_infile(netdissect_options *, char *); -extern char *copy_argv(netdissect_options *, char **); -#endif - -extern void safeputchar(int); -extern void safeputs(const char *); - -#if 0 -extern const char *isonsap_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 *dnnum_string(netdissect_options *, u_short); -#endif - -/* The printer routines. */ - -#include <pcap.h> - - -extern void eap_print(netdissect_options *,const u_char *, u_int); -extern int esp_print(netdissect_options *, - register const u_char *bp, int len, register const u_char *bp2, - int *nhdr, int *padlen); -extern void arp_print(netdissect_options *,const u_char *, u_int, u_int); -extern void isakmp_print(netdissect_options *,const u_char *, - u_int, const u_char *); -extern void isakmp_rfc3948_print(netdissect_options *,const u_char *, - u_int, const u_char *); -extern void ip_print(netdissect_options *,const u_char *, u_int); -extern void ip_print_inner(netdissect_options *ndo, - const u_char *bp, u_int length, u_int nh, - const u_char *bp2); - -/* stuff that has not yet been rototiled */ -#if 0 -extern void ascii_print(netdissect_options *,u_int); -extern void hex_and_ascii_print_with_offset(netdissect_options *,const char *, - u_int, u_int); -extern void hex_and_ascii_print(netdissect_options *,const char *, u_int); -extern void hex_print_with_offset(netdissect_options *,const char *, - u_int, u_int); -extern void hex_print(netdissect_options *,const char *, u_int); -extern void telnet_print(netdissect_options *,const u_char *, u_int); -extern int ether_encap_print(netdissect_options *,u_short, const u_char *, - u_int, u_int, u_short *); -extern int llc_print(netdissect_options *, - const u_char *, u_int, u_int, const u_char *, - const u_char *, u_short *); -extern void aarp_print(netdissect_options *,const u_char *, u_int); -extern void atalk_print(netdissect_options *,const u_char *, u_int); -extern void atm_if_print(u_char *,const struct pcap_pkthdr *, const u_char *); -extern void bootp_print(netdissect_options *,const u_char *, - u_int, u_short, u_short); -extern void bgp_print(netdissect_options *,const u_char *, int); -extern void bxxp_print(netdissect_options *,const u_char *, u_int); -extern void chdlc_if_print(u_char *user, const struct pcap_pkthdr *h, - register const u_char *p); -extern void chdlc_print(netdissect_options *ndo, - register const u_char *p, u_int length, u_int caplen); -extern void cisco_autorp_print(netdissect_options *, - const u_char *, u_int); -extern void cnfp_print(netdissect_options *,const u_char *cp, - u_int len, const u_char *bp); -extern void decnet_print(netdissect_options *,const u_char *, - u_int, u_int); -extern void default_print(netdissect_options *,const u_char *, u_int); -extern void dvmrp_print(netdissect_options *,const u_char *, u_int); -extern void egp_print(netdissect_options *,const u_char *, u_int, - const u_char *); - -extern void arcnet_if_print(u_char*,const struct pcap_pkthdr *,const u_char *); -extern void ether_if_print(u_char *,const struct pcap_pkthdr *,const u_char *); -extern void token_if_print(u_char *,const struct pcap_pkthdr *,const u_char *); -extern void fddi_if_print(u_char *,const struct pcap_pkthdr *, const u_char *); - -extern void gre_print(netdissect_options *,const u_char *, u_int); -extern void icmp_print(netdissect_options *,const u_char *, u_int, - const u_char *); -extern void hsrp_print(netdissect_options *ndo, - register const u_char *bp, register u_int len); -extern void ieee802_11_if_print(u_char *,const struct pcap_pkthdr *, const u_char *); -extern void igmp_print(netdissect_options *, - register const u_char *, u_int); -extern void igrp_print(netdissect_options *,const u_char *, u_int, - const u_char *); -extern void ipN_print(netdissect_options *,const u_char *, u_int); -extern void ipx_print(netdissect_options *,const u_char *, u_int); -extern void isoclns_print(netdissect_options *,const u_char *, - u_int, u_int, const u_char *, const u_char *); -extern void krb_print(netdissect_options *,const u_char *, u_int); -extern void llap_print(netdissect_options *,const u_char *, u_int); -extern const char *linkaddr_string(netdissect_options *ndo, - const u_char *ep, const unsigned int len); -extern void ltalk_if_print(netdissect_options *ndo, - u_char *user, const struct pcap_pkthdr *h, - const u_char *p); -extern void mpls_print(netdissect_options *ndo, - const u_char *bp, u_int length); -extern void msdp_print(netdissect_options *ndo, - const unsigned char *sp, u_int length); -extern void nfsreply_print(netdissect_options *,const u_char *, - u_int, const u_char *); -extern void nfsreq_print(netdissect_options *,const u_char *, - u_int, const u_char *); -extern void ns_print(netdissect_options *,const u_char *, u_int); -extern void ntp_print(netdissect_options *,const u_char *, u_int); -extern void null_if_print(u_char *,const struct pcap_pkthdr *, const u_char *); -extern void ospf_print(netdissect_options *,const u_char *, - u_int, const u_char *); -extern void pimv1_print(netdissect_options *,const u_char *, u_int); -extern void mobile_print(netdissect_options *,const u_char *, u_int); -extern void pim_print(netdissect_options *,const u_char *, u_int); -extern void pppoe_if_print(u_char *,const struct pcap_pkthdr *, const u_char *); -extern void pppoe_print(netdissect_options *,const u_char *, u_int); -extern void ppp_print(netdissect_options *, - register const u_char *, u_int); - -extern void ppp_if_print(u_char *,const struct pcap_pkthdr *, const u_char *); -extern void ppp_hdlc_if_print(u_char *, - const struct pcap_pkthdr *, const u_char *); -extern void ppp_bsdos_if_print(u_char *, - const struct pcap_pkthdr *, const u_char *); - -extern int vjc_print(netdissect_options *,register const char *, - register u_int, u_short); - -extern void raw_if_print(u_char *, - const struct pcap_pkthdr *, const u_char *); - -extern void rip_print(netdissect_options *,const u_char *, u_int); - -extern void sctp_print(netdissect_options *ndo, - const u_char *bp, const u_char *bp2, - u_int sctpPacketLength); - -extern void sl_if_print(u_char *,const struct pcap_pkthdr *, const u_char *); - -extern void lane_if_print(u_char *,const struct pcap_pkthdr *,const u_char *); -extern void cip_if_print(u_char *,const struct pcap_pkthdr *,const u_char *); -extern void sl_bsdos_if_print(u_char *, - const struct pcap_pkthdr *, const u_char *); -extern void sll_if_print(u_char *, - const struct pcap_pkthdr *, const u_char *); - -extern void snmp_print(netdissect_options *,const u_char *, u_int); -extern void sunrpcrequest_print(netdissect_options *,const u_char *, - u_int, const u_char *); -extern void tcp_print(netdissect_options *,const u_char *, u_int, - const u_char *, int); -extern void tftp_print(netdissect_options *,const u_char *, u_int); -extern void timed_print(netdissect_options *,const u_char *, u_int); -extern void udp_print(netdissect_options *,const u_char *, u_int, - const u_char *, int); -extern void wb_print(netdissect_options *,const void *, u_int); -extern int ah_print(netdissect_options *,register const u_char *, - register const u_char *); -extern void esp_print_decodesecret(netdissect_options *ndo); -extern int ipcomp_print(netdissect_options *,register const u_char *, - register const u_char *, int *); -extern void rx_print(netdissect_options *,register const u_char *, - int, int, int, u_char *); -extern void netbeui_print(netdissect_options *,u_short, - const u_char *, int); -extern void ipx_netbios_print(netdissect_options *,const u_char *, u_int); -extern void nbt_tcp_print(netdissect_options *,const u_char *, int); -extern void nbt_udp137_print(netdissect_options *, - const u_char *data, int); -extern void nbt_udp138_print(netdissect_options *, - const u_char *data, int); -extern char *smb_errstr(netdissect_options *,int, int); -extern const char *nt_errstr(netdissect_options *, u_int32_t); -extern void print_data(netdissect_options *,const unsigned char *, int); -extern void l2tp_print(netdissect_options *,const u_char *, u_int); -extern void lcp_print(netdissect_options *,const u_char *, u_int); -extern void vrrp_print(netdissect_options *,const u_char *bp, - u_int len, int ttl); -extern void cdp_print(netdissect_options *,const u_char *, - u_int, u_int, const u_char *, const u_char *); -extern void stp_print(netdissect_options *,const u_char *p, u_int length); -extern void radius_print(netdissect_options *,const u_char *, u_int); -extern void lwres_print(netdissect_options *,const u_char *, u_int); -extern void pptp_print(netdissect_options *,const u_char *, u_int); - -#ifdef INET6 -extern void ip6_print(netdissect_options *,const u_char *, u_int); -extern void ip6_opt_print(netdissect_options *,const u_char *, int); -extern int hbhopt_print(netdissect_options *,const u_char *); -extern int dstopt_print(netdissect_options *,const u_char *); -extern int frag6_print(netdissect_options *,const u_char *, - const u_char *); -extern void icmp6_print(netdissect_options *,const u_char *, - const u_char *); -extern void ripng_print(netdissect_options *,const u_char *, int); -extern int rt6_print(netdissect_options *,const u_char *, const u_char *); -extern void ospf6_print(netdissect_options *,const u_char *, u_int); -extern void dhcp6_print(netdissect_options *,const u_char *, - u_int, u_int16_t, u_int16_t); - -extern void zephyr_print(netdissect_options * ndo, - const u_char *cp, int length); - -#endif /*INET6*/ -extern u_short in_cksum(const u_short *, - register u_int, int); - -#endif - -#endif /* netdissect_h */ diff --git a/contrib/tcpdump/nfs.h b/contrib/tcpdump/nfs.h deleted file mode 100644 index 3d47c7d3d9374..0000000000000 --- a/contrib/tcpdump/nfs.h +++ /dev/null @@ -1,453 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/nfs.h,v 1.7 2002/12/11 07:13:55 guy Exp $ (LBL) */ -/* $NetBSD: nfs.h,v 1.1 1996/05/23 22:49:53 fvdl Exp $ */ - -/* - * Copyright (c) 1989, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Rick Macklem at The University of Guelph. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)nfsproto.h 8.2 (Berkeley) 3/30/95 - */ - -/* - * nfs definitions as per the Version 2 and 3 specs - */ - -/* - * Constants as defined in the Sun NFS Version 2 and 3 specs. - * "NFS: Network File System Protocol Specification" RFC1094 - * and in the "NFS: Network File System Version 3 Protocol - * Specification" - */ - -#define NFS_PORT 2049 -#define NFS_PROG 100003 -#define NFS_VER2 2 -#define NFS_VER3 3 -#define NFS_V2MAXDATA 8192 -#define NFS_MAXDGRAMDATA 16384 -#define NFS_MAXDATA 32768 -#define NFS_MAXPATHLEN 1024 -#define NFS_MAXNAMLEN 255 -#define NFS_MAXPKTHDR 404 -#define NFS_MAXPACKET (NFS_MAXPKTHDR + NFS_MAXDATA) -#define NFS_MINPACKET 20 -#define NFS_FABLKSIZE 512 /* Size in bytes of a block wrt fa_blocks */ - -/* Stat numbers for rpc returns (version 2 and 3) */ -#define NFS_OK 0 -#define NFSERR_PERM 1 -#define NFSERR_NOENT 2 -#define NFSERR_IO 5 -#define NFSERR_NXIO 6 -#define NFSERR_ACCES 13 -#define NFSERR_EXIST 17 -#define NFSERR_XDEV 18 /* Version 3 only */ -#define NFSERR_NODEV 19 -#define NFSERR_NOTDIR 20 -#define NFSERR_ISDIR 21 -#define NFSERR_INVAL 22 /* Version 3 only */ -#define NFSERR_FBIG 27 -#define NFSERR_NOSPC 28 -#define NFSERR_ROFS 30 -#define NFSERR_MLINK 31 /* Version 3 only */ -#define NFSERR_NAMETOL 63 -#define NFSERR_NOTEMPTY 66 -#define NFSERR_DQUOT 69 -#define NFSERR_STALE 70 -#define NFSERR_REMOTE 71 /* Version 3 only */ -#define NFSERR_WFLUSH 99 /* Version 2 only */ -#define NFSERR_BADHANDLE 10001 /* The rest Version 3 only */ -#define NFSERR_NOT_SYNC 10002 -#define NFSERR_BAD_COOKIE 10003 -#define NFSERR_NOTSUPP 10004 -#define NFSERR_TOOSMALL 10005 -#define NFSERR_SERVERFAULT 10006 -#define NFSERR_BADTYPE 10007 -#define NFSERR_JUKEBOX 10008 -#define NFSERR_TRYLATER NFSERR_JUKEBOX -#define NFSERR_STALEWRITEVERF 30001 /* Fake return for nfs_commit() */ - -#define NFSERR_RETVOID 0x20000000 /* Return void, not error */ -#define NFSERR_AUTHERR 0x40000000 /* Mark an authentication error */ -#define NFSERR_RETERR 0x80000000 /* Mark an error return for V3 */ - -/* Sizes in bytes of various nfs rpc components */ -#define NFSX_UNSIGNED 4 - -/* specific to NFS Version 2 */ -#define NFSX_V2FH 32 -#define NFSX_V2FATTR 68 -#define NFSX_V2SATTR 32 -#define NFSX_V2COOKIE 4 -#define NFSX_V2STATFS 20 - -/* specific to NFS Version 3 */ -#if 0 -#define NFSX_V3FH (sizeof (fhandle_t)) /* size this server uses */ -#endif -#define NFSX_V3FHMAX 64 /* max. allowed by protocol */ -#define NFSX_V3FATTR 84 -#define NFSX_V3SATTR 60 /* max. all fields filled in */ -#define NFSX_V3SRVSATTR (sizeof (struct nfsv3_sattr)) -#define NFSX_V3POSTOPATTR (NFSX_V3FATTR + NFSX_UNSIGNED) -#define NFSX_V3WCCDATA (NFSX_V3POSTOPATTR + 8 * NFSX_UNSIGNED) -#define NFSX_V3COOKIEVERF 8 -#define NFSX_V3WRITEVERF 8 -#define NFSX_V3CREATEVERF 8 -#define NFSX_V3STATFS 52 -#define NFSX_V3FSINFO 48 -#define NFSX_V3PATHCONF 24 - -/* variants for both versions */ -#define NFSX_FH(v3) ((v3) ? (NFSX_V3FHMAX + NFSX_UNSIGNED) : \ - NFSX_V2FH) -#define NFSX_SRVFH(v3) ((v3) ? NFSX_V3FH : NFSX_V2FH) -#define NFSX_FATTR(v3) ((v3) ? NFSX_V3FATTR : NFSX_V2FATTR) -#define NFSX_PREOPATTR(v3) ((v3) ? (7 * NFSX_UNSIGNED) : 0) -#define NFSX_POSTOPATTR(v3) ((v3) ? (NFSX_V3FATTR + NFSX_UNSIGNED) : 0) -#define NFSX_POSTOPORFATTR(v3) ((v3) ? (NFSX_V3FATTR + NFSX_UNSIGNED) : \ - NFSX_V2FATTR) -#define NFSX_WCCDATA(v3) ((v3) ? NFSX_V3WCCDATA : 0) -#define NFSX_WCCORFATTR(v3) ((v3) ? NFSX_V3WCCDATA : NFSX_V2FATTR) -#define NFSX_SATTR(v3) ((v3) ? NFSX_V3SATTR : NFSX_V2SATTR) -#define NFSX_COOKIEVERF(v3) ((v3) ? NFSX_V3COOKIEVERF : 0) -#define NFSX_WRITEVERF(v3) ((v3) ? NFSX_V3WRITEVERF : 0) -#define NFSX_READDIR(v3) ((v3) ? (5 * NFSX_UNSIGNED) : \ - (2 * NFSX_UNSIGNED)) -#define NFSX_STATFS(v3) ((v3) ? NFSX_V3STATFS : NFSX_V2STATFS) - -/* nfs rpc procedure numbers (before version mapping) */ -#define NFSPROC_NULL 0 -#define NFSPROC_GETATTR 1 -#define NFSPROC_SETATTR 2 -#define NFSPROC_LOOKUP 3 -#define NFSPROC_ACCESS 4 -#define NFSPROC_READLINK 5 -#define NFSPROC_READ 6 -#define NFSPROC_WRITE 7 -#define NFSPROC_CREATE 8 -#define NFSPROC_MKDIR 9 -#define NFSPROC_SYMLINK 10 -#define NFSPROC_MKNOD 11 -#define NFSPROC_REMOVE 12 -#define NFSPROC_RMDIR 13 -#define NFSPROC_RENAME 14 -#define NFSPROC_LINK 15 -#define NFSPROC_READDIR 16 -#define NFSPROC_READDIRPLUS 17 -#define NFSPROC_FSSTAT 18 -#define NFSPROC_FSINFO 19 -#define NFSPROC_PATHCONF 20 -#define NFSPROC_COMMIT 21 - -/* And leasing (nqnfs) procedure numbers (must be last) */ -#define NQNFSPROC_GETLEASE 22 -#define NQNFSPROC_VACATED 23 -#define NQNFSPROC_EVICTED 24 - -#define NFSPROC_NOOP 25 -#define NFS_NPROCS 26 - -/* Actual Version 2 procedure numbers */ -#define NFSV2PROC_NULL 0 -#define NFSV2PROC_GETATTR 1 -#define NFSV2PROC_SETATTR 2 -#define NFSV2PROC_NOOP 3 -#define NFSV2PROC_ROOT NFSV2PROC_NOOP /* Obsolete */ -#define NFSV2PROC_LOOKUP 4 -#define NFSV2PROC_READLINK 5 -#define NFSV2PROC_READ 6 -#define NFSV2PROC_WRITECACHE NFSV2PROC_NOOP /* Obsolete */ -#define NFSV2PROC_WRITE 8 -#define NFSV2PROC_CREATE 9 -#define NFSV2PROC_REMOVE 10 -#define NFSV2PROC_RENAME 11 -#define NFSV2PROC_LINK 12 -#define NFSV2PROC_SYMLINK 13 -#define NFSV2PROC_MKDIR 14 -#define NFSV2PROC_RMDIR 15 -#define NFSV2PROC_READDIR 16 -#define NFSV2PROC_STATFS 17 - -/* - * Constants used by the Version 3 protocol for various RPCs - */ -#define NFSV3SATTRTIME_DONTCHANGE 0 -#define NFSV3SATTRTIME_TOSERVER 1 -#define NFSV3SATTRTIME_TOCLIENT 2 - -#define NFSV3ATTRTIME_NMODES 3 - -#define NFSV3ACCESS_READ 0x01 -#define NFSV3ACCESS_LOOKUP 0x02 -#define NFSV3ACCESS_MODIFY 0x04 -#define NFSV3ACCESS_EXTEND 0x08 -#define NFSV3ACCESS_DELETE 0x10 -#define NFSV3ACCESS_EXECUTE 0x20 - -#define NFSV3WRITE_UNSTABLE 0 -#define NFSV3WRITE_DATASYNC 1 -#define NFSV3WRITE_FILESYNC 2 - -#define NFSV3WRITE_NMODES 3 - -#define NFSV3CREATE_UNCHECKED 0 -#define NFSV3CREATE_GUARDED 1 -#define NFSV3CREATE_EXCLUSIVE 2 - -#define NFSV3CREATE_NMODES 3 - -#define NFSV3FSINFO_LINK 0x01 -#define NFSV3FSINFO_SYMLINK 0x02 -#define NFSV3FSINFO_HOMOGENEOUS 0x08 -#define NFSV3FSINFO_CANSETTIME 0x10 - -/* Conversion macros */ -#define vtonfsv2_mode(t,m) \ - txdr_unsigned(((t) == VFIFO) ? MAKEIMODE(VCHR, (m)) : \ - MAKEIMODE((t), (m))) -#define vtonfsv3_mode(m) txdr_unsigned((m) & 07777) -#define nfstov_mode(a) (fxdr_unsigned(u_int16_t, (a))&07777) -#define vtonfsv2_type(a) txdr_unsigned(nfsv2_type[((int32_t)(a))]) -#define vtonfsv3_type(a) txdr_unsigned(nfsv3_type[((int32_t)(a))]) -#define nfsv2tov_type(a) nv2tov_type[fxdr_unsigned(u_int32_t,(a))&0x7] -#define nfsv3tov_type(a) nv3tov_type[fxdr_unsigned(u_int32_t,(a))&0x7] - -/* File types */ -typedef enum { NFNON=0, NFREG=1, NFDIR=2, NFBLK=3, NFCHR=4, NFLNK=5, - NFSOCK=6, NFFIFO=7 } nfs_type; - -/* Structs for common parts of the rpc's */ -/* - * File Handle (32 bytes for version 2), variable up to 64 for version 3. - * File Handles of up to NFS_SMALLFH in size are stored directly in the - * nfs node, whereas larger ones are malloc'd. (This never happens when - * NFS_SMALLFH is set to 64.) - * NFS_SMALLFH should be in the range of 32 to 64 and be divisible by 4. - */ -#ifndef NFS_SMALLFH -#define NFS_SMALLFH 64 -#endif -union nfsfh { -/* fhandle_t fh_generic; */ - u_char fh_bytes[NFS_SMALLFH]; -}; -typedef union nfsfh nfsfh_t; - -struct nfsv2_time { - u_int32_t nfsv2_sec; - u_int32_t nfsv2_usec; -}; -typedef struct nfsv2_time nfstime2; - -struct nfsv3_time { - u_int32_t nfsv3_sec; - u_int32_t nfsv3_nsec; -}; -typedef struct nfsv3_time nfstime3; - -/* - * Quads are defined as arrays of 2 longs to ensure dense packing for the - * protocol and to facilitate xdr conversion. - */ -struct nfs_uquad { - u_int32_t nfsuquad[2]; -}; -typedef struct nfs_uquad nfsuint64; - -#if 0 /* XXX - this doesn't seemed to be used and it doesn't work - * with non-gcc, so comment it out for now. - */ - -/* - * Used to convert between two u_longs and a u_quad_t. - */ -union nfs_quadconvert { - u_int32_t lval[2]; - u_int64_t qval; -}; -typedef union nfs_quadconvert nfsquad_t; - -#endif - -/* - * NFS Version 3 special file number. - */ -struct nfsv3_spec { - u_int32_t specdata1; - u_int32_t specdata2; -}; -typedef struct nfsv3_spec nfsv3spec; - -/* - * File attributes and setable attributes. These structures cover both - * NFS version 2 and the version 3 protocol. Note that the union is only - * used so that one pointer can refer to both variants. These structures - * go out on the wire and must be densely packed, so no quad data types - * are used. (all fields are longs or u_longs or structures of same) - * NB: You can't do sizeof(struct nfs_fattr), you must use the - * NFSX_FATTR(v3) macro. - */ -struct nfs_fattr { - u_int32_t fa_type; - u_int32_t fa_mode; - u_int32_t fa_nlink; - u_int32_t fa_uid; - u_int32_t fa_gid; - union { - struct { - u_int32_t nfsv2fa_size; - u_int32_t nfsv2fa_blocksize; - u_int32_t nfsv2fa_rdev; - u_int32_t nfsv2fa_blocks; - u_int32_t nfsv2fa_fsid; - u_int32_t nfsv2fa_fileid; - nfstime2 nfsv2fa_atime; - nfstime2 nfsv2fa_mtime; - nfstime2 nfsv2fa_ctime; - } fa_nfsv2; - struct { - nfsuint64 nfsv3fa_size; - nfsuint64 nfsv3fa_used; - nfsv3spec nfsv3fa_rdev; - nfsuint64 nfsv3fa_fsid; - nfsuint64 nfsv3fa_fileid; - nfstime3 nfsv3fa_atime; - nfstime3 nfsv3fa_mtime; - nfstime3 nfsv3fa_ctime; - } fa_nfsv3; - } fa_un; -}; - -/* and some ugly defines for accessing union components */ -#define fa2_size fa_un.fa_nfsv2.nfsv2fa_size -#define fa2_blocksize fa_un.fa_nfsv2.nfsv2fa_blocksize -#define fa2_rdev fa_un.fa_nfsv2.nfsv2fa_rdev -#define fa2_blocks fa_un.fa_nfsv2.nfsv2fa_blocks -#define fa2_fsid fa_un.fa_nfsv2.nfsv2fa_fsid -#define fa2_fileid fa_un.fa_nfsv2.nfsv2fa_fileid -#define fa2_atime fa_un.fa_nfsv2.nfsv2fa_atime -#define fa2_mtime fa_un.fa_nfsv2.nfsv2fa_mtime -#define fa2_ctime fa_un.fa_nfsv2.nfsv2fa_ctime -#define fa3_size fa_un.fa_nfsv3.nfsv3fa_size -#define fa3_used fa_un.fa_nfsv3.nfsv3fa_used -#define fa3_rdev fa_un.fa_nfsv3.nfsv3fa_rdev -#define fa3_fsid fa_un.fa_nfsv3.nfsv3fa_fsid -#define fa3_fileid fa_un.fa_nfsv3.nfsv3fa_fileid -#define fa3_atime fa_un.fa_nfsv3.nfsv3fa_atime -#define fa3_mtime fa_un.fa_nfsv3.nfsv3fa_mtime -#define fa3_ctime fa_un.fa_nfsv3.nfsv3fa_ctime - -struct nfsv2_sattr { - u_int32_t sa_mode; - u_int32_t sa_uid; - u_int32_t sa_gid; - u_int32_t sa_size; - nfstime2 sa_atime; - nfstime2 sa_mtime; -}; - -/* - * NFS Version 3 sattr structure for the new node creation case. - */ -struct nfsv3_sattr { - u_int32_t sa_modeset; - u_int32_t sa_mode; - u_int32_t sa_uidset; - u_int32_t sa_uid; - u_int32_t sa_gidset; - u_int32_t sa_gid; - u_int32_t sa_sizeset; - u_int32_t sa_size; - u_int32_t sa_atimetype; - nfstime3 sa_atime; - u_int32_t sa_mtimetype; - nfstime3 sa_mtime; -}; - -struct nfs_statfs { - union { - struct { - u_int32_t nfsv2sf_tsize; - u_int32_t nfsv2sf_bsize; - u_int32_t nfsv2sf_blocks; - u_int32_t nfsv2sf_bfree; - u_int32_t nfsv2sf_bavail; - } sf_nfsv2; - struct { - nfsuint64 nfsv3sf_tbytes; - nfsuint64 nfsv3sf_fbytes; - nfsuint64 nfsv3sf_abytes; - nfsuint64 nfsv3sf_tfiles; - nfsuint64 nfsv3sf_ffiles; - nfsuint64 nfsv3sf_afiles; - u_int32_t nfsv3sf_invarsec; - } sf_nfsv3; - } sf_un; -}; - -#define sf_tsize sf_un.sf_nfsv2.nfsv2sf_tsize -#define sf_bsize sf_un.sf_nfsv2.nfsv2sf_bsize -#define sf_blocks sf_un.sf_nfsv2.nfsv2sf_blocks -#define sf_bfree sf_un.sf_nfsv2.nfsv2sf_bfree -#define sf_bavail sf_un.sf_nfsv2.nfsv2sf_bavail -#define sf_tbytes sf_un.sf_nfsv3.nfsv3sf_tbytes -#define sf_fbytes sf_un.sf_nfsv3.nfsv3sf_fbytes -#define sf_abytes sf_un.sf_nfsv3.nfsv3sf_abytes -#define sf_tfiles sf_un.sf_nfsv3.nfsv3sf_tfiles -#define sf_ffiles sf_un.sf_nfsv3.nfsv3sf_ffiles -#define sf_afiles sf_un.sf_nfsv3.nfsv3sf_afiles -#define sf_invarsec sf_un.sf_nfsv3.nfsv3sf_invarsec - -struct nfsv3_fsinfo { - u_int32_t fs_rtmax; - u_int32_t fs_rtpref; - u_int32_t fs_rtmult; - u_int32_t fs_wtmax; - u_int32_t fs_wtpref; - u_int32_t fs_wtmult; - u_int32_t fs_dtpref; - nfsuint64 fs_maxfilesize; - nfstime3 fs_timedelta; - u_int32_t fs_properties; -}; - -struct nfsv3_pathconf { - u_int32_t pc_linkmax; - u_int32_t pc_namemax; - u_int32_t pc_notrunc; - u_int32_t pc_chownrestricted; - u_int32_t pc_caseinsensitive; - u_int32_t pc_casepreserving; -}; diff --git a/contrib/tcpdump/nfsfh.h b/contrib/tcpdump/nfsfh.h deleted file mode 100644 index b8a82e4bd910a..0000000000000 --- a/contrib/tcpdump/nfsfh.h +++ /dev/null @@ -1,68 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/nfsfh.h,v 1.13 2002/04/24 06:27:05 guy Exp $ (LBL) */ - -/* - * Copyright (c) 1993, 1994 Jeffrey C. Mogul, Digital Equipment Corporation, - * Western Research Laboratory. All rights reserved. - * Copyright (c) 2001 Compaq Computer Corporation. All rights reserved. - * - * Permission to use, copy, and modify this software and its - * documentation is hereby granted only under the following terms and - * conditions. Both the above copyright notice and this permission - * notice must appear in all copies of the software, derivative works - * or modified versions, and any portions thereof, and both notices - * must appear in supporting documentation. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND COMPAQ COMPUTER CORPORATION - * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING - * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO - * EVENT SHALL COMPAQ COMPUTER CORPORATION BE LIABLE FOR ANY - * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN - * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ - -/* - * nfsfh.h - NFS file handle definitions (for portable use) - * - * Jeffrey C. Mogul - * Digital Equipment Corporation - * Western Research Laboratory - */ - -/* - * Internal representation of dev_t, because different NFS servers - * that we might be spying upon use different external representations. - */ -typedef struct { - u_int32_t Minor; /* upper case to avoid clashing with macro names */ - u_int32_t Major; -} my_devt; - -#define dev_eq(a,b) ((a.Minor == b.Minor) && (a.Major == b.Major)) - -/* - * Many file servers now use a large file system ID. This is - * our internal representation of that. - */ -typedef struct { - my_devt Fsid_dev; /* XXX avoid name conflict with AIX */ - char Opaque_Handle[2 * 32 + 1]; - u_int32_t fsid_code; -} my_fsid; - -#define fsid_eq(a,b) ((a.fsid_code == b.fsid_code) &&\ - dev_eq(a.Fsid_dev, b.Fsid_dev)) - -extern void Parse_fh(const unsigned char *, int, my_fsid *, ino_t *, const char **, const char **, int); diff --git a/contrib/tcpdump/nfsv2.h b/contrib/tcpdump/nfsv2.h deleted file mode 100644 index b2c0ff9929e4f..0000000000000 --- a/contrib/tcpdump/nfsv2.h +++ /dev/null @@ -1,262 +0,0 @@ -/* - * Copyright (c) 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Rick Macklem at The University of Guelph. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)nfsv2.h 7.11 (Berkeley) 9/30/92 - */ - -/* - * nfs definitions as per the version 2 specs - */ - -/* - * Constants as defined in the Sun NFS Version 2 spec. - * "NFS: Network File System Protocol Specification" RFC1094 - */ - -#define NFS_PORT 2049 -#define NFS_PROG 100003 -#define NFS_VER2 2 -#define NFS_MAXDGRAMDATA 8192 -#define NFS_MAXDATA 32768 -#define NFS_MAXPATHLEN 1024 -#define NFS_MAXNAMLEN 255 -#define NFS_FHSIZE 32 -#define NFS_MAXPKTHDR 404 -#define NFS_MAXPACKET (NFS_MAXPKTHDR+NFS_MAXDATA) -#define NFS_MINPACKET 20 -#define NFS_FABLKSIZE 512 /* Size in bytes of a block wrt fa_blocks */ - -/* Stat numbers for rpc returns */ -#define NFS_OK 0 -#define NFSERR_PERM 1 -#define NFSERR_NOENT 2 -#define NFSERR_IO 5 -#define NFSERR_NXIO 6 -#define NFSERR_ACCES 13 -#define NFSERR_EXIST 17 -#define NFSERR_NODEV 19 -#define NFSERR_NOTDIR 20 -#define NFSERR_ISDIR 21 -#define NFSERR_FBIG 27 -#define NFSERR_NOSPC 28 -#define NFSERR_ROFS 30 -#define NFSERR_NAMETOL 63 -#define NFSERR_NOTEMPTY 66 -#define NFSERR_DQUOT 69 -#define NFSERR_STALE 70 -#define NFSERR_WFLUSH 99 - -/* Sizes in bytes of various nfs rpc components */ -#define NFSX_FH 32 -#define NFSX_UNSIGNED 4 -#define NFSX_NFSFATTR 68 -#define NFSX_NQFATTR 92 -#define NFSX_NFSSATTR 32 -#define NFSX_NQSATTR 44 -#define NFSX_COOKIE 4 -#define NFSX_NFSSTATFS 20 -#define NFSX_NQSTATFS 28 -#define NFSX_FATTR(isnq) ((isnq) ? NFSX_NQFATTR : NFSX_NFSFATTR) -#define NFSX_SATTR(isnq) ((isnq) ? NFSX_NQSATTR : NFSX_NFSSATTR) -#define NFSX_STATFS(isnq) ((isnq) ? NFSX_NQSTATFS : NFSX_NFSSTATFS) - -/* nfs rpc procedure numbers */ -#define NFSPROC_NULL 0 -#define NFSPROC_GETATTR 1 -#define NFSPROC_SETATTR 2 -#define NFSPROC_NOOP 3 -#define NFSPROC_ROOT NFSPROC_NOOP /* Obsolete */ -#define NFSPROC_LOOKUP 4 -#define NFSPROC_READLINK 5 -#define NFSPROC_READ 6 -#define NFSPROC_WRITECACHE NFSPROC_NOOP /* Obsolete */ -#define NFSPROC_WRITE 8 -#define NFSPROC_CREATE 9 -#define NFSPROC_REMOVE 10 -#define NFSPROC_RENAME 11 -#define NFSPROC_LINK 12 -#define NFSPROC_SYMLINK 13 -#define NFSPROC_MKDIR 14 -#define NFSPROC_RMDIR 15 -#define NFSPROC_READDIR 16 -#define NFSPROC_STATFS 17 - -/* NQ nfs numbers */ -#define NQNFSPROC_READDIRLOOK 18 -#define NQNFSPROC_GETLEASE 19 -#define NQNFSPROC_VACATED 20 -#define NQNFSPROC_EVICTED 21 -#define NQNFSPROC_ACCESS 22 - -#define NFS_NPROCS 23 -/* Conversion macros */ -extern int vttoif_tab[]; -#define vtonfs_mode(t,m) \ - txdr_unsigned(((t) == VFIFO) ? MAKEIMODE(VCHR, (m)) : \ - MAKEIMODE((t), (m))) -#define nfstov_mode(a) (fxdr_unsigned(u_short, (a))&07777) -#define vtonfs_type(a) txdr_unsigned(nfs_type[((int32_t)(a))]) -#define nfstov_type(a) ntov_type[fxdr_unsigned(u_int32_t,(a))&0x7] - -/* File types */ -typedef enum { - NFNON=0, NFREG=1, NFDIR=2, NFBLK=3, NFCHR=4, NFLNK=5 -} tcpdump_nfstype; - -/* Structs for common parts of the rpc's */ -struct nfsv2_time { - u_int32_t nfs_sec; - u_int32_t nfs_usec; -}; - -struct nqnfs_time { - u_int32_t nq_sec; - u_int32_t nq_nsec; -}; - -/* - * File attributes and setable attributes. These structures cover both - * NFS version 2 and the NQNFS protocol. Note that the union is only - * used to that one pointer can refer to both variants. These structures - * go out on the wire and must be densely packed, so no quad data types - * are used. (all fields are int32_t or u_int32_t's or structures of same) - * NB: You can't do sizeof(struct nfsv2_fattr), you must use the - * NFSX_FATTR(isnq) macro. - */ -struct nfsv2_fattr { - u_int32_t fa_type; - u_int32_t fa_mode; - u_int32_t fa_nlink; - u_int32_t fa_uid; - u_int32_t fa_gid; - union { - struct { - u_int32_t nfsfa_size; - u_int32_t nfsfa_blocksize; - u_int32_t nfsfa_rdev; - u_int32_t nfsfa_blocks; - u_int32_t nfsfa_fsid; - u_int32_t nfsfa_fileid; - struct nfsv2_time nfsfa_atime; - struct nfsv2_time nfsfa_mtime; - struct nfsv2_time nfsfa_ctime; - } fa_nfsv2; - struct { - struct { - u_int32_t nqfa_qsize[2]; - } nqfa_size; - u_int32_t nqfa_blocksize; - u_int32_t nqfa_rdev; - struct { - u_int32_t nqfa_qbytes[2]; - } nqfa_bytes; - u_int32_t nqfa_fsid; - u_int32_t nqfa_fileid; - struct nqnfs_time nqfa_atime; - struct nqnfs_time nqfa_mtime; - struct nqnfs_time nqfa_ctime; - u_int32_t nqfa_flags; - u_int32_t nqfa_gen; - struct { - u_int32_t nqfa_qfilerev[2]; - } nqfa_filerev; - } fa_nqnfs; - } fa_un; -}; - -/* and some ugly defines for accessing union components */ -#define fa_nfssize fa_un.fa_nfsv2.nfsfa_size -#define fa_nfsblocksize fa_un.fa_nfsv2.nfsfa_blocksize -#define fa_nfsrdev fa_un.fa_nfsv2.nfsfa_rdev -#define fa_nfsblocks fa_un.fa_nfsv2.nfsfa_blocks -#define fa_nfsfsid fa_un.fa_nfsv2.nfsfa_fsid -#define fa_nfsfileid fa_un.fa_nfsv2.nfsfa_fileid -#define fa_nfsatime fa_un.fa_nfsv2.nfsfa_atime -#define fa_nfsmtime fa_un.fa_nfsv2.nfsfa_mtime -#define fa_nfsctime fa_un.fa_nfsv2.nfsfa_ctime -#define fa_nqsize fa_un.fa_nqnfs.nqfa_size -#define fa_nqblocksize fa_un.fa_nqnfs.nqfa_blocksize -#define fa_nqrdev fa_un.fa_nqnfs.nqfa_rdev -#define fa_nqbytes fa_un.fa_nqnfs.nqfa_bytes -#define fa_nqfsid fa_un.fa_nqnfs.nqfa_fsid -#define fa_nqfileid fa_un.fa_nqnfs.nqfa_fileid -#define fa_nqatime fa_un.fa_nqnfs.nqfa_atime -#define fa_nqmtime fa_un.fa_nqnfs.nqfa_mtime -#define fa_nqctime fa_un.fa_nqnfs.nqfa_ctime -#define fa_nqflags fa_un.fa_nqnfs.nqfa_flags -#define fa_nqgen fa_un.fa_nqnfs.nqfa_gen -#define fa_nqfilerev fa_un.fa_nqnfs.nqfa_filerev - -struct nfsv2_sattr { - u_int32_t sa_mode; - u_int32_t sa_uid; - u_int32_t sa_gid; - union { - struct { - u_int32_t nfssa_size; - struct nfsv2_time nfssa_atime; - struct nfsv2_time nfssa_mtime; - } sa_nfsv2; - struct { - struct { - u_int32_t nqsa_qsize[2]; - } nqsa_size; - struct nqnfs_time nqsa_atime; - struct nqnfs_time nqsa_mtime; - u_int32_t nqsa_flags; - u_int32_t nqsa_rdev; - } sa_nqnfs; - } sa_un; -}; - -/* and some ugly defines for accessing the unions */ -#define sa_nfssize sa_un.sa_nfsv2.nfssa_size -#define sa_nfsatime sa_un.sa_nfsv2.nfssa_atime -#define sa_nfsmtime sa_un.sa_nfsv2.nfssa_mtime -#define sa_nqsize sa_un.sa_nqnfs.nqsa_size -#define sa_nqatime sa_un.sa_nqnfs.nqsa_atime -#define sa_nqmtime sa_un.sa_nqnfs.nqsa_mtime -#define sa_nqflags sa_un.sa_nqnfs.nqsa_flags -#define sa_nqrdev sa_un.sa_nqnfs.nqsa_rdev - -struct nfsv2_statfs { - u_int32_t sf_tsize; - u_int32_t sf_bsize; - u_int32_t sf_blocks; - u_int32_t sf_bfree; - u_int32_t sf_bavail; - u_int32_t sf_files; /* Nqnfs only */ - u_int32_t sf_ffree; /* ditto */ -}; diff --git a/contrib/tcpdump/nlpid.c b/contrib/tcpdump/nlpid.c deleted file mode 100755 index 7dfd6a6f883d3..0000000000000 --- a/contrib/tcpdump/nlpid.c +++ /dev/null @@ -1,45 +0,0 @@ -/* - * 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. - * - * Original code by Hannes Gredler (hannes@juniper.net) - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/nlpid.c,v 1.4 2004/10/19 15:27:55 hannes Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> -#include "interface.h" -#include "nlpid.h" - -struct tok nlpid_values[] = { - { NLPID_NULLNS, "NULL" }, - { NLPID_Q933, "Q.933" }, - { NLPID_LMI, "LMI" }, - { NLPID_SNAP, "SNAP" }, - { NLPID_CLNP, "CLNP" }, - { NLPID_ESIS, "ES-IS" }, - { NLPID_ISIS, "IS-IS" }, - { NLPID_CONS, "CONS" }, - { NLPID_IDRP, "IDRP" }, - { NLPID_MFR, "FRF.15" }, - { NLPID_IP, "IPv4" }, - { NLPID_PPP, "PPP" }, - { NLPID_X25_ESIS, "X25 ES-IS" }, - { NLPID_IP6, "IPv6" }, - { 0, NULL } -}; diff --git a/contrib/tcpdump/nlpid.h b/contrib/tcpdump/nlpid.h deleted file mode 100644 index fdca446552389..0000000000000 --- a/contrib/tcpdump/nlpid.h +++ /dev/null @@ -1,32 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/nlpid.h,v 1.4 2004/10/19 15:27:55 hannes Exp $ (LBL) */ -/* - * 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. - * - * Original code by Hannes Gredler (hannes@juniper.net) - */ - -extern struct tok nlpid_values[]; - -#define NLPID_NULLNS 0x00 -#define NLPID_Q933 0x08 /* ANSI T1.617 Annex D or ITU-T Q.933 Annex A */ -#define NLPID_LMI 0x09 /* The original, aka Cisco, aka Gang of Four */ -#define NLPID_SNAP 0x80 -#define NLPID_CLNP 0x81 /* iso9577 */ -#define NLPID_ESIS 0x82 /* iso9577 */ -#define NLPID_ISIS 0x83 /* iso9577 */ -#define NLPID_CONS 0x84 -#define NLPID_IDRP 0x85 -#define NLPID_MFR 0xb1 /* FRF.15 */ -#define NLPID_IP 0xcc -#define NLPID_PPP 0xcf -#define NLPID_X25_ESIS 0x8a -#define NLPID_IP6 0x8e diff --git a/contrib/tcpdump/ntp.h b/contrib/tcpdump/ntp.h deleted file mode 100644 index df856699ae89e..0000000000000 --- a/contrib/tcpdump/ntp.h +++ /dev/null @@ -1,127 +0,0 @@ -/* $Header: /tcpdump/master/tcpdump/ntp.h,v 1.8 2004/01/28 14:34:50 hannes Exp $ */ - -/* - * Based on ntp.h from the U of MD implementation - * This file is based on Version 2 of the NTP spec (RFC1119). - */ - -/* - * Definitions for the masses - */ -#define JAN_1970 2208988800U /* 1970 - 1900 in seconds */ - -/* - * Structure definitions for NTP fixed point values - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Integer Part | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Fraction Part | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Integer Part | Fraction Part | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -*/ -struct l_fixedpt { - u_int32_t int_part; - u_int32_t fraction; -}; - -struct s_fixedpt { - u_int16_t int_part; - u_int16_t fraction; -}; - -/* rfc2030 - * 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * |LI | VN |Mode | Stratum | Poll | Precision | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Root Delay | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Root Dispersion | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Reference Identifier | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | | - * | Reference Timestamp (64) | - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | | - * | Originate Timestamp (64) | - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | | - * | Receive Timestamp (64) | - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | | - * | Transmit Timestamp (64) | - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Key Identifier (optional) (32) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | | - * | | - * | Message Digest (optional) (128) | - * | | - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -struct ntpdata { - u_char status; /* status of local clock and leap info */ - u_char stratum; /* Stratum level */ - u_char ppoll; /* poll value */ - int precision:8; - struct s_fixedpt root_delay; - struct s_fixedpt root_dispersion; - u_int32_t refid; - struct l_fixedpt ref_timestamp; - struct l_fixedpt org_timestamp; - struct l_fixedpt rec_timestamp; - struct l_fixedpt xmt_timestamp; - u_int32_t key_id; - u_int8_t message_digest[16]; -}; -/* - * Leap Second Codes (high order two bits) - */ -#define NO_WARNING 0x00 /* no warning */ -#define PLUS_SEC 0x40 /* add a second (61 seconds) */ -#define MINUS_SEC 0x80 /* minus a second (59 seconds) */ -#define ALARM 0xc0 /* alarm condition (clock unsynchronized) */ - -/* - * Clock Status Bits that Encode Version - */ -#define NTPVERSION_1 0x08 -#define VERSIONMASK 0x38 -#define LEAPMASK 0xc0 -#define MODEMASK 0x07 - -/* - * Code values - */ -#define MODE_UNSPEC 0 /* unspecified */ -#define MODE_SYM_ACT 1 /* symmetric active */ -#define MODE_SYM_PAS 2 /* symmetric passive */ -#define MODE_CLIENT 3 /* client */ -#define MODE_SERVER 4 /* server */ -#define MODE_BROADCAST 5 /* broadcast */ -#define MODE_RES1 6 /* reserved */ -#define MODE_RES2 7 /* reserved */ - -/* - * Stratum Definitions - */ -#define UNSPECIFIED 0 -#define PRIM_REF 1 /* radio clock */ -#define INFO_QUERY 62 /* **** THIS implementation dependent **** */ -#define INFO_REPLY 63 /* **** THIS implementation dependent **** */ diff --git a/contrib/tcpdump/oakley.h b/contrib/tcpdump/oakley.h deleted file mode 100644 index f40d6073eb015..0000000000000 --- a/contrib/tcpdump/oakley.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -/* YIPS @(#)$Id: oakley.h,v 1.4 2002/12/11 07:13:56 guy Exp $ */ - -/* refer to RFC 2409 */ - -#if !defined(_ISAKMP_OAKLEY_H_) -#define _ISAKMP_OAKLEY_H_ - -/* Attribute Classes */ -#define OAKLEY_ATTR_ENC_ALG 1 /* B */ -#define OAKLEY_ATTR_ENC_ALG_DES 1 -#define OAKLEY_ATTR_ENC_ALG_IDEA 2 -#define OAKLEY_ATTR_ENC_ALG_BL 3 -#define OAKLEY_ATTR_ENC_ALG_RC5 4 -#define OAKLEY_ATTR_ENC_ALG_3DES 5 -#define OAKLEY_ATTR_ENC_ALG_CAST 6 -#define OAKLEY_ATTR_HASH_ALG 2 /* B */ -#define OAKLEY_ATTR_HASH_ALG_MD5 1 -#define OAKLEY_ATTR_HASH_ALG_SHA 2 -#define OAKLEY_ATTR_HASH_ALG_TIGER 3 -#define OAKLEY_ATTR_AUTH_METHOD 3 /* B */ -#define OAKLEY_ATTR_AUTH_METHOD_PSKEY 1 -#define OAKLEY_ATTR_AUTH_METHOD_DSS 2 -#define OAKLEY_ATTR_AUTH_METHOD_RSA 3 -#define OAKLEY_ATTR_AUTH_METHOD_RSAENC 4 -#define OAKLEY_ATTR_AUTH_METHOD_RSAREV 5 -#define OAKLEY_ATTR_GRP_DESC 4 /* B */ -#define OAKLEY_ATTR_GRP_DESC_MODP768 1 -#define OAKLEY_ATTR_GRP_DESC_MODP1024 2 -#define OAKLEY_ATTR_GRP_DESC_EC2N155 3 -#define OAKLEY_ATTR_GRP_DESC_EC2N185 4 -#define OAKLEY_ATTR_GRP_TYPE 5 /* B */ -#define OAKLEY_ATTR_GRP_TYPE_MODP 1 -#define OAKLEY_ATTR_GRP_TYPE_ECP 2 -#define OAKLEY_ATTR_GRP_TYPE_EC2N 3 -#define OAKLEY_ATTR_GRP_PI 6 /* V */ -#define OAKLEY_ATTR_GRP_GEN_ONE 7 /* V */ -#define OAKLEY_ATTR_GRP_GEN_TWO 8 /* V */ -#define OAKLEY_ATTR_GRP_CURVE_A 9 /* V */ -#define OAKLEY_ATTR_GRP_CURVE_B 10 /* V */ -#define OAKLEY_ATTR_SA_LTYPE 11 /* B */ -#define OAKLEY_ATTR_SA_LTYPE_DEFAULT 1 -#define OAKLEY_ATTR_SA_LTYPE_SEC 1 -#define OAKLEY_ATTR_SA_LTYPE_KB 2 -#define OAKLEY_ATTR_SA_LDUR 12 /* V */ -#define OAKLEY_ATTR_SA_LDUR_DEFAULT 28800 /* 8 hours */ -#define OAKLEY_ATTR_PRF 13 /* B */ -#define OAKLEY_ATTR_KEY_LEN 14 /* B */ -#define OAKLEY_ATTR_FIELD_SIZE 15 /* B */ -#define OAKLEY_ATTR_GRP_ORDER 16 /* V */ - -#define OAKLEY_ID_IPV4_ADDR 0 -#define OAKLEY_ID_IPV4_ADDR_SUBNET 1 -#define OAKLEY_ID_IPV6_ADDR 2 -#define OAKLEY_ID_IPV6_ADDR_SUBNET 3 - -/* Additional Exchange Type */ -#define ISAKMP_ETYPE_QUICK 32 -#define ISAKMP_ETYPE_NEWGRP 33 - -/* The use for checking proposal payload. This is not exchange type. */ -#define OAKLEY_MAIN_MODE 0 -#define OAKLEY_QUICK_MODE 1 - -#define OAKLEY_PRIME_MODP768 "\ - FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 \ - 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD \ - EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 \ - E485B576 625E7EC6 F44C42E9 A63A3620 FFFFFFFF FFFFFFFF" - -#define OAKLEY_PRIME_MODP1024 "\ - FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 \ - 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD \ - EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 \ - E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED \ - EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 \ - FFFFFFFF FFFFFFFF" - -#define DEFAULTSECRETSIZE ( 128 / 8 ) /* 128 bits */ -#define DEFAULTNONCESIZE ( 128 / 8 ) /* 128 bits */ - -#define MAXPADLWORD 20 - -#if 0 -/* isakmp sa structure */ -struct oakley_sa { - u_int8_t proto_id; /* OAKLEY */ - vchar_t *spi; /* spi */ - u_int8_t dhgrp; /* DH; group */ - u_int8_t auth_t; /* method of authentication */ - u_int8_t prf_t; /* type of prf */ - u_int8_t hash_t; /* type of hash */ - u_int8_t enc_t; /* type of cipher */ - u_int8_t life_t; /* type of duration of lifetime */ - u_int32_t ldur; /* life duration */ -}; -#endif - -#endif /* !defined(_ISAKMP_OAKLEY_H_) */ diff --git a/contrib/tcpdump/ospf.h b/contrib/tcpdump/ospf.h deleted file mode 100644 index 27a45a53f9a42..0000000000000 --- a/contrib/tcpdump/ospf.h +++ /dev/null @@ -1,315 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/ospf.h,v 1.16.2.1 2005/08/23 11:16:30 hannes Exp $ (LBL) */ -/* - * Copyright (c) 1991, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * OSPF support contributed by Jeffrey Honig (jch@mitchell.cit.cornell.edu) - */ -#define OSPF_TYPE_UMD 0 /* UMd's special monitoring packets */ -#define OSPF_TYPE_HELLO 1 /* Hello */ -#define OSPF_TYPE_DD 2 /* Database Description */ -#define OSPF_TYPE_LS_REQ 3 /* Link State Request */ -#define OSPF_TYPE_LS_UPDATE 4 /* Link State Update */ -#define OSPF_TYPE_LS_ACK 5 /* Link State Ack */ - -/* Options field - * - * +------------------------------------+ - * | * | O | DC | EA | N/P | MC | E | T | - * +------------------------------------+ - * - */ - -#define OSPF_OPTION_T 0x01 /* T bit: TOS support */ -#define OSPF_OPTION_E 0x02 /* E bit: External routes advertised */ -#define OSPF_OPTION_MC 0x04 /* MC bit: Multicast capable */ -#define OSPF_OPTION_NP 0x08 /* N/P bit: NSSA capable */ -#define OSPF_OPTION_EA 0x10 /* EA bit: External Attribute capable */ -#define OSPF_OPTION_DC 0x20 /* DC bit: Demand circuit capable */ -#define OSPF_OPTION_O 0x40 /* O bit: Opaque LSA capable */ -#define OSPF_OPTION_DN 0x80 /* DN bit: Up/Down Bit capable - draft-ietf-ospf-2547-dnbit-04 */ - -/* ospf_authtype */ -#define OSPF_AUTH_NONE 0 /* No auth-data */ -#define OSPF_AUTH_SIMPLE 1 /* Simple password */ -#define OSPF_AUTH_MD5 2 /* MD5 authentication */ -#define OSPF_AUTH_MD5_LEN 16 /* length of MD5 authentication */ - -/* db_flags */ -#define OSPF_DB_INIT 0x04 /* */ -#define OSPF_DB_MORE 0x02 -#define OSPF_DB_MASTER 0x01 - -/* ls_type */ -#define LS_TYPE_ROUTER 1 /* router link */ -#define LS_TYPE_NETWORK 2 /* network link */ -#define LS_TYPE_SUM_IP 3 /* summary link */ -#define LS_TYPE_SUM_ABR 4 /* summary area link */ -#define LS_TYPE_ASE 5 /* ASE */ -#define LS_TYPE_GROUP 6 /* Group membership (multicast */ - /* extensions 23 July 1991) */ -#define LS_TYPE_NSSA 7 /* rfc3101 - Not so Stubby Areas */ -#define LS_TYPE_OPAQUE_LL 9 /* rfc2370 - Opaque Link Local */ -#define LS_TYPE_OPAQUE_AL 10 /* rfc2370 - Opaque Link Local */ -#define LS_TYPE_OPAQUE_DW 11 /* rfc2370 - Opaque Domain Wide */ - -#define LS_OPAQUE_TYPE_TE 1 /* rfc3630 */ -#define LS_OPAQUE_TYPE_GRACE 3 /* rfc3623 */ -#define LS_OPAQUE_TYPE_RI 4 /* draft-ietf-ospf-cap-03 */ - -#define LS_OPAQUE_TE_TLV_ROUTER 1 /* rfc3630 */ -#define LS_OPAQUE_TE_TLV_LINK 2 /* rfc3630 */ - -#define LS_OPAQUE_TE_LINK_SUBTLV_LINK_TYPE 1 /* rfc3630 */ -#define LS_OPAQUE_TE_LINK_SUBTLV_LINK_ID 2 /* rfc3630 */ -#define LS_OPAQUE_TE_LINK_SUBTLV_LOCAL_IP 3 /* rfc3630 */ -#define LS_OPAQUE_TE_LINK_SUBTLV_REMOTE_IP 4 /* rfc3630 */ -#define LS_OPAQUE_TE_LINK_SUBTLV_TE_METRIC 5 /* rfc3630 */ -#define LS_OPAQUE_TE_LINK_SUBTLV_MAX_BW 6 /* rfc3630 */ -#define LS_OPAQUE_TE_LINK_SUBTLV_MAX_RES_BW 7 /* rfc3630 */ -#define LS_OPAQUE_TE_LINK_SUBTLV_UNRES_BW 8 /* rfc3630 */ -#define LS_OPAQUE_TE_LINK_SUBTLV_ADMIN_GROUP 9 /* rfc3630 */ -#define LS_OPAQUE_TE_LINK_SUBTLV_LINK_LOCAL_REMOTE_ID 11 /* 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_SHARED_RISK_GROUP 16 /* draft-ietf-ccamp-ospf-gmpls-extensions */ -#define LS_OPAQUE_TE_LINK_SUBTLV_BW_CONSTRAINTS 17 /* rfc4124 */ - -#define LS_OPAQUE_TE_LINK_SUBTLV_LINK_TYPE_PTP 1 /* rfc3630 */ -#define LS_OPAQUE_TE_LINK_SUBTLV_LINK_TYPE_MA 2 /* rfc3630 */ - -#define LS_OPAQUE_GRACE_TLV_PERIOD 1 /* rfc3623 */ -#define LS_OPAQUE_GRACE_TLV_REASON 2 /* rfc3623 */ -#define LS_OPAQUE_GRACE_TLV_INT_ADDRESS 3 /* rfc3623 */ - -#define LS_OPAQUE_GRACE_TLV_REASON_UNKNOWN 0 /* rfc3623 */ -#define LS_OPAQUE_GRACE_TLV_REASON_SW_RESTART 1 /* rfc3623 */ -#define LS_OPAQUE_GRACE_TLV_REASON_SW_UPGRADE 2 /* rfc3623 */ -#define LS_OPAQUE_GRACE_TLV_REASON_CP_SWITCH 3 /* rfc3623 */ - -#define LS_OPAQUE_RI_TLV_CAP 1 /* draft-ietf-ospf-cap-03 */ - -/************************************************* - * - * is the above a bug in the documentation? - * - *************************************************/ - - -/* rla_link.link_type */ -#define RLA_TYPE_ROUTER 1 /* point-to-point to another router */ -#define RLA_TYPE_TRANSIT 2 /* connection to transit network */ -#define RLA_TYPE_STUB 3 /* connection to stub network */ -#define RLA_TYPE_VIRTUAL 4 /* virtual link */ - -/* rla_flags */ -#define RLA_FLAG_B 0x01 -#define RLA_FLAG_E 0x02 -#define RLA_FLAG_W1 0x04 -#define RLA_FLAG_W2 0x08 - -/* sla_tosmetric breakdown */ -#define SLA_MASK_TOS 0x7f000000 -#define SLA_MASK_METRIC 0x00ffffff -#define SLA_SHIFT_TOS 24 - -/* asla_tosmetric breakdown */ -#define ASLA_FLAG_EXTERNAL 0x80000000 -#define ASLA_MASK_TOS 0x7f000000 -#define ASLA_SHIFT_TOS 24 -#define ASLA_MASK_METRIC 0x00ffffff - -/* multicast vertex type */ -#define MCLA_VERTEX_ROUTER 1 -#define MCLA_VERTEX_NETWORK 2 - -/* link state advertisement header */ -struct lsa_hdr { - u_int16_t ls_age; - u_int8_t ls_options; - u_int8_t ls_type; - union { - struct in_addr lsa_id; - struct { /* opaque LSAs change the LSA-ID field */ - u_int8_t opaque_type; - u_int8_t opaque_id[3]; - } opaque_field; - } un_lsa_id; - struct in_addr ls_router; - u_int32_t ls_seq; - u_int16_t ls_chksum; - u_int16_t ls_length; -}; - -/* link state advertisement */ -struct lsa { - struct lsa_hdr ls_hdr; - - /* Link state types */ - union { - /* Router links advertisements */ - struct { - u_int8_t rla_flags; - u_int8_t rla_zero[1]; - u_int16_t rla_count; - struct rlalink { - struct in_addr link_id; - struct in_addr link_data; - u_int8_t link_type; - u_int8_t link_toscount; - u_int16_t link_tos0metric; - } rla_link[1]; /* may repeat */ - } un_rla; - - /* Network links advertisements */ - struct { - struct in_addr nla_mask; - struct in_addr nla_router[1]; /* may repeat */ - } un_nla; - - /* Summary links advertisements */ - struct { - struct in_addr sla_mask; - u_int32_t sla_tosmetric[1]; /* may repeat */ - } un_sla; - - /* AS external links advertisements */ - struct { - struct in_addr asla_mask; - struct aslametric { - u_int32_t asla_tosmetric; - struct in_addr asla_forward; - struct in_addr asla_tag; - } asla_metric[1]; /* may repeat */ - } un_asla; - - /* Multicast group membership */ - struct mcla { - u_int32_t mcla_vtype; - struct in_addr mcla_vid; - } un_mcla[1]; - - /* Opaque TE LSA */ - struct { - u_int16_t type; - u_int16_t length; - u_int8_t data[1]; /* may repeat */ - } un_te_lsa_tlv; - - /* Opaque Grace LSA */ - struct { - u_int16_t type; - u_int16_t length; - u_int8_t data[1]; /* may repeat */ - } un_grace_tlv; - - /* Opaque Router information LSA */ - struct { - u_int16_t type; - u_int16_t length; - u_int8_t data[1]; /* may repeat */ - } un_ri_tlv; - - /* Unknown LSA */ - struct unknown { - u_int8_t data[1]; /* may repeat */ - } un_unknown[1]; - - } lsa_un; -}; - - -/* - * TOS metric struct (will be 0 or more in router links update) - */ -struct tos_metric { - u_int8_t tos_type; - u_int8_t tos_zero; - u_int16_t tos_metric; -}; - -#define OSPF_AUTH_SIZE 8 - -/* - * the main header - */ -struct ospfhdr { - u_int8_t ospf_version; - u_int8_t ospf_type; - u_int16_t ospf_len; - struct in_addr ospf_routerid; - struct in_addr ospf_areaid; - u_int16_t ospf_chksum; - u_int16_t ospf_authtype; - u_int8_t ospf_authdata[OSPF_AUTH_SIZE]; - union { - - /* Hello packet */ - struct { - struct in_addr hello_mask; - u_int16_t hello_helloint; - u_int8_t hello_options; - u_int8_t hello_priority; - u_int32_t hello_deadint; - struct in_addr hello_dr; - struct in_addr hello_bdr; - struct in_addr hello_neighbor[1]; /* may repeat */ - } un_hello; - - /* Database Description packet */ - struct { - u_int8_t db_zero[2]; - u_int8_t db_options; - u_int8_t db_flags; - u_int32_t db_seq; - struct lsa_hdr db_lshdr[1]; /* may repeat */ - } un_db; - - /* Link State Request */ - struct lsr { - u_int8_t ls_type[4]; - union { - struct in_addr ls_stateid; - struct { /* opaque LSAs change the LSA-ID field */ - u_int8_t opaque_type; - u_int8_t opaque_id[3]; - } opaque_field; - } un_ls_stateid; - struct in_addr ls_router; - } un_lsr[1]; /* may repeat */ - - /* Link State Update */ - struct { - u_int32_t lsu_count; - struct lsa lsu_lsa[1]; /* may repeat */ - } un_lsu; - - /* Link State Acknowledgement */ - struct { - struct lsa_hdr lsa_lshdr[1]; /* may repeat */ - } un_lsa ; - } ospf_un ; -}; - -#define ospf_hello ospf_un.un_hello -#define ospf_db ospf_un.un_db -#define ospf_lsr ospf_un.un_lsr -#define ospf_lsu ospf_un.un_lsu -#define ospf_lsa ospf_un.un_lsa - diff --git a/contrib/tcpdump/ospf6.h b/contrib/tcpdump/ospf6.h deleted file mode 100644 index b8298ead91650..0000000000000 --- a/contrib/tcpdump/ospf6.h +++ /dev/null @@ -1,278 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/ospf6.h,v 1.6 2002/12/11 07:13:56 guy Exp $ (LBL) */ -/* - * Copyright (c) 1991, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * OSPF support contributed by Jeffrey Honig (jch@mitchell.cit.cornell.edu) - */ -#define OSPF_TYPE_UMD 0 /* UMd's special monitoring packets */ -#define OSPF_TYPE_HELLO 1 /* Hello */ -#define OSPF_TYPE_DB 2 /* Database Description */ -#define OSPF_TYPE_LSR 3 /* Link State Request */ -#define OSPF_TYPE_LSU 4 /* Link State Update */ -#define OSPF_TYPE_LSA 5 /* Link State Ack */ -#define OSPF_TYPE_MAX 6 - -/* Options *_options */ -#define OSPF6_OPTION_V6 0x01 /* V6 bit: A bit for peeping tom */ -#define OSPF6_OPTION_E 0x02 /* E bit: External routes advertised */ -#define OSPF6_OPTION_MC 0x04 /* MC bit: Multicast capable */ -#define OSPF6_OPTION_N 0x08 /* N bit: For type-7 LSA */ -#define OSPF6_OPTION_R 0x10 /* R bit: Router bit */ -#define OSPF6_OPTION_DC 0x20 /* DC bit: Demand circuits */ - - -/* db_flags */ -#define OSPF6_DB_INIT 0x04 /* */ -#define OSPF6_DB_MORE 0x02 -#define OSPF6_DB_MASTER 0x01 - -/* ls_type */ -#define LS_TYPE_ROUTER 1 /* router link */ -#define LS_TYPE_NETWORK 2 /* network link */ -#define LS_TYPE_INTER_AP 3 /* Inter-Area-Prefix */ -#define LS_TYPE_INTER_AR 4 /* Inter-Area-Router */ -#define LS_TYPE_ASE 5 /* ASE */ -#define LS_TYPE_GROUP 6 /* Group membership */ -#define LS_TYPE_TYPE7 7 /* Type 7 LSA */ -#define LS_TYPE_LINK 8 /* Link LSA */ -#define LS_TYPE_INTRA_AP 9 /* Intra-Area-Prefix */ -#define LS_TYPE_MAX 10 -#define LS_TYPE_MASK 0x1fff - -#define LS_SCOPE_LINKLOCAL 0x0000 -#define LS_SCOPE_AREA 0x2000 -#define LS_SCOPE_AS 0x4000 -#define LS_SCOPE_MASK 0x6000 - -/************************************************* - * - * is the above a bug in the documentation? - * - *************************************************/ - - -/* rla_link.link_type */ -#define RLA_TYPE_ROUTER 1 /* point-to-point to another router */ -#define RLA_TYPE_TRANSIT 2 /* connection to transit network */ -#define RLA_TYPE_VIRTUAL 4 /* virtual link */ - -/* rla_flags */ -#define RLA_FLAG_B 0x01 -#define RLA_FLAG_E 0x02 -#define RLA_FLAG_V 0x04 -#define RLA_FLAG_W 0x08 - -/* sla_tosmetric breakdown */ -#define SLA_MASK_TOS 0x7f000000 -#define SLA_MASK_METRIC 0x00ffffff -#define SLA_SHIFT_TOS 24 - -/* asla_metric */ -#define ASLA_FLAG_EXTERNAL 0x04000000 -#define ASLA_FLAG_FWDADDR 0x02000000 -#define ASLA_FLAG_ROUTETAG 0x01000000 -#define ASLA_MASK_METRIC 0x00ffffff - -/* multicast vertex type */ -#define MCLA_VERTEX_ROUTER 1 -#define MCLA_VERTEX_NETWORK 2 - -typedef u_int32_t rtrid_t; - -/* link state advertisement header */ -struct lsa_hdr { - u_int16_t ls_age; - u_int16_t ls_type; - rtrid_t ls_stateid; - rtrid_t ls_router; - u_int32_t ls_seq; - u_int16_t ls_chksum; - u_int16_t ls_length; -}; - -struct lsa_prefix { - u_int8_t lsa_p_len; - u_int8_t lsa_p_opt; - u_int16_t lsa_p_mbz; - u_int8_t lsa_p_prefix[4]; -}; - -/* link state advertisement */ -struct lsa { - struct lsa_hdr ls_hdr; - - /* Link state types */ - union { - /* Router links advertisements */ - struct { - union { - u_int8_t flg; - u_int32_t opt; - } rla_flgandopt; -#define rla_flags rla_flgandopt.flg -#define rla_options rla_flgandopt.opt - struct rlalink { - u_int8_t link_type; - u_int8_t link_zero[1]; - u_int16_t link_metric; - u_int32_t link_ifid; - u_int32_t link_nifid; - rtrid_t link_nrtid; - } rla_link[1]; /* may repeat */ - } un_rla; - - /* Network links advertisements */ - struct { - u_int32_t nla_options; - rtrid_t nla_router[1]; /* may repeat */ - } un_nla; - - /* Inter Area Prefix LSA */ - struct { - u_int32_t inter_ap_metric; - struct lsa_prefix inter_ap_prefix[1]; - } un_inter_ap; - - /* AS external links advertisements */ - struct { - u_int32_t asla_metric; - struct lsa_prefix asla_prefix[1]; - /* some optional fields follow */ - } un_asla; - -#if 0 - /* Summary links advertisements */ - struct { - struct in_addr sla_mask; - u_int32_t sla_tosmetric[1]; /* may repeat */ - } un_sla; - - /* Multicast group membership */ - struct mcla { - u_int32_t mcla_vtype; - struct in_addr mcla_vid; - } un_mcla[1]; -#endif - - /* Type 7 LSA */ - - /* Link LSA */ - struct llsa { - union { - u_int8_t pri; - u_int32_t opt; - } llsa_priandopt; -#define llsa_priority llsa_priandopt.pri -#define llsa_options llsa_priandopt.opt - struct in6_addr llsa_lladdr; - u_int32_t llsa_nprefix; - struct lsa_prefix llsa_prefix[1]; - } un_llsa; - - /* Intra-Area-Prefix */ - struct { - u_int16_t intra_ap_nprefix; - u_int16_t intra_ap_lstype; - rtrid_t intra_ap_lsid; - rtrid_t intra_ap_rtid; - struct lsa_prefix intra_ap_prefix[1]; - } un_intra_ap; - } lsa_un; -}; - - -/* - * TOS metric struct (will be 0 or more in router links update) - */ -struct tos_metric { - u_int8_t tos_type; - u_int8_t tos_zero; - u_int16_t tos_metric; -}; - -#define OSPF_AUTH_SIZE 8 - -/* - * the main header - */ -struct ospf6hdr { - u_int8_t ospf6_version; - u_int8_t ospf6_type; - u_int16_t ospf6_len; - rtrid_t ospf6_routerid; - rtrid_t ospf6_areaid; - u_int16_t ospf6_chksum; - u_int8_t ospf6_instanceid; - u_int8_t ospf6_rsvd; - union { - - /* Hello packet */ - struct { - u_int32_t hello_ifid; - union { - u_int8_t pri; - u_int32_t opt; - } hello_priandopt; -#define hello_priority hello_priandopt.pri -#define hello_options hello_priandopt.opt - u_int16_t hello_helloint; - u_int16_t hello_deadint; - rtrid_t hello_dr; - rtrid_t hello_bdr; - rtrid_t hello_neighbor[1]; /* may repeat */ - } un_hello; - - /* Database Description packet */ - struct { - u_int32_t db_options; - u_int16_t db_mtu; - u_int8_t db_mbz; - u_int8_t db_flags; - u_int32_t db_seq; - struct lsa_hdr db_lshdr[1]; /* may repeat */ - } un_db; - - /* Link State Request */ - struct lsr { - u_int16_t ls_mbz; - u_int16_t ls_type; - rtrid_t ls_stateid; - rtrid_t ls_router; - } un_lsr[1]; /* may repeat */ - - /* Link State Update */ - struct { - u_int32_t lsu_count; - struct lsa lsu_lsa[1]; /* may repeat */ - } un_lsu; - - /* Link State Acknowledgement */ - struct { - struct lsa_hdr lsa_lshdr[1]; /* may repeat */ - } un_lsa ; - } ospf6_un ; -}; - -#define ospf6_hello ospf6_un.un_hello -#define ospf6_db ospf6_un.un_db -#define ospf6_lsr ospf6_un.un_lsr -#define ospf6_lsu ospf6_un.un_lsu -#define ospf6_lsa ospf6_un.un_lsa - diff --git a/contrib/tcpdump/oui.c b/contrib/tcpdump/oui.c deleted file mode 100644 index 7cdcd40181d72..0000000000000 --- a/contrib/tcpdump/oui.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * 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. - * - * Original code by Hannes Gredler (hannes@juniper.net) - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/oui.c,v 1.4.2.1 2005/04/17 01:20:56 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> -#include "interface.h" -#include "oui.h" - -/* FIXME complete OUI list using a script */ - -struct tok oui_values[] = { - { OUI_ENCAP_ETHER, "Ethernet" }, - { OUI_CISCO, "Cisco" }, - { OUI_NORTEL, "Nortel Networks SONMP" }, - { OUI_CISCO_90, "Cisco bridged" }, - { OUI_RFC2684, "Ethernet bridged" }, - { OUI_ATM_FORUM, "ATM Forum" }, - { OUI_CABLE_BPDU, "DOCSIS Spanning Tree" }, - { OUI_APPLETALK, "Appletalk" }, - { OUI_JUNIPER, "Juniper" }, - { OUI_HP, "Hewlett-Packard" }, - { 0, NULL } -}; - -/* - * SMI Network Management Private Enterprise Codes for organizations. - * - * XXX - these also appear in FreeRadius dictionary files, with items such - * as - * - * VENDOR Cisco 9 - * - * List taken from Ethereal's epan/sminmpec.c. - */ -struct tok smi_values[] = { - { SMI_IETF, "IETF (reserved)"}, - { SMI_ACC, "ACC"}, - { SMI_CISCO, "Cisco"}, - { SMI_HEWLETT_PACKARD, "Hewlett Packard"}, - { SMI_SUN_MICROSYSTEMS, "Sun Microsystems"}, - { SMI_MERIT, "Merit"}, - { SMI_SHIVA, "Shiva"}, - { SMI_ERICSSON, "Ericsson AB"}, - { SMI_CISCO_VPN5000, "Cisco VPN 5000"}, - { SMI_LIVINGSTON, "Livingston"}, - { SMI_MICROSOFT, "Microsoft"}, - { SMI_3COM, "3Com"}, - { SMI_ASCEND, "Ascend"}, - { SMI_BAY, "Bay Networks"}, - { SMI_FOUNDRY, "Foundry"}, - { SMI_VERSANET, "Versanet"}, - { SMI_REDBACK, "Redback"}, - { SMI_JUNIPER, "Juniper Networks"}, - { SMI_APTIS, "Aptis"}, - { SMI_CISCO_VPN3000, "Cisco VPN 3000"}, - { SMI_COSINE, "CoSine Communications"}, - { SMI_NETSCREEN, "Netscreen"}, - { SMI_SHASTA, "Shasta"}, - { SMI_NOMADIX, "Nomadix"}, - { SMI_SIEMENS, "Siemens"}, - { SMI_CABLELABS, "CableLabs"}, - { SMI_UNISPHERE, "Unisphere Networks"}, - { SMI_CISCO_BBSM, "Cisco BBSM"}, - { SMI_THE3GPP2, "3rd Generation Partnership Project 2 (3GPP2)"}, - { SMI_IP_UNPLUGGED, "ipUnplugged"}, - { SMI_ISSANNI, "Issanni Communications"}, - { SMI_QUINTUM, "Quintum"}, - { SMI_INTERLINK, "Interlink"}, - { SMI_COLUBRIS, "Colubris"}, - { SMI_COLUMBIA_UNIVERSITY, "Columbia University"}, - { SMI_THE3GPP, "3GPP"}, - { SMI_GEMTEK_SYSTEMS, "Gemtek-Systems"}, - { SMI_WIFI_ALLIANCE, "Wi-Fi Alliance"}, - { 0, NULL} -}; diff --git a/contrib/tcpdump/oui.h b/contrib/tcpdump/oui.h deleted file mode 100644 index 4d79e197d42ec..0000000000000 --- a/contrib/tcpdump/oui.h +++ /dev/null @@ -1,78 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/oui.h,v 1.3.2.1 2005/04/17 01:20:56 guy Exp $ (LBL) */ -/* - * 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. - * - * Original code by Hannes Gredler (hannes@juniper.net) - */ - -extern struct tok oui_values[]; -extern struct tok smi_values[]; - -#define OUI_ENCAP_ETHER 0x000000 /* encapsulated Ethernet */ -#define OUI_CISCO 0x00000c /* Cisco protocols */ -#define OUI_NORTEL 0x000081 /* Nortel SONMP */ -#define OUI_CISCO_90 0x0000f8 /* Cisco bridging */ -#define OUI_RFC2684 0x0080c2 /* RFC 2427/2684 bridged Ethernet */ -#define OUI_ATM_FORUM 0x00A03E /* ATM Forum */ -#define OUI_CABLE_BPDU 0x00E02F /* DOCSIS spanning tree BPDU */ -#define OUI_APPLETALK 0x080007 /* Appletalk */ -#define OUI_JUNIPER 0x009069 /* Juniper */ -#define OUI_HP 0x080009 /* Hewlett-Packard */ - -/* - * These are SMI Network Management Private Enterprise Codes for - * organizations; see - * - * http://www.iana.org/assignments/enterprise-numbers - * - * for a list. - * - * List taken from Ethereal's epan/sminmpec.h. - */ -#define SMI_IETF 0 /* reserved - used by the IETF in L2TP? */ -#define SMI_ACC 5 -#define SMI_CISCO 9 -#define SMI_HEWLETT_PACKARD 11 -#define SMI_SUN_MICROSYSTEMS 42 -#define SMI_MERIT 61 -#define SMI_SHIVA 166 -#define SMI_ERICSSON 193 -#define SMI_CISCO_VPN5000 255 -#define SMI_LIVINGSTON 307 -#define SMI_MICROSOFT 311 -#define SMI_3COM 429 -#define SMI_ASCEND 529 -#define SMI_BAY 1584 -#define SMI_FOUNDRY 1991 -#define SMI_VERSANET 2180 -#define SMI_REDBACK 2352 -#define SMI_JUNIPER 2636 -#define SMI_APTIS 2637 -#define SMI_CISCO_VPN3000 3076 -#define SMI_COSINE 3085 -#define SMI_SHASTA 3199 -#define SMI_NETSCREEN 3224 -#define SMI_NOMADIX 3309 -#define SMI_SIEMENS 4329 -#define SMI_CABLELABS 4491 -#define SMI_UNISPHERE 4874 -#define SMI_CISCO_BBSM 5263 -#define SMI_THE3GPP2 5535 -#define SMI_IP_UNPLUGGED 5925 -#define SMI_ISSANNI 5948 -#define SMI_QUINTUM 6618 -#define SMI_INTERLINK 6728 -#define SMI_COLUBRIS 8744 -#define SMI_COLUMBIA_UNIVERSITY 11862 -#define SMI_THE3GPP 10415 -#define SMI_GEMTEK_SYSTEMS 10529 -#define SMI_WIFI_ALLIANCE 14122 diff --git a/contrib/tcpdump/packetdat.awk b/contrib/tcpdump/packetdat.awk deleted file mode 100644 index 292e21910a673..0000000000000 --- a/contrib/tcpdump/packetdat.awk +++ /dev/null @@ -1,61 +0,0 @@ -BEGIN { - # we need to know (usual) packet size to convert byte numbers - # to packet numbers - if (packetsize <= 0) - packetsize = 512 - } -$5 !~ /[SR]/ { - # print out per-packet data in the form: - # <packet #> - # <start sequence #> - # <1st send time> - # <last send time> - # <1st ack time> - # <last ack time> - # <# sends> - # <# acks> - - n = split ($1,t,":") - tim = t[1]*3600 + t[2]*60 + t[3] - if ($6 != "ack") { - i = index($6,":") - strtSeq = substr($6,1,i-1) - id = 1.5 + (strtSeq - 1) / packetsize - id -= id % 1 - if (maxId < id) - maxId = id - if (firstSend[id] == 0) { - firstSend[id] = tim - seqNo[id] = strtSeq - } - lastSend[id] = tim - timesSent[id]++ - totalPackets++ - } else { - id = 1 + ($7 - 2) / packetsize - id -= id % 1 - timesAcked[id]++ - if (firstAck[id] == 0) - firstAck[id] = tim - lastAck[id] = tim - totalAcks++ - } - } -END { - print "# " maxId " chunks. " totalPackets " packets sent. " \ - totalAcks " acks." - # for packets that were implicitly acked, make the ack time - # be the ack time of next explicitly acked packet. - for (i = maxId-1; i > 0; --i) - while (i > 0 && firstAck[i] == 0) { - lastAck[i] = firstAck[i] = firstAck[i+1] - --i - } - tzero = firstSend[1] - for (i = 1; i <= maxId; i++) - printf "%d\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t%d\n",\ - i, seqNo[i], \ - firstSend[i] - tzero, lastSend[i] - tzero,\ - firstAck[i] - tzero, lastAck[i] - tzero,\ - timesSent[i], timesAcked[i] - } diff --git a/contrib/tcpdump/parsenfsfh.c b/contrib/tcpdump/parsenfsfh.c deleted file mode 100644 index 686d01e48c7f1..0000000000000 --- a/contrib/tcpdump/parsenfsfh.c +++ /dev/null @@ -1,458 +0,0 @@ -/* - * Copyright (c) 1993, 1994 Jeffrey C. Mogul, Digital Equipment Corporation, - * Western Research Laboratory. All rights reserved. - * Copyright (c) 2001 Compaq Computer Corporation. All rights reserved. - * - * Permission to use, copy, and modify this software and its - * documentation is hereby granted only under the following terms and - * conditions. Both the above copyright notice and this permission - * notice must appear in all copies of the software, derivative works - * or modified versions, and any portions thereof, and both notices - * must appear in supporting documentation. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND COMPAQ COMPUTER CORPORATION - * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING - * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO - * EVENT SHALL COMPAQ COMPUTER CORPORATION BE LIABLE FOR ANY - * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN - * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ - -/* - * parsenfsfh.c - portable parser for NFS file handles - * uses all sorts of heuristics - * - * Jeffrey C. Mogul - * Digital Equipment Corporation - * Western Research Laboratory - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/parsenfsfh.c,v 1.28 2004/03/25 03:30:55 mcr Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "nfsfh.h" - -/* - * This routine attempts to parse a file handle (in network byte order), - * using heuristics to guess what kind of format it is in. See the - * file "fhandle_layouts" for a detailed description of the various - * patterns we know about. - * - * The file handle is parsed into our internal representation of a - * file-system id, and an internal representation of an inode-number. - */ - -#define FHT_UNKNOWN 0 -#define FHT_AUSPEX 1 -#define FHT_DECOSF 2 -#define FHT_IRIX4 3 -#define FHT_IRIX5 4 -#define FHT_SUNOS3 5 -#define FHT_SUNOS4 6 -#define FHT_ULTRIX 7 -#define FHT_VMSUCX 8 -#define FHT_SUNOS5 9 -#define FHT_AIX32 10 -#define FHT_HPUX9 11 - -#ifdef ultrix -/* Nasty hack to keep the Ultrix C compiler from emitting bogus warnings */ -#define XFF(x) ((u_int32_t)(x)) -#else -#define XFF(x) (x) -#endif - -#define make_uint32(msb,b,c,lsb)\ - (XFF(lsb) + (XFF(c)<<8) + (XFF(b)<<16) + (XFF(msb)<<24)) - -#define make_uint24(msb,b, lsb)\ - (XFF(lsb) + (XFF(b)<<8) + (XFF(msb)<<16)) - -#define make_uint16(msb,lsb)\ - (XFF(lsb) + (XFF(msb)<<8)) - -#ifdef __alpha - /* or other 64-bit systems */ -#define make_uint48(msb,b,c,d,e,lsb)\ - ((lsb) + ((e)<<8) + ((d)<<16) + ((c)<<24) + ((b)<<32) + ((msb)<<40)) -#else - /* on 32-bit systems ignore high-order bits */ -#define make_uint48(msb,b,c,d,e,lsb)\ - ((lsb) + ((e)<<8) + ((d)<<16) + ((c)<<24)) -#endif - -static int is_UCX(const unsigned char *); - -void -Parse_fh(fh, len, fsidp, inop, osnamep, fsnamep, ourself) -register const unsigned char *fh; -int len _U_; -my_fsid *fsidp; -ino_t *inop; -const char **osnamep; /* if non-NULL, return OS name here */ -const char **fsnamep; /* if non-NULL, return server fs name here (for VMS) */ -int ourself; /* true if file handle was generated on this host */ -{ - register const unsigned char *fhp = fh; - u_int32_t temp; - int fhtype = FHT_UNKNOWN; - int i; - - if (ourself) { - /* File handle generated on this host, no need for guessing */ -#if defined(IRIX40) - fhtype = FHT_IRIX4; -#endif -#if defined(IRIX50) - fhtype = FHT_IRIX5; -#endif -#if defined(IRIX51) - fhtype = FHT_IRIX5; -#endif -#if defined(SUNOS4) - fhtype = FHT_SUNOS4; -#endif -#if defined(SUNOS5) - fhtype = FHT_SUNOS5; -#endif -#if defined(ultrix) - fhtype = FHT_ULTRIX; -#endif -#if defined(__osf__) - fhtype = FHT_DECOSF; -#endif - } - /* - * This is basically a big decision tree - */ - else if ((fhp[0] == 0) && (fhp[1] == 0)) { - /* bytes[0,1] == (0,0); rules out Ultrix, IRIX5, SUNOS5 */ - /* probably rules out HP-UX, AIX unless they allow major=0 */ - if ((fhp[2] == 0) && (fhp[3] == 0)) { - /* bytes[2,3] == (0,0); must be Auspex */ - /* XXX or could be Ultrix+MASSBUS "hp" disk? */ - fhtype = FHT_AUSPEX; - } - else { - /* - * bytes[2,3] != (0,0); rules out Auspex, could be - * DECOSF, SUNOS4, or IRIX4 - */ - if ((fhp[4] != 0) && (fhp[5] == 0) && - (fhp[8] == 12) && (fhp[9] == 0)) { - /* seems to be DECOSF, with minor == 0 */ - fhtype = FHT_DECOSF; - } - else { - /* could be SUNOS4 or IRIX4 */ - /* XXX the test of fhp[5] == 8 could be wrong */ - if ((fhp[4] == 0) && (fhp[5] == 8) && (fhp[6] == 0) && - (fhp[7] == 0)) { - /* looks like a length, not a file system typecode */ - fhtype = FHT_IRIX4; - } - else { - /* by elimination */ - fhtype = FHT_SUNOS4; - } - } - } - } - else { - /* - * bytes[0,1] != (0,0); rules out Auspex, IRIX4, SUNOS4 - * could be IRIX5, DECOSF, UCX, Ultrix, SUNOS5 - * could be AIX, HP-UX - */ - if ((fhp[2] == 0) && (fhp[3] == 0)) { - /* - * bytes[2,3] == (0,0); rules out OSF, probably not UCX - * (unless the exported device name is just one letter!), - * could be Ultrix, IRIX5, AIX, or SUNOS5 - * might be HP-UX (depends on their values for minor devs) - */ - /*XXX we probably only need to test of these two bytes */ - if ((fhp[21] == 0) && (fhp[23] == 0)) { - fhtype = FHT_ULTRIX; - } - else { - /* Could be SUNOS5/IRIX5, maybe AIX */ - /* XXX no obvious difference between SUNOS5 and IRIX5 */ - if (fhp[9] == 10) - fhtype = FHT_SUNOS5; - /* XXX what about AIX? */ - } - } - else { - /* - * bytes[2,3] != (0,0); rules out Ultrix, could be - * DECOSF, SUNOS5, IRIX5, AIX, HP-UX, or UCX - */ - if ((fhp[8] == 12) && (fhp[9] == 0)) { - fhtype = FHT_DECOSF; - } - else if ((fhp[8] == 0) && (fhp[9] == 10)) { - /* could be SUNOS5/IRIX5, AIX, HP-UX */ - if ((fhp[7] == 0) && (fhp[6] == 0) && - (fhp[5] == 0) && (fhp[4] == 0)) { - /* XXX is this always true of HP-UX? */ - fhtype = FHT_HPUX9; - } - else if (fhp[7] == 2) { - /* This would be MNT_NFS on AIX, which is impossible */ - fhtype = FHT_SUNOS5; /* or maybe IRIX5 */ - } - else { - /* - * XXX Could be SUNOS5/IRIX5 or AIX. I don't - * XXX see any way to disambiguate these, so - * XXX I'm going with the more likely guess. - * XXX Sorry, Big Blue. - */ - fhtype = FHT_SUNOS5; /* or maybe IRIX5 */ - } - } - else { - if (is_UCX(fhp)) { - fhtype = FHT_VMSUCX; - } - else { - fhtype = FHT_UNKNOWN; - } - } - } - } - - /* XXX still needs to handle SUNOS3 */ - - switch (fhtype) { - case FHT_AUSPEX: - fsidp->Fsid_dev.Minor = fhp[7]; - fsidp->Fsid_dev.Major = fhp[6]; - fsidp->fsid_code = 0; - - temp = make_uint32(fhp[12], fhp[13], fhp[14], fhp[15]); - *inop = temp; - - if (osnamep) - *osnamep = "Auspex"; - break; - - case FHT_DECOSF: - fsidp->fsid_code = make_uint32(fhp[7], fhp[6], fhp[5], fhp[4]); - /* XXX could ignore 3 high-order bytes */ - - temp = make_uint32(fhp[3], fhp[2], fhp[1], fhp[0]); - fsidp->Fsid_dev.Minor = temp & 0xFFFFF; - fsidp->Fsid_dev.Major = (temp>>20) & 0xFFF; - - temp = make_uint32(fhp[15], fhp[14], fhp[13], fhp[12]); - *inop = temp; - if (osnamep) - *osnamep = "OSF"; - break; - - case FHT_IRIX4: - fsidp->Fsid_dev.Minor = fhp[3]; - fsidp->Fsid_dev.Major = fhp[2]; - fsidp->fsid_code = 0; - - temp = make_uint32(fhp[8], fhp[9], fhp[10], fhp[11]); - *inop = temp; - - if (osnamep) - *osnamep = "IRIX4"; - break; - - case FHT_IRIX5: - fsidp->Fsid_dev.Minor = make_uint16(fhp[2], fhp[3]); - fsidp->Fsid_dev.Major = make_uint16(fhp[0], fhp[1]); - fsidp->fsid_code = make_uint32(fhp[4], fhp[5], fhp[6], fhp[7]); - - temp = make_uint32(fhp[12], fhp[13], fhp[14], fhp[15]); - *inop = temp; - - if (osnamep) - *osnamep = "IRIX5"; - break; - - case FHT_SUNOS3: - if (osnamep) - *osnamep = "SUNOS3"; - break; - - case FHT_SUNOS4: - fsidp->Fsid_dev.Minor = fhp[3]; - fsidp->Fsid_dev.Major = fhp[2]; - fsidp->fsid_code = make_uint32(fhp[4], fhp[5], fhp[6], fhp[7]); - - temp = make_uint32(fhp[12], fhp[13], fhp[14], fhp[15]); - *inop = temp; - - if (osnamep) - *osnamep = "SUNOS4"; - break; - - case FHT_SUNOS5: - temp = make_uint16(fhp[0], fhp[1]); - fsidp->Fsid_dev.Major = (temp>>2) & 0x3FFF; - temp = make_uint24(fhp[1], fhp[2], fhp[3]); - fsidp->Fsid_dev.Minor = temp & 0x3FFFF; - fsidp->fsid_code = make_uint32(fhp[4], fhp[5], fhp[6], fhp[7]); - - temp = make_uint32(fhp[12], fhp[13], fhp[14], fhp[15]); - *inop = temp; - - if (osnamep) - *osnamep = "SUNOS5"; - break; - - case FHT_ULTRIX: - fsidp->fsid_code = 0; - fsidp->Fsid_dev.Minor = fhp[0]; - fsidp->Fsid_dev.Major = fhp[1]; - - temp = make_uint32(fhp[7], fhp[6], fhp[5], fhp[4]); - *inop = temp; - if (osnamep) - *osnamep = "Ultrix"; - break; - - case FHT_VMSUCX: - /* No numeric file system ID, so hash on the device-name */ - if (sizeof(*fsidp) >= 14) { - if (sizeof(*fsidp) > 14) - memset((char *)fsidp, 0, sizeof(*fsidp)); - /* just use the whole thing */ - memcpy((char *)fsidp, (char *)fh, 14); - } - else { - u_int32_t tempa[4]; /* at least 16 bytes, maybe more */ - - memset((char *)tempa, 0, sizeof(tempa)); - memcpy((char *)tempa, (char *)fh, 14); /* ensure alignment */ - fsidp->Fsid_dev.Minor = tempa[0] + (tempa[1]<<1); - fsidp->Fsid_dev.Major = tempa[2] + (tempa[3]<<1); - fsidp->fsid_code = 0; - } - - /* VMS file ID is: (RVN, FidHi, FidLo) */ - *inop = make_uint32(fhp[26], fhp[27], fhp[23], fhp[22]); - - /* Caller must save (and null-terminate?) this value */ - if (fsnamep) - *fsnamep = (char *)&(fhp[1]); - - if (osnamep) - *osnamep = "VMS"; - break; - - case FHT_AIX32: - fsidp->Fsid_dev.Minor = make_uint16(fhp[2], fhp[3]); - fsidp->Fsid_dev.Major = make_uint16(fhp[0], fhp[1]); - fsidp->fsid_code = make_uint32(fhp[4], fhp[5], fhp[6], fhp[7]); - - temp = make_uint32(fhp[12], fhp[13], fhp[14], fhp[15]); - *inop = temp; - - if (osnamep) - *osnamep = "AIX32"; - break; - - case FHT_HPUX9: - fsidp->Fsid_dev.Major = fhp[0]; - temp = make_uint24(fhp[1], fhp[2], fhp[3]); - fsidp->Fsid_dev.Minor = temp; - fsidp->fsid_code = make_uint32(fhp[4], fhp[5], fhp[6], fhp[7]); - - temp = make_uint32(fhp[12], fhp[13], fhp[14], fhp[15]); - *inop = temp; - - if (osnamep) - *osnamep = "HPUX9"; - break; - - case FHT_UNKNOWN: -#ifdef DEBUG - /* XXX debugging */ - for (i = 0; i < 32; i++) - (void)fprintf(stderr, "%x.", fhp[i]); - (void)fprintf(stderr, "\n"); -#endif - /* Save the actual handle, so it can be display with -u */ - for (i = 0; i < 32; i++) - (void)snprintf(&(fsidp->Opaque_Handle[i*2]), 3, "%.2X", fhp[i]); - - /* XXX for now, give "bogus" values to aid debugging */ - fsidp->fsid_code = 0; - fsidp->Fsid_dev.Minor = 257; - fsidp->Fsid_dev.Major = 257; - *inop = 1; - - /* display will show this string instead of (257,257) */ - if (fsnamep) - *fsnamep = "Unknown"; - - if (osnamep) - *osnamep = "Unknown"; - break; - - } -} - -/* - * Is this a VMS UCX file handle? - * Check for: - * (1) leading code byte [XXX not yet] - * (2) followed by string of printing chars & spaces - * (3) followed by string of nulls - */ -static int -is_UCX(fhp) -const unsigned char *fhp; -{ - register int i; - int seen_null = 0; - - for (i = 1; i < 14; i++) { - if (isprint(fhp[i])) { - if (seen_null) - return(0); - else - continue; - } - else if (fhp[i] == 0) { - seen_null = 1; - continue; - } - else - return(0); - } - - return(1); -} diff --git a/contrib/tcpdump/pcap-missing.h b/contrib/tcpdump/pcap-missing.h deleted file mode 100644 index 1f2fcb422b95c..0000000000000 --- a/contrib/tcpdump/pcap-missing.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 1988-2002 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * @(#) $Header: /tcpdump/master/tcpdump/pcap-missing.h,v 1.2.2.1 2005/06/03 22:10:16 guy Exp $ (LBL) - */ - -#ifndef tcpdump_pcap_missing_h -#define tcpdump_pcap_missing_h - -/* - * Declarations of functions that might be missing from libpcap. - */ - -#ifndef HAVE_PCAP_LIST_DATALINKS -extern int pcap_list_datalinks(pcap_t *, int **); -#endif - -#ifndef HAVE_PCAP_DATALINK_NAME_TO_VAL -/* - * We assume no platform has one but not the other. - */ -extern int pcap_datalink_name_to_val(const char *); -extern const char *pcap_datalink_val_to_name(int); -#endif - -#ifndef HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION -extern const char *pcap_datalink_val_to_description(int); -#endif - -#ifndef HAVE_PCAP_DUMP_FTELL -extern long pcap_dump_ftell(pcap_dumper_t *); -#endif - -#endif - - - - - - - - - diff --git a/contrib/tcpdump/pcap_dump_ftell.c b/contrib/tcpdump/pcap_dump_ftell.c deleted file mode 100644 index 438cd29dbeb97..0000000000000 --- a/contrib/tcpdump/pcap_dump_ftell.c +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/pcap_dump_ftell.c,v 1.1.2.1 2005/06/03 22:10:17 guy Exp $ (LBL)"; -#endif - -#include <stdio.h> -#include <pcap.h> - -#include "pcap-missing.h" - -long -pcap_dump_ftell(pcap_dumper_t *p) -{ - return (ftell((FILE *)p)); -} diff --git a/contrib/tcpdump/pf.h b/contrib/tcpdump/pf.h deleted file mode 100644 index c2d332abb3cd8..0000000000000 --- a/contrib/tcpdump/pf.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2001 Daniel Hartmeier - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @(#) $Header: /tcpdump/master/tcpdump/pf.h,v 1.2 2004/04/02 06:36:25 guy Exp $ (LBL) - */ - -/* from $OpenBSD: pfvar.h,v 1.170 2003/08/22 21:50:34 david Exp $ */ - -enum { PF_INOUT=0, PF_IN=1, PF_OUT=2 }; -enum { PF_PASS=0, PF_DROP=1, PF_SCRUB=2, PF_NAT=3, PF_NONAT=4, - PF_BINAT=5, PF_NOBINAT=6, PF_RDR=7, PF_NORDR=8, PF_SYNPROXY_DROP=9 }; - -/* Reasons code for passing/dropping a packet */ -#define PFRES_MATCH 0 /* Explicit match of a rule */ -#define PFRES_BADOFF 1 /* Bad offset for pull_hdr */ -#define PFRES_FRAG 2 /* Dropping following fragment */ -#define PFRES_SHORT 3 /* Dropping short packet */ -#define PFRES_NORM 4 /* Dropping by normalizer */ -#define PFRES_MEMORY 5 /* Dropped due to lacking mem */ -#define PFRES_MAX 6 /* total+1 */ - -#define PFRES_NAMES { \ - "match", \ - "bad-offset", \ - "fragment", \ - "short", \ - "normalize", \ - "memory", \ - NULL \ -} - -#define PF_RULESET_NAME_SIZE 16 - -/* from $OpenBSD: if_pflog.h,v 1.9 2003/07/15 20:27:27 dhartmei Exp $ */ - -#ifndef IFNAMSIZ -#define IFNAMSIZ 16 -#endif - -struct pfloghdr { - u_int8_t length; - u_int8_t af; - u_int8_t action; - u_int8_t reason; - char ifname[IFNAMSIZ]; - char ruleset[PF_RULESET_NAME_SIZE]; - u_int32_t rulenr; - u_int32_t subrulenr; - u_int8_t dir; - u_int8_t pad[3]; -}; -#define PFLOG_HDRLEN sizeof(struct pfloghdr) diff --git a/contrib/tcpdump/pmap_prot.h b/contrib/tcpdump/pmap_prot.h deleted file mode 100644 index 17cb92ff9a78b..0000000000000 --- a/contrib/tcpdump/pmap_prot.h +++ /dev/null @@ -1,89 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/pmap_prot.h,v 1.1.2.2 2005/04/27 21:44:06 guy Exp $ (LBL) */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - * - * from: @(#)pmap_prot.h 1.14 88/02/08 SMI - * from: @(#)pmap_prot.h 2.1 88/07/29 4.0 RPCSRC - * $FreeBSD$ - */ - -/* - * pmap_prot.h - * Protocol for the local binder service, or pmap. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * The following procedures are supported by the protocol: - * - * PMAPPROC_NULL() returns () - * takes nothing, returns nothing - * - * PMAPPROC_SET(struct pmap) returns (bool_t) - * TRUE is success, FALSE is failure. Registers the tuple - * [prog, vers, prot, port]. - * - * PMAPPROC_UNSET(struct pmap) returns (bool_t) - * TRUE is success, FALSE is failure. Un-registers pair - * [prog, vers]. prot and port are ignored. - * - * PMAPPROC_GETPORT(struct pmap) returns (long unsigned). - * 0 is failure. Otherwise returns the port number where the pair - * [prog, vers] is registered. It may lie! - * - * PMAPPROC_DUMP() RETURNS (struct pmaplist *) - * - * PMAPPROC_CALLIT(unsigned, unsigned, unsigned, string<>) - * RETURNS (port, string<>); - * usage: encapsulatedresults = PMAPPROC_CALLIT(prog, vers, proc, encapsulatedargs); - * Calls the procedure on the local machine. If it is not registered, - * this procedure is quite; ie it does not return error information!!! - * This procedure only is supported on rpc/udp and calls via - * rpc/udp. This routine only passes null authentication parameters. - * This file has no interface to xdr routines for PMAPPROC_CALLIT. - * - * The service supports remote procedure calls on udp/ip or tcp/ip socket 111. - */ - -#define SUNRPC_PMAPPORT ((u_int16_t)111) -#define SUNRPC_PMAPPROG ((u_int32_t)100000) -#define SUNRPC_PMAPVERS ((u_int32_t)2) -#define SUNRPC_PMAPVERS_PROTO ((u_int32_t)2) -#define SUNRPC_PMAPVERS_ORIG ((u_int32_t)1) -#define SUNRPC_PMAPPROC_NULL ((u_int32_t)0) -#define SUNRPC_PMAPPROC_SET ((u_int32_t)1) -#define SUNRPC_PMAPPROC_UNSET ((u_int32_t)2) -#define SUNRPC_PMAPPROC_GETPORT ((u_int32_t)3) -#define SUNRPC_PMAPPROC_DUMP ((u_int32_t)4) -#define SUNRPC_PMAPPROC_CALLIT ((u_int32_t)5) - -struct sunrpc_pmap { - u_int32_t pm_prog; - u_int32_t pm_vers; - u_int32_t pm_prot; - u_int32_t pm_port; -}; diff --git a/contrib/tcpdump/ppp.h b/contrib/tcpdump/ppp.h deleted file mode 100644 index 71621caa9ca75..0000000000000 --- a/contrib/tcpdump/ppp.h +++ /dev/null @@ -1,71 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/ppp.h,v 1.16 2004/10/20 16:14:16 hannes Exp $ (LBL) */ -/* - * Point to Point Protocol (PPP) RFC1331 - * - * Copyright 1989 by Carnegie Mellon. - * - * Permission to use, copy, modify, and distribute this program for any - * purpose and without fee is hereby granted, provided that this copyright - * and permission notice appear on all copies and supporting documentation, - * the name of Carnegie Mellon not be used in advertising or publicity - * pertaining to distribution of the program without specific prior - * permission, and notice be given in supporting documentation that copying - * and distribution is by permission of Carnegie Mellon and Stanford - * University. Carnegie Mellon makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - */ -#define PPP_HDRLEN 4 /* length of PPP header */ - -#define PPP_ADDRESS 0xff /* The address byte value */ -#define PPP_CONTROL 0x03 /* The control byte value */ - -#define PPP_WITHDIRECTION_IN 0x00 /* non-standard for DLT_PPP_WITHDIRECTION */ -#define PPP_WITHDIRECTION_OUT 0x01 /* non-standard for DLT_PPP_WITHDIRECTION */ - -/* Protocol numbers */ -#define PPP_IP 0x0021 /* Raw IP */ -#define PPP_OSI 0x0023 /* OSI Network Layer */ -#define PPP_NS 0x0025 /* Xerox NS IDP */ -#define PPP_DECNET 0x0027 /* DECnet Phase IV */ -#define PPP_APPLE 0x0029 /* Appletalk */ -#define PPP_IPX 0x002b /* Novell IPX */ -#define PPP_VJC 0x002d /* Van Jacobson Compressed TCP/IP */ -#define PPP_VJNC 0x002f /* Van Jacobson Uncompressed TCP/IP */ -#define PPP_BRPDU 0x0031 /* Bridging PDU */ -#define PPP_STII 0x0033 /* Stream Protocol (ST-II) */ -#define PPP_VINES 0x0035 /* Banyan Vines */ -#define PPP_ML 0x003d /* Multi-Link PPP */ -#define PPP_IPV6 0x0057 /* IPv6 */ -#define PPP_COMP 0x00fd /* Compressed Datagram */ - -#define PPP_HELLO 0x0201 /* 802.1d Hello Packets */ -#define PPP_LUXCOM 0x0231 /* Luxcom */ -#define PPP_SNS 0x0233 /* Sigma Network Systems */ -#define PPP_MPLS_UCAST 0x0281 /* rfc 3032 */ -#define PPP_MPLS_MCAST 0x0283 /* rfc 3022 */ - -#define PPP_IPCP 0x8021 /* IP Control Protocol */ -#define PPP_OSICP 0x8023 /* OSI Network Layer Control Protocol */ -#define PPP_NSCP 0x8025 /* Xerox NS IDP Control Protocol */ -#define PPP_DECNETCP 0x8027 /* DECnet Control Protocol */ -#define PPP_APPLECP 0x8029 /* Appletalk Control Protocol */ -#define PPP_IPXCP 0x802b /* Novell IPX Control Protocol */ -#define PPP_STIICP 0x8033 /* Strean Protocol Control Protocol */ -#define PPP_VINESCP 0x8035 /* Banyan Vines Control Protocol */ -#define PPP_IPV6CP 0x8057 /* IPv6 Control Protocol */ -#define PPP_CCP 0x80fd /* Compress Control Protocol */ -#define PPP_MPLSCP 0x8281 /* rfc 3022 */ - -#define PPP_LCP 0xc021 /* Link Control Protocol */ -#define PPP_PAP 0xc023 /* Password Authentication Protocol */ -#define PPP_LQM 0xc025 /* Link Quality Monitoring */ -#define PPP_SPAP 0xc027 -#define PPP_CHAP 0xc223 /* Challenge Handshake Authentication Protocol */ -#define PPP_BACP 0xc02b /* Bandwidth Allocation Control Protocol */ -#define PPP_BAP 0xc02d /* BAP */ -#define PPP_MPCP 0xc03d /* Multi-Link */ -#define PPP_SPAP_OLD 0xc123 -#define PPP_EAP 0xc227 - -extern struct tok ppptype2str[]; diff --git a/contrib/tcpdump/print-802_11.c b/contrib/tcpdump/print-802_11.c deleted file mode 100644 index c4ec7ee474b42..0000000000000 --- a/contrib/tcpdump/print-802_11.c +++ /dev/null @@ -1,1202 +0,0 @@ -/* - * Copyright (c) 2001 - * Fortress Technologies, Inc. All rights reserved. - * Charlie Lenahan (clenahan@fortresstech.com) - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-802_11.c,v 1.31.2.5 2005/07/30 21:37:50 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <pcap.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "ethertype.h" - -#include "extract.h" - -#include "cpack.h" - -#include "ieee802_11.h" -#include "ieee802_11_radio.h" - -#define PRINT_RATE(_sep, _r, _suf) \ - printf("%s%2.1f%s", _sep, (.5 * ((_r) & 0x7f)), _suf) -#define PRINT_RATES(p) \ -do { \ - int z; \ - const char *sep = " ["; \ - for (z = 0; z < p.rates.length ; z++) { \ - PRINT_RATE(sep, p.rates.rate[z], \ - (p.rates.rate[z] & 0x80 ? "*" : "")); \ - sep = " "; \ - } \ - if (p.rates.length != 0) \ - printf(" Mbit]"); \ -} while (0) - -static const char *auth_alg_text[]={"Open System","Shared Key","EAP"}; -#define NUM_AUTH_ALGS (sizeof auth_alg_text / sizeof auth_alg_text[0]) - -static const char *status_text[] = { - "Succesful", /* 0 */ - "Unspecified failure", /* 1 */ - "Reserved", /* 2 */ - "Reserved", /* 3 */ - "Reserved", /* 4 */ - "Reserved", /* 5 */ - "Reserved", /* 6 */ - "Reserved", /* 7 */ - "Reserved", /* 8 */ - "Reserved", /* 9 */ - "Cannot Support all requested capabilities in the Capability Information field", /* 10 */ - "Reassociation denied due to inability to confirm that association exists", /* 11 */ - "Association denied due to reason outside the scope of the standard", /* 12 */ - "Responding station does not support the specified authentication algorithm ", /* 13 */ - "Received an Authentication frame with authentication transaction " \ - "sequence number out of expected sequence", /* 14 */ - "Authentication rejected because of challenge failure", /* 15 */ - "Authentication rejected due to timeout waiting for next frame in sequence", /* 16 */ - "Association denied because AP is unable to handle additional associated stations", /* 17 */ - "Association denied due to requesting station not supporting all of the " \ - "data rates in BSSBasicRateSet parameter", /* 18 */ -}; -#define NUM_STATUSES (sizeof status_text / sizeof status_text[0]) - -static const char *reason_text[] = { - "Reserved", /* 0 */ - "Unspecified reason", /* 1 */ - "Previous authentication no longer valid", /* 2 */ - "Deauthenticated because sending station is leaving (or has left) IBSS or ESS", /* 3 */ - "Disassociated due to inactivity", /* 4 */ - "Disassociated because AP is unable to handle all currently associated stations", /* 5 */ - "Class 2 frame received from nonauthenticated station", /* 6 */ - "Class 3 frame received from nonassociated station", /* 7 */ - "Disassociated because sending station is leaving (or has left) BSS", /* 8 */ - "Station requesting (re)association is not authenticated with responding station", /* 9 */ -}; -#define NUM_REASONS (sizeof reason_text / sizeof reason_text[0]) - -static int -wep_print(const u_char *p) -{ - u_int32_t iv; - - if (!TTEST2(*p, IEEE802_11_IV_LEN + IEEE802_11_KID_LEN)) - return 0; - iv = EXTRACT_LE_32BITS(p); - - printf("Data IV:%3x Pad %x KeyID %x", IV_IV(iv), IV_PAD(iv), - IV_KEYID(iv)); - - return 1; -} - -static int -parse_elements(struct mgmt_body_t *pbody, const u_char *p, int offset) -{ - for (;;) { - if (!TTEST2(*(p + offset), 1)) - return 1; - switch (*(p + offset)) { - case E_SSID: - if (!TTEST2(*(p + offset), 2)) - return 0; - memcpy(&pbody->ssid, p + offset, 2); - offset += 2; - if (pbody->ssid.length <= 0) - break; - if (!TTEST2(*(p + offset), pbody->ssid.length)) - return 0; - memcpy(&pbody->ssid.ssid, p + offset, - pbody->ssid.length); - offset += pbody->ssid.length; - pbody->ssid.ssid[pbody->ssid.length] = '\0'; - break; - case E_CHALLENGE: - if (!TTEST2(*(p + offset), 2)) - return 0; - memcpy(&pbody->challenge, p + offset, 2); - offset += 2; - if (pbody->challenge.length <= 0) - break; - if (!TTEST2(*(p + offset), pbody->challenge.length)) - return 0; - memcpy(&pbody->challenge.text, p + offset, - pbody->challenge.length); - offset += pbody->challenge.length; - pbody->challenge.text[pbody->challenge.length] = '\0'; - break; - case E_RATES: - if (!TTEST2(*(p + offset), 2)) - return 0; - memcpy(&(pbody->rates), p + offset, 2); - offset += 2; - if (pbody->rates.length <= 0) - break; - if (!TTEST2(*(p + offset), pbody->rates.length)) - return 0; - memcpy(&pbody->rates.rate, p + offset, - pbody->rates.length); - offset += pbody->rates.length; - break; - case E_DS: - if (!TTEST2(*(p + offset), 3)) - return 0; - memcpy(&pbody->ds, p + offset, 3); - offset += 3; - break; - case E_CF: - if (!TTEST2(*(p + offset), 8)) - return 0; - memcpy(&pbody->cf, p + offset, 8); - offset += 8; - break; - case E_TIM: - if (!TTEST2(*(p + offset), 2)) - return 0; - memcpy(&pbody->tim, p + offset, 2); - offset += 2; - if (!TTEST2(*(p + offset), 3)) - return 0; - memcpy(&pbody->tim.count, p + offset, 3); - offset += 3; - - if (pbody->tim.length <= 3) - break; - if (!TTEST2(*(p + offset), pbody->tim.length - 3)) - return 0; - memcpy(pbody->tim.bitmap, p + (pbody->tim.length - 3), - (pbody->tim.length - 3)); - offset += pbody->tim.length - 3; - break; - default: -#if 0 - printf("(1) unhandled element_id (%d) ", - *(p + offset) ); -#endif - offset += *(p + offset + 1) + 2; - break; - } - } - return 1; -} - -/********************************************************************************* - * Print Handle functions for the management frame types - *********************************************************************************/ - -static int -handle_beacon(const u_char *p) -{ - struct mgmt_body_t pbody; - int offset = 0; - - memset(&pbody, 0, sizeof(pbody)); - - if (!TTEST2(*p, IEEE802_11_TSTAMP_LEN + IEEE802_11_BCNINT_LEN + - IEEE802_11_CAPINFO_LEN)) - return 0; - memcpy(&pbody.timestamp, p, 8); - offset += IEEE802_11_TSTAMP_LEN; - pbody.beacon_interval = EXTRACT_LE_16BITS(p+offset); - offset += IEEE802_11_BCNINT_LEN; - pbody.capability_info = EXTRACT_LE_16BITS(p+offset); - offset += IEEE802_11_CAPINFO_LEN; - - if (!parse_elements(&pbody, p, offset)) - return 0; - - printf(" ("); - fn_print(pbody.ssid.ssid, NULL); - printf(")"); - PRINT_RATES(pbody); - printf(" %s CH: %u%s", - CAPABILITY_ESS(pbody.capability_info) ? "ESS" : "IBSS", - pbody.ds.channel, - CAPABILITY_PRIVACY(pbody.capability_info) ? ", PRIVACY" : "" ); - - return 1; -} - -static int -handle_assoc_request(const u_char *p) -{ - struct mgmt_body_t pbody; - int offset = 0; - - memset(&pbody, 0, sizeof(pbody)); - - if (!TTEST2(*p, IEEE802_11_CAPINFO_LEN + IEEE802_11_LISTENINT_LEN)) - return 0; - pbody.capability_info = EXTRACT_LE_16BITS(p); - offset += IEEE802_11_CAPINFO_LEN; - pbody.listen_interval = EXTRACT_LE_16BITS(p+offset); - offset += IEEE802_11_LISTENINT_LEN; - - if (!parse_elements(&pbody, p, offset)) - return 0; - - printf(" ("); - fn_print(pbody.ssid.ssid, NULL); - printf(")"); - PRINT_RATES(pbody); - return 1; -} - -static int -handle_assoc_response(const u_char *p) -{ - struct mgmt_body_t pbody; - int offset = 0; - - memset(&pbody, 0, sizeof(pbody)); - - if (!TTEST2(*p, IEEE802_11_CAPINFO_LEN + IEEE802_11_STATUS_LEN + - IEEE802_11_AID_LEN)) - return 0; - pbody.capability_info = EXTRACT_LE_16BITS(p); - offset += IEEE802_11_CAPINFO_LEN; - pbody.status_code = EXTRACT_LE_16BITS(p+offset); - offset += IEEE802_11_STATUS_LEN; - pbody.aid = EXTRACT_LE_16BITS(p+offset); - offset += IEEE802_11_AID_LEN; - - if (!parse_elements(&pbody, p, offset)) - return 0; - - printf(" AID(%x) :%s: %s", ((u_int16_t)(pbody.aid << 2 )) >> 2 , - CAPABILITY_PRIVACY(pbody.capability_info) ? " PRIVACY " : "", - (pbody.status_code < NUM_STATUSES - ? status_text[pbody.status_code] - : "n/a")); - - return 1; -} - -static int -handle_reassoc_request(const u_char *p) -{ - struct mgmt_body_t pbody; - int offset = 0; - - memset(&pbody, 0, sizeof(pbody)); - - if (!TTEST2(*p, IEEE802_11_CAPINFO_LEN + IEEE802_11_LISTENINT_LEN + - IEEE802_11_AP_LEN)) - return 0; - pbody.capability_info = EXTRACT_LE_16BITS(p); - offset += IEEE802_11_CAPINFO_LEN; - pbody.listen_interval = EXTRACT_LE_16BITS(p+offset); - offset += IEEE802_11_LISTENINT_LEN; - memcpy(&pbody.ap, p+offset, IEEE802_11_AP_LEN); - offset += IEEE802_11_AP_LEN; - - if (!parse_elements(&pbody, p, offset)) - return 0; - - printf(" ("); - fn_print(pbody.ssid.ssid, NULL); - printf(") AP : %s", etheraddr_string( pbody.ap )); - - return 1; -} - -static int -handle_reassoc_response(const u_char *p) -{ - /* Same as a Association Reponse */ - return handle_assoc_response(p); -} - -static int -handle_probe_request(const u_char *p) -{ - struct mgmt_body_t pbody; - int offset = 0; - - memset(&pbody, 0, sizeof(pbody)); - - if (!parse_elements(&pbody, p, offset)) - return 0; - - printf(" ("); - fn_print(pbody.ssid.ssid, NULL); - printf(")"); - PRINT_RATES(pbody); - - return 1; -} - -static int -handle_probe_response(const u_char *p) -{ - struct mgmt_body_t pbody; - int offset = 0; - - memset(&pbody, 0, sizeof(pbody)); - - if (!TTEST2(*p, IEEE802_11_TSTAMP_LEN + IEEE802_11_BCNINT_LEN + - IEEE802_11_CAPINFO_LEN)) - return 0; - - memcpy(&pbody.timestamp, p, IEEE802_11_TSTAMP_LEN); - offset += IEEE802_11_TSTAMP_LEN; - pbody.beacon_interval = EXTRACT_LE_16BITS(p+offset); - offset += IEEE802_11_BCNINT_LEN; - pbody.capability_info = EXTRACT_LE_16BITS(p+offset); - offset += IEEE802_11_CAPINFO_LEN; - - if (!parse_elements(&pbody, p, offset)) - return 0; - - printf(" ("); - fn_print(pbody.ssid.ssid, NULL); - printf(") "); - PRINT_RATES(pbody); - printf(" CH: %u%s", pbody.ds.channel, - CAPABILITY_PRIVACY(pbody.capability_info) ? ", PRIVACY" : "" ); - - return 1; -} - -static int -handle_atim(void) -{ - /* the frame body for ATIM is null. */ - return 1; -} - -static int -handle_disassoc(const u_char *p) -{ - struct mgmt_body_t pbody; - - memset(&pbody, 0, sizeof(pbody)); - - if (!TTEST2(*p, IEEE802_11_REASON_LEN)) - return 0; - pbody.reason_code = EXTRACT_LE_16BITS(p); - - printf(": %s", - (pbody.reason_code < NUM_REASONS) - ? reason_text[pbody.reason_code] - : "Reserved" ); - - return 1; -} - -static int -handle_auth(const u_char *p) -{ - struct mgmt_body_t pbody; - int offset = 0; - - memset(&pbody, 0, sizeof(pbody)); - - if (!TTEST2(*p, 6)) - return 0; - pbody.auth_alg = EXTRACT_LE_16BITS(p); - offset += 2; - pbody.auth_trans_seq_num = EXTRACT_LE_16BITS(p + offset); - offset += 2; - pbody.status_code = EXTRACT_LE_16BITS(p + offset); - offset += 2; - - if (!parse_elements(&pbody, p, offset)) - return 0; - - if ((pbody.auth_alg == 1) && - ((pbody.auth_trans_seq_num == 2) || - (pbody.auth_trans_seq_num == 3))) { - printf(" (%s)-%x [Challenge Text] %s", - (pbody.auth_alg < NUM_AUTH_ALGS) - ? auth_alg_text[pbody.auth_alg] - : "Reserved", - pbody.auth_trans_seq_num, - ((pbody.auth_trans_seq_num % 2) - ? ((pbody.status_code < NUM_STATUSES) - ? status_text[pbody.status_code] - : "n/a") : "")); - return 1; - } - printf(" (%s)-%x: %s", - (pbody.auth_alg < NUM_AUTH_ALGS) - ? auth_alg_text[pbody.auth_alg] - : "Reserved", - pbody.auth_trans_seq_num, - (pbody.auth_trans_seq_num % 2) - ? ((pbody.status_code < NUM_STATUSES) - ? status_text[pbody.status_code] - : "n/a") - : ""); - - return 1; -} - -static int -handle_deauth(const struct mgmt_header_t *pmh, const u_char *p) -{ - struct mgmt_body_t pbody; - int offset = 0; - const char *reason = NULL; - - memset(&pbody, 0, sizeof(pbody)); - - if (!TTEST2(*p, IEEE802_11_REASON_LEN)) - return 0; - pbody.reason_code = EXTRACT_LE_16BITS(p); - offset += IEEE802_11_REASON_LEN; - - reason = (pbody.reason_code < NUM_REASONS) - ? reason_text[pbody.reason_code] - : "Reserved"; - - if (eflag) { - printf(": %s", reason); - } else { - printf(" (%s): %s", etheraddr_string(pmh->sa), reason); - } - return 1; -} - - -/********************************************************************************* - * Print Body funcs - *********************************************************************************/ - - -static int -mgmt_body_print(u_int16_t fc, const struct mgmt_header_t *pmh, - const u_char *p) -{ - switch (FC_SUBTYPE(fc)) { - case ST_ASSOC_REQUEST: - printf("Assoc Request"); - return handle_assoc_request(p); - case ST_ASSOC_RESPONSE: - printf("Assoc Response"); - return handle_assoc_response(p); - case ST_REASSOC_REQUEST: - printf("ReAssoc Request"); - return handle_reassoc_request(p); - case ST_REASSOC_RESPONSE: - printf("ReAssoc Response"); - return handle_reassoc_response(p); - case ST_PROBE_REQUEST: - printf("Probe Request"); - return handle_probe_request(p); - case ST_PROBE_RESPONSE: - printf("Probe Response"); - return handle_probe_response(p); - case ST_BEACON: - printf("Beacon"); - return handle_beacon(p); - case ST_ATIM: - printf("ATIM"); - return handle_atim(); - case ST_DISASSOC: - printf("Disassociation"); - return handle_disassoc(p); - case ST_AUTH: - printf("Authentication"); - if (!TTEST2(*p, 3)) - return 0; - if ((p[0] == 0 ) && (p[1] == 0) && (p[2] == 0)) { - printf("Authentication (Shared-Key)-3 "); - return wep_print(p); - } - return handle_auth(p); - case ST_DEAUTH: - printf("DeAuthentication"); - return handle_deauth(pmh, p); - break; - default: - printf("Unhandled Management subtype(%x)", - FC_SUBTYPE(fc)); - return 1; - } -} - - -/********************************************************************************* - * Handles printing all the control frame types - *********************************************************************************/ - -static int -ctrl_body_print(u_int16_t fc, const u_char *p) -{ - switch (FC_SUBTYPE(fc)) { - case CTRL_PS_POLL: - printf("Power Save-Poll"); - if (!TTEST2(*p, CTRL_PS_POLL_HDRLEN)) - return 0; - printf(" AID(%x)", - EXTRACT_LE_16BITS(&(((const struct ctrl_ps_poll_t *)p)->aid))); - break; - case CTRL_RTS: - printf("Request-To-Send"); - if (!TTEST2(*p, CTRL_RTS_HDRLEN)) - return 0; - if (!eflag) - printf(" TA:%s ", - etheraddr_string(((const struct ctrl_rts_t *)p)->ta)); - break; - case CTRL_CTS: - printf("Clear-To-Send"); - if (!TTEST2(*p, CTRL_CTS_HDRLEN)) - return 0; - if (!eflag) - printf(" RA:%s ", - etheraddr_string(((const struct ctrl_cts_t *)p)->ra)); - break; - case CTRL_ACK: - printf("Acknowledgment"); - if (!TTEST2(*p, CTRL_ACK_HDRLEN)) - return 0; - if (!eflag) - printf(" RA:%s ", - etheraddr_string(((const struct ctrl_ack_t *)p)->ra)); - break; - case CTRL_CF_END: - printf("CF-End"); - if (!TTEST2(*p, CTRL_END_HDRLEN)) - return 0; - if (!eflag) - printf(" RA:%s ", - etheraddr_string(((const struct ctrl_end_t *)p)->ra)); - break; - case CTRL_END_ACK: - printf("CF-End+CF-Ack"); - if (!TTEST2(*p, CTRL_END_ACK_HDRLEN)) - return 0; - if (!eflag) - printf(" RA:%s ", - etheraddr_string(((const struct ctrl_end_ack_t *)p)->ra)); - break; - default: - printf("Unknown Ctrl Subtype"); - } - return 1; -} - -/* - * Print Header funcs - */ - -/* - * Data Frame - Address field contents - * - * To Ds | From DS | Addr 1 | Addr 2 | Addr 3 | Addr 4 - * 0 | 0 | DA | SA | BSSID | n/a - * 0 | 1 | DA | BSSID | SA | n/a - * 1 | 0 | BSSID | SA | DA | n/a - * 1 | 1 | RA | TA | DA | SA - */ - -static void -data_header_print(u_int16_t fc, const u_char *p, const u_int8_t **srcp, - const u_int8_t **dstp) -{ - switch (FC_SUBTYPE(fc)) { - case DATA_DATA: - case DATA_NODATA: - break; - case DATA_DATA_CF_ACK: - case DATA_NODATA_CF_ACK: - printf("CF Ack "); - break; - case DATA_DATA_CF_POLL: - case DATA_NODATA_CF_POLL: - printf("CF Poll "); - break; - case DATA_DATA_CF_ACK_POLL: - case DATA_NODATA_CF_ACK_POLL: - printf("CF Ack/Poll "); - break; - } - -#define ADDR1 (p + 4) -#define ADDR2 (p + 10) -#define ADDR3 (p + 16) -#define ADDR4 (p + 24) - - if (!FC_TO_DS(fc) && !FC_FROM_DS(fc)) { - if (srcp != NULL) - *srcp = ADDR2; - if (dstp != NULL) - *dstp = ADDR1; - if (!eflag) - return; - printf("DA:%s SA:%s BSSID:%s ", - etheraddr_string(ADDR1), etheraddr_string(ADDR2), - etheraddr_string(ADDR3)); - } else if (!FC_TO_DS(fc) && FC_FROM_DS(fc)) { - if (srcp != NULL) - *srcp = ADDR3; - if (dstp != NULL) - *dstp = ADDR1; - if (!eflag) - return; - printf("DA:%s BSSID:%s SA:%s ", - etheraddr_string(ADDR1), etheraddr_string(ADDR2), - etheraddr_string(ADDR3)); - } else if (FC_TO_DS(fc) && !FC_FROM_DS(fc)) { - if (srcp != NULL) - *srcp = ADDR2; - if (dstp != NULL) - *dstp = ADDR3; - if (!eflag) - return; - printf("BSSID:%s SA:%s DA:%s ", - etheraddr_string(ADDR1), etheraddr_string(ADDR2), - etheraddr_string(ADDR3)); - } else if (FC_TO_DS(fc) && FC_FROM_DS(fc)) { - if (srcp != NULL) - *srcp = ADDR4; - if (dstp != NULL) - *dstp = ADDR3; - if (!eflag) - return; - printf("RA:%s TA:%s DA:%s SA:%s ", - etheraddr_string(ADDR1), etheraddr_string(ADDR2), - etheraddr_string(ADDR3), etheraddr_string(ADDR4)); - } - -#undef ADDR1 -#undef ADDR2 -#undef ADDR3 -#undef ADDR4 -} - -static void -mgmt_header_print(const u_char *p, const u_int8_t **srcp, - const u_int8_t **dstp) -{ - const struct mgmt_header_t *hp = (const struct mgmt_header_t *) p; - - if (srcp != NULL) - *srcp = hp->sa; - if (dstp != NULL) - *dstp = hp->da; - if (!eflag) - return; - - printf("BSSID:%s DA:%s SA:%s ", - etheraddr_string((hp)->bssid), etheraddr_string((hp)->da), - etheraddr_string((hp)->sa)); -} - -static void -ctrl_header_print(u_int16_t fc, const u_char *p, const u_int8_t **srcp, - const u_int8_t **dstp) -{ - if (srcp != NULL) - *srcp = NULL; - if (dstp != NULL) - *dstp = NULL; - if (!eflag) - return; - - switch (FC_SUBTYPE(fc)) { - case CTRL_PS_POLL: - printf("BSSID:%s TA:%s ", - etheraddr_string(((const struct ctrl_ps_poll_t *)p)->bssid), - etheraddr_string(((const struct ctrl_ps_poll_t *)p)->ta)); - break; - case CTRL_RTS: - printf("RA:%s TA:%s ", - etheraddr_string(((const struct ctrl_rts_t *)p)->ra), - etheraddr_string(((const struct ctrl_rts_t *)p)->ta)); - break; - case CTRL_CTS: - printf("RA:%s ", - etheraddr_string(((const struct ctrl_cts_t *)p)->ra)); - break; - case CTRL_ACK: - printf("RA:%s ", - etheraddr_string(((const struct ctrl_ack_t *)p)->ra)); - break; - case CTRL_CF_END: - printf("RA:%s BSSID:%s ", - etheraddr_string(((const struct ctrl_end_t *)p)->ra), - etheraddr_string(((const struct ctrl_end_t *)p)->bssid)); - break; - case CTRL_END_ACK: - printf("RA:%s BSSID:%s ", - etheraddr_string(((const struct ctrl_end_ack_t *)p)->ra), - etheraddr_string(((const struct ctrl_end_ack_t *)p)->bssid)); - break; - default: - printf("(H) Unknown Ctrl Subtype"); - break; - } -} - -static int -extract_header_length(u_int16_t fc) -{ - switch (FC_TYPE(fc)) { - case T_MGMT: - return MGMT_HDRLEN; - case T_CTRL: - switch (FC_SUBTYPE(fc)) { - case CTRL_PS_POLL: - return CTRL_PS_POLL_HDRLEN; - case CTRL_RTS: - return CTRL_RTS_HDRLEN; - case CTRL_CTS: - return CTRL_CTS_HDRLEN; - case CTRL_ACK: - return CTRL_ACK_HDRLEN; - case CTRL_CF_END: - return CTRL_END_HDRLEN; - case CTRL_END_ACK: - return CTRL_END_ACK_HDRLEN; - default: - return 0; - } - case T_DATA: - return (FC_TO_DS(fc) && FC_FROM_DS(fc)) ? 30 : 24; - default: - printf("unknown IEEE802.11 frame type (%d)", FC_TYPE(fc)); - return 0; - } -} - -/* - * Print the 802.11 MAC header if eflag is set, and set "*srcp" and "*dstp" - * to point to the source and destination MAC addresses in any case if - * "srcp" and "dstp" aren't null. - */ -static inline void -ieee_802_11_hdr_print(u_int16_t fc, const u_char *p, const u_int8_t **srcp, - const u_int8_t **dstp) -{ - if (vflag) { - if (FC_MORE_DATA(fc)) - printf("More Data "); - if (FC_MORE_FLAG(fc)) - printf("More Fragments "); - if (FC_POWER_MGMT(fc)) - printf("Pwr Mgmt "); - if (FC_RETRY(fc)) - printf("Retry "); - if (FC_ORDER(fc)) - printf("Strictly Ordered "); - if (FC_WEP(fc)) - printf("WEP Encrypted "); - if (FC_TYPE(fc) != T_CTRL || FC_SUBTYPE(fc) != CTRL_PS_POLL) - printf("%dus ", - EXTRACT_LE_16BITS( - &((const struct mgmt_header_t *)p)->duration)); - } - - switch (FC_TYPE(fc)) { - case T_MGMT: - mgmt_header_print(p, srcp, dstp); - break; - case T_CTRL: - ctrl_header_print(fc, p, srcp, dstp); - break; - case T_DATA: - data_header_print(fc, p, srcp, dstp); - break; - default: - printf("(header) unknown IEEE802.11 frame type (%d)", - FC_TYPE(fc)); - *srcp = NULL; - *dstp = NULL; - break; - } -} - -static u_int -ieee802_11_print(const u_char *p, u_int length, u_int caplen) -{ - u_int16_t fc; - u_int hdrlen; - const u_int8_t *src, *dst; - u_short extracted_ethertype; - - if (caplen < IEEE802_11_FC_LEN) { - printf("[|802.11]"); - return caplen; - } - - fc = EXTRACT_LE_16BITS(p); - hdrlen = extract_header_length(fc); - - if (caplen < hdrlen) { - printf("[|802.11]"); - return hdrlen; - } - - ieee_802_11_hdr_print(fc, p, &src, &dst); - - /* - * Go past the 802.11 header. - */ - length -= hdrlen; - caplen -= hdrlen; - p += hdrlen; - - switch (FC_TYPE(fc)) { - case T_MGMT: - if (!mgmt_body_print(fc, - (const struct mgmt_header_t *)(p - hdrlen), p)) { - printf("[|802.11]"); - return hdrlen; - } - break; - case T_CTRL: - if (!ctrl_body_print(fc, p - hdrlen)) { - printf("[|802.11]"); - return hdrlen; - } - break; - case T_DATA: - /* There may be a problem w/ AP not having this bit set */ - if (FC_WEP(fc)) { - if (!wep_print(p)) { - printf("[|802.11]"); - return hdrlen; - } - } else if (llc_print(p, length, caplen, dst, src, - &extracted_ethertype) == 0) { - /* - * Some kinds of LLC packet we cannot - * handle intelligently - */ - if (!eflag) - ieee_802_11_hdr_print(fc, p - hdrlen, NULL, - NULL); - if (extracted_ethertype) - printf("(LLC %s) ", - etherproto_string( - htons(extracted_ethertype))); - if (!suppress_default_print) - default_print(p, caplen); - } - break; - default: - printf("unknown 802.11 frame type (%d)", FC_TYPE(fc)); - break; - } - - return hdrlen; -} - -/* - * This is the top level routine of the printer. 'p' points - * to the 802.11 header of the packet, 'h->ts' is the timestamp, - * 'h->len' is the length of the packet off the wire, and 'h->caplen' - * is the number of bytes actually captured. - */ -u_int -ieee802_11_if_print(const struct pcap_pkthdr *h, const u_char *p) -{ - return ieee802_11_print(p, h->len, h->caplen); -} - -static int -print_radiotap_field(struct cpack_state *s, u_int32_t bit) -{ - union { - int8_t i8; - u_int8_t u8; - int16_t i16; - u_int16_t u16; - u_int32_t u32; - u_int64_t u64; - } u, u2; - int rc; - - switch (bit) { - case IEEE80211_RADIOTAP_FLAGS: - case IEEE80211_RADIOTAP_RATE: - case IEEE80211_RADIOTAP_DB_ANTSIGNAL: - case IEEE80211_RADIOTAP_DB_ANTNOISE: - case IEEE80211_RADIOTAP_ANTENNA: - rc = cpack_uint8(s, &u.u8); - break; - case IEEE80211_RADIOTAP_DBM_ANTSIGNAL: - case IEEE80211_RADIOTAP_DBM_ANTNOISE: - rc = cpack_int8(s, &u.i8); - break; - case IEEE80211_RADIOTAP_CHANNEL: - rc = cpack_uint16(s, &u.u16); - if (rc != 0) - break; - rc = cpack_uint16(s, &u2.u16); - break; - case IEEE80211_RADIOTAP_FHSS: - case IEEE80211_RADIOTAP_LOCK_QUALITY: - case IEEE80211_RADIOTAP_TX_ATTENUATION: - rc = cpack_uint16(s, &u.u16); - break; - case IEEE80211_RADIOTAP_DB_TX_ATTENUATION: - rc = cpack_uint8(s, &u.u8); - break; - case IEEE80211_RADIOTAP_DBM_TX_POWER: - rc = cpack_int8(s, &u.i8); - break; - case IEEE80211_RADIOTAP_TSFT: - rc = cpack_uint64(s, &u.u64); - break; - default: - /* this bit indicates a field whose - * size we do not know, so we cannot - * proceed. - */ - printf("[0x%08x] ", bit); - return -1; - } - - if (rc != 0) { - printf("[|802.11]"); - return rc; - } - - switch (bit) { - case IEEE80211_RADIOTAP_CHANNEL: - printf("%u MHz ", u.u16); - if (u2.u16 != 0) - printf("(0x%04x) ", u2.u16); - break; - case IEEE80211_RADIOTAP_FHSS: - printf("fhset %d fhpat %d ", u.u16 & 0xff, (u.u16 >> 8) & 0xff); - break; - case IEEE80211_RADIOTAP_RATE: - PRINT_RATE("", u.u8, " Mb/s "); - break; - case IEEE80211_RADIOTAP_DBM_ANTSIGNAL: - printf("%ddB signal ", u.i8); - break; - case IEEE80211_RADIOTAP_DBM_ANTNOISE: - printf("%ddB noise ", u.i8); - break; - case IEEE80211_RADIOTAP_DB_ANTSIGNAL: - printf("%ddB signal ", u.u8); - break; - case IEEE80211_RADIOTAP_DB_ANTNOISE: - printf("%ddB noise ", u.u8); - break; - case IEEE80211_RADIOTAP_LOCK_QUALITY: - printf("%u sq ", u.u16); - break; - case IEEE80211_RADIOTAP_TX_ATTENUATION: - printf("%d tx power ", -(int)u.u16); - break; - case IEEE80211_RADIOTAP_DB_TX_ATTENUATION: - printf("%ddB tx power ", -(int)u.u8); - break; - case IEEE80211_RADIOTAP_DBM_TX_POWER: - printf("%ddBm tx power ", u.i8); - break; - case IEEE80211_RADIOTAP_FLAGS: - if (u.u8 & IEEE80211_RADIOTAP_F_CFP) - printf("cfp "); - if (u.u8 & IEEE80211_RADIOTAP_F_SHORTPRE) - printf("short preamble "); - if (u.u8 & IEEE80211_RADIOTAP_F_WEP) - printf("wep "); - if (u.u8 & IEEE80211_RADIOTAP_F_FRAG) - printf("fragmented "); - break; - case IEEE80211_RADIOTAP_ANTENNA: - printf("antenna %d ", u.u8); - break; - case IEEE80211_RADIOTAP_TSFT: - printf("%" PRIu64 "us tsft ", u.u64); - break; - } - return 0; -} - -static u_int -ieee802_11_radio_print(const u_char *p, u_int length, u_int caplen) -{ -#define BITNO_32(x) (((x) >> 16) ? 16 + BITNO_16((x) >> 16) : BITNO_16((x))) -#define BITNO_16(x) (((x) >> 8) ? 8 + BITNO_8((x) >> 8) : BITNO_8((x))) -#define BITNO_8(x) (((x) >> 4) ? 4 + BITNO_4((x) >> 4) : BITNO_4((x))) -#define BITNO_4(x) (((x) >> 2) ? 2 + BITNO_2((x) >> 2) : BITNO_2((x))) -#define BITNO_2(x) (((x) & 2) ? 1 : 0) -#define BIT(n) (1 << n) -#define IS_EXTENDED(__p) \ - (EXTRACT_LE_32BITS(__p) & BIT(IEEE80211_RADIOTAP_EXT)) != 0 - - struct cpack_state cpacker; - struct ieee80211_radiotap_header *hdr; - u_int32_t present, next_present; - u_int32_t *presentp, *last_presentp; - enum ieee80211_radiotap_type bit; - int bit0; - const u_char *iter; - u_int len; - - if (caplen < sizeof(*hdr)) { - printf("[|802.11]"); - return caplen; - } - - hdr = (struct ieee80211_radiotap_header *)p; - - len = EXTRACT_LE_16BITS(&hdr->it_len); - - if (caplen < len) { - printf("[|802.11]"); - return caplen; - } - for (last_presentp = &hdr->it_present; - IS_EXTENDED(last_presentp) && - (u_char*)(last_presentp + 1) <= p + len; - last_presentp++); - - /* are there more bitmap extensions than bytes in header? */ - if (IS_EXTENDED(last_presentp)) { - printf("[|802.11]"); - return caplen; - } - - iter = (u_char*)(last_presentp + 1); - - if (cpack_init(&cpacker, (u_int8_t*)iter, len - (iter - p)) != 0) { - /* XXX */ - printf("[|802.11]"); - return caplen; - } - - for (bit0 = 0, presentp = &hdr->it_present; presentp <= last_presentp; - presentp++, bit0 += 32) { - for (present = EXTRACT_LE_32BITS(presentp); present; - present = next_present) { - /* clear the least significant bit that is set */ - next_present = present & (present - 1); - - /* extract the least significant bit that is set */ - bit = (enum ieee80211_radiotap_type) - (bit0 + BITNO_32(present ^ next_present)); - - if (print_radiotap_field(&cpacker, bit) != 0) - goto out; - } - } -out: - return len + ieee802_11_print(p + len, length - len, caplen - len); -#undef BITNO_32 -#undef BITNO_16 -#undef BITNO_8 -#undef BITNO_4 -#undef BITNO_2 -#undef BIT -} - -static u_int -ieee802_11_avs_radio_print(const u_char *p, u_int length, u_int caplen) -{ - u_int32_t caphdr_len; - - caphdr_len = EXTRACT_32BITS(p + 4); - if (caphdr_len < 8) { - /* - * Yow! The capture header length is claimed not - * to be large enough to include even the version - * cookie or capture header length! - */ - printf("[|802.11]"); - return caplen; - } - - if (caplen < caphdr_len) { - printf("[|802.11]"); - return caplen; - } - - return caphdr_len + ieee802_11_print(p + caphdr_len, - length - caphdr_len, caplen - caphdr_len); -} - -#define PRISM_HDR_LEN 144 - -#define WLANCAP_MAGIC_COOKIE_V1 0x80211001 - -/* - * For DLT_PRISM_HEADER; like DLT_IEEE802_11, but with an extra header, - * containing information such as radio information, which we - * currently ignore. - * - * If, however, the packet begins with WLANCAP_MAGIC_COOKIE_V1, it's - * really DLT_IEEE802_11_RADIO (currently, on Linux, there's no - * ARPHRD_ type for DLT_IEEE802_11_RADIO, as there is a - * ARPHRD_IEEE80211_PRISM for DLT_PRISM_HEADER, so - * ARPHRD_IEEE80211_PRISM is used for DLT_IEEE802_11_RADIO, and - * the first 4 bytes of the header are used to indicate which it is). - */ -u_int -prism_if_print(const struct pcap_pkthdr *h, const u_char *p) -{ - u_int caplen = h->caplen; - u_int length = h->len; - - if (caplen < 4) { - printf("[|802.11]"); - return caplen; - } - - if (EXTRACT_32BITS(p) == WLANCAP_MAGIC_COOKIE_V1) - return ieee802_11_avs_radio_print(p, length, caplen); - - if (caplen < PRISM_HDR_LEN) { - printf("[|802.11]"); - return caplen; - } - - return PRISM_HDR_LEN + ieee802_11_print(p + PRISM_HDR_LEN, - length - PRISM_HDR_LEN, caplen - PRISM_HDR_LEN); -} - -/* - * For DLT_IEEE802_11_RADIO; like DLT_IEEE802_11, but with an extra - * header, containing information such as radio information, which we - * currently ignore. - */ -u_int -ieee802_11_radio_if_print(const struct pcap_pkthdr *h, const u_char *p) -{ - u_int caplen = h->caplen; - u_int length = h->len; - - if (caplen < 8) { - printf("[|802.11]"); - return caplen; - } - - return ieee802_11_radio_print(p, length, caplen); -} diff --git a/contrib/tcpdump/print-ah.c b/contrib/tcpdump/print-ah.c deleted file mode 100644 index 92ed9094d72de..0000000000000 --- a/contrib/tcpdump/print-ah.c +++ /dev/null @@ -1,71 +0,0 @@ -/* $NetBSD: print-ah.c,v 1.4 1996/05/20 00:41:16 fvdl Exp $ */ - -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-ah.c,v 1.22 2003/11/19 00:36:06 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> - -#include "ah.h" - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -int -ah_print(register const u_char *bp) -{ - register const struct ah *ah; - register const u_char *ep; - int sumlen; - u_int32_t spi; - - ah = (const struct ah *)bp; - ep = snapend; /* 'ep' points to the end of available data. */ - - TCHECK(*ah); - - sumlen = ah->ah_len << 2; - spi = EXTRACT_32BITS(&ah->ah_spi); - - printf("AH(spi=0x%08x", spi); - if (vflag) - printf(",sumlen=%d", sumlen); - printf(",seq=0x%x", EXTRACT_32BITS(ah + 1)); - if (bp + sizeof(struct ah) + sumlen > ep) - fputs("[truncated]", stdout); - fputs("): ", stdout); - - return sizeof(struct ah) + sumlen; - trunc: - fputs("[|AH]", stdout); - return -1; -} diff --git a/contrib/tcpdump/print-aodv.c b/contrib/tcpdump/print-aodv.c deleted file mode 100644 index 80a547dd305fd..0000000000000 --- a/contrib/tcpdump/print-aodv.c +++ /dev/null @@ -1,455 +0,0 @@ -/* - * Copyright (c) 2003 Bruce M. Simpson <bms@spc.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Bruce M. Simpson. - * 4. Neither the name of Bruce M. Simpson nor the names of co- - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY Bruce M. Simpson AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Bruce M. Simpson OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-aodv.c,v 1.11 2004/03/24 00:30:19 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stddef.h> -#include <stdio.h> -#include <ctype.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" /* must come after interface.h */ - -#include "aodv.h" - -static void -aodv_extension(const struct aodv_ext *ep, u_int length) -{ - u_int i; - const struct aodv_hello *ah; - - switch (ep->type) { - case AODV_EXT_HELLO: - if (snapend < (u_char *) ep) { - printf(" [|hello]"); - return; - } - i = min(length, (u_int)(snapend - (u_char *)ep)); - if (i < sizeof(struct aodv_hello)) { - printf(" [|hello]"); - return; - } - i -= sizeof(struct aodv_hello); - ah = (void *)ep; - printf("\n\text HELLO %ld ms", - (unsigned long)EXTRACT_32BITS(&ah->interval)); - break; - - default: - printf("\n\text %u %u", ep->type, ep->length); - break; - } -} - -static void -aodv_rreq(const union aodv *ap, const u_char *dat, u_int length) -{ - u_int i; - - if (snapend < dat) { - printf(" [|aodv]"); - return; - } - i = min(length, (u_int)(snapend - dat)); - if (i < sizeof(ap->rreq)) { - printf(" [|rreq]"); - return; - } - i -= sizeof(ap->rreq); - printf(" rreq %u %s%s%s%s%shops %u id 0x%08lx\n" - "\tdst %s seq %lu src %s seq %lu", length, - ap->rreq.rreq_type & RREQ_JOIN ? "[J]" : "", - ap->rreq.rreq_type & RREQ_REPAIR ? "[R]" : "", - ap->rreq.rreq_type & RREQ_GRAT ? "[G]" : "", - ap->rreq.rreq_type & RREQ_DEST ? "[D]" : "", - ap->rreq.rreq_type & RREQ_UNKNOWN ? "[U] " : " ", - ap->rreq.rreq_hops, - (unsigned long)EXTRACT_32BITS(&ap->rreq.rreq_id), - ipaddr_string(&ap->rreq.rreq_da), - (unsigned long)EXTRACT_32BITS(&ap->rreq.rreq_ds), - ipaddr_string(&ap->rreq.rreq_oa), - (unsigned long)EXTRACT_32BITS(&ap->rreq.rreq_os)); - if (i >= sizeof(struct aodv_ext)) - aodv_extension((void *)(&ap->rreq + 1), i); -} - -static void -aodv_rrep(const union aodv *ap, const u_char *dat, u_int length) -{ - u_int i; - - if (snapend < dat) { - printf(" [|aodv]"); - return; - } - i = min(length, (u_int)(snapend - dat)); - if (i < sizeof(ap->rrep)) { - printf(" [|rrep]"); - return; - } - i -= sizeof(ap->rrep); - printf(" rrep %u %s%sprefix %u hops %u\n" - "\tdst %s dseq %lu src %s %lu ms", length, - ap->rrep.rrep_type & RREP_REPAIR ? "[R]" : "", - ap->rrep.rrep_type & RREP_ACK ? "[A] " : " ", - ap->rrep.rrep_ps & RREP_PREFIX_MASK, - ap->rrep.rrep_hops, - ipaddr_string(&ap->rrep.rrep_da), - (unsigned long)EXTRACT_32BITS(&ap->rrep.rrep_ds), - ipaddr_string(&ap->rrep.rrep_oa), - (unsigned long)EXTRACT_32BITS(&ap->rrep.rrep_life)); - if (i >= sizeof(struct aodv_ext)) - aodv_extension((void *)(&ap->rrep + 1), i); -} - -static void -aodv_rerr(const union aodv *ap, const u_char *dat, u_int length) -{ - u_int i; - const struct rerr_unreach *dp = NULL; - int n, trunc; - - if (snapend < dat) { - printf(" [|aodv]"); - return; - } - i = min(length, (u_int)(snapend - dat)); - if (i < offsetof(struct aodv_rerr, r)) { - printf(" [|rerr]"); - return; - } - i -= offsetof(struct aodv_rerr, r); - dp = &ap->rerr.r.dest[0]; - n = ap->rerr.rerr_dc * sizeof(ap->rerr.r.dest[0]); - printf(" rerr %s [items %u] [%u]:", - ap->rerr.rerr_flags & RERR_NODELETE ? "[D]" : "", - ap->rerr.rerr_dc, length); - trunc = n - (i/sizeof(ap->rerr.r.dest[0])); - for (; i >= sizeof(ap->rerr.r.dest[0]); - ++dp, i -= sizeof(ap->rerr.r.dest[0])) { - printf(" {%s}(%ld)", ipaddr_string(&dp->u_da), - (unsigned long)EXTRACT_32BITS(&dp->u_ds)); - } - if (trunc) - printf("[|rerr]"); -} - -static void -#ifdef INET6 -aodv_v6_rreq(const union aodv *ap, const u_char *dat, u_int length) -#else -aodv_v6_rreq(const union aodv *ap _U_, const u_char *dat _U_, u_int length) -#endif -{ -#ifdef INET6 - u_int i; - - if (snapend < dat) { - printf(" [|aodv]"); - return; - } - i = min(length, (u_int)(snapend - dat)); - if (i < sizeof(ap->rreq6)) { - printf(" [|rreq6]"); - return; - } - i -= sizeof(ap->rreq6); - printf(" v6 rreq %u %s%s%s%s%shops %u id 0x%08lx\n" - "\tdst %s seq %lu src %s seq %lu", length, - ap->rreq6.rreq_type & RREQ_JOIN ? "[J]" : "", - ap->rreq6.rreq_type & RREQ_REPAIR ? "[R]" : "", - ap->rreq6.rreq_type & RREQ_GRAT ? "[G]" : "", - ap->rreq6.rreq_type & RREQ_DEST ? "[D]" : "", - ap->rreq6.rreq_type & RREQ_UNKNOWN ? "[U] " : " ", - ap->rreq6.rreq_hops, - (unsigned long)EXTRACT_32BITS(&ap->rreq6.rreq_id), - ip6addr_string(&ap->rreq6.rreq_da), - (unsigned long)EXTRACT_32BITS(&ap->rreq6.rreq_ds), - ip6addr_string(&ap->rreq6.rreq_oa), - (unsigned long)EXTRACT_32BITS(&ap->rreq6.rreq_os)); - if (i >= sizeof(struct aodv_ext)) - aodv_extension((void *)(&ap->rreq6 + 1), i); -#else - printf(" v6 rreq %u", length); -#endif -} - -static void -#ifdef INET6 -aodv_v6_rrep(const union aodv *ap, const u_char *dat, u_int length) -#else -aodv_v6_rrep(const union aodv *ap _U_, const u_char *dat _U_, u_int length) -#endif -{ -#ifdef INET6 - u_int i; - - if (snapend < dat) { - printf(" [|aodv]"); - return; - } - i = min(length, (u_int)(snapend - dat)); - if (i < sizeof(ap->rrep6)) { - printf(" [|rrep6]"); - return; - } - i -= sizeof(ap->rrep6); - printf(" rrep %u %s%sprefix %u hops %u\n" - "\tdst %s dseq %lu src %s %lu ms", length, - ap->rrep6.rrep_type & RREP_REPAIR ? "[R]" : "", - ap->rrep6.rrep_type & RREP_ACK ? "[A] " : " ", - ap->rrep6.rrep_ps & RREP_PREFIX_MASK, - ap->rrep6.rrep_hops, - ip6addr_string(&ap->rrep6.rrep_da), - (unsigned long)EXTRACT_32BITS(&ap->rrep6.rrep_ds), - ip6addr_string(&ap->rrep6.rrep_oa), - (unsigned long)EXTRACT_32BITS(&ap->rrep6.rrep_life)); - if (i >= sizeof(struct aodv_ext)) - aodv_extension((void *)(&ap->rrep6 + 1), i); -#else - printf(" rrep %u", length); -#endif -} - -static void -#ifdef INET6 -aodv_v6_rerr(const union aodv *ap, u_int length) -#else -aodv_v6_rerr(const union aodv *ap _U_, u_int length) -#endif -{ -#ifdef INET6 - const struct rerr_unreach6 *dp6 = NULL; - int i, j, n, trunc; - - i = length - offsetof(struct aodv_rerr, r); - j = sizeof(ap->rerr.r.dest6[0]); - dp6 = &ap->rerr.r.dest6[0]; - n = ap->rerr.rerr_dc * j; - printf(" rerr %s [items %u] [%u]:", - ap->rerr.rerr_flags & RERR_NODELETE ? "[D]" : "", - ap->rerr.rerr_dc, length); - trunc = n - (i/j); - for (; i -= j >= 0; ++dp6) { - printf(" {%s}(%ld)", ip6addr_string(&dp6->u_da), - (unsigned long)EXTRACT_32BITS(&dp6->u_ds)); - } - if (trunc) - printf("[|rerr]"); -#else - printf(" rerr %u", length); -#endif -} - -static void -#ifdef INET6 -aodv_v6_draft_01_rreq(const union aodv *ap, const u_char *dat, u_int length) -#else -aodv_v6_draft_01_rreq(const union aodv *ap _U_, const u_char *dat _U_, - u_int length) -#endif -{ -#ifdef INET6 - u_int i; - - if (snapend < dat) { - printf(" [|aodv]"); - return; - } - i = min(length, (u_int)(snapend - dat)); - if (i < sizeof(ap->rreq6_draft_01)) { - printf(" [|rreq6]"); - return; - } - i -= sizeof(ap->rreq6_draft_01); - printf(" rreq %u %s%s%s%s%shops %u id 0x%08lx\n" - "\tdst %s seq %lu src %s seq %lu", length, - ap->rreq6_draft_01.rreq_type & RREQ_JOIN ? "[J]" : "", - ap->rreq6_draft_01.rreq_type & RREQ_REPAIR ? "[R]" : "", - ap->rreq6_draft_01.rreq_type & RREQ_GRAT ? "[G]" : "", - ap->rreq6_draft_01.rreq_type & RREQ_DEST ? "[D]" : "", - ap->rreq6_draft_01.rreq_type & RREQ_UNKNOWN ? "[U] " : " ", - ap->rreq6_draft_01.rreq_hops, - (unsigned long)EXTRACT_32BITS(&ap->rreq6_draft_01.rreq_id), - ip6addr_string(&ap->rreq6_draft_01.rreq_da), - (unsigned long)EXTRACT_32BITS(&ap->rreq6_draft_01.rreq_ds), - ip6addr_string(&ap->rreq6_draft_01.rreq_oa), - (unsigned long)EXTRACT_32BITS(&ap->rreq6_draft_01.rreq_os)); - if (i >= sizeof(struct aodv_ext)) - aodv_extension((void *)(&ap->rreq6_draft_01 + 1), i); -#else - printf(" rreq %u", length); -#endif -} - -static void -#ifdef INET6 -aodv_v6_draft_01_rrep(const union aodv *ap, const u_char *dat, u_int length) -#else -aodv_v6_draft_01_rrep(const union aodv *ap _U_, const u_char *dat _U_, - u_int length) -#endif -{ -#ifdef INET6 - u_int i; - - if (snapend < dat) { - printf(" [|aodv]"); - return; - } - i = min(length, (u_int)(snapend - dat)); - if (i < sizeof(ap->rrep6_draft_01)) { - printf(" [|rrep6]"); - return; - } - i -= sizeof(ap->rrep6_draft_01); - printf(" rrep %u %s%sprefix %u hops %u\n" - "\tdst %s dseq %lu src %s %lu ms", length, - ap->rrep6_draft_01.rrep_type & RREP_REPAIR ? "[R]" : "", - ap->rrep6_draft_01.rrep_type & RREP_ACK ? "[A] " : " ", - ap->rrep6_draft_01.rrep_ps & RREP_PREFIX_MASK, - ap->rrep6_draft_01.rrep_hops, - ip6addr_string(&ap->rrep6_draft_01.rrep_da), - (unsigned long)EXTRACT_32BITS(&ap->rrep6_draft_01.rrep_ds), - ip6addr_string(&ap->rrep6_draft_01.rrep_oa), - (unsigned long)EXTRACT_32BITS(&ap->rrep6_draft_01.rrep_life)); - if (i >= sizeof(struct aodv_ext)) - aodv_extension((void *)(&ap->rrep6_draft_01 + 1), i); -#else - printf(" rrep %u", length); -#endif -} - -static void -#ifdef INET6 -aodv_v6_draft_01_rerr(const union aodv *ap, u_int length) -#else -aodv_v6_draft_01_rerr(const union aodv *ap _U_, u_int length) -#endif -{ -#ifdef INET6 - const struct rerr_unreach6_draft_01 *dp6 = NULL; - int i, j, n, trunc; - - i = length - offsetof(struct aodv_rerr, r); - j = sizeof(ap->rerr.r.dest6_draft_01[0]); - dp6 = &ap->rerr.r.dest6_draft_01[0]; - n = ap->rerr.rerr_dc * j; - printf(" rerr %s [items %u] [%u]:", - ap->rerr.rerr_flags & RERR_NODELETE ? "[D]" : "", - ap->rerr.rerr_dc, length); - trunc = n - (i/j); - for (; i -= j >= 0; ++dp6) { - printf(" {%s}(%ld)", ip6addr_string(&dp6->u_da), - (unsigned long)EXTRACT_32BITS(&dp6->u_ds)); - } - if (trunc) - printf("[|rerr]"); -#else - printf(" rerr %u", length); -#endif -} - -void -aodv_print(const u_char *dat, u_int length, int is_ip6) -{ - const union aodv *ap; - - ap = (union aodv *)dat; - if (snapend < dat) { - printf(" [|aodv]"); - return; - } - if (min(length, (u_int)(snapend - dat)) < sizeof(ap->rrep_ack)) { - printf(" [|aodv]"); - return; - } - printf(" aodv"); - - switch (ap->rerr.rerr_type) { - - case AODV_RREQ: - if (is_ip6) - aodv_v6_rreq(ap, dat, length); - else - aodv_rreq(ap, dat, length); - break; - - case AODV_RREP: - if (is_ip6) - aodv_v6_rrep(ap, dat, length); - else - aodv_rrep(ap, dat, length); - break; - - case AODV_RERR: - if (is_ip6) - aodv_v6_rerr(ap, length); - else - aodv_rerr(ap, dat, length); - break; - - case AODV_RREP_ACK: - printf(" rrep-ack %u", length); - break; - - case AODV_V6_DRAFT_01_RREQ: - aodv_v6_draft_01_rreq(ap, dat, length); - break; - - case AODV_V6_DRAFT_01_RREP: - aodv_v6_draft_01_rrep(ap, dat, length); - break; - - case AODV_V6_DRAFT_01_RERR: - aodv_v6_draft_01_rerr(ap, length); - break; - - case AODV_V6_DRAFT_01_RREP_ACK: - printf(" rrep-ack %u", length); - break; - - default: - printf(" %u %u", ap->rreq.rreq_type, length); - } -} diff --git a/contrib/tcpdump/print-ap1394.c b/contrib/tcpdump/print-ap1394.c deleted file mode 100644 index a01ce34cef65a..0000000000000 --- a/contrib/tcpdump/print-ap1394.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-ap1394.c,v 1.3.2.1 2005/07/07 01:24:33 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <pcap.h> - -#include "interface.h" -#include "addrtoname.h" -#include "ethertype.h" - -/* - * Structure of a header for Apple's IP-over-IEEE 1384 BPF header. - */ -#define FIREWIRE_EUI64_LEN 8 -struct firewire_header { - u_char firewire_dhost[FIREWIRE_EUI64_LEN]; - u_char firewire_shost[FIREWIRE_EUI64_LEN]; - u_short firewire_type; -}; - -/* - * Length of that header; note that some compilers may pad - * "struct firewire_header" to a multiple of 4 bytes, for example, so - * "sizeof (struct firewire_header)" may not give the right answer. - */ -#define FIREWIRE_HDRLEN 18 - -static inline void -ap1394_hdr_print(register const u_char *bp, u_int length) -{ - register const struct firewire_header *fp; - fp = (const struct firewire_header *)bp; - - (void)printf("%s > %s", - linkaddr_string(fp->firewire_dhost, FIREWIRE_EUI64_LEN), - linkaddr_string(fp->firewire_shost, FIREWIRE_EUI64_LEN)); - - if (!qflag) { - (void)printf(", ethertype %s (0x%04x)", - tok2str(ethertype_values,"Unknown", ntohs(fp->firewire_type)), - ntohs(fp->firewire_type)); - } else { - (void)printf(", %s", tok2str(ethertype_values,"Unknown Ethertype (0x%04x)", ntohs(fp->firewire_type))); - } - - (void)printf(", length %u: ", length); -} - -/* - * This is the top level routine of the printer. 'p' points - * to the ether header of the packet, 'h->ts' is the timestamp, - * 'h->len' is the length of the packet off the wire, and 'h->caplen' - * is the number of bytes actually captured. - */ -u_int -ap1394_if_print(const struct pcap_pkthdr *h, const u_char *p) -{ - u_int length = h->len; - u_int caplen = h->caplen; - struct firewire_header *fp; - u_short ether_type; - u_short extracted_ether_type; - - if (caplen < FIREWIRE_HDRLEN) { - printf("[|ap1394]"); - return FIREWIRE_HDRLEN; - } - - if (eflag) - ap1394_hdr_print(p, length); - - length -= FIREWIRE_HDRLEN; - caplen -= FIREWIRE_HDRLEN; - fp = (struct firewire_header *)p; - p += FIREWIRE_HDRLEN; - - ether_type = ntohs(fp->firewire_type); - - extracted_ether_type = 0; - if (ether_encap_print(ether_type, p, length, caplen, - &extracted_ether_type) == 0) { - /* ether_type not known, print raw packet */ - if (!eflag) - ap1394_hdr_print((u_char *)fp, length + FIREWIRE_HDRLEN); - - if (!suppress_default_print) - default_print(p, caplen); - } - - return FIREWIRE_HDRLEN; -} diff --git a/contrib/tcpdump/print-arcnet.c b/contrib/tcpdump/print-arcnet.c deleted file mode 100644 index 63f9c215d7ac9..0000000000000 --- a/contrib/tcpdump/print-arcnet.c +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * From: NetBSD: print-arcnet.c,v 1.2 2000/04/24 13:02:28 itojun Exp - */ -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-arcnet.c,v 1.20 2005/04/06 21:32:38 mcr Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <pcap.h> - -#include "interface.h" -#include "arcnet.h" - -static int arcnet_encap_print(u_char arctype, const u_char *p, - u_int length, u_int caplen); - -struct tok arctypemap[] = { - { ARCTYPE_IP_OLD, "oldip" }, - { ARCTYPE_ARP_OLD, "oldarp" }, - { ARCTYPE_IP, "ip" }, - { ARCTYPE_ARP, "arp" }, - { ARCTYPE_REVARP, "rarp" }, - { ARCTYPE_ATALK, "atalk" }, - { ARCTYPE_BANIAN, "banyan" }, - { ARCTYPE_IPX, "ipx" }, - { ARCTYPE_INET6, "ipv6" }, - { ARCTYPE_DIAGNOSE, "diag" }, - { 0, 0 } -}; - -static inline void -arcnet_print(const u_char *bp, u_int length, int phds, int flag, u_int seqid) -{ - const struct arc_header *ap; - const char *arctypename; - - - ap = (const struct arc_header *)bp; - - - if (qflag) { - (void)printf("%02x %02x %d: ", - ap->arc_shost, - ap->arc_dhost, - length); - return; - } - - arctypename = tok2str(arctypemap, "%02x", ap->arc_type); - - if (!phds) { - (void)printf("%02x %02x %s %d: ", - ap->arc_shost, ap->arc_dhost, arctypename, - length); - return; - } - - if (flag == 0) { - (void)printf("%02x %02x %s seqid %04x %d: ", - ap->arc_shost, ap->arc_dhost, arctypename, seqid, - length); - return; - } - - if (flag & 1) - (void)printf("%02x %02x %s seqid %04x " - "(first of %d fragments) %d: ", - ap->arc_shost, ap->arc_dhost, arctypename, seqid, - (flag + 3) / 2, length); - else - (void)printf("%02x %02x %s seqid %04x " - "(fragment %d) %d: ", - ap->arc_shost, ap->arc_dhost, arctypename, seqid, - flag/2 + 1, length); -} - -/* - * This is the top level routine of the printer. 'p' points - * to the ARCNET header of the packet, 'h->ts' is the timestamp, - * 'h->len' is the length of the packet off the wire, and 'h->caplen' - * is the number of bytes actually captured. - */ -u_int -arcnet_if_print(const struct pcap_pkthdr *h, const u_char *p) -{ - u_int caplen = h->caplen; - u_int length = h->len; - const struct arc_header *ap; - - int phds, flag = 0, archdrlen = 0; - u_int seqid = 0; - u_char arc_type; - - if (caplen < ARC_HDRLEN) { - printf("[|arcnet]"); - return (caplen); - } - - ap = (const struct arc_header *)p; - arc_type = ap->arc_type; - - switch (arc_type) { - default: - phds = 1; - break; - case ARCTYPE_IP_OLD: - case ARCTYPE_ARP_OLD: - case ARCTYPE_DIAGNOSE: - phds = 0; - archdrlen = ARC_HDRLEN; - break; - } - - if (phds) { - if (caplen < ARC_HDRNEWLEN) { - arcnet_print(p, length, 0, 0, 0); - printf("[|phds]"); - return (caplen); - } - - if (ap->arc_flag == 0xff) { - if (caplen < ARC_HDRNEWLEN_EXC) { - arcnet_print(p, length, 0, 0, 0); - printf("[|phds extended]"); - return (caplen); - } - flag = ap->arc_flag2; - seqid = ntohs(ap->arc_seqid2); - archdrlen = ARC_HDRNEWLEN_EXC; - } else { - flag = ap->arc_flag; - seqid = ntohs(ap->arc_seqid); - archdrlen = ARC_HDRNEWLEN; - } - } - - - if (eflag) - arcnet_print(p, length, phds, flag, seqid); - - /* - * Go past the ARCNET header. - */ - length -= archdrlen; - caplen -= archdrlen; - p += archdrlen; - - if (phds && flag && (flag & 1) == 0) { - /* - * This is a middle fragment. - */ - return (archdrlen); - } - - if (!arcnet_encap_print(arc_type, p, length, caplen)) - default_print(p, caplen); - - return (archdrlen); -} - -/* - * This is the top level routine of the printer. 'p' points - * to the ARCNET header of the packet, 'h->ts' is the timestamp, - * 'h->len' is the length of the packet off the wire, and 'h->caplen' - * is the number of bytes actually captured. It is quite similar - * to the non-Linux style printer except that Linux doesn't ever - * supply packets that look like exception frames, it always supplies - * reassembled packets rather than raw frames, and headers have an - * extra "offset" field between the src/dest and packet type. - */ -u_int -arcnet_linux_if_print(const struct pcap_pkthdr *h, const u_char *p) -{ - u_int caplen = h->caplen; - u_int length = h->len; - const struct arc_linux_header *ap; - - int archdrlen = 0; - u_char arc_type; - - if (caplen < ARC_LINUX_HDRLEN) { - printf("[|arcnet]"); - return (caplen); - } - - ap = (const struct arc_linux_header *)p; - arc_type = ap->arc_type; - - switch (arc_type) { - default: - archdrlen = ARC_LINUX_HDRNEWLEN; - if (caplen < ARC_LINUX_HDRNEWLEN) { - printf("[|arcnet]"); - return (caplen); - } - break; - case ARCTYPE_IP_OLD: - case ARCTYPE_ARP_OLD: - case ARCTYPE_DIAGNOSE: - archdrlen = ARC_LINUX_HDRLEN; - break; - } - - if (eflag) - arcnet_print(p, length, 0, 0, 0); - - /* - * Go past the ARCNET header. - */ - length -= archdrlen; - caplen -= archdrlen; - p += archdrlen; - - if (!arcnet_encap_print(arc_type, p, length, caplen)) - default_print(p, caplen); - - return (archdrlen); -} - -/* - * Prints the packet encapsulated in an ARCnet data field, - * given the ARCnet system code. - * - * Returns non-zero if it can do so, zero if the system code is unknown. - */ - - -static int -arcnet_encap_print(u_char arctype, const u_char *p, - u_int length, u_int caplen) -{ - switch (arctype) { - - case ARCTYPE_IP_OLD: - case ARCTYPE_IP: - ip_print(gndo, p, length); - return (1); - -#ifdef INET6 - case ARCTYPE_INET6: - ip6_print(p, length); - return (1); -#endif /*INET6*/ - - case ARCTYPE_ARP_OLD: - case ARCTYPE_ARP: - case ARCTYPE_REVARP: - arp_print(gndo, p, length, caplen); - return (1); - - case ARCTYPE_ATALK: /* XXX was this ever used? */ - if (vflag) - fputs("et1 ", stdout); - atalk_print(p, length); - return (1); - - case ARCTYPE_IPX: - ipx_print(p, length); - return (1); - - default: - return (0); - } -} - -/* - * Local Variables: - * c-style: bsd - * End: - */ - diff --git a/contrib/tcpdump/print-arp.c b/contrib/tcpdump/print-arp.c deleted file mode 100644 index 68e9dc6894c7e..0000000000000 --- a/contrib/tcpdump/print-arp.c +++ /dev/null @@ -1,341 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-arp.c,v 1.64 2004/04/30 16:42:14 mcr Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#include "netdissect.h" -#include "addrtoname.h" -#include "ether.h" -#include "ethertype.h" -#include "extract.h" /* must come after interface.h */ - -/* - * Address Resolution Protocol. - * - * See RFC 826 for protocol description. ARP packets are variable - * in size; the arphdr structure defines the fixed-length portion. - * Protocol type values are the same as those for 10 Mb/s Ethernet. - * It is followed by the variable-sized fields ar_sha, arp_spa, - * arp_tha and arp_tpa in that order, according to the lengths - * specified. Field names used correspond to RFC 826. - */ -struct arp_pkthdr { - u_short ar_hrd; /* format of hardware address */ -#define ARPHRD_ETHER 1 /* ethernet hardware format */ -#define ARPHRD_IEEE802 6 /* token-ring hardware format */ -#define ARPHRD_ARCNET 7 /* arcnet hardware format */ -#define ARPHRD_FRELAY 15 /* frame relay hardware format */ -#define ARPHRD_STRIP 23 /* Ricochet Starmode Radio hardware format */ -#define ARPHRD_IEEE1394 24 /* IEEE 1394 (FireWire) hardware format */ - u_short ar_pro; /* format of protocol address */ - u_char ar_hln; /* length of hardware address */ - u_char ar_pln; /* length of protocol address */ - u_short ar_op; /* one of: */ -#define ARPOP_REQUEST 1 /* request to resolve address */ -#define ARPOP_REPLY 2 /* response to previous request */ -#define ARPOP_REVREQUEST 3 /* request protocol address given hardware */ -#define ARPOP_REVREPLY 4 /* response giving protocol address */ -#define ARPOP_INVREQUEST 8 /* request to identify peer */ -#define ARPOP_INVREPLY 9 /* response identifying peer */ -/* - * The remaining fields are variable in size, - * according to the sizes above. - */ -#ifdef COMMENT_ONLY - u_char ar_sha[]; /* sender hardware address */ - u_char ar_spa[]; /* sender protocol address */ - u_char ar_tha[]; /* target hardware address */ - u_char ar_tpa[]; /* target protocol address */ -#endif -#define ar_sha(ap) (((const u_char *)((ap)+1))+0) -#define ar_spa(ap) (((const u_char *)((ap)+1))+ (ap)->ar_hln) -#define ar_tha(ap) (((const u_char *)((ap)+1))+ (ap)->ar_hln+(ap)->ar_pln) -#define ar_tpa(ap) (((const u_char *)((ap)+1))+2*(ap)->ar_hln+(ap)->ar_pln) -}; - -#define ARP_HDRLEN 8 - -#define HRD(ap) EXTRACT_16BITS(&(ap)->ar_hrd) -#define HLN(ap) ((ap)->ar_hln) -#define PLN(ap) ((ap)->ar_pln) -#define OP(ap) EXTRACT_16BITS(&(ap)->ar_op) -#define PRO(ap) EXTRACT_16BITS(&(ap)->ar_pro) -#define SHA(ap) (ar_sha(ap)) -#define SPA(ap) (ar_spa(ap)) -#define THA(ap) (ar_tha(ap)) -#define TPA(ap) (ar_tpa(ap)) - -/* - * ATM Address Resolution Protocol. - * - * See RFC 2225 for protocol description. ATMARP packets are similar - * to ARP packets, except that there are no length fields for the - * protocol address - instead, there are type/length fields for - * the ATM number and subaddress - and the hardware addresses consist - * of an ATM number and an ATM subaddress. - */ -struct atmarp_pkthdr { - u_short aar_hrd; /* format of hardware address */ -#define ARPHRD_ATM2225 19 /* ATM (RFC 2225) */ - u_short aar_pro; /* format of protocol address */ - u_char aar_shtl; /* length of source ATM number */ - u_char aar_sstl; /* length of source ATM subaddress */ -#define ATMARP_IS_E164 0x40 /* bit in type/length for E.164 format */ -#define ATMARP_LEN_MASK 0x3F /* length of {sub}address in type/length */ - u_short aar_op; /* same as regular ARP */ -#define ATMARPOP_NAK 10 /* NAK */ - u_char aar_spln; /* length of source protocol address */ - u_char aar_thtl; /* length of target ATM number */ - u_char aar_tstl; /* length of target ATM subaddress */ - u_char aar_tpln; /* length of target protocol address */ -/* - * The remaining fields are variable in size, - * according to the sizes above. - */ -#ifdef COMMENT_ONLY - u_char aar_sha[]; /* source ATM number */ - u_char aar_ssa[]; /* source ATM subaddress */ - u_char aar_spa[]; /* sender protocol address */ - u_char aar_tha[]; /* target ATM number */ - u_char aar_tsa[]; /* target ATM subaddress */ - u_char aar_tpa[]; /* target protocol address */ -#endif - -#define ATMHRD(ap) EXTRACT_16BITS(&(ap)->aar_hrd) -#define ATMSHLN(ap) ((ap)->aar_shtl & ATMARP_LEN_MASK) -#define ATMSSLN(ap) ((ap)->aar_sstl & ATMARP_LEN_MASK) -#define ATMSPLN(ap) ((ap)->aar_spln) -#define ATMOP(ap) EXTRACT_16BITS(&(ap)->aar_op) -#define ATMPRO(ap) EXTRACT_16BITS(&(ap)->aar_pro) -#define ATMTHLN(ap) ((ap)->aar_thtl & ATMARP_LEN_MASK) -#define ATMTSLN(ap) ((ap)->aar_tstl & ATMARP_LEN_MASK) -#define ATMTPLN(ap) ((ap)->aar_tpln) -#define aar_sha(ap) ((const u_char *)((ap)+1)) -#define aar_ssa(ap) (aar_sha(ap) + ATMSHLN(ap)) -#define aar_spa(ap) (aar_ssa(ap) + ATMSSLN(ap)) -#define aar_tha(ap) (aar_spa(ap) + ATMSPLN(ap)) -#define aar_tsa(ap) (aar_tha(ap) + ATMTHLN(ap)) -#define aar_tpa(ap) (aar_tsa(ap) + ATMTSLN(ap)) -}; - -#define ATMSHA(ap) (aar_sha(ap)) -#define ATMSSA(ap) (aar_ssa(ap)) -#define ATMSPA(ap) (aar_spa(ap)) -#define ATMTHA(ap) (aar_tha(ap)) -#define ATMTSA(ap) (aar_tsa(ap)) -#define ATMTPA(ap) (aar_tpa(ap)) - -static u_char ezero[6]; - -static void -atmarp_addr_print(netdissect_options *ndo, - const u_char *ha, u_int ha_len, const u_char *srca, - u_int srca_len) -{ - if (ha_len == 0) - ND_PRINT((ndo, "<No address>")); - else { - ND_PRINT((ndo, "%s", linkaddr_string(ha, ha_len))); - if (srca_len != 0) - ND_PRINT((ndo, ",%s", - linkaddr_string(srca, srca_len))); - } -} - -static void -atmarp_print(netdissect_options *ndo, - const u_char *bp, u_int length, u_int caplen) -{ - const struct atmarp_pkthdr *ap; - u_short pro, hrd, op; - - ap = (const struct atmarp_pkthdr *)bp; - ND_TCHECK(*ap); - - hrd = ATMHRD(ap); - pro = ATMPRO(ap); - op = ATMOP(ap); - - if (!ND_TTEST2(*aar_tpa(ap), ATMTPLN(ap))) { - ND_PRINT((ndo, "truncated-atmarp")); - ND_DEFAULTPRINT((const u_char *)ap, length); - return; - } - - if ((pro != ETHERTYPE_IP && pro != ETHERTYPE_TRAIL) || - ATMSPLN(ap) != 4 || ATMTPLN(ap) != 4) { - ND_PRINT((ndo, "atmarp-#%d for proto #%d (%d/%d) hardware #%d", - op, pro, ATMSPLN(ap), ATMTPLN(ap), hrd)); - return; - } - if (pro == ETHERTYPE_TRAIL) - ND_PRINT((ndo, "trailer-")); - switch (op) { - - case ARPOP_REQUEST: - ND_PRINT((ndo, "arp who-has %s", ipaddr_string(ATMTPA(ap)))); - if (ATMTHLN(ap) != 0) { - ND_PRINT((ndo, " (")); - atmarp_addr_print(ndo, ATMTHA(ap), ATMTHLN(ap), - ATMTSA(ap), ATMTSLN(ap)); - ND_PRINT((ndo, ")")); - } - ND_PRINT((ndo, " tell %s", ipaddr_string(ATMSPA(ap)))); - break; - - case ARPOP_REPLY: - ND_PRINT((ndo, "arp reply %s", ipaddr_string(ATMSPA(ap)))); - ND_PRINT((ndo, " is-at ")); - atmarp_addr_print(ndo, ATMSHA(ap), ATMSHLN(ap), ATMSSA(ap), - ATMSSLN(ap)); - break; - - case ARPOP_INVREQUEST: - ND_PRINT((ndo, "invarp who-is ")); - atmarp_addr_print(ndo, ATMTHA(ap), ATMTHLN(ap), ATMTSA(ap), - ATMTSLN(ap)); - ND_PRINT((ndo, " tell ")); - atmarp_addr_print(ndo, ATMSHA(ap), ATMSHLN(ap), ATMSSA(ap), - ATMSSLN(ap)); - break; - - case ARPOP_INVREPLY: - ND_PRINT((ndo, "invarp reply ")); - atmarp_addr_print(ndo, ATMSHA(ap), ATMSHLN(ap), ATMSSA(ap), - ATMSSLN(ap)); - ND_PRINT((ndo, " at %s", ipaddr_string(ATMSPA(ap)))); - break; - - case ATMARPOP_NAK: - ND_PRINT((ndo, "nak reply for %s", - ipaddr_string(ATMSPA(ap)))); - break; - - default: - ND_PRINT((ndo, "atmarp-#%d", op)); - ND_DEFAULTPRINT((const u_char *)ap, caplen); - return; - } - return; -trunc: - ND_PRINT((ndo, "[|atmarp]")); -} - -void -arp_print(netdissect_options *ndo, - const u_char *bp, u_int length, u_int caplen) -{ - const struct arp_pkthdr *ap; - u_short pro, hrd, op; - - ap = (const struct arp_pkthdr *)bp; - ND_TCHECK(*ap); - hrd = HRD(ap); - if (hrd == ARPHRD_ATM2225) { - atmarp_print(ndo, bp, length, caplen); - return; - } - pro = PRO(ap); - op = OP(ap); - - if (!ND_TTEST2(*ar_tpa(ap), PLN(ap))) { - ND_PRINT((ndo, "truncated-arp")); - ND_DEFAULTPRINT((const u_char *)ap, length); - return; - } - - if ((pro != ETHERTYPE_IP && pro != ETHERTYPE_TRAIL) || - PLN(ap) != 4 || HLN(ap) == 0) { - ND_PRINT((ndo, "arp-#%d for proto #%d (%d) hardware #%d (%d)", - op, pro, PLN(ap), hrd, HLN(ap))); - return; - } - if (pro == ETHERTYPE_TRAIL) - ND_PRINT((ndo, "trailer-")); - switch (op) { - - case ARPOP_REQUEST: - ND_PRINT((ndo, "arp who-has %s", ipaddr_string(TPA(ap)))); - if (memcmp((const char *)ezero, (const char *)THA(ap), HLN(ap)) != 0) - ND_PRINT((ndo, " (%s)", - linkaddr_string(THA(ap), HLN(ap)))); - ND_PRINT((ndo, " tell %s", ipaddr_string(SPA(ap)))); - break; - - case ARPOP_REPLY: - ND_PRINT((ndo, "arp reply %s", ipaddr_string(SPA(ap)))); - ND_PRINT((ndo, " is-at %s", linkaddr_string(SHA(ap), HLN(ap)))); - break; - - case ARPOP_REVREQUEST: - ND_PRINT((ndo, "rarp who-is %s tell %s", - linkaddr_string(THA(ap), HLN(ap)), - linkaddr_string(SHA(ap), HLN(ap)))); - break; - - case ARPOP_REVREPLY: - ND_PRINT((ndo, "rarp reply %s at %s", - linkaddr_string(THA(ap), HLN(ap)), - ipaddr_string(TPA(ap)))); - break; - - case ARPOP_INVREQUEST: - ND_PRINT((ndo, "invarp who-is %s tell %s", - linkaddr_string(THA(ap), HLN(ap)), - linkaddr_string(SHA(ap), HLN(ap)))); - break; - - case ARPOP_INVREPLY: - ND_PRINT((ndo,"invarp reply %s at %s", - linkaddr_string(THA(ap), HLN(ap)), - ipaddr_string(TPA(ap)))); - break; - - default: - ND_PRINT((ndo, "arp-#%d", op)); - ND_DEFAULTPRINT((const u_char *)ap, caplen); - return; - } - if (hrd != ARPHRD_ETHER) - ND_PRINT((ndo, " hardware #%d", hrd)); - return; -trunc: - ND_PRINT((ndo, "[|arp]")); -} - -/* - * Local Variables: - * c-style: bsd - * End: - */ - diff --git a/contrib/tcpdump/print-ascii.c b/contrib/tcpdump/print-ascii.c deleted file mode 100644 index cd48edd98d667..0000000000000 --- a/contrib/tcpdump/print-ascii.c +++ /dev/null @@ -1,183 +0,0 @@ -/* $NetBSD: print-ascii.c,v 1.1 1999/09/30 14:49:12 sjg Exp $ */ - -/*- - * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Alan Barrett and Simon J. Gerraty. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the NetBSD - * Foundation, Inc. and its contributors. - * 4. Neither the name of The NetBSD Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-ascii.c,v 1.16.2.1 2005/07/06 20:54:49 guy Exp $"; -#endif -#include <tcpdump-stdinc.h> -#include <stdio.h> - -#include "interface.h" - -#define ASCII_LINELENGTH 300 -#define HEXDUMP_BYTES_PER_LINE 16 -#define HEXDUMP_SHORTS_PER_LINE (HEXDUMP_BYTES_PER_LINE / 2) -#define HEXDUMP_HEXSTUFF_PER_SHORT 5 /* 4 hex digits and a space */ -#define HEXDUMP_HEXSTUFF_PER_LINE \ - (HEXDUMP_HEXSTUFF_PER_SHORT * HEXDUMP_SHORTS_PER_LINE) - -void -ascii_print(register const u_char *cp, register u_int length) -{ - register int s; - - putchar('\n'); - while (length > 0) { - s = *cp++; - length--; - if (!isgraph(s) && - (s != '\t' && s != ' ' && s != '\n' && s != '\r')) - putchar('.'); - else - putchar(s); - } -} - -void -hex_and_ascii_print_with_offset(register const char *ident, - register const u_char *cp, register u_int length, register u_int oset) -{ - register u_int i; - register int s1, s2; - register int nshorts; - char hexstuff[HEXDUMP_SHORTS_PER_LINE*HEXDUMP_HEXSTUFF_PER_SHORT+1], *hsp; - char asciistuff[ASCII_LINELENGTH+1], *asp; - - nshorts = length / sizeof(u_short); - i = 0; - hsp = hexstuff; asp = asciistuff; - while (--nshorts >= 0) { - s1 = *cp++; - s2 = *cp++; - (void)snprintf(hsp, sizeof(hexstuff) - (hsp - hexstuff), - " %02x%02x", s1, s2); - hsp += HEXDUMP_HEXSTUFF_PER_SHORT; - *(asp++) = (isgraph(s1) ? s1 : '.'); - *(asp++) = (isgraph(s2) ? s2 : '.'); - i++; - if (i >= HEXDUMP_SHORTS_PER_LINE) { - *hsp = *asp = '\0'; - (void)printf("%s0x%04x: %-*s %s", - ident, oset, HEXDUMP_HEXSTUFF_PER_LINE, - hexstuff, asciistuff); - i = 0; hsp = hexstuff; asp = asciistuff; - oset += HEXDUMP_BYTES_PER_LINE; - } - } - if (length & 1) { - s1 = *cp++; - (void)snprintf(hsp, sizeof(hexstuff) - (hsp - hexstuff), - " %02x", s1); - hsp += 3; - *(asp++) = (isgraph(s1) ? s1 : '.'); - ++i; - } - if (i > 0) { - *hsp = *asp = '\0'; - (void)printf("%s0x%04x: %-*s %s", - ident, oset, HEXDUMP_HEXSTUFF_PER_LINE, - hexstuff, asciistuff); - } -} - -void -hex_and_ascii_print(register const char *ident, register const u_char *cp, - register u_int length) -{ - hex_and_ascii_print_with_offset(ident, cp, length, 0); -} - -/* - * telnet_print() wants this. It is essentially default_print_unaligned() - */ -void -hex_print_with_offset(register const char *ident, register const u_char *cp, register u_int length, - register u_int oset) -{ - register u_int i, s; - register int nshorts; - - nshorts = (u_int) length / sizeof(u_short); - i = 0; - while (--nshorts >= 0) { - if ((i++ % 8) == 0) { - (void)printf("%s0x%04x: ", ident, oset); - oset += HEXDUMP_BYTES_PER_LINE; - } - s = *cp++; - (void)printf(" %02x%02x", s, *cp++); - } - if (length & 1) { - if ((i % 8) == 0) - (void)printf("%s0x%04x: ", ident, oset); - (void)printf(" %02x", *cp); - } -} - -/* - * just for completeness - */ -void -hex_print(register const char *ident, register const u_char *cp, register u_int length) -{ - hex_print_with_offset(ident, cp, length, 0); -} - -#ifdef MAIN -int -main(int argc, char *argv[]) -{ - hex_print("\n\t", "Hello, World!\n", 14); - printf("\n"); - hex_and_ascii_print("\n\t", "Hello, World!\n", 14); - printf("\n"); - ascii_print("Hello, World!\n", 14); - printf("\n"); -#define TMSG "Now is the winter of our discontent...\n" - hex_print_with_offset("\n\t", TMSG, sizeof(TMSG) - 1, 0x100); - printf("\n"); - hex_and_ascii_print_with_offset("\n\t", TMSG, sizeof(TMSG) - 1, 0x100); - printf("\n"); - exit(0); -} -#endif /* MAIN */ diff --git a/contrib/tcpdump/print-atalk.c b/contrib/tcpdump/print-atalk.c deleted file mode 100644 index f1f45a3cb72d7..0000000000000 --- a/contrib/tcpdump/print-atalk.c +++ /dev/null @@ -1,627 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * Format and print AppleTalk packets. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-atalk.c,v 1.81 2004/05/01 09:41:50 hannes Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <pcap.h> - -#include "interface.h" -#include "addrtoname.h" -#include "ethertype.h" -#include "extract.h" /* must come after interface.h */ -#include "appletalk.h" - -static struct tok type2str[] = { - { ddpRTMP, "rtmp" }, - { ddpRTMPrequest, "rtmpReq" }, - { ddpECHO, "echo" }, - { ddpIP, "IP" }, - { ddpARP, "ARP" }, - { ddpKLAP, "KLAP" }, - { 0, NULL } -}; - -struct aarp { - u_int16_t htype, ptype; - u_int8_t halen, palen; - u_int16_t op; - u_int8_t hsaddr[6]; - u_int8_t psaddr[4]; - u_int8_t hdaddr[6]; - u_int8_t pdaddr[4]; -}; - -static char tstr[] = "[|atalk]"; - -static void atp_print(const struct atATP *, u_int); -static void atp_bitmap_print(u_char); -static void nbp_print(const struct atNBP *, u_int, u_short, u_char, u_char); -static const char *print_cstring(const char *, const u_char *); -static const struct atNBPtuple *nbp_tuple_print(const struct atNBPtuple *, - const u_char *, - u_short, u_char, u_char); -static const struct atNBPtuple *nbp_name_print(const struct atNBPtuple *, - const u_char *); -static const char *ataddr_string(u_short, u_char); -static void ddp_print(const u_char *, u_int, int, u_short, u_char, u_char); -static const char *ddpskt_string(int); - -/* - * Print LLAP packets received on a physical LocalTalk interface. - */ -u_int -ltalk_if_print(const struct pcap_pkthdr *h, const u_char *p) -{ - return (llap_print(p, h->caplen)); -} - -/* - * Print AppleTalk LLAP packets. - */ -u_int -llap_print(register const u_char *bp, u_int length) -{ - register const struct LAP *lp; - register const struct atDDP *dp; - register const struct atShortDDP *sdp; - u_short snet; - u_int hdrlen; - - /* - * Our packet is on a 4-byte boundary, as we're either called - * directly from a top-level link-layer printer (ltalk_if_print) - * or from the UDP printer. The LLAP+DDP header is a multiple - * of 4 bytes in length, so the DDP payload is also on a 4-byte - * boundary, and we don't need to align it before calling - * "ddp_print()". - */ - lp = (const struct LAP *)bp; - bp += sizeof(*lp); - length -= sizeof(*lp); - hdrlen = sizeof(*lp); - switch (lp->type) { - - case lapShortDDP: - if (length < ddpSSize) { - (void)printf(" [|sddp %d]", length); - return (length); - } - sdp = (const struct atShortDDP *)bp; - printf("%s.%s", - ataddr_string(0, lp->src), ddpskt_string(sdp->srcSkt)); - printf(" > %s.%s:", - ataddr_string(0, lp->dst), ddpskt_string(sdp->dstSkt)); - bp += ddpSSize; - length -= ddpSSize; - hdrlen += ddpSSize; - ddp_print(bp, length, sdp->type, 0, lp->src, sdp->srcSkt); - break; - - case lapDDP: - if (length < ddpSize) { - (void)printf(" [|ddp %d]", length); - return (length); - } - dp = (const struct atDDP *)bp; - snet = EXTRACT_16BITS(&dp->srcNet); - printf("%s.%s", ataddr_string(snet, dp->srcNode), - ddpskt_string(dp->srcSkt)); - printf(" > %s.%s:", - ataddr_string(EXTRACT_16BITS(&dp->dstNet), dp->dstNode), - ddpskt_string(dp->dstSkt)); - bp += ddpSize; - length -= ddpSize; - hdrlen += ddpSize; - ddp_print(bp, length, dp->type, snet, dp->srcNode, dp->srcSkt); - break; - -#ifdef notdef - case lapKLAP: - klap_print(bp, length); - break; -#endif - - default: - printf("%d > %d at-lap#%d %d", - lp->src, lp->dst, lp->type, length); - break; - } - return (hdrlen); -} - -/* - * Print EtherTalk/TokenTalk packets (or FDDITalk, or whatever it's called - * when it runs over FDDI; yes, I've seen FDDI captures with AppleTalk - * packets in them). - */ -void -atalk_print(register const u_char *bp, u_int length) -{ - register const struct atDDP *dp; - u_short snet; - - if(!eflag) - printf("AT "); - - if (length < ddpSize) { - (void)printf(" [|ddp %d]", length); - return; - } - dp = (const struct atDDP *)bp; - snet = EXTRACT_16BITS(&dp->srcNet); - printf("%s.%s", ataddr_string(snet, dp->srcNode), - ddpskt_string(dp->srcSkt)); - printf(" > %s.%s: ", - ataddr_string(EXTRACT_16BITS(&dp->dstNet), dp->dstNode), - ddpskt_string(dp->dstSkt)); - bp += ddpSize; - length -= ddpSize; - ddp_print(bp, length, dp->type, snet, dp->srcNode, dp->srcSkt); -} - -/* XXX should probably pass in the snap header and do checks like arp_print() */ -void -aarp_print(register const u_char *bp, u_int length) -{ - register const struct aarp *ap; - -#define AT(member) ataddr_string((ap->member[1]<<8)|ap->member[2],ap->member[3]) - - printf("aarp "); - ap = (const struct aarp *)bp; - if (EXTRACT_16BITS(&ap->htype) == 1 && - EXTRACT_16BITS(&ap->ptype) == ETHERTYPE_ATALK && - ap->halen == 6 && ap->palen == 4 ) - switch (EXTRACT_16BITS(&ap->op)) { - - case 1: /* request */ - (void)printf("who-has %s tell %s", - AT(pdaddr), AT(psaddr)); - return; - - case 2: /* response */ - (void)printf("reply %s is-at %s", - AT(pdaddr), etheraddr_string(ap->hdaddr)); - return; - - case 3: /* probe (oy!) */ - (void)printf("probe %s tell %s", - AT(pdaddr), AT(psaddr)); - return; - } - (void)printf("len %u op %u htype %u ptype %#x halen %u palen %u", - length, EXTRACT_16BITS(&ap->op), EXTRACT_16BITS(&ap->htype), - EXTRACT_16BITS(&ap->ptype), ap->halen, ap->palen); -} - -/* - * Print AppleTalk Datagram Delivery Protocol packets. - */ -static void -ddp_print(register const u_char *bp, register u_int length, register int t, - register u_short snet, register u_char snode, u_char skt) -{ - - switch (t) { - - case ddpNBP: - nbp_print((const struct atNBP *)bp, length, snet, snode, skt); - break; - - case ddpATP: - atp_print((const struct atATP *)bp, length); - break; - - case ddpEIGRP: - eigrp_print(bp, length); - break; - - default: - (void)printf(" at-%s %d", tok2str(type2str, NULL, t), length); - break; - } -} - -static void -atp_print(register const struct atATP *ap, u_int length) -{ - char c; - u_int32_t data; - - if ((const u_char *)(ap + 1) > snapend) { - /* Just bail if we don't have the whole chunk. */ - fputs(tstr, stdout); - return; - } - length -= sizeof(*ap); - switch (ap->control & 0xc0) { - - case atpReqCode: - (void)printf(" atp-req%s %d", - ap->control & atpXO? " " : "*", - EXTRACT_16BITS(&ap->transID)); - - atp_bitmap_print(ap->bitmap); - - if (length != 0) - (void)printf(" [len=%d]", length); - - switch (ap->control & (atpEOM|atpSTS)) { - case atpEOM: - (void)printf(" [EOM]"); - break; - case atpSTS: - (void)printf(" [STS]"); - break; - case atpEOM|atpSTS: - (void)printf(" [EOM,STS]"); - break; - } - break; - - case atpRspCode: - (void)printf(" atp-resp%s%d:%d (%d)", - ap->control & atpEOM? "*" : " ", - EXTRACT_16BITS(&ap->transID), ap->bitmap, length); - switch (ap->control & (atpXO|atpSTS)) { - case atpXO: - (void)printf(" [XO]"); - break; - case atpSTS: - (void)printf(" [STS]"); - break; - case atpXO|atpSTS: - (void)printf(" [XO,STS]"); - break; - } - break; - - case atpRelCode: - (void)printf(" atp-rel %d", EXTRACT_16BITS(&ap->transID)); - - atp_bitmap_print(ap->bitmap); - - /* length should be zero */ - if (length) - (void)printf(" [len=%d]", length); - - /* there shouldn't be any control flags */ - if (ap->control & (atpXO|atpEOM|atpSTS)) { - c = '['; - if (ap->control & atpXO) { - (void)printf("%cXO", c); - c = ','; - } - if (ap->control & atpEOM) { - (void)printf("%cEOM", c); - c = ','; - } - if (ap->control & atpSTS) { - (void)printf("%cSTS", c); - c = ','; - } - (void)printf("]"); - } - break; - - default: - (void)printf(" atp-0x%x %d (%d)", ap->control, - EXTRACT_16BITS(&ap->transID), length); - break; - } - data = EXTRACT_32BITS(&ap->userData); - if (data != 0) - (void)printf(" 0x%x", data); -} - -static void -atp_bitmap_print(register u_char bm) -{ - register char c; - register int i; - - /* - * The '& 0xff' below is needed for compilers that want to sign - * extend a u_char, which is the case with the Ultrix compiler. - * (gcc is smart enough to eliminate it, at least on the Sparc). - */ - if ((bm + 1) & (bm & 0xff)) { - c = '<'; - for (i = 0; bm; ++i) { - if (bm & 1) { - (void)printf("%c%d", c, i); - c = ','; - } - bm >>= 1; - } - (void)printf(">"); - } else { - for (i = 0; bm; ++i) - bm >>= 1; - if (i > 1) - (void)printf("<0-%d>", i - 1); - else - (void)printf("<0>"); - } -} - -static void -nbp_print(register const struct atNBP *np, u_int length, register u_short snet, - register u_char snode, register u_char skt) -{ - register const struct atNBPtuple *tp = - (const struct atNBPtuple *)((u_char *)np + nbpHeaderSize); - int i; - const u_char *ep; - - if (length < nbpHeaderSize) { - (void)printf(" truncated-nbp %d", length); - return; - } - - length -= nbpHeaderSize; - if (length < 8) { - /* must be room for at least one tuple */ - (void)printf(" truncated-nbp %d", length + nbpHeaderSize); - return; - } - /* ep points to end of available data */ - ep = snapend; - if ((const u_char *)tp > ep) { - fputs(tstr, stdout); - return; - } - switch (i = np->control & 0xf0) { - - case nbpBrRq: - case nbpLkUp: - (void)printf(i == nbpLkUp? " nbp-lkup %d:":" nbp-brRq %d:", - np->id); - if ((const u_char *)(tp + 1) > ep) { - fputs(tstr, stdout); - return; - } - (void)nbp_name_print(tp, ep); - /* - * look for anomalies: the spec says there can only - * be one tuple, the address must match the source - * address and the enumerator should be zero. - */ - if ((np->control & 0xf) != 1) - (void)printf(" [ntup=%d]", np->control & 0xf); - if (tp->enumerator) - (void)printf(" [enum=%d]", tp->enumerator); - if (EXTRACT_16BITS(&tp->net) != snet || - tp->node != snode || tp->skt != skt) - (void)printf(" [addr=%s.%d]", - ataddr_string(EXTRACT_16BITS(&tp->net), - tp->node), tp->skt); - break; - - case nbpLkUpReply: - (void)printf(" nbp-reply %d:", np->id); - - /* print each of the tuples in the reply */ - for (i = np->control & 0xf; --i >= 0 && tp; ) - tp = nbp_tuple_print(tp, ep, snet, snode, skt); - break; - - default: - (void)printf(" nbp-0x%x %d (%d)", np->control, np->id, - length); - break; - } -} - -/* print a counted string */ -static const char * -print_cstring(register const char *cp, register const u_char *ep) -{ - register u_int length; - - if (cp >= (const char *)ep) { - fputs(tstr, stdout); - return (0); - } - length = *cp++; - - /* Spec says string can be at most 32 bytes long */ - if (length > 32) { - (void)printf("[len=%u]", length); - return (0); - } - while ((int)--length >= 0) { - if (cp >= (const char *)ep) { - fputs(tstr, stdout); - return (0); - } - putchar(*cp++); - } - return (cp); -} - -static const struct atNBPtuple * -nbp_tuple_print(register const struct atNBPtuple *tp, - register const u_char *ep, - register u_short snet, register u_char snode, - register u_char skt) -{ - register const struct atNBPtuple *tpn; - - if ((const u_char *)(tp + 1) > ep) { - fputs(tstr, stdout); - return 0; - } - tpn = nbp_name_print(tp, ep); - - /* if the enumerator isn't 1, print it */ - if (tp->enumerator != 1) - (void)printf("(%d)", tp->enumerator); - - /* if the socket doesn't match the src socket, print it */ - if (tp->skt != skt) - (void)printf(" %d", tp->skt); - - /* if the address doesn't match the src address, it's an anomaly */ - if (EXTRACT_16BITS(&tp->net) != snet || tp->node != snode) - (void)printf(" [addr=%s]", - ataddr_string(EXTRACT_16BITS(&tp->net), tp->node)); - - return (tpn); -} - -static const struct atNBPtuple * -nbp_name_print(const struct atNBPtuple *tp, register const u_char *ep) -{ - register const char *cp = (const char *)tp + nbpTupleSize; - - putchar(' '); - - /* Object */ - putchar('"'); - if ((cp = print_cstring(cp, ep)) != NULL) { - /* Type */ - putchar(':'); - if ((cp = print_cstring(cp, ep)) != NULL) { - /* Zone */ - putchar('@'); - if ((cp = print_cstring(cp, ep)) != NULL) - putchar('"'); - } - } - return ((const struct atNBPtuple *)cp); -} - - -#define HASHNAMESIZE 4096 - -struct hnamemem { - int addr; - char *name; - struct hnamemem *nxt; -}; - -static struct hnamemem hnametable[HASHNAMESIZE]; - -static const char * -ataddr_string(u_short atnet, u_char athost) -{ - register struct hnamemem *tp, *tp2; - register int i = (atnet << 8) | athost; - char nambuf[MAXHOSTNAMELEN + 20]; - static int first = 1; - FILE *fp; - - /* - * if this is the first call, see if there's an AppleTalk - * number to name map file. - */ - if (first && (first = 0, !nflag) - && (fp = fopen("/etc/atalk.names", "r"))) { - char line[256]; - int i1, i2, i3; - - while (fgets(line, sizeof(line), fp)) { - if (line[0] == '\n' || line[0] == 0 || line[0] == '#') - continue; - if (sscanf(line, "%d.%d.%d %256s", &i1, &i2, &i3, - nambuf) == 4) - /* got a hostname. */ - i3 |= ((i1 << 8) | i2) << 8; - else if (sscanf(line, "%d.%d %256s", &i1, &i2, - nambuf) == 3) - /* got a net name */ - i3 = (((i1 << 8) | i2) << 8) | 255; - else - continue; - - for (tp = &hnametable[i3 & (HASHNAMESIZE-1)]; - tp->nxt; tp = tp->nxt) - ; - tp->addr = i3; - tp->nxt = newhnamemem(); - tp->name = strdup(nambuf); - } - fclose(fp); - } - - for (tp = &hnametable[i & (HASHNAMESIZE-1)]; tp->nxt; tp = tp->nxt) - if (tp->addr == i) - return (tp->name); - - /* didn't have the node name -- see if we've got the net name */ - i |= 255; - for (tp2 = &hnametable[i & (HASHNAMESIZE-1)]; tp2->nxt; tp2 = tp2->nxt) - if (tp2->addr == i) { - tp->addr = (atnet << 8) | athost; - tp->nxt = newhnamemem(); - (void)snprintf(nambuf, sizeof(nambuf), "%s.%d", - tp2->name, athost); - tp->name = strdup(nambuf); - return (tp->name); - } - - tp->addr = (atnet << 8) | athost; - tp->nxt = newhnamemem(); - if (athost != 255) - (void)snprintf(nambuf, sizeof(nambuf), "%d.%d.%d", - atnet >> 8, atnet & 0xff, athost); - else - (void)snprintf(nambuf, sizeof(nambuf), "%d.%d", atnet >> 8, - atnet & 0xff); - tp->name = strdup(nambuf); - - return (tp->name); -} - -static struct tok skt2str[] = { - { rtmpSkt, "rtmp" }, /* routing table maintenance */ - { nbpSkt, "nis" }, /* name info socket */ - { echoSkt, "echo" }, /* AppleTalk echo protocol */ - { zipSkt, "zip" }, /* zone info protocol */ - { 0, NULL } -}; - -static const char * -ddpskt_string(register int skt) -{ - static char buf[8]; - - if (nflag) { - (void)snprintf(buf, sizeof(buf), "%d", skt); - return (buf); - } - return (tok2str(skt2str, "%d", skt)); -} diff --git a/contrib/tcpdump/print-atm.c b/contrib/tcpdump/print-atm.c deleted file mode 100644 index b14a580d0c4f0..0000000000000 --- a/contrib/tcpdump/print-atm.c +++ /dev/null @@ -1,332 +0,0 @@ -/* - * Copyright (c) 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-atm.c,v 1.38.2.3 2005/07/07 01:24:34 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <pcap.h> -#include <string.h> - -#include "interface.h" -#include "extract.h" -#include "addrtoname.h" -#include "ethertype.h" -#include "atm.h" -#include "atmuni31.h" -#include "llc.h" - -#include "ether.h" - -struct tok oam_celltype_values[] = { - { 0x1, "Fault Management" }, - { 0x2, "Performance Management" }, - { 0x8, "activate/deactivate" }, - { 0xf, "System Management" }, - { 0, NULL } -}; - -struct tok oam_fm_functype_values[] = { - { 0x0, "AIS" }, - { 0x1, "RDI" }, - { 0x4, "Continuity Check" }, - { 0x8, "Loopback" }, - { 0, NULL } -}; - -struct tok oam_pm_functype_values[] = { - { 0x0, "Forward Monitoring" }, - { 0x1, "Backward Reporting" }, - { 0x2, "Monitoring and Reporting" }, - { 0, NULL } -}; - -struct tok oam_ad_functype_values[] = { - { 0x0, "Performance Monitoring" }, - { 0x1, "Continuity Check" }, - { 0, NULL } -}; - -static const struct tok *oam_functype_values[16] = { - NULL, - oam_fm_functype_values, /* 1 */ - oam_pm_functype_values, /* 2 */ - NULL, - NULL, - NULL, - NULL, - NULL, - oam_ad_functype_values, /* 8 */ - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL -}; - -/* - * Print an RFC 1483 LLC-encapsulated ATM frame. - */ -static void -atm_llc_print(const u_char *p, int length, int caplen) -{ - u_short extracted_ethertype; - - if (!llc_print(p, length, caplen, NULL, NULL, - &extracted_ethertype)) { - /* ether_type not known, print raw packet */ - if (extracted_ethertype) { - printf("(LLC %s) ", - etherproto_string(htons(extracted_ethertype))); - } - if (!suppress_default_print) - default_print(p, caplen); - } -} - -/* - * Given a SAP value, generate the LLC header value for a UI packet - * with that SAP as the source and destination SAP. - */ -#define LLC_UI_HDR(sap) ((sap)<<16 | (sap<<8) | 0x03) - -/* - * This is the top level routine of the printer. 'p' points - * to the LLC/SNAP header of the packet, 'h->ts' is the timestamp, - * 'h->len' is the length of the packet off the wire, and 'h->caplen' - * is the number of bytes actually captured. - */ -u_int -atm_if_print(const struct pcap_pkthdr *h, const u_char *p) -{ - u_int caplen = h->caplen; - u_int length = h->len; - u_int32_t llchdr; - u_int hdrlen = 0; - - if (caplen < 8) { - printf("[|atm]"); - return (caplen); - } - - /* - * Extract the presumed LLC header into a variable, for quick - * testing. - * Then check for a header that's neither a header for a SNAP - * packet nor an RFC 2684 routed NLPID-formatted PDU nor - * an 802.2-but-no-SNAP IP packet. - */ - llchdr = EXTRACT_24BITS(p); - if (llchdr != LLC_UI_HDR(LLCSAP_SNAP) && - llchdr != LLC_UI_HDR(LLCSAP_ISONS) && - llchdr != LLC_UI_HDR(LLCSAP_IP)) { - /* - * XXX - assume 802.6 MAC header from Fore driver. - * - * Unfortunately, the above list doesn't check for - * all known SAPs, doesn't check for headers where - * the source and destination SAP aren't the same, - * and doesn't check for non-UI frames. It also - * runs the risk of an 802.6 MAC header that happens - * to begin with one of those values being - * incorrectly treated as an 802.2 header. - * - * So is that Fore driver still around? And, if so, - * is it still putting 802.6 MAC headers on ATM - * packets? If so, could it be changed to use a - * new DLT_IEEE802_6 value if we added it? - */ - if (eflag) - printf("%08x%08x %08x%08x ", - EXTRACT_32BITS(p), - EXTRACT_32BITS(p+4), - EXTRACT_32BITS(p+8), - EXTRACT_32BITS(p+12)); - p += 20; - length -= 20; - caplen -= 20; - hdrlen += 20; - } - atm_llc_print(p, length, caplen); - return (hdrlen); -} - -/* - * ATM signalling. - */ -static struct tok msgtype2str[] = { - { CALL_PROCEED, "Call_proceeding" }, - { CONNECT, "Connect" }, - { CONNECT_ACK, "Connect_ack" }, - { SETUP, "Setup" }, - { RELEASE, "Release" }, - { RELEASE_DONE, "Release_complete" }, - { RESTART, "Restart" }, - { RESTART_ACK, "Restart_ack" }, - { STATUS, "Status" }, - { STATUS_ENQ, "Status_enquiry" }, - { ADD_PARTY, "Add_party" }, - { ADD_PARTY_ACK, "Add_party_ack" }, - { ADD_PARTY_REJ, "Add_party_reject" }, - { DROP_PARTY, "Drop_party" }, - { DROP_PARTY_ACK, "Drop_party_ack" }, - { 0, NULL } -}; - -static void -sig_print(const u_char *p, int caplen) -{ - bpf_u_int32 call_ref; - - if (caplen < PROTO_POS) { - printf("[|atm]"); - return; - } - if (p[PROTO_POS] == Q2931) { - /* - * protocol:Q.2931 for User to Network Interface - * (UNI 3.1) signalling - */ - printf("Q.2931"); - if (caplen < MSG_TYPE_POS) { - printf(" [|atm]"); - return; - } - printf(":%s ", - tok2str(msgtype2str, "msgtype#%d", p[MSG_TYPE_POS])); - - if (caplen < CALL_REF_POS+3) { - printf("[|atm]"); - return; - } - call_ref = EXTRACT_24BITS(&p[CALL_REF_POS]); - printf("CALL_REF:0x%06x", call_ref); - } else { - /* SCCOP with some unknown protocol atop it */ - printf("SSCOP, proto %d ", p[PROTO_POS]); - } -} - -/* - * Print an ATM PDU (such as an AAL5 PDU). - */ -void -atm_print(u_int vpi, u_int vci, u_int traftype, const u_char *p, u_int length, - u_int caplen) -{ - if (eflag) - printf("VPI:%u VCI:%u ", vpi, vci); - - if (vpi == 0) { - switch (vci) { - - case PPC: - sig_print(p, caplen); - return; - - case BCC: - printf("broadcast sig: "); - return; - - case OAMF4SC: /* fall through */ - case OAMF4EC: - oam_print(p, length, ATM_OAM_HEC); - return; - - case METAC: - printf("meta: "); - return; - - case ILMIC: - printf("ilmi: "); - snmp_print(p, length); - return; - } - } - - switch (traftype) { - - case ATM_LLC: - default: - /* - * Assumes traffic is LLC if unknown. - */ - atm_llc_print(p, length, caplen); - break; - - case ATM_LANE: - lane_print(p, length, caplen); - break; - } -} - -int -oam_print (const u_char *p, u_int length, u_int hec) { - - u_int16_t cell_header, cell_type, func_type,vpi,vci,payload,clp; - - cell_header = EXTRACT_32BITS(p); - cell_type = ((*(p+4+hec))>>4) & 0x0f; - func_type = *(p+4+hec) & 0x0f; - - vpi = (cell_header>>20)&0xff; - vci = (cell_header>>4)&0xffff; - payload = (cell_header>>1)&0x7; - clp = cell_header&0x1; - - switch (vci) { - case OAMF4SC: - printf("OAM F4 (segment), "); - break; - case OAMF4EC: - printf("OAM F4 (end), "); - break; - default: - printf("OAM F5, "); - break; - } - - if (eflag) - printf("vpi %u, vci %u, payload %u, clp %u, ",vpi,vci,payload,clp); - - printf("cell-type %s (%u)", - tok2str(oam_celltype_values, "unknown", cell_type), - cell_type); - - if (oam_functype_values[cell_type] == NULL) - printf(", func-type unknown (%u)", func_type); - else - printf(", func-type %s (%u)", - bittok2str(oam_functype_values[cell_type],"none",func_type), - func_type); - - printf(", length %u",length); - return 1; -} diff --git a/contrib/tcpdump/print-beep.c b/contrib/tcpdump/print-beep.c deleted file mode 100644 index db40d611245ae..0000000000000 --- a/contrib/tcpdump/print-beep.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2000, Richard Sharpe - * - * This software may be distributed either under the terms of the - * BSD-style licence that accompanies tcpdump or under the GNU GPL - * version 2 or later. - * - * print-beep.c - * - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-beep.c,v 1.6 2003/11/16 09:36:13 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#ifdef HAVE_MEMORY_H -#include <memory.h> -#endif -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "interface.h" -#include "extract.h" - -/* Check for a string but not go beyond length - * Return TRUE on match, FALSE otherwise - * - * Looks at the first few chars up to tl1 ... - */ - -static int l_strnstart(const char *, u_int, const char *, u_int); - -static int -l_strnstart(const char *tstr1, u_int tl1, const char *str2, u_int l2) -{ - - if (tl1 > l2) - return 0; - - return (strncmp(tstr1, str2, tl1) == 0 ? 1 : 0); -} - -void -beep_print(const u_char *bp, u_int length) -{ - - if (l_strnstart("MSG", 4, (const char *)bp, length)) /* A REQuest */ - printf(" BEEP MSG"); - else if (l_strnstart("RPY ", 4, (const char *)bp, length)) - printf(" BEEP RPY"); - else if (l_strnstart("ERR ", 4, (const char *)bp, length)) - printf(" BEEP ERR"); - else if (l_strnstart("ANS ", 4, (const char *)bp, length)) - printf(" BEEP ANS"); - else if (l_strnstart("NUL ", 4, (const char *)bp, length)) - printf(" BEEP NUL"); - else if (l_strnstart("SEQ ", 4, (const char *)bp, length)) - printf(" BEEP SEQ"); - else if (l_strnstart("END", 4, (const char *)bp, length)) - printf(" BEEP END"); - else - printf(" BEEP (payload or undecoded)"); -} diff --git a/contrib/tcpdump/print-bfd.c b/contrib/tcpdump/print-bfd.c deleted file mode 100644 index 755f7287b3941..0000000000000 --- a/contrib/tcpdump/print-bfd.c +++ /dev/null @@ -1,279 +0,0 @@ -/* - * 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. - * - * Original code by Hannes Gredler (hannes@juniper.net) - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-bfd.c,v 1.5.2.4 2005/04/28 09:28:47 hannes Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <stdlib.h> - -#include "interface.h" -#include "extract.h" -#include "addrtoname.h" - -#include "udp.h" - -/* - * Control packet, BFDv0, draft-katz-ward-bfd-01.txt - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * |Vers | Diag |H|D|P|F| Rsvd | Detect Mult | Length | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | My Discriminator | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Your Discriminator | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Desired Min TX Interval | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Required Min RX Interval | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Required Min Echo RX Interval | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -/* - * Control packet, BFDv1, draft-ietf-bfd-base-02.txt - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * |Vers | Diag |Sta|P|F|C|A|D|R| Detect Mult | Length | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | My Discriminator | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Your Discriminator | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Desired Min TX Interval | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Required Min RX Interval | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Required Min Echo RX Interval | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -struct bfd_header_t { - u_int8_t version_diag; - u_int8_t flags; - u_int8_t detect_time_multiplier; - u_int8_t length; - u_int8_t my_discriminator[4]; - u_int8_t your_discriminator[4]; - u_int8_t desired_min_tx_interval[4]; - u_int8_t required_min_rx_interval[4]; - u_int8_t required_min_echo_interval[4]; -}; - -/* - * An optional Authentication Header may be present - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Auth Type | Auth Len | Authentication Data... | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -struct bfd_auth_header_t { - u_int8_t auth_type; - u_int8_t auth_len; - u_int8_t auth_data; -}; - -static const struct tok bfd_v1_authentication_values[] = { - { 0, "Reserved" }, - { 1, "Simple Password" }, - { 2, "Keyed MD5" }, - { 3, "Meticulous Keyed MD5" }, - { 4, "Keyed SHA1" }, - { 5, "Meticulous Keyed SHA1" }, - { 0, NULL } -}; - -#define BFD_EXTRACT_VERSION(x) (((x)&0xe0)>>5) -#define BFD_EXTRACT_DIAG(x) ((x)&0x1f) - -static const struct tok bfd_port_values[] = { - { BFD_CONTROL_PORT, "Control" }, - { BFD_ECHO_PORT, "Echo" }, - { 0, NULL } -}; - - -static const struct tok bfd_diag_values[] = { - { 0, "No Diagnostic" }, - { 1, "Control Detection Time Expired" }, - { 2, "Echo Function Failed" }, - { 3, "Neighbor Signaled Session Down" }, - { 4, "Forwarding Plane Reset" }, - { 5, "Path Down" }, - { 6, "Concatenated Path Down" }, - { 7, "Administratively Down" }, - { 8, "Reverse Concatenated Path Down" }, - { 0, NULL } -}; - -static const struct tok bfd_v0_flag_values[] = { - { 0x80, "I Hear You" }, - { 0x40, "Demand" }, - { 0x20, "Poll" }, - { 0x10, "Final" }, - { 0x08, "Reserved" }, - { 0x04, "Reserved" }, - { 0x02, "Reserved" }, - { 0x01, "Reserved" }, - { 0, NULL } -}; - -#define BFD_FLAG_AUTH 0x04 - -static const struct tok bfd_v1_flag_values[] = { - { 0x20, "Poll" }, - { 0x10, "Final" }, - { 0x08, "Control Plane Independent" }, - { BFD_FLAG_AUTH, "Authentication Present" }, - { 0x02, "Demand" }, - { 0x01, "Reserved" }, - { 0, NULL } -}; - -static const struct tok bfd_v1_state_values[] = { - { 0, "AdminDown" }, - { 1, "Down" }, - { 2, "Init" }, - { 3, "Up" }, - { 0, NULL } -}; - -void -bfd_print(register const u_char *pptr, register u_int len, register u_int port) -{ - const struct bfd_header_t *bfd_header; - const struct bfd_auth_header_t *bfd_auth_header; - u_int8_t version; - - bfd_header = (const struct bfd_header_t *)pptr; - TCHECK(*bfd_header); - version = BFD_EXTRACT_VERSION(bfd_header->version_diag); - - switch (port << 8 | version) { - - /* BFDv0 */ - case (BFD_CONTROL_PORT << 8): - if (vflag < 1 ) - { - printf("BFDv%u, %s, Flags: [%s], length: %u", - version, - tok2str(bfd_port_values, "unknown (%u)", port), - bittok2str(bfd_v0_flag_values, "none", bfd_header->flags), - len); - return; - } - - printf("BFDv%u, length: %u\n\t%s, Flags: [%s], Diagnostic: %s (0x%02x)", - version, - len, - tok2str(bfd_port_values, "unknown (%u)", port), - bittok2str(bfd_v0_flag_values, "none", bfd_header->flags), - tok2str(bfd_diag_values,"unknown",BFD_EXTRACT_DIAG(bfd_header->version_diag)), - BFD_EXTRACT_DIAG(bfd_header->version_diag)); - - printf("\n\tDetection Timer Multiplier: %u (%u ms Detection time), BFD Length: %u", - bfd_header->detect_time_multiplier, - bfd_header->detect_time_multiplier * EXTRACT_32BITS(bfd_header->desired_min_tx_interval)/1000, - bfd_header->length); - - - printf("\n\tMy Discriminator: 0x%08x", EXTRACT_32BITS(bfd_header->my_discriminator)); - printf(", Your Discriminator: 0x%08x", EXTRACT_32BITS(bfd_header->your_discriminator)); - printf("\n\t Desired min Tx Interval: %4u ms", EXTRACT_32BITS(bfd_header->desired_min_tx_interval)/1000); - printf("\n\t Required min Rx Interval: %4u ms", EXTRACT_32BITS(bfd_header->required_min_rx_interval)/1000); - printf("\n\t Required min Echo Interval: %4u ms", EXTRACT_32BITS(bfd_header->required_min_echo_interval)/1000); - break; - - /* BFDv1 */ - case (BFD_CONTROL_PORT << 8 | 1): - if (vflag < 1 ) - { - printf("BFDv%u, %s, State %s, Flags: [%s], length: %u", - version, - tok2str(bfd_port_values, "unknown (%u)", port), - tok2str(bfd_v1_state_values, "unknown (%u)", bfd_header->flags & 0xc0), - bittok2str(bfd_v1_flag_values, "none", bfd_header->flags & 0x3f), - len); - return; - } - - printf("BFDv%u, length: %u\n\t%s, State %s, Flags: [%s], Diagnostic: %s (0x%02x)", - version, - len, - tok2str(bfd_port_values, "unknown (%u)", port), - tok2str(bfd_v1_state_values, "unknown (%u)", (bfd_header->flags & 0xc0) >> 6), - bittok2str(bfd_v1_flag_values, "none", bfd_header->flags & 0x3f), - tok2str(bfd_diag_values,"unknown",BFD_EXTRACT_DIAG(bfd_header->version_diag)), - BFD_EXTRACT_DIAG(bfd_header->version_diag)); - - printf("\n\tDetection Timer Multiplier: %u (%u ms Detection time), BFD Length: %u", - bfd_header->detect_time_multiplier, - bfd_header->detect_time_multiplier * EXTRACT_32BITS(bfd_header->desired_min_tx_interval)/1000, - bfd_header->length); - - - printf("\n\tMy Discriminator: 0x%08x", EXTRACT_32BITS(bfd_header->my_discriminator)); - printf(", Your Discriminator: 0x%08x", EXTRACT_32BITS(bfd_header->your_discriminator)); - printf("\n\t Desired min Tx Interval: %4u ms", EXTRACT_32BITS(bfd_header->desired_min_tx_interval)/1000); - printf("\n\t Required min Rx Interval: %4u ms", EXTRACT_32BITS(bfd_header->required_min_rx_interval)/1000); - printf("\n\t Required min Echo Interval: %4u ms", EXTRACT_32BITS(bfd_header->required_min_echo_interval)/1000); - - if (bfd_header->flags & BFD_FLAG_AUTH) { - pptr += sizeof (const struct bfd_header_t); - bfd_auth_header = (const struct bfd_auth_header_t *)pptr; - TCHECK2(*bfd_auth_header, sizeof(const struct bfd_auth_header_t)); - printf("\n\t%s (%u) Authentication, length %u present", - tok2str(bfd_v1_authentication_values,"Unknown",bfd_auth_header->auth_type), - bfd_auth_header->auth_type, - bfd_auth_header->auth_len); - } - break; - - /* BFDv0 */ - case (BFD_ECHO_PORT << 8): /* not yet supported - fall through */ - /* BFDv1 */ - case (BFD_ECHO_PORT << 8 | 1): - - default: - printf("BFD, %s, length: %u", - tok2str(bfd_port_values, "unknown (%u)", port), - len); - if (vflag >= 1) { - if(!print_unknown_data(pptr,"\n\t",len)) - return; - } - break; - } - return; - -trunc: - printf("[|BFD]"); -} diff --git a/contrib/tcpdump/print-bgp.c b/contrib/tcpdump/print-bgp.c deleted file mode 100644 index d6377fb997980..0000000000000 --- a/contrib/tcpdump/print-bgp.c +++ /dev/null @@ -1,2047 +0,0 @@ -/* - * Copyright (C) 1999 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Extensively modified by Hannes Gredler (hannes@juniper.net) for more - * complete BGP support. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-bgp.c,v 1.91.2.6 2005/06/03 07:31:43 hannes Exp $"; -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "decode_prefix.h" -#include "addrtoname.h" -#include "extract.h" -#include "bgp.h" -#include "l2vpn.h" - -struct bgp { - u_int8_t bgp_marker[16]; - u_int16_t bgp_len; - u_int8_t bgp_type; -}; -#define BGP_SIZE 19 /* unaligned */ - -#define BGP_OPEN 1 -#define BGP_UPDATE 2 -#define BGP_NOTIFICATION 3 -#define BGP_KEEPALIVE 4 -#define BGP_ROUTE_REFRESH 5 - -static struct tok bgp_msg_values[] = { - { BGP_OPEN, "Open"}, - { BGP_UPDATE, "Update"}, - { BGP_NOTIFICATION, "Notification"}, - { BGP_KEEPALIVE, "Keepalive"}, - { BGP_ROUTE_REFRESH, "Route Refresh"}, - { 0, NULL} -}; - -struct bgp_open { - u_int8_t bgpo_marker[16]; - u_int16_t bgpo_len; - u_int8_t bgpo_type; - u_int8_t bgpo_version; - u_int16_t bgpo_myas; - u_int16_t bgpo_holdtime; - u_int32_t bgpo_id; - u_int8_t bgpo_optlen; - /* options should follow */ -}; -#define BGP_OPEN_SIZE 29 /* unaligned */ - -struct bgp_opt { - u_int8_t bgpopt_type; - u_int8_t bgpopt_len; - /* variable length */ -}; -#define BGP_OPT_SIZE 2 /* some compilers may pad to 4 bytes */ - -#define BGP_UPDATE_MINSIZE 23 - -struct bgp_notification { - u_int8_t bgpn_marker[16]; - u_int16_t bgpn_len; - u_int8_t bgpn_type; - u_int8_t bgpn_major; - u_int8_t bgpn_minor; -}; -#define BGP_NOTIFICATION_SIZE 21 /* unaligned */ - -struct bgp_route_refresh { - u_int8_t bgp_marker[16]; - u_int16_t len; - u_int8_t type; - u_int8_t afi[2]; /* the compiler messes this structure up */ - u_int8_t res; /* when doing misaligned sequences of int8 and int16 */ - u_int8_t safi; /* afi should be int16 - so we have to access it using */ -}; /* EXTRACT_16BITS(&bgp_route_refresh->afi) (sigh) */ -#define BGP_ROUTE_REFRESH_SIZE 23 - -struct bgp_attr { - u_int8_t bgpa_flags; - u_int8_t bgpa_type; - union { - u_int8_t len; - u_int16_t elen; - } bgpa_len; -#define bgp_attr_len(p) \ - (((p)->bgpa_flags & 0x10) ? \ - EXTRACT_16BITS(&(p)->bgpa_len.elen) : (p)->bgpa_len.len) -#define bgp_attr_off(p) \ - (((p)->bgpa_flags & 0x10) ? 4 : 3) -}; - -#define BGPTYPE_ORIGIN 1 -#define BGPTYPE_AS_PATH 2 -#define BGPTYPE_NEXT_HOP 3 -#define BGPTYPE_MULTI_EXIT_DISC 4 -#define BGPTYPE_LOCAL_PREF 5 -#define BGPTYPE_ATOMIC_AGGREGATE 6 -#define BGPTYPE_AGGREGATOR 7 -#define BGPTYPE_COMMUNITIES 8 /* RFC1997 */ -#define BGPTYPE_ORIGINATOR_ID 9 /* RFC1998 */ -#define BGPTYPE_CLUSTER_LIST 10 /* RFC1998 */ -#define BGPTYPE_DPA 11 /* draft-ietf-idr-bgp-dpa */ -#define BGPTYPE_ADVERTISERS 12 /* RFC1863 */ -#define BGPTYPE_RCID_PATH 13 /* RFC1863 */ -#define BGPTYPE_MP_REACH_NLRI 14 /* RFC2283 */ -#define BGPTYPE_MP_UNREACH_NLRI 15 /* RFC2283 */ -#define BGPTYPE_EXTD_COMMUNITIES 16 /* draft-ietf-idr-bgp-ext-communities */ -#define BGPTYPE_ATTR_SET 128 /* draft-marques-ppvpn-ibgp */ - -#define BGP_MP_NLRI_MINSIZE 3 /* End of RIB Marker detection */ - -static struct tok bgp_attr_values[] = { - { BGPTYPE_ORIGIN, "Origin"}, - { BGPTYPE_AS_PATH, "AS Path"}, - { BGPTYPE_NEXT_HOP, "Next Hop"}, - { BGPTYPE_MULTI_EXIT_DISC, "Multi Exit Discriminator"}, - { BGPTYPE_LOCAL_PREF, "Local Preference"}, - { BGPTYPE_ATOMIC_AGGREGATE, "Atomic Aggregate"}, - { BGPTYPE_AGGREGATOR, "Aggregator"}, - { BGPTYPE_COMMUNITIES, "Community"}, - { BGPTYPE_ORIGINATOR_ID, "Originator ID"}, - { BGPTYPE_CLUSTER_LIST, "Cluster List"}, - { BGPTYPE_DPA, "DPA"}, - { BGPTYPE_ADVERTISERS, "Advertisers"}, - { BGPTYPE_RCID_PATH, "RCID Path / Cluster ID"}, - { BGPTYPE_MP_REACH_NLRI, "Multi-Protocol Reach NLRI"}, - { BGPTYPE_MP_UNREACH_NLRI, "Multi-Protocol Unreach NLRI"}, - { BGPTYPE_EXTD_COMMUNITIES, "Extended Community"}, - { BGPTYPE_ATTR_SET, "Attribute Set"}, - { 255, "Reserved for development"}, - { 0, NULL} -}; - -#define BGP_AS_SET 1 -#define BGP_AS_SEQUENCE 2 -#define BGP_CONFED_AS_SEQUENCE 3 /* draft-ietf-idr-rfc3065bis-01 */ -#define BGP_CONFED_AS_SET 4 /* draft-ietf-idr-rfc3065bis-01 */ - -static struct tok bgp_as_path_segment_open_values[] = { - { BGP_AS_SEQUENCE, ""}, - { BGP_AS_SET, "{ "}, - { BGP_CONFED_AS_SEQUENCE, "( "}, - { BGP_CONFED_AS_SET, "({ "}, - { 0, NULL} -}; - -static struct tok bgp_as_path_segment_close_values[] = { - { BGP_AS_SEQUENCE, ""}, - { BGP_AS_SET, "}"}, - { BGP_CONFED_AS_SEQUENCE, ")"}, - { BGP_CONFED_AS_SET, "})"}, - { 0, NULL} -}; - -#define BGP_OPT_AUTH 1 -#define BGP_OPT_CAP 2 - - -static struct tok bgp_opt_values[] = { - { BGP_OPT_AUTH, "Authentication Information"}, - { BGP_OPT_CAP, "Capabilities Advertisement"}, - { 0, NULL} -}; - -#define BGP_CAPCODE_MP 1 -#define BGP_CAPCODE_RR 2 -#define BGP_CAPCODE_ORF 3 /* XXX */ -#define BGP_CAPCODE_RESTART 64 /* draft-ietf-idr-restart-05 */ -#define BGP_CAPCODE_AS_NEW 65 /* XXX */ -#define BGP_CAPCODE_DYN_CAP 67 /* XXX */ -#define BGP_CAPCODE_RR_CISCO 128 - -static struct tok bgp_capcode_values[] = { - { BGP_CAPCODE_MP, "Multiprotocol Extensions"}, - { BGP_CAPCODE_RR, "Route Refresh"}, - { BGP_CAPCODE_ORF, "Cooperative Route Filtering"}, - { BGP_CAPCODE_RESTART, "Graceful Restart"}, - { BGP_CAPCODE_AS_NEW, "32-Bit AS Number"}, - { BGP_CAPCODE_DYN_CAP, "Dynamic Capability"}, - { BGP_CAPCODE_RR_CISCO, "Route Refresh (Cisco)"}, - { 0, NULL} -}; - -#define BGP_NOTIFY_MAJOR_MSG 1 -#define BGP_NOTIFY_MAJOR_OPEN 2 -#define BGP_NOTIFY_MAJOR_UPDATE 3 -#define BGP_NOTIFY_MAJOR_HOLDTIME 4 -#define BGP_NOTIFY_MAJOR_FSM 5 -#define BGP_NOTIFY_MAJOR_CEASE 6 -#define BGP_NOTIFY_MAJOR_CAP 7 - -static struct tok bgp_notify_major_values[] = { - { BGP_NOTIFY_MAJOR_MSG, "Message Header Error"}, - { BGP_NOTIFY_MAJOR_OPEN, "OPEN Message Error"}, - { BGP_NOTIFY_MAJOR_UPDATE, "UPDATE Message Error"}, - { BGP_NOTIFY_MAJOR_HOLDTIME,"Hold Timer Expired"}, - { BGP_NOTIFY_MAJOR_FSM, "Finite State Machine Error"}, - { BGP_NOTIFY_MAJOR_CEASE, "Cease"}, - { BGP_NOTIFY_MAJOR_CAP, "Capability Message Error"}, - { 0, NULL} -}; - -/* draft-ietf-idr-cease-subcode-02 */ -#define BGP_NOTIFY_MINOR_CEASE_MAXPRFX 1 -static struct tok bgp_notify_minor_cease_values[] = { - { BGP_NOTIFY_MINOR_CEASE_MAXPRFX, "Maximum Number of Prefixes Reached"}, - { 2, "Administratively Shutdown"}, - { 3, "Peer Unconfigured"}, - { 4, "Administratively Reset"}, - { 5, "Connection Rejected"}, - { 6, "Other Configuration Change"}, - { 7, "Connection Collision Resolution"}, - { 0, NULL} -}; - -static struct tok bgp_notify_minor_msg_values[] = { - { 1, "Connection Not Synchronized"}, - { 2, "Bad Message Length"}, - { 3, "Bad Message Type"}, - { 0, NULL} -}; - -static struct tok bgp_notify_minor_open_values[] = { - { 1, "Unsupported Version Number"}, - { 2, "Bad Peer AS"}, - { 3, "Bad BGP Identifier"}, - { 4, "Unsupported Optional Parameter"}, - { 5, "Authentication Failure"}, - { 6, "Unacceptable Hold Time"}, - { 0, NULL} -}; - -static struct tok bgp_notify_minor_update_values[] = { - { 1, "Malformed Attribute List"}, - { 2, "Unrecognized Well-known Attribute"}, - { 3, "Missing Well-known Attribute"}, - { 4, "Attribute Flags Error"}, - { 5, "Attribute Length Error"}, - { 6, "Invalid ORIGIN Attribute"}, - { 7, "AS Routing Loop"}, - { 8, "Invalid NEXT_HOP Attribute"}, - { 9, "Optional Attribute Error"}, - { 10, "Invalid Network Field"}, - { 11, "Malformed AS_PATH"}, - { 0, NULL} -}; - -static struct tok bgp_notify_minor_cap_values[] = { - { 1, "Invalid Action Value" }, - { 2, "Invalid Capability Length" }, - { 3, "Malformed Capability Value" }, - { 4, "Unsupported Capability Code" }, - { 0, NULL } -}; - -static struct tok bgp_origin_values[] = { - { 0, "IGP"}, - { 1, "EGP"}, - { 2, "Incomplete"}, - { 0, NULL} -}; - -/* Subsequent address family identifier, RFC2283 section 7 */ -#define SAFNUM_RES 0 -#define SAFNUM_UNICAST 1 -#define SAFNUM_MULTICAST 2 -#define SAFNUM_UNIMULTICAST 3 -/* labeled BGP RFC3107 */ -#define SAFNUM_LABUNICAST 4 -#define SAFNUM_TUNNEL 64 /* XXX */ -#define SAFNUM_VPLS 65 /* XXX */ -#define SAFNUM_MDT 66 /* XXX */ -/* Section 4.3.4 of draft-rosen-rfc2547bis-03.txt */ -#define SAFNUM_VPNUNICAST 128 -#define SAFNUM_VPNMULTICAST 129 -#define SAFNUM_VPNUNIMULTICAST 130 -/* draft-marques-ppvpn-rt-constrain-01.txt */ -#define SAFNUM_RT_ROUTING_INFO 132 - -#define BGP_VPN_RD_LEN 8 - -static struct tok bgp_safi_values[] = { - { SAFNUM_RES, "Reserved"}, - { SAFNUM_UNICAST, "Unicast"}, - { SAFNUM_MULTICAST, "Multicast"}, - { SAFNUM_UNIMULTICAST, "Unicast+Multicast"}, - { SAFNUM_LABUNICAST, "labeled Unicast"}, - { SAFNUM_TUNNEL, "Tunnel"}, - { SAFNUM_VPLS, "VPLS"}, - { SAFNUM_MDT, "MDT"}, - { SAFNUM_VPNUNICAST, "labeled VPN Unicast"}, - { SAFNUM_VPNMULTICAST, "labeled VPN Multicast"}, - { SAFNUM_VPNUNIMULTICAST, "labeled VPN Unicast+Multicast"}, - { SAFNUM_RT_ROUTING_INFO, "Route Target Routing Information"}, /* draft-marques-ppvpn-rt-constrain-01.txt */ - { 0, NULL } -}; - -/* well-known community */ -#define BGP_COMMUNITY_NO_EXPORT 0xffffff01 -#define BGP_COMMUNITY_NO_ADVERT 0xffffff02 -#define BGP_COMMUNITY_NO_EXPORT_SUBCONFED 0xffffff03 - -/* RFC1700 address family numbers */ -#define AFNUM_INET 1 -#define AFNUM_INET6 2 -#define AFNUM_NSAP 3 -#define AFNUM_HDLC 4 -#define AFNUM_BBN1822 5 -#define AFNUM_802 6 -#define AFNUM_E163 7 -#define AFNUM_E164 8 -#define AFNUM_F69 9 -#define AFNUM_X121 10 -#define AFNUM_IPX 11 -#define AFNUM_ATALK 12 -#define AFNUM_DECNET 13 -#define AFNUM_BANYAN 14 -#define AFNUM_E164NSAP 15 -/* draft-kompella-ppvpn-l2vpn */ -#define AFNUM_L2VPN 196 /* still to be approved by IANA */ - -static struct tok bgp_afi_values[] = { - { 0, "Reserved"}, - { AFNUM_INET, "IPv4"}, - { AFNUM_INET6, "IPv6"}, - { AFNUM_NSAP, "NSAP"}, - { AFNUM_HDLC, "HDLC"}, - { AFNUM_BBN1822, "BBN 1822"}, - { AFNUM_802, "802"}, - { AFNUM_E163, "E.163"}, - { AFNUM_E164, "E.164"}, - { AFNUM_F69, "F.69"}, - { AFNUM_X121, "X.121"}, - { AFNUM_IPX, "Novell IPX"}, - { AFNUM_ATALK, "Appletalk"}, - { AFNUM_DECNET, "Decnet IV"}, - { AFNUM_BANYAN, "Banyan Vines"}, - { AFNUM_E164NSAP, "E.164 with NSAP subaddress"}, - { AFNUM_L2VPN, "Layer-2 VPN"}, - { 0, NULL}, -}; - -/* Extended community type - draft-ietf-idr-bgp-ext-communities-05 */ -#define BGP_EXT_COM_RT_0 0x0002 /* Route Target,Format AS(2bytes):AN(4bytes) */ -#define BGP_EXT_COM_RT_1 0x0102 /* Route Target,Format IP address:AN(2bytes) */ -#define BGP_EXT_COM_RT_2 0x0202 /* Route Target,Format AN(4bytes):local(2bytes) */ -#define BGP_EXT_COM_RO_0 0x0003 /* Route Origin,Format AS(2bytes):AN(4bytes) */ -#define BGP_EXT_COM_RO_1 0x0103 /* Route Origin,Format IP address:AN(2bytes) */ -#define BGP_EXT_COM_RO_2 0x0203 /* Route Origin,Format AN(4bytes):local(2bytes) */ -#define BGP_EXT_COM_LINKBAND 0x4004 /* Link Bandwidth,Format AS(2B):Bandwidth(4B) */ - /* rfc2547 bgp-mpls-vpns */ -#define BGP_EXT_COM_CISCO_MCAST 0x0009 /* cisco proprietary */ - -#define BGP_EXT_COM_VPN_ORIGIN 0x0005 /* OSPF Domain ID / VPN of Origin - draft-rosen-vpns-ospf-bgp-mpls */ -#define BGP_EXT_COM_VPN_ORIGIN2 0x0105 /* duplicate - keep for backwards compatability */ -#define BGP_EXT_COM_VPN_ORIGIN3 0x0205 /* duplicate - keep for backwards compatability */ -#define BGP_EXT_COM_VPN_ORIGIN4 0x8005 /* duplicate - keep for backwards compatability */ - -#define BGP_EXT_COM_OSPF_RTYPE 0x0306 /* OSPF Route Type,Format Area(4B):RouteType(1B):Options(1B) */ -#define BGP_EXT_COM_OSPF_RTYPE2 0x8000 /* duplicate - keep for backwards compatability */ - -#define BGP_EXT_COM_OSPF_RID 0x0107 /* OSPF Router ID,Format RouterID(4B):Unused(2B) */ -#define BGP_EXT_COM_OSPF_RID2 0x8001 /* duplicate - keep for backwards compatability */ - -#define BGP_EXT_COM_L2INFO 0x800a /* draft-kompella-ppvpn-l2vpn */ - -static struct tok bgp_extd_comm_flag_values[] = { - { 0x8000, "vendor-specific"}, - { 0x4000, "non-transitive"}, - { 0, NULL}, -}; - -static struct tok bgp_extd_comm_subtype_values[] = { - { BGP_EXT_COM_RT_0, "target"}, - { BGP_EXT_COM_RT_1, "target"}, - { BGP_EXT_COM_RT_2, "target"}, - { BGP_EXT_COM_RO_0, "origin"}, - { BGP_EXT_COM_RO_1, "origin"}, - { BGP_EXT_COM_RO_2, "origin"}, - { BGP_EXT_COM_LINKBAND, "link-BW"}, - { BGP_EXT_COM_CISCO_MCAST, "mdt-group"}, - { BGP_EXT_COM_VPN_ORIGIN, "ospf-domain"}, - { BGP_EXT_COM_VPN_ORIGIN2, "ospf-domain"}, - { BGP_EXT_COM_VPN_ORIGIN3, "ospf-domain"}, - { BGP_EXT_COM_VPN_ORIGIN4, "ospf-domain"}, - { BGP_EXT_COM_OSPF_RTYPE, "ospf-route-type"}, - { BGP_EXT_COM_OSPF_RTYPE2, "ospf-route-type"}, - { BGP_EXT_COM_OSPF_RID, "ospf-router-id"}, - { BGP_EXT_COM_OSPF_RID2, "ospf-router-id"}, - { BGP_EXT_COM_L2INFO, "layer2-info"}, - { 0, NULL}, -}; - -/* OSPF codes for BGP_EXT_COM_OSPF_RTYPE draft-rosen-vpns-ospf-bgp-mpls */ -#define BGP_OSPF_RTYPE_RTR 1 /* OSPF Router LSA */ -#define BGP_OSPF_RTYPE_NET 2 /* OSPF Network LSA */ -#define BGP_OSPF_RTYPE_SUM 3 /* OSPF Summary LSA */ -#define BGP_OSPF_RTYPE_EXT 5 /* OSPF External LSA, note that ASBR doesn't apply to MPLS-VPN */ -#define BGP_OSPF_RTYPE_NSSA 7 /* OSPF NSSA External*/ -#define BGP_OSPF_RTYPE_SHAM 129 /* OSPF-MPLS-VPN Sham link */ -#define BGP_OSPF_RTYPE_METRIC_TYPE 0x1 /* LSB of RTYPE Options Field */ - -static struct tok bgp_extd_comm_ospf_rtype_values[] = { - { BGP_OSPF_RTYPE_RTR, "Router" }, - { BGP_OSPF_RTYPE_NET, "Network" }, - { BGP_OSPF_RTYPE_SUM, "Summary" }, - { BGP_OSPF_RTYPE_EXT, "External" }, - { BGP_OSPF_RTYPE_NSSA,"NSSA External" }, - { BGP_OSPF_RTYPE_SHAM,"MPLS-VPN Sham" }, - { 0, NULL }, -}; - -int -decode_prefix4(const u_char *pptr, char *buf, u_int buflen) -{ - struct in_addr addr; - u_int plen; - - TCHECK(pptr[0]); - plen = pptr[0]; - if (32 < plen) - return -1; - - memset(&addr, 0, sizeof(addr)); - TCHECK2(pptr[1], (plen + 7) / 8); - memcpy(&addr, &pptr[1], (plen + 7) / 8); - if (plen % 8) { - ((u_char *)&addr)[(plen + 7) / 8 - 1] &= - ((0xff00 >> (plen % 8)) & 0xff); - } - snprintf(buf, buflen, "%s/%d", getname((u_char *)&addr), plen); - return 1 + (plen + 7) / 8; - -trunc: - return -2; -} - -static int -decode_labeled_prefix4(const u_char *pptr, char *buf, u_int buflen) -{ - struct in_addr addr; - u_int plen; - - TCHECK(pptr[0]); - plen = pptr[0]; /* get prefix length */ - - /* this is one of the weirdnesses of rfc3107 - the label length (actually the label + COS bits) - is added to the prefix length; - we also do only read out just one label - - there is no real application for advertisement of - stacked labels in a a single BGP message - */ - - plen-=24; /* adjust prefixlen - labellength */ - - if (32 < plen) - return -1; - - memset(&addr, 0, sizeof(addr)); - TCHECK2(pptr[4], (plen + 7) / 8); - memcpy(&addr, &pptr[4], (plen + 7) / 8); - if (plen % 8) { - ((u_char *)&addr)[(plen + 7) / 8 - 1] &= - ((0xff00 >> (plen % 8)) & 0xff); - } - /* the label may get offsetted by 4 bits so lets shift it right */ - snprintf(buf, buflen, "%s/%d, label:%u %s", - getname((u_char *)&addr), - plen, - EXTRACT_24BITS(pptr+1)>>4, - ((pptr[3]&1)==0) ? "(BOGUS: Bottom of Stack NOT set!)" : "(bottom)" ); - - return 4 + (plen + 7) / 8; - -trunc: - return -2; -} - -/* RDs and RTs share the same semantics - * we use bgp_vpn_rd_print for - * printing route targets inside a NLRI */ -char * -bgp_vpn_rd_print (const u_char *pptr) { - - /* allocate space for the largest possible string */ - static char rd[sizeof("xxxxxxxxxx:xxxxx (xxx.xxx.xxx.xxx:xxxxx)")]; - char *pos = rd; - - /* ok lets load the RD format */ - switch (EXTRACT_16BITS(pptr)) { - - /* AS:IP-address fmt*/ - case 0: - snprintf(pos, sizeof(rd) - (pos - rd), "%u:%u.%u.%u.%u", - EXTRACT_16BITS(pptr+2), *(pptr+4), *(pptr+5), *(pptr+6), *(pptr+7)); - break; - /* IP-address:AS fmt*/ - - case 1: - snprintf(pos, sizeof(rd) - (pos - rd), "%u.%u.%u.%u:%u", - *(pptr+2), *(pptr+3), *(pptr+4), *(pptr+5), EXTRACT_16BITS(pptr+6)); - break; - - /* 4-byte-AS:number fmt*/ - case 2: - snprintf(pos, sizeof(rd) - (pos - rd), "%u:%u (%u.%u.%u.%u:%u)", - EXTRACT_32BITS(pptr+2), EXTRACT_16BITS(pptr+6), - *(pptr+2), *(pptr+3), *(pptr+4), *(pptr+5), EXTRACT_16BITS(pptr+6)); - break; - default: - snprintf(pos, sizeof(rd) - (pos - rd), "unknown RD format"); - break; - } - pos += strlen(pos); - *(pos) = '\0'; - return (rd); -} - -static int -decode_rt_routing_info(const u_char *pptr, char *buf, u_int buflen) -{ - u_int8_t route_target[8]; - u_int plen; - - TCHECK(pptr[0]); - plen = pptr[0]; /* get prefix length */ - - plen-=32; /* adjust prefix length */ - - if (0 < plen) - return -1; - - memset(&route_target, 0, sizeof(route_target)); - TCHECK2(pptr[1], (plen + 7) / 8); - memcpy(&route_target, &pptr[1], (plen + 7) / 8); - if (plen % 8) { - ((u_char *)&route_target)[(plen + 7) / 8 - 1] &= - ((0xff00 >> (plen % 8)) & 0xff); - } - snprintf(buf, buflen, "origin AS: %u, route target %s", - EXTRACT_32BITS(pptr+1), - bgp_vpn_rd_print((u_char *)&route_target)); - - return 5 + (plen + 7) / 8; - -trunc: - return -2; -} - -static int -decode_labeled_vpn_prefix4(const u_char *pptr, char *buf, u_int buflen) -{ - struct in_addr addr; - u_int plen; - - TCHECK(pptr[0]); - plen = pptr[0]; /* get prefix length */ - - plen-=(24+64); /* adjust prefixlen - labellength - RD len*/ - - if (32 < plen) - return -1; - - memset(&addr, 0, sizeof(addr)); - TCHECK2(pptr[12], (plen + 7) / 8); - memcpy(&addr, &pptr[12], (plen + 7) / 8); - if (plen % 8) { - ((u_char *)&addr)[(plen + 7) / 8 - 1] &= - ((0xff00 >> (plen % 8)) & 0xff); - } - /* the label may get offsetted by 4 bits so lets shift it right */ - snprintf(buf, buflen, "RD: %s, %s/%d, label:%u %s", - bgp_vpn_rd_print(pptr+4), - getname((u_char *)&addr), - plen, - EXTRACT_24BITS(pptr+1)>>4, - ((pptr[3]&1)==0) ? "(BOGUS: Bottom of Stack NOT set!)" : "(bottom)" ); - - return 12 + (plen + 7) / 8; - -trunc: - return -2; -} - -static int -decode_labeled_vpn_l2(const u_char *pptr, char *buf, u_int buflen) -{ - int plen,tlen,strlen,tlv_type,tlv_len,ttlv_len; - - TCHECK2(pptr[0], 2); - plen=EXTRACT_16BITS(pptr); - tlen=plen; - pptr+=2; - TCHECK2(pptr[0],15); - strlen=snprintf(buf, buflen, "RD: %s, CE-ID: %u, Label-Block Offset: %u, Label Base %u", - bgp_vpn_rd_print(pptr), - EXTRACT_16BITS(pptr+8), - EXTRACT_16BITS(pptr+10), - EXTRACT_24BITS(pptr+12)>>4); /* the label is offsetted by 4 bits so lets shift it right */ - pptr+=15; - tlen-=15; - - /* ok now the variable part - lets read out TLVs*/ - while (tlen>0) { - if (tlen < 3) - return -1; - TCHECK2(pptr[0], 3); - tlv_type=*pptr++; - tlv_len=EXTRACT_16BITS(pptr); - ttlv_len=tlv_len; - pptr+=2; - - switch(tlv_type) { - case 1: - strlen+=snprintf(buf+strlen,buflen-strlen, "\n\t\tcircuit status vector (%u) length: %u: 0x", - tlv_type, - tlv_len); - ttlv_len=ttlv_len/8+1; /* how many bytes do we need to read ? */ - while (ttlv_len>0) { - TCHECK(pptr[0]); - strlen+=snprintf(buf+strlen,buflen-strlen, "%02x",*pptr++); - ttlv_len--; - } - break; - default: - snprintf(buf+strlen,buflen-strlen, "\n\t\tunknown TLV #%u, length: %u", - tlv_type, - tlv_len); - break; - } - tlen-=(tlv_len<<3); /* the tlv-length is expressed in bits so lets shift it tright */ - } - return plen+2; - -trunc: - return -2; -} - -#ifdef INET6 -int -decode_prefix6(const u_char *pd, char *buf, u_int buflen) -{ - struct in6_addr addr; - u_int plen; - - TCHECK(pd[0]); - plen = pd[0]; - if (128 < plen) - return -1; - - memset(&addr, 0, sizeof(addr)); - TCHECK2(pd[1], (plen + 7) / 8); - memcpy(&addr, &pd[1], (plen + 7) / 8); - if (plen % 8) { - addr.s6_addr[(plen + 7) / 8 - 1] &= - ((0xff00 >> (plen % 8)) & 0xff); - } - snprintf(buf, buflen, "%s/%d", getname6((u_char *)&addr), plen); - return 1 + (plen + 7) / 8; - -trunc: - return -2; -} - -static int -decode_labeled_prefix6(const u_char *pptr, char *buf, u_int buflen) -{ - struct in6_addr addr; - u_int plen; - - TCHECK(pptr[0]); - plen = pptr[0]; /* get prefix length */ - plen-=24; /* adjust prefixlen - labellength */ - - if (128 < plen) - return -1; - - memset(&addr, 0, sizeof(addr)); - TCHECK2(pptr[4], (plen + 7) / 8); - memcpy(&addr, &pptr[4], (plen + 7) / 8); - if (plen % 8) { - addr.s6_addr[(plen + 7) / 8 - 1] &= - ((0xff00 >> (plen % 8)) & 0xff); - } - /* the label may get offsetted by 4 bits so lets shift it right */ - snprintf(buf, buflen, "%s/%d, label:%u %s", - getname6((u_char *)&addr), - plen, - EXTRACT_24BITS(pptr+1)>>4, - ((pptr[3]&1)==0) ? "(BOGUS: Bottom of Stack NOT set!)" : "(bottom)" ); - - return 4 + (plen + 7) / 8; - -trunc: - return -2; -} - -static int -decode_labeled_vpn_prefix6(const u_char *pptr, char *buf, u_int buflen) -{ - struct in6_addr addr; - u_int plen; - - TCHECK(pptr[0]); - plen = pptr[0]; /* get prefix length */ - - plen-=(24+64); /* adjust prefixlen - labellength - RD len*/ - - if (128 < plen) - return -1; - - memset(&addr, 0, sizeof(addr)); - TCHECK2(pptr[12], (plen + 7) / 8); - memcpy(&addr, &pptr[12], (plen + 7) / 8); - if (plen % 8) { - addr.s6_addr[(plen + 7) / 8 - 1] &= - ((0xff00 >> (plen % 8)) & 0xff); - } - /* the label may get offsetted by 4 bits so lets shift it right */ - snprintf(buf, buflen, "RD: %s, %s/%d, label:%u %s", - bgp_vpn_rd_print(pptr+4), - getname6((u_char *)&addr), - plen, - EXTRACT_24BITS(pptr+1)>>4, - ((pptr[3]&1)==0) ? "(BOGUS: Bottom of Stack NOT set!)" : "(bottom)" ); - - return 12 + (plen + 7) / 8; - -trunc: - return -2; -} -#endif - -static int -decode_clnp_prefix(const u_char *pptr, char *buf, u_int buflen) -{ - u_int8_t addr[19]; - u_int plen; - - TCHECK(pptr[0]); - plen = pptr[0]; /* get prefix length */ - - if (152 < plen) - return -1; - - memset(&addr, 0, sizeof(addr)); - TCHECK2(pptr[4], (plen + 7) / 8); - memcpy(&addr, &pptr[4], (plen + 7) / 8); - if (plen % 8) { - addr[(plen + 7) / 8 - 1] &= - ((0xff00 >> (plen % 8)) & 0xff); - } - snprintf(buf, buflen, "%s/%d", - isonsap_string(addr,(plen + 7) / 8), - plen); - - return 1 + (plen + 7) / 8; - -trunc: - return -2; -} - -static int -decode_labeled_vpn_clnp_prefix(const u_char *pptr, char *buf, u_int buflen) -{ - u_int8_t addr[19]; - u_int plen; - - TCHECK(pptr[0]); - plen = pptr[0]; /* get prefix length */ - - plen-=(24+64); /* adjust prefixlen - labellength - RD len*/ - - if (152 < plen) - return -1; - - memset(&addr, 0, sizeof(addr)); - TCHECK2(pptr[12], (plen + 7) / 8); - memcpy(&addr, &pptr[12], (plen + 7) / 8); - if (plen % 8) { - addr[(plen + 7) / 8 - 1] &= - ((0xff00 >> (plen % 8)) & 0xff); - } - /* the label may get offsetted by 4 bits so lets shift it right */ - snprintf(buf, buflen, "RD: %s, %s/%d, label:%u %s", - bgp_vpn_rd_print(pptr+4), - isonsap_string(addr,(plen + 7) / 8), - plen, - EXTRACT_24BITS(pptr+1)>>4, - ((pptr[3]&1)==0) ? "(BOGUS: Bottom of Stack NOT set!)" : "(bottom)" ); - - return 12 + (plen + 7) / 8; - -trunc: - return -2; -} - -static int -bgp_attr_print(const struct bgp_attr *attr, const u_char *pptr, int len) -{ - int i; - u_int16_t af; - u_int8_t safi, snpa, nhlen; - union { /* copy buffer for bandwidth values */ - float f; - u_int32_t i; - } bw; - int advance; - int tlen; - const u_char *tptr; - char buf[MAXHOSTNAMELEN + 100]; - char tokbuf[TOKBUFSIZE]; - - tptr = pptr; - tlen=len; - - switch (attr->bgpa_type) { - case BGPTYPE_ORIGIN: - if (len != 1) - printf("invalid len"); - else { - TCHECK(*tptr); - printf("%s", tok2strbuf(bgp_origin_values, - "Unknown Origin Typecode", - tptr[0], - tokbuf, sizeof(tokbuf))); - } - break; - - case BGPTYPE_AS_PATH: - if (len % 2) { - printf("invalid len"); - break; - } - if (!len) { - printf("empty"); - break; - } - - while (tptr < pptr + len) { - TCHECK(tptr[0]); - printf("%s", tok2strbuf(bgp_as_path_segment_open_values, - "?", tptr[0], - tokbuf, sizeof(tokbuf))); - for (i = 0; i < tptr[1] * 2; i += 2) { - TCHECK2(tptr[2 + i], 2); - printf("%u ", EXTRACT_16BITS(&tptr[2 + i])); - } - TCHECK(tptr[0]); - printf("%s", tok2strbuf(bgp_as_path_segment_close_values, - "?", tptr[0], - tokbuf, sizeof(tokbuf))); - TCHECK(tptr[1]); - tptr += 2 + tptr[1] * 2; - } - break; - case BGPTYPE_NEXT_HOP: - if (len != 4) - printf("invalid len"); - else { - TCHECK2(tptr[0], 4); - printf("%s", getname(tptr)); - } - break; - case BGPTYPE_MULTI_EXIT_DISC: - case BGPTYPE_LOCAL_PREF: - if (len != 4) - printf("invalid len"); - else { - TCHECK2(tptr[0], 4); - printf("%u", EXTRACT_32BITS(tptr)); - } - break; - case BGPTYPE_ATOMIC_AGGREGATE: - if (len != 0) - printf("invalid len"); - break; - case BGPTYPE_AGGREGATOR: - if (len != 6) { - printf("invalid len"); - break; - } - TCHECK2(tptr[0], 6); - printf(" AS #%u, origin %s", EXTRACT_16BITS(tptr), - getname(tptr + 2)); - break; - case BGPTYPE_COMMUNITIES: - if (len % 4) { - printf("invalid len"); - break; - } - while (tlen>0) { - u_int32_t comm; - TCHECK2(tptr[0], 4); - comm = EXTRACT_32BITS(tptr); - switch (comm) { - case BGP_COMMUNITY_NO_EXPORT: - printf(" NO_EXPORT"); - break; - case BGP_COMMUNITY_NO_ADVERT: - printf(" NO_ADVERTISE"); - break; - case BGP_COMMUNITY_NO_EXPORT_SUBCONFED: - printf(" NO_EXPORT_SUBCONFED"); - break; - default: - printf("%u:%u%s", - (comm >> 16) & 0xffff, - comm & 0xffff, - (tlen>4) ? ", " : ""); - break; - } - tlen -=4; - tptr +=4; - } - break; - case BGPTYPE_ORIGINATOR_ID: - if (len != 4) { - printf("invalid len"); - break; - } - TCHECK2(tptr[0], 4); - printf("%s",getname(tptr)); - break; - case BGPTYPE_CLUSTER_LIST: - if (len % 4) { - printf("invalid len"); - break; - } - while (tlen>0) { - TCHECK2(tptr[0], 4); - printf("%s%s", - getname(tptr), - (tlen>4) ? ", " : ""); - tlen -=4; - tptr +=4; - } - break; - case BGPTYPE_MP_REACH_NLRI: - TCHECK2(tptr[0], 3); - af = EXTRACT_16BITS(tptr); - safi = tptr[2]; - - printf("\n\t AFI: %s (%u), %sSAFI: %s (%u)", - tok2strbuf(bgp_afi_values, "Unknown AFI", af, - tokbuf, sizeof(tokbuf)), - af, - (safi>128) ? "vendor specific " : "", /* 128 is meanwhile wellknown */ - tok2strbuf(bgp_safi_values, "Unknown SAFI", safi, - tokbuf, sizeof(tokbuf)), - safi); - - switch(af<<8 | safi) { - case (AFNUM_INET<<8 | SAFNUM_UNICAST): - case (AFNUM_INET<<8 | SAFNUM_MULTICAST): - case (AFNUM_INET<<8 | SAFNUM_UNIMULTICAST): - case (AFNUM_INET<<8 | SAFNUM_LABUNICAST): - case (AFNUM_INET<<8 | SAFNUM_RT_ROUTING_INFO): - case (AFNUM_INET<<8 | SAFNUM_VPNUNICAST): - case (AFNUM_INET<<8 | SAFNUM_VPNMULTICAST): - case (AFNUM_INET<<8 | SAFNUM_VPNUNIMULTICAST): -#ifdef INET6 - case (AFNUM_INET6<<8 | SAFNUM_UNICAST): - case (AFNUM_INET6<<8 | SAFNUM_MULTICAST): - case (AFNUM_INET6<<8 | SAFNUM_UNIMULTICAST): - case (AFNUM_INET6<<8 | SAFNUM_LABUNICAST): - case (AFNUM_INET6<<8 | SAFNUM_RT_ROUTING_INFO): - case (AFNUM_INET6<<8 | SAFNUM_VPNUNICAST): - case (AFNUM_INET6<<8 | SAFNUM_VPNMULTICAST): - case (AFNUM_INET6<<8 | SAFNUM_VPNUNIMULTICAST): -#endif - case (AFNUM_NSAP<<8 | SAFNUM_UNICAST): - case (AFNUM_NSAP<<8 | SAFNUM_MULTICAST): - case (AFNUM_NSAP<<8 | SAFNUM_UNIMULTICAST): - case (AFNUM_NSAP<<8 | SAFNUM_VPNUNICAST): - case (AFNUM_NSAP<<8 | SAFNUM_VPNMULTICAST): - case (AFNUM_NSAP<<8 | SAFNUM_VPNUNIMULTICAST): - case (AFNUM_L2VPN<<8 | SAFNUM_VPNUNICAST): - case (AFNUM_L2VPN<<8 | SAFNUM_VPNMULTICAST): - case (AFNUM_L2VPN<<8 | SAFNUM_VPNUNIMULTICAST): - break; - default: - TCHECK2(tptr[0], tlen); - printf("\n\t no AFI %u / SAFI %u decoder",af,safi); - if (vflag <= 1) - print_unknown_data(tptr,"\n\t ",tlen); - goto done; - break; - } - - tptr +=3; - - TCHECK(tptr[0]); - nhlen = tptr[0]; - tlen = nhlen; - tptr++; - - if (tlen) { - printf("\n\t nexthop: "); - while (tlen > 0) { - switch(af<<8 | safi) { - case (AFNUM_INET<<8 | SAFNUM_UNICAST): - case (AFNUM_INET<<8 | SAFNUM_MULTICAST): - case (AFNUM_INET<<8 | SAFNUM_UNIMULTICAST): - case (AFNUM_INET<<8 | SAFNUM_LABUNICAST): - case (AFNUM_INET<<8 | SAFNUM_RT_ROUTING_INFO): - if (tlen < (int)sizeof(struct in_addr)) { - printf("invalid len"); - tlen = 0; - } else { - TCHECK2(tptr[0], sizeof(struct in_addr)); - printf("%s",getname(tptr)); - tlen -= sizeof(struct in_addr); - tptr += sizeof(struct in_addr); - } - break; - case (AFNUM_INET<<8 | SAFNUM_VPNUNICAST): - case (AFNUM_INET<<8 | SAFNUM_VPNMULTICAST): - case (AFNUM_INET<<8 | SAFNUM_VPNUNIMULTICAST): - if (tlen < (int)(sizeof(struct in_addr)+BGP_VPN_RD_LEN)) { - printf("invalid len"); - tlen = 0; - } else { - TCHECK2(tptr[0], sizeof(struct in_addr)+BGP_VPN_RD_LEN); - printf("RD: %s, %s", - bgp_vpn_rd_print(tptr), - getname(tptr+BGP_VPN_RD_LEN)); - tlen -= (sizeof(struct in_addr)+BGP_VPN_RD_LEN); - tptr += (sizeof(struct in_addr)+BGP_VPN_RD_LEN); - } - break; -#ifdef INET6 - case (AFNUM_INET6<<8 | SAFNUM_UNICAST): - case (AFNUM_INET6<<8 | SAFNUM_MULTICAST): - case (AFNUM_INET6<<8 | SAFNUM_UNIMULTICAST): - case (AFNUM_INET6<<8 | SAFNUM_LABUNICAST): - case (AFNUM_INET6<<8 | SAFNUM_RT_ROUTING_INFO): - if (tlen < (int)sizeof(struct in6_addr)) { - printf("invalid len"); - tlen = 0; - } else { - TCHECK2(tptr[0], sizeof(struct in6_addr)); - printf("%s", getname6(tptr)); - tlen -= sizeof(struct in6_addr); - tptr += sizeof(struct in6_addr); - } - break; - case (AFNUM_INET6<<8 | SAFNUM_VPNUNICAST): - case (AFNUM_INET6<<8 | SAFNUM_VPNMULTICAST): - case (AFNUM_INET6<<8 | SAFNUM_VPNUNIMULTICAST): - if (tlen < (int)(sizeof(struct in6_addr)+BGP_VPN_RD_LEN)) { - printf("invalid len"); - tlen = 0; - } else { - TCHECK2(tptr[0], sizeof(struct in6_addr)+BGP_VPN_RD_LEN); - printf("RD: %s, %s", - bgp_vpn_rd_print(tptr), - getname6(tptr+BGP_VPN_RD_LEN)); - tlen -= (sizeof(struct in6_addr)+BGP_VPN_RD_LEN); - tptr += (sizeof(struct in6_addr)+BGP_VPN_RD_LEN); - } - break; -#endif - case (AFNUM_L2VPN<<8 | SAFNUM_VPNUNICAST): - case (AFNUM_L2VPN<<8 | SAFNUM_VPNMULTICAST): - case (AFNUM_L2VPN<<8 | SAFNUM_VPNUNIMULTICAST): - if (tlen < (int)sizeof(struct in_addr)) { - printf("invalid len"); - tlen = 0; - } else { - TCHECK2(tptr[0], sizeof(struct in_addr)); - printf("%s", getname(tptr)); - tlen -= (sizeof(struct in_addr)); - tptr += (sizeof(struct in_addr)); - } - break; - case (AFNUM_NSAP<<8 | SAFNUM_UNICAST): - case (AFNUM_NSAP<<8 | SAFNUM_MULTICAST): - case (AFNUM_NSAP<<8 | SAFNUM_UNIMULTICAST): - TCHECK2(tptr[0], tlen); - printf("%s",isonsap_string(tptr,tlen)); - tptr += tlen; - tlen = 0; - break; - - case (AFNUM_NSAP<<8 | SAFNUM_VPNUNICAST): - case (AFNUM_NSAP<<8 | SAFNUM_VPNMULTICAST): - case (AFNUM_NSAP<<8 | SAFNUM_VPNUNIMULTICAST): - if (tlen < BGP_VPN_RD_LEN+1) { - printf("invalid len"); - tlen = 0; - } else { - TCHECK2(tptr[0], tlen); - printf("RD: %s, %s", - bgp_vpn_rd_print(tptr), - isonsap_string(tptr+BGP_VPN_RD_LEN,tlen-BGP_VPN_RD_LEN)); - /* rfc986 mapped IPv4 address ? */ - if (EXTRACT_32BITS(tptr+BGP_VPN_RD_LEN) == 0x47000601) - printf(" = %s", getname(tptr+BGP_VPN_RD_LEN+4)); -#ifdef INET6 - /* rfc1888 mapped IPv6 address ? */ - else if (EXTRACT_24BITS(tptr+BGP_VPN_RD_LEN) == 0x350000) - printf(" = %s", getname6(tptr+BGP_VPN_RD_LEN+3)); -#endif - tptr += tlen; - tlen = 0; - } - break; - default: - TCHECK2(tptr[0], tlen); - printf("no AFI %u/SAFI %u decoder",af,safi); - if (vflag <= 1) - print_unknown_data(tptr,"\n\t ",tlen); - tptr += tlen; - tlen = 0; - goto done; - break; - } - } - } - printf(", nh-length: %u", nhlen); - tptr += tlen; - - TCHECK(tptr[0]); - snpa = tptr[0]; - tptr++; - - if (snpa) { - printf("\n\t %u SNPA", snpa); - for (/*nothing*/; snpa > 0; snpa--) { - TCHECK(tptr[0]); - printf("\n\t %d bytes", tptr[0]); - tptr += tptr[0] + 1; - } - } else { - printf(", no SNPA"); - } - - while (len - (tptr - pptr) > 0) { - switch (af<<8 | safi) { - case (AFNUM_INET<<8 | SAFNUM_UNICAST): - case (AFNUM_INET<<8 | SAFNUM_MULTICAST): - case (AFNUM_INET<<8 | SAFNUM_UNIMULTICAST): - advance = decode_prefix4(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal prefix length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; - case (AFNUM_INET<<8 | SAFNUM_LABUNICAST): - advance = decode_labeled_prefix4(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal prefix length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; - case (AFNUM_INET<<8 | SAFNUM_VPNUNICAST): - case (AFNUM_INET<<8 | SAFNUM_VPNMULTICAST): - case (AFNUM_INET<<8 | SAFNUM_VPNUNIMULTICAST): - advance = decode_labeled_vpn_prefix4(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal prefix length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; - case (AFNUM_INET<<8 | SAFNUM_RT_ROUTING_INFO): - advance = decode_rt_routing_info(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal prefix length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; -#ifdef INET6 - case (AFNUM_INET6<<8 | SAFNUM_UNICAST): - case (AFNUM_INET6<<8 | SAFNUM_MULTICAST): - case (AFNUM_INET6<<8 | SAFNUM_UNIMULTICAST): - advance = decode_prefix6(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal prefix length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; - case (AFNUM_INET6<<8 | SAFNUM_LABUNICAST): - advance = decode_labeled_prefix6(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal prefix length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; - case (AFNUM_INET6<<8 | SAFNUM_VPNUNICAST): - case (AFNUM_INET6<<8 | SAFNUM_VPNMULTICAST): - case (AFNUM_INET6<<8 | SAFNUM_VPNUNIMULTICAST): - advance = decode_labeled_vpn_prefix6(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal prefix length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; - case (AFNUM_INET6<<8 | SAFNUM_RT_ROUTING_INFO): - advance = decode_rt_routing_info(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal prefix length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; -#endif - case (AFNUM_L2VPN<<8 | SAFNUM_VPNUNICAST): - case (AFNUM_L2VPN<<8 | SAFNUM_VPNMULTICAST): - case (AFNUM_L2VPN<<8 | SAFNUM_VPNUNIMULTICAST): - advance = decode_labeled_vpn_l2(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; - case (AFNUM_NSAP<<8 | SAFNUM_UNICAST): - case (AFNUM_NSAP<<8 | SAFNUM_MULTICAST): - case (AFNUM_NSAP<<8 | SAFNUM_UNIMULTICAST): - advance = decode_clnp_prefix(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal prefix length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; - case (AFNUM_NSAP<<8 | SAFNUM_VPNUNICAST): - case (AFNUM_NSAP<<8 | SAFNUM_VPNMULTICAST): - case (AFNUM_NSAP<<8 | SAFNUM_VPNUNIMULTICAST): - advance = decode_labeled_vpn_clnp_prefix(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal prefix length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; - default: - TCHECK2(*tptr,tlen); - printf("\n\t no AFI %u / SAFI %u decoder",af,safi); - if (vflag <= 1) - print_unknown_data(tptr,"\n\t ",tlen); - advance = 0; - tptr = pptr + len; - break; - } - if (advance < 0) - break; - tptr += advance; - } - done: - break; - - case BGPTYPE_MP_UNREACH_NLRI: - TCHECK2(tptr[0], BGP_MP_NLRI_MINSIZE); - af = EXTRACT_16BITS(tptr); - safi = tptr[2]; - - printf("\n\t AFI: %s (%u), %sSAFI: %s (%u)", - tok2strbuf(bgp_afi_values, "Unknown AFI", af, - tokbuf, sizeof(tokbuf)), - af, - (safi>128) ? "vendor specific " : "", /* 128 is meanwhile wellknown */ - tok2strbuf(bgp_safi_values, "Unknown SAFI", safi, - tokbuf, sizeof(tokbuf)), - safi); - - if (len == BGP_MP_NLRI_MINSIZE) - printf("\n\t End-of-Rib Marker (empty NLRI)"); - - tptr += 3; - - while (len - (tptr - pptr) > 0) { - switch (af<<8 | safi) { - case (AFNUM_INET<<8 | SAFNUM_UNICAST): - case (AFNUM_INET<<8 | SAFNUM_MULTICAST): - case (AFNUM_INET<<8 | SAFNUM_UNIMULTICAST): - advance = decode_prefix4(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal prefix length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; - case (AFNUM_INET<<8 | SAFNUM_LABUNICAST): - advance = decode_labeled_prefix4(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal prefix length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; - case (AFNUM_INET<<8 | SAFNUM_VPNUNICAST): - case (AFNUM_INET<<8 | SAFNUM_VPNMULTICAST): - case (AFNUM_INET<<8 | SAFNUM_VPNUNIMULTICAST): - advance = decode_labeled_vpn_prefix4(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal prefix length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; -#ifdef INET6 - case (AFNUM_INET6<<8 | SAFNUM_UNICAST): - case (AFNUM_INET6<<8 | SAFNUM_MULTICAST): - case (AFNUM_INET6<<8 | SAFNUM_UNIMULTICAST): - advance = decode_prefix6(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal prefix length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; - case (AFNUM_INET6<<8 | SAFNUM_LABUNICAST): - advance = decode_labeled_prefix6(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal prefix length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; - case (AFNUM_INET6<<8 | SAFNUM_VPNUNICAST): - case (AFNUM_INET6<<8 | SAFNUM_VPNMULTICAST): - case (AFNUM_INET6<<8 | SAFNUM_VPNUNIMULTICAST): - advance = decode_labeled_vpn_prefix6(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal prefix length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; -#endif - case (AFNUM_L2VPN<<8 | SAFNUM_VPNUNICAST): - case (AFNUM_L2VPN<<8 | SAFNUM_VPNMULTICAST): - case (AFNUM_L2VPN<<8 | SAFNUM_VPNUNIMULTICAST): - advance = decode_labeled_vpn_l2(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; - case (AFNUM_NSAP<<8 | SAFNUM_UNICAST): - case (AFNUM_NSAP<<8 | SAFNUM_MULTICAST): - case (AFNUM_NSAP<<8 | SAFNUM_UNIMULTICAST): - advance = decode_clnp_prefix(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal prefix length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; - case (AFNUM_NSAP<<8 | SAFNUM_VPNUNICAST): - case (AFNUM_NSAP<<8 | SAFNUM_VPNMULTICAST): - case (AFNUM_NSAP<<8 | SAFNUM_VPNUNIMULTICAST): - advance = decode_labeled_vpn_clnp_prefix(tptr, buf, sizeof(buf)); - if (advance == -1) - printf("\n\t (illegal prefix length)"); - else if (advance == -2) - goto trunc; - else - printf("\n\t %s", buf); - break; - default: - TCHECK2(*(tptr-3),tlen); - printf("no AFI %u / SAFI %u decoder",af,safi); - if (vflag <= 1) - print_unknown_data(tptr-3,"\n\t ",tlen); - advance = 0; - tptr = pptr + len; - break; - } - if (advance < 0) - break; - tptr += advance; - } - break; - case BGPTYPE_EXTD_COMMUNITIES: - if (len % 8) { - printf("invalid len"); - break; - } - while (tlen>0) { - u_int16_t extd_comm; - - TCHECK2(tptr[0], 2); - extd_comm=EXTRACT_16BITS(tptr); - - printf("\n\t %s (0x%04x), Flags [%s]", - tok2strbuf(bgp_extd_comm_subtype_values, - "unknown extd community typecode", - extd_comm, tokbuf, sizeof(tokbuf)), - extd_comm, - bittok2str(bgp_extd_comm_flag_values, "none", extd_comm)); - - TCHECK2(*(tptr+2), 6); - switch(extd_comm) { - case BGP_EXT_COM_RT_0: - case BGP_EXT_COM_RO_0: - printf(": %u:%s", - EXTRACT_16BITS(tptr+2), - getname(tptr+4)); - break; - case BGP_EXT_COM_RT_1: - case BGP_EXT_COM_RO_1: - printf(": %s:%u", - getname(tptr+2), - EXTRACT_16BITS(tptr+6)); - break; - case BGP_EXT_COM_RT_2: - case BGP_EXT_COM_RO_2: - printf(": %u:%u", - EXTRACT_32BITS(tptr+2), - EXTRACT_16BITS(tptr+6)); - break; - case BGP_EXT_COM_LINKBAND: - bw.i = EXTRACT_32BITS(tptr+2); - printf(": bandwidth: %.3f Mbps", - bw.f*8/1000000); - break; - case BGP_EXT_COM_CISCO_MCAST: - printf(": AS %u, group %s", - EXTRACT_16BITS(tptr+2), - getname(tptr+4)); - break; - case BGP_EXT_COM_VPN_ORIGIN: - case BGP_EXT_COM_VPN_ORIGIN2: - case BGP_EXT_COM_VPN_ORIGIN3: - case BGP_EXT_COM_VPN_ORIGIN4: - case BGP_EXT_COM_OSPF_RID: - case BGP_EXT_COM_OSPF_RID2: - printf("%s", getname(tptr+2)); - break; - case BGP_EXT_COM_OSPF_RTYPE: - case BGP_EXT_COM_OSPF_RTYPE2: - printf(": area:%s, router-type:%s, metric-type:%s%s", - getname(tptr+2), - tok2strbuf(bgp_extd_comm_ospf_rtype_values, - "unknown (0x%02x)", - *(tptr+6), - tokbuf, sizeof(tokbuf)), - (*(tptr+7) & BGP_OSPF_RTYPE_METRIC_TYPE) ? "E2" : "", - (*(tptr+6) == (BGP_OSPF_RTYPE_EXT ||BGP_OSPF_RTYPE_NSSA )) ? "E1" : ""); - break; - case BGP_EXT_COM_L2INFO: - printf(": %s Control Flags [0x%02x]:MTU %u", - tok2strbuf(l2vpn_encaps_values, - "unknown encaps", - *(tptr+2), - tokbuf, sizeof(tokbuf)), - *(tptr+3), - EXTRACT_16BITS(tptr+4)); - break; - default: - TCHECK2(*tptr,8); - print_unknown_data(tptr,"\n\t ",8); - break; - } - tlen -=8; - tptr +=8; - } - break; - - case BGPTYPE_ATTR_SET: - TCHECK2(tptr[0], 4); - printf("\n\t Origin AS: %u", EXTRACT_32BITS(tptr)); - tptr+=4; - len -=4; - - while (len >= 2 ) { - int alen; - struct bgp_attr bgpa; - - TCHECK2(tptr[0], sizeof(bgpa)); - memcpy(&bgpa, tptr, sizeof(bgpa)); - alen = bgp_attr_len(&bgpa); - tptr += bgp_attr_off(&bgpa); - len -= bgp_attr_off(&bgpa); - - printf("\n\t %s (%u), length: %u", - tok2strbuf(bgp_attr_values, - "Unknown Attribute", bgpa.bgpa_type, - tokbuf, sizeof(tokbuf)), - bgpa.bgpa_type, - alen); - - if (bgpa.bgpa_flags) { - printf(", Flags [%s%s%s%s", - bgpa.bgpa_flags & 0x80 ? "O" : "", - bgpa.bgpa_flags & 0x40 ? "T" : "", - bgpa.bgpa_flags & 0x20 ? "P" : "", - bgpa.bgpa_flags & 0x10 ? "E" : ""); - if (bgpa.bgpa_flags & 0xf) - printf("+%x", bgpa.bgpa_flags & 0xf); - printf("]: "); - } - /* FIXME check for recursion */ - if (!bgp_attr_print(&bgpa, tptr, alen)) - return 0; - tptr += alen; - len -= alen; - } - break; - - - default: - TCHECK2(*pptr,len); - printf("\n\t no Attribute %u decoder",attr->bgpa_type); /* we have no decoder for the attribute */ - if (vflag <= 1) - print_unknown_data(pptr,"\n\t ",len); - break; - } - if (vflag > 1 && len) { /* omit zero length attributes*/ - TCHECK2(*pptr,len); - print_unknown_data(pptr,"\n\t ",len); - } - return 1; - -trunc: - return 0; -} - -static void -bgp_open_print(const u_char *dat, int length) -{ - struct bgp_open bgpo; - struct bgp_opt bgpopt; - const u_char *opt; - int i,cap_type,cap_len,tcap_len,cap_offset; - char tokbuf[TOKBUFSIZE]; - char tokbuf2[TOKBUFSIZE]; - - TCHECK2(dat[0], BGP_OPEN_SIZE); - memcpy(&bgpo, dat, BGP_OPEN_SIZE); - - printf("\n\t Version %d, ", bgpo.bgpo_version); - printf("my AS %u, ", ntohs(bgpo.bgpo_myas)); - printf("Holdtime %us, ", ntohs(bgpo.bgpo_holdtime)); - printf("ID %s", getname((u_char *)&bgpo.bgpo_id)); - printf("\n\t Optional parameters, length: %u", bgpo.bgpo_optlen); - - /* some little sanity checking */ - if (length < bgpo.bgpo_optlen+BGP_OPEN_SIZE) - return; - - /* ugly! */ - opt = &((const struct bgp_open *)dat)->bgpo_optlen; - opt++; - - i = 0; - while (i < bgpo.bgpo_optlen) { - TCHECK2(opt[i], BGP_OPT_SIZE); - memcpy(&bgpopt, &opt[i], BGP_OPT_SIZE); - if (i + 2 + bgpopt.bgpopt_len > bgpo.bgpo_optlen) { - printf("\n\t Option %d, length: %u", bgpopt.bgpopt_type, bgpopt.bgpopt_len); - break; - } - - printf("\n\t Option %s (%u), length: %u", - tok2strbuf(bgp_opt_values,"Unknown", - bgpopt.bgpopt_type, - tokbuf, sizeof(tokbuf)), - bgpopt.bgpopt_type, - bgpopt.bgpopt_len); - - /* now lets decode the options we know*/ - switch(bgpopt.bgpopt_type) { - case BGP_OPT_CAP: - cap_type=opt[i+BGP_OPT_SIZE]; - cap_len=opt[i+BGP_OPT_SIZE+1]; - tcap_len=cap_len; - printf("\n\t %s (%u), length: %u", - tok2strbuf(bgp_capcode_values, "Unknown", - cap_type, tokbuf, sizeof(tokbuf)), - cap_type, - cap_len); - switch(cap_type) { - case BGP_CAPCODE_MP: - printf("\n\t\tAFI %s (%u), SAFI %s (%u)", - tok2strbuf(bgp_afi_values, "Unknown", - EXTRACT_16BITS(opt+i+BGP_OPT_SIZE+2), - tokbuf, sizeof(tokbuf)), - EXTRACT_16BITS(opt+i+BGP_OPT_SIZE+2), - tok2strbuf(bgp_safi_values, "Unknown", - opt[i+BGP_OPT_SIZE+5], - tokbuf, sizeof(tokbuf)), - opt[i+BGP_OPT_SIZE+5]); - break; - case BGP_CAPCODE_RESTART: - printf("\n\t\tRestart Flags: [%s], Restart Time %us", - ((opt[i+BGP_OPT_SIZE+2])&0x80) ? "R" : "none", - EXTRACT_16BITS(opt+i+BGP_OPT_SIZE+2)&0xfff); - tcap_len-=2; - cap_offset=4; - while(tcap_len>=4) { - printf("\n\t\t AFI %s (%u), SAFI %s (%u), Forwarding state preserved: %s", - tok2strbuf(bgp_afi_values,"Unknown", - EXTRACT_16BITS(opt+i+BGP_OPT_SIZE+cap_offset), - tokbuf, sizeof(tokbuf)), - EXTRACT_16BITS(opt+i+BGP_OPT_SIZE+cap_offset), - tok2strbuf(bgp_safi_values,"Unknown", - opt[i+BGP_OPT_SIZE+cap_offset+2], - tokbuf2, sizeof(tokbuf2)), - opt[i+BGP_OPT_SIZE+cap_offset+2], - ((opt[i+BGP_OPT_SIZE+cap_offset+3])&0x80) ? "yes" : "no" ); - tcap_len-=4; - cap_offset+=4; - } - break; - case BGP_CAPCODE_RR: - case BGP_CAPCODE_RR_CISCO: - break; - default: - TCHECK2(opt[i+BGP_OPT_SIZE+2],cap_len); - printf("\n\t\tno decoder for Capability %u", - cap_type); - if (vflag <= 1) - print_unknown_data(&opt[i+BGP_OPT_SIZE+2],"\n\t\t",cap_len); - break; - } - if (vflag > 1) { - TCHECK2(opt[i+BGP_OPT_SIZE+2],cap_len); - print_unknown_data(&opt[i+BGP_OPT_SIZE+2],"\n\t\t",cap_len); - } - break; - case BGP_OPT_AUTH: - default: - printf("\n\t no decoder for option %u", - bgpopt.bgpopt_type); - break; - } - - i += BGP_OPT_SIZE + bgpopt.bgpopt_len; - } - return; -trunc: - printf("[|BGP]"); -} - -static void -bgp_update_print(const u_char *dat, int length) -{ - struct bgp bgp; - struct bgp_attr bgpa; - const u_char *p; - int len; - int i; - char tokbuf[TOKBUFSIZE]; - - TCHECK2(dat[0], BGP_SIZE); - memcpy(&bgp, dat, BGP_SIZE); - p = dat + BGP_SIZE; /*XXX*/ - - /* Unfeasible routes */ - len = EXTRACT_16BITS(p); - if (len) { - /* - * Without keeping state from the original NLRI message, - * it's not possible to tell if this a v4 or v6 route, - * so only try to decode it if we're not v6 enabled. - */ -#ifdef INET6 - printf("\n\t Withdrawn routes: %d bytes", len); -#else - char buf[MAXHOSTNAMELEN + 100]; - int wpfx; - - TCHECK2(p[2], len); - i = 2; - - printf("\n\t Withdrawn routes:"); - - while(i < 2 + len) { - wpfx = decode_prefix4(&p[i], buf, sizeof(buf)); - if (wpfx == -1) { - printf("\n\t (illegal prefix length)"); - break; - } else if (wpfx == -2) - goto trunc; - else { - i += wpfx; - printf("\n\t %s", buf); - } - } -#endif - } - p += 2 + len; - - TCHECK2(p[0], 2); - len = EXTRACT_16BITS(p); - - if (len == 0 && length == BGP_UPDATE_MINSIZE) { - printf("\n\t End-of-Rib Marker (empty NLRI)"); - return; - } - - if (len) { - /* do something more useful!*/ - i = 2; - while (i < 2 + len) { - int alen, aoff; - - TCHECK2(p[i], sizeof(bgpa)); - memcpy(&bgpa, &p[i], sizeof(bgpa)); - alen = bgp_attr_len(&bgpa); - aoff = bgp_attr_off(&bgpa); - - printf("\n\t %s (%u), length: %u", - tok2strbuf(bgp_attr_values, "Unknown Attribute", - bgpa.bgpa_type, - tokbuf, sizeof(tokbuf)), - bgpa.bgpa_type, - alen); - - if (bgpa.bgpa_flags) { - printf(", Flags [%s%s%s%s", - bgpa.bgpa_flags & 0x80 ? "O" : "", - bgpa.bgpa_flags & 0x40 ? "T" : "", - bgpa.bgpa_flags & 0x20 ? "P" : "", - bgpa.bgpa_flags & 0x10 ? "E" : ""); - if (bgpa.bgpa_flags & 0xf) - printf("+%x", bgpa.bgpa_flags & 0xf); - printf("]: "); - } - if (!bgp_attr_print(&bgpa, &p[i + aoff], alen)) - goto trunc; - i += aoff + alen; - } - } - p += 2 + len; - - if (dat + length > p) { - printf("\n\t Updated routes:"); - while (dat + length > p) { - char buf[MAXHOSTNAMELEN + 100]; - i = decode_prefix4(p, buf, sizeof(buf)); - if (i == -1) { - printf("\n\t (illegal prefix length)"); - break; - } else if (i == -2) - goto trunc; - else { - printf("\n\t %s", buf); - p += i; - } - } - } - return; -trunc: - printf("[|BGP]"); -} - -static void -bgp_notification_print(const u_char *dat, int length) -{ - struct bgp_notification bgpn; - const u_char *tptr; - char tokbuf[TOKBUFSIZE]; - char tokbuf2[TOKBUFSIZE]; - - TCHECK2(dat[0], BGP_NOTIFICATION_SIZE); - memcpy(&bgpn, dat, BGP_NOTIFICATION_SIZE); - - /* some little sanity checking */ - if (length<BGP_NOTIFICATION_SIZE) - return; - - printf(", %s (%u)", - tok2strbuf(bgp_notify_major_values, "Unknown Error", - bgpn.bgpn_major, tokbuf, sizeof(tokbuf)), - bgpn.bgpn_major); - - switch (bgpn.bgpn_major) { - - case BGP_NOTIFY_MAJOR_MSG: - printf(", subcode %s (%u)", - tok2strbuf(bgp_notify_minor_msg_values, "Unknown", - bgpn.bgpn_minor, tokbuf, sizeof(tokbuf)), - bgpn.bgpn_minor); - break; - case BGP_NOTIFY_MAJOR_OPEN: - printf(", subcode %s (%u)", - tok2strbuf(bgp_notify_minor_open_values, "Unknown", - bgpn.bgpn_minor, tokbuf, sizeof(tokbuf)), - bgpn.bgpn_minor); - break; - case BGP_NOTIFY_MAJOR_UPDATE: - printf(", subcode %s (%u)", - tok2strbuf(bgp_notify_minor_update_values, "Unknown", - bgpn.bgpn_minor, tokbuf, sizeof(tokbuf)), - bgpn.bgpn_minor); - break; - case BGP_NOTIFY_MAJOR_CAP: - printf(" subcode %s (%u)", - tok2strbuf(bgp_notify_minor_cap_values, "Unknown", - bgpn.bgpn_minor, tokbuf, sizeof(tokbuf)), - bgpn.bgpn_minor); - case BGP_NOTIFY_MAJOR_CEASE: - printf(", subcode %s (%u)", - tok2strbuf(bgp_notify_minor_cease_values, "Unknown", - bgpn.bgpn_minor, tokbuf, sizeof(tokbuf)), - bgpn.bgpn_minor); - - /* draft-ietf-idr-cease-subcode-02 mentions optionally 7 bytes - * for the maxprefix subtype, which may contain AFI, SAFI and MAXPREFIXES - */ - if(bgpn.bgpn_minor == BGP_NOTIFY_MINOR_CEASE_MAXPRFX && length >= BGP_NOTIFICATION_SIZE + 7) { - tptr = dat + BGP_NOTIFICATION_SIZE; - TCHECK2(*tptr, 7); - printf(", AFI %s (%u), SAFI %s (%u), Max Prefixes: %u", - tok2strbuf(bgp_afi_values, "Unknown", - EXTRACT_16BITS(tptr), tokbuf, sizeof(tokbuf)), - EXTRACT_16BITS(tptr), - tok2strbuf(bgp_safi_values, "Unknown", *(tptr+2), - tokbuf2, sizeof(tokbuf)), - *(tptr+2), - EXTRACT_32BITS(tptr+3)); - } - break; - default: - break; - } - - return; -trunc: - printf("[|BGP]"); -} - -static void -bgp_route_refresh_print(const u_char *pptr, int len) { - - const struct bgp_route_refresh *bgp_route_refresh_header; - char tokbuf[TOKBUFSIZE]; - char tokbuf2[TOKBUFSIZE]; - - TCHECK2(pptr[0], BGP_ROUTE_REFRESH_SIZE); - - /* some little sanity checking */ - if (len<BGP_ROUTE_REFRESH_SIZE) - return; - - bgp_route_refresh_header = (const struct bgp_route_refresh *)pptr; - - printf("\n\t AFI %s (%u), SAFI %s (%u)", - tok2strbuf(bgp_afi_values,"Unknown", - /* this stinks but the compiler pads the structure - * weird */ - EXTRACT_16BITS(&bgp_route_refresh_header->afi), - tokbuf, sizeof(tokbuf)), - EXTRACT_16BITS(&bgp_route_refresh_header->afi), - tok2strbuf(bgp_safi_values,"Unknown", - bgp_route_refresh_header->safi, - tokbuf2, sizeof(tokbuf2)), - bgp_route_refresh_header->safi); - - if (vflag > 1) { - TCHECK2(*pptr, len); - print_unknown_data(pptr,"\n\t ", len); - } - - return; -trunc: - printf("[|BGP]"); -} - -static int -bgp_header_print(const u_char *dat, int length) -{ - struct bgp bgp; - char tokbuf[TOKBUFSIZE]; - - TCHECK2(dat[0], BGP_SIZE); - memcpy(&bgp, dat, BGP_SIZE); - printf("\n\t%s Message (%u), length: %u", - tok2strbuf(bgp_msg_values, "Unknown", bgp.bgp_type, - tokbuf, sizeof(tokbuf)), - bgp.bgp_type, - length); - - switch (bgp.bgp_type) { - case BGP_OPEN: - bgp_open_print(dat, length); - break; - case BGP_UPDATE: - bgp_update_print(dat, length); - break; - case BGP_NOTIFICATION: - bgp_notification_print(dat, length); - break; - case BGP_KEEPALIVE: - break; - case BGP_ROUTE_REFRESH: - bgp_route_refresh_print(dat, length); - break; - default: - /* we have no decoder for the BGP message */ - TCHECK2(*dat, length); - printf("\n\t no Message %u decoder",bgp.bgp_type); - print_unknown_data(dat,"\n\t ",length); - break; - } - return 1; -trunc: - printf("[|BGP]"); - return 0; -} - -void -bgp_print(const u_char *dat, int length) -{ - const u_char *p; - const u_char *ep; - const u_char *start; - const u_char marker[] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - }; - struct bgp bgp; - u_int16_t hlen; - char tokbuf[TOKBUFSIZE]; - - ep = dat + length; - if (snapend < dat + length) - ep = snapend; - - printf(": BGP, length: %u",length); - - if (vflag < 1) /* lets be less chatty */ - return; - - p = dat; - start = p; - while (p < ep) { - if (!TTEST2(p[0], 1)) - break; - if (p[0] != 0xff) { - p++; - continue; - } - - if (!TTEST2(p[0], sizeof(marker))) - break; - if (memcmp(p, marker, sizeof(marker)) != 0) { - p++; - continue; - } - - /* found BGP header */ - TCHECK2(p[0], BGP_SIZE); /*XXX*/ - memcpy(&bgp, p, BGP_SIZE); - - if (start != p) - printf(" [|BGP]"); - - hlen = ntohs(bgp.bgp_len); - if (hlen < BGP_SIZE) { - printf("\n[|BGP Bogus header length %u < %u]", hlen, - BGP_SIZE); - break; - } - - if (TTEST2(p[0], hlen)) { - if (!bgp_header_print(p, hlen)) - return; - p += hlen; - start = p; - } else { - printf("\n[|BGP %s]", - tok2strbuf(bgp_msg_values, - "Unknown Message Type", - bgp.bgp_type, - tokbuf, sizeof(tokbuf))); - break; - } - } - - return; - -trunc: - printf(" [|BGP]"); -} diff --git a/contrib/tcpdump/print-bootp.c b/contrib/tcpdump/print-bootp.c deleted file mode 100644 index 8108993e6388d..0000000000000 --- a/contrib/tcpdump/print-bootp.c +++ /dev/null @@ -1,658 +0,0 @@ -/* - * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * Format and print bootp packets. - */ -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-bootp.c,v 1.78.2.2 2005/05/06 04:19:39 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" -#include "ether.h" -#include "bootp.h" - -static void rfc1048_print(const u_char *); -static void cmu_print(const u_char *); - -static char tstr[] = " [|bootp]"; - -static const struct tok bootp_flag_values[] = { - { 0x8000, "Broadcast" }, - { 0, NULL} -}; - -static const struct tok bootp_op_values[] = { - { BOOTPREQUEST, "Request" }, - { BOOTPREPLY, "Reply" }, - { 0, NULL} -}; - -/* - * Print bootp requests - */ -void -bootp_print(register const u_char *cp, u_int length) -{ - register const struct bootp *bp; - static const u_char vm_cmu[4] = VM_CMU; - static const u_char vm_rfc1048[4] = VM_RFC1048; - - bp = (const struct bootp *)cp; - TCHECK(bp->bp_op); - - printf("BOOTP/DHCP, %s", - tok2str(bootp_op_values, "unknown (0x%02x)", bp->bp_op)); - - if (bp->bp_htype == 1 && bp->bp_hlen == 6 && bp->bp_op == BOOTPREQUEST) { - TCHECK2(bp->bp_chaddr[0], 6); - printf(" from %s", etheraddr_string(bp->bp_chaddr)); - } - - printf(", length: %u", length); - - if (!vflag) - return; - - TCHECK(bp->bp_secs); - - /* The usual hardware address type is 1 (10Mb Ethernet) */ - if (bp->bp_htype != 1) - printf(", htype-#%d", bp->bp_htype); - - /* The usual length for 10Mb Ethernet address is 6 bytes */ - if (bp->bp_htype != 1 || bp->bp_hlen != 6) - printf(", hlen:%d", bp->bp_hlen); - - /* Only print interesting fields */ - if (bp->bp_hops) - printf(", hops:%d", bp->bp_hops); - if (bp->bp_xid) - printf(", xid:0x%x", EXTRACT_32BITS(&bp->bp_xid)); - if (bp->bp_secs) - printf(", secs:%d", EXTRACT_16BITS(&bp->bp_secs)); - - printf(", flags: [%s]", - bittok2str(bootp_flag_values, "none", EXTRACT_16BITS(&bp->bp_flags))); - if (vflag>1) - printf( " (0x%04x)", EXTRACT_16BITS(&bp->bp_flags)); - - /* Client's ip address */ - TCHECK(bp->bp_ciaddr); - if (bp->bp_ciaddr.s_addr) - printf("\n\t Client IP: %s", ipaddr_string(&bp->bp_ciaddr)); - - /* 'your' ip address (bootp client) */ - TCHECK(bp->bp_yiaddr); - if (bp->bp_yiaddr.s_addr) - printf("\n\t Your IP: %s", ipaddr_string(&bp->bp_yiaddr)); - - /* Server's ip address */ - TCHECK(bp->bp_siaddr); - if (bp->bp_siaddr.s_addr) - printf("\n\t Server IP: %s", ipaddr_string(&bp->bp_siaddr)); - - /* Gateway's ip address */ - TCHECK(bp->bp_giaddr); - if (bp->bp_giaddr.s_addr) - printf("\n\t Gateway IP: %s", ipaddr_string(&bp->bp_giaddr)); - - /* Client's Ethernet address */ - if (bp->bp_htype == 1 && bp->bp_hlen == 6) { - TCHECK2(bp->bp_chaddr[0], 6); - printf("\n\t Client Ethernet Address: %s", etheraddr_string(bp->bp_chaddr)); - } - - TCHECK2(bp->bp_sname[0], 1); /* check first char only */ - if (*bp->bp_sname) { - printf("\n\t sname \""); - if (fn_print(bp->bp_sname, snapend)) { - putchar('"'); - fputs(tstr + 1, stdout); - return; - } - putchar('"'); - } - TCHECK2(bp->bp_file[0], 1); /* check first char only */ - if (*bp->bp_file) { - printf("\n\t file \""); - if (fn_print(bp->bp_file, snapend)) { - putchar('"'); - fputs(tstr + 1, stdout); - return; - } - putchar('"'); - } - - /* Decode the vendor buffer */ - TCHECK(bp->bp_vend[0]); - if (memcmp((const char *)bp->bp_vend, vm_rfc1048, - sizeof(u_int32_t)) == 0) - rfc1048_print(bp->bp_vend); - else if (memcmp((const char *)bp->bp_vend, vm_cmu, - sizeof(u_int32_t)) == 0) - cmu_print(bp->bp_vend); - else { - u_int32_t ul; - - ul = EXTRACT_32BITS(&bp->bp_vend); - if (ul != 0) - printf("\n\t Vendor-#0x%x", ul); - } - - return; -trunc: - fputs(tstr, stdout); -} - -/* - * The first character specifies the format to print: - * i - ip address (32 bits) - * p - ip address pairs (32 bits + 32 bits) - * l - long (32 bits) - * L - unsigned long (32 bits) - * s - short (16 bits) - * b - period-seperated decimal bytes (variable length) - * x - colon-seperated hex bytes (variable length) - * a - ascii string (variable length) - * B - on/off (8 bits) - * $ - special (explicit code to handle) - */ -static struct tok tag2str[] = { -/* RFC1048 tags */ - { TAG_PAD, " PAD" }, - { TAG_SUBNET_MASK, "iSM" }, /* subnet mask (RFC950) */ - { TAG_TIME_OFFSET, "LTZ" }, /* seconds from UTC */ - { TAG_GATEWAY, "iDG" }, /* default gateway */ - { TAG_TIME_SERVER, "iTS" }, /* time servers (RFC868) */ - { TAG_NAME_SERVER, "iIEN" }, /* IEN name servers (IEN116) */ - { TAG_DOMAIN_SERVER, "iNS" }, /* domain name (RFC1035) */ - { TAG_LOG_SERVER, "iLOG" }, /* MIT log servers */ - { TAG_COOKIE_SERVER, "iCS" }, /* cookie servers (RFC865) */ - { TAG_LPR_SERVER, "iLPR" }, /* lpr server (RFC1179) */ - { TAG_IMPRESS_SERVER, "iIM" }, /* impress servers (Imagen) */ - { TAG_RLP_SERVER, "iRL" }, /* resource location (RFC887) */ - { TAG_HOSTNAME, "aHN" }, /* ascii hostname */ - { TAG_BOOTSIZE, "sBS" }, /* 512 byte blocks */ - { TAG_END, " END" }, -/* RFC1497 tags */ - { TAG_DUMPPATH, "aDP" }, - { TAG_DOMAINNAME, "aDN" }, - { TAG_SWAP_SERVER, "iSS" }, - { TAG_ROOTPATH, "aRP" }, - { TAG_EXTPATH, "aEP" }, -/* RFC2132 tags */ - { TAG_IP_FORWARD, "BIPF" }, - { TAG_NL_SRCRT, "BSRT" }, - { TAG_PFILTERS, "pPF" }, - { TAG_REASS_SIZE, "sRSZ" }, - { TAG_DEF_TTL, "bTTL" }, - { TAG_MTU_TIMEOUT, "lMA" }, - { TAG_MTU_TABLE, "sMT" }, - { TAG_INT_MTU, "sMTU" }, - { TAG_LOCAL_SUBNETS, "BLSN" }, - { TAG_BROAD_ADDR, "iBR" }, - { TAG_DO_MASK_DISC, "BMD" }, - { TAG_SUPPLY_MASK, "BMS" }, - { TAG_DO_RDISC, "BRD" }, - { TAG_RTR_SOL_ADDR, "iRSA" }, - { TAG_STATIC_ROUTE, "pSR" }, - { TAG_USE_TRAILERS, "BUT" }, - { TAG_ARP_TIMEOUT, "lAT" }, - { TAG_ETH_ENCAP, "BIE" }, - { TAG_TCP_TTL, "bTT" }, - { TAG_TCP_KEEPALIVE, "lKI" }, - { TAG_KEEPALIVE_GO, "BKG" }, - { TAG_NIS_DOMAIN, "aYD" }, - { TAG_NIS_SERVERS, "iYS" }, - { TAG_NTP_SERVERS, "iNTP" }, - { TAG_VENDOR_OPTS, "bVO" }, - { TAG_NETBIOS_NS, "iWNS" }, - { TAG_NETBIOS_DDS, "iWDD" }, - { TAG_NETBIOS_NODE, "$WNT" }, - { TAG_NETBIOS_SCOPE, "aWSC" }, - { TAG_XWIN_FS, "iXFS" }, - { TAG_XWIN_DM, "iXDM" }, - { TAG_NIS_P_DOMAIN, "sN+D" }, - { TAG_NIS_P_SERVERS, "iN+S" }, - { TAG_MOBILE_HOME, "iMH" }, - { TAG_SMPT_SERVER, "iSMTP" }, - { TAG_POP3_SERVER, "iPOP3" }, - { TAG_NNTP_SERVER, "iNNTP" }, - { TAG_WWW_SERVER, "iWWW" }, - { TAG_FINGER_SERVER, "iFG" }, - { TAG_IRC_SERVER, "iIRC" }, - { TAG_STREETTALK_SRVR, "iSTS" }, - { TAG_STREETTALK_STDA, "iSTDA" }, - { TAG_REQUESTED_IP, "iRQ" }, - { TAG_IP_LEASE, "lLT" }, - { TAG_OPT_OVERLOAD, "$OO" }, - { TAG_TFTP_SERVER, "aTFTP" }, - { TAG_BOOTFILENAME, "aBF" }, - { TAG_DHCP_MESSAGE, " DHCP" }, - { TAG_SERVER_ID, "iSID" }, - { TAG_PARM_REQUEST, "bPR" }, - { TAG_MESSAGE, "aMSG" }, - { TAG_MAX_MSG_SIZE, "sMSZ" }, - { TAG_RENEWAL_TIME, "lRN" }, - { TAG_REBIND_TIME, "lRB" }, - { TAG_VENDOR_CLASS, "aVC" }, - { TAG_CLIENT_ID, "$CID" }, -/* RFC 2485 */ - { TAG_OPEN_GROUP_UAP, "aUAP" }, -/* RFC 2563 */ - { TAG_DISABLE_AUTOCONF, "BNOAUTO" }, -/* RFC 2610 */ - { TAG_SLP_DA, "bSLP-DA" }, /*"b" is a little wrong */ - { TAG_SLP_SCOPE, "bSLP-SCOPE" }, /*"b" is a little wrong */ -/* RFC 2937 */ - { TAG_NS_SEARCH, "sNSSEARCH" }, /* XXX 's' */ -/* RFC 3011 */ - { TAG_IP4_SUBNET_SELECT, "iSUBNET" }, -/* http://www.iana.org/assignments/bootp-dhcp-extensions/index.htm */ - { TAG_USER_CLASS, "aCLASS" }, - { TAG_SLP_NAMING_AUTH, "aSLP-NA" }, - { TAG_CLIENT_FQDN, "$FQDN" }, - { TAG_AGENT_CIRCUIT, "bACKT" }, - { TAG_AGENT_REMOTE, "bARMT" }, - { TAG_AGENT_MASK, "bAMSK" }, - { TAG_TZ_STRING, "aTZSTR" }, - { TAG_FQDN_OPTION, "bFQDNS" }, /* XXX 'b' */ - { TAG_AUTH, "bAUTH" }, /* XXX 'b' */ - { TAG_VINES_SERVERS, "iVINES" }, - { TAG_SERVER_RANK, "sRANK" }, - { TAG_CLIENT_ARCH, "sARCH" }, - { TAG_CLIENT_NDI, "bNDI" }, /* XXX 'b' */ - { TAG_CLIENT_GUID, "bGUID" }, /* XXX 'b' */ - { TAG_LDAP_URL, "aLDAP" }, - { TAG_6OVER4, "i6o4" }, - { TAG_PRINTER_NAME, "aPRTR" }, - { TAG_MDHCP_SERVER, "bMDHCP" }, /* XXX 'b' */ - { TAG_IPX_COMPAT, "bIPX" }, /* XXX 'b' */ - { TAG_NETINFO_PARENT, "iNI" }, - { TAG_NETINFO_PARENT_TAG, "aNITAG" }, - { TAG_URL, "aURL" }, - { TAG_FAILOVER, "bFAIL" }, /* XXX 'b' */ - { 0, NULL } -}; -/* 2-byte extended tags */ -static struct tok xtag2str[] = { - { 0, NULL } -}; - -/* DHCP "options overload" types */ -static struct tok oo2str[] = { - { 1, "file" }, - { 2, "sname" }, - { 3, "file+sname" }, - { 0, NULL } -}; - -/* NETBIOS over TCP/IP node type options */ -static struct tok nbo2str[] = { - { 0x1, "b-node" }, - { 0x2, "p-node" }, - { 0x4, "m-node" }, - { 0x8, "h-node" }, - { 0, NULL } -}; - -/* ARP Hardware types, for Client-ID option */ -static struct tok arp2str[] = { - { 0x1, "ether" }, - { 0x6, "ieee802" }, - { 0x7, "arcnet" }, - { 0xf, "frelay" }, - { 0x17, "strip" }, - { 0x18, "ieee1394" }, - { 0, NULL } -}; - -static void -rfc1048_print(register const u_char *bp) -{ - register u_int16_t tag; - register u_int len, size; - register const char *cp; - register char c; - int first; - u_int32_t ul; - u_int16_t us; - u_int8_t uc; - - printf("\n\t Vendor-rfc1048:"); - - /* Step over magic cookie */ - bp += sizeof(int32_t); - - /* Loop while we there is a tag left in the buffer */ - while (bp + 1 < snapend) { - tag = *bp++; - if (tag == TAG_PAD) - continue; - if (tag == TAG_END) - return; - if (tag == TAG_EXTENDED_OPTION) { - TCHECK2(*(bp + 1), 2); - tag = EXTRACT_16BITS(bp + 1); - /* XXX we don't know yet if the IANA will - * preclude overlap of 1-byte and 2-byte spaces. - * If not, we need to offset tag after this step. - */ - cp = tok2str(xtag2str, "?xT%u", tag); - } else - cp = tok2str(tag2str, "?T%u", tag); - c = *cp++; - printf("\n\t %s:", cp); - - /* Get the length; check for truncation */ - if (bp + 1 >= snapend) { - fputs(tstr, stdout); - return; - } - len = *bp++; - if (bp + len >= snapend) { - printf("[|bootp %u]", len); - return; - } - - if (tag == TAG_DHCP_MESSAGE && len == 1) { - uc = *bp++; - switch (uc) { - case DHCPDISCOVER: printf("DISCOVER"); break; - case DHCPOFFER: printf("OFFER"); break; - case DHCPREQUEST: printf("REQUEST"); break; - case DHCPDECLINE: printf("DECLINE"); break; - case DHCPACK: printf("ACK"); break; - case DHCPNAK: printf("NACK"); break; - case DHCPRELEASE: printf("RELEASE"); break; - case DHCPINFORM: printf("INFORM"); break; - default: printf("%u", uc); break; - } - continue; - } - - if (tag == TAG_PARM_REQUEST) { - first = 1; - while (len-- > 0) { - uc = *bp++; - cp = tok2str(tag2str, "?T%u", uc); - if (!first) - putchar('+'); - printf("%s", cp + 1); - first = 0; - } - continue; - } - if (tag == TAG_EXTENDED_REQUEST) { - first = 1; - while (len > 1) { - len -= 2; - us = EXTRACT_16BITS(bp); - bp += 2; - cp = tok2str(xtag2str, "?xT%u", us); - if (!first) - putchar('+'); - printf("%s", cp + 1); - first = 0; - } - continue; - } - - /* Print data */ - size = len; - if (c == '?') { - /* Base default formats for unknown tags on data size */ - if (size & 1) - c = 'b'; - else if (size & 2) - c = 's'; - else - c = 'l'; - } - first = 1; - switch (c) { - - case 'a': - /* ascii strings */ - putchar('"'); - if (fn_printn(bp, size, snapend)) { - putchar('"'); - goto trunc; - } - putchar('"'); - bp += size; - size = 0; - break; - - case 'i': - case 'l': - case 'L': - /* ip addresses/32-bit words */ - while (size >= sizeof(ul)) { - if (!first) - putchar(','); - ul = EXTRACT_32BITS(bp); - if (c == 'i') { - ul = htonl(ul); - printf("%s", ipaddr_string(&ul)); - } else if (c == 'L') - printf("%d", ul); - else - printf("%u", ul); - bp += sizeof(ul); - size -= sizeof(ul); - first = 0; - } - break; - - case 'p': - /* IP address pairs */ - while (size >= 2*sizeof(ul)) { - if (!first) - putchar(','); - memcpy((char *)&ul, (const char *)bp, sizeof(ul)); - printf("(%s:", ipaddr_string(&ul)); - bp += sizeof(ul); - memcpy((char *)&ul, (const char *)bp, sizeof(ul)); - printf("%s)", ipaddr_string(&ul)); - bp += sizeof(ul); - size -= 2*sizeof(ul); - first = 0; - } - break; - - case 's': - /* shorts */ - while (size >= sizeof(us)) { - if (!first) - putchar(','); - us = EXTRACT_16BITS(bp); - printf("%u", us); - bp += sizeof(us); - size -= sizeof(us); - first = 0; - } - break; - - case 'B': - /* boolean */ - while (size > 0) { - if (!first) - putchar(','); - switch (*bp) { - case 0: - putchar('N'); - break; - case 1: - putchar('Y'); - break; - default: - printf("%u?", *bp); - break; - } - ++bp; - --size; - first = 0; - } - break; - - case 'b': - case 'x': - default: - /* Bytes */ - while (size > 0) { - if (!first) - putchar(c == 'x' ? ':' : '.'); - if (c == 'x') - printf("%02x", *bp); - else - printf("%u", *bp); - ++bp; - --size; - first = 0; - } - break; - - case '$': - /* Guys we can't handle with one of the usual cases */ - switch (tag) { - - case TAG_NETBIOS_NODE: - tag = *bp++; - --size; - fputs(tok2str(nbo2str, NULL, tag), stdout); - break; - - case TAG_OPT_OVERLOAD: - tag = *bp++; - --size; - fputs(tok2str(oo2str, NULL, tag), stdout); - break; - - case TAG_CLIENT_FQDN: - /* option 81 should be at least 4 bytes long */ - if (len < 4) { - printf("ERROR: options 81 len %u < 4 bytes", len); - break; - } - if (*bp++) - printf("[svrreg]"); - if (*bp) - printf("%u/%u/", *bp, *(bp+1)); - bp += 2; - putchar('"'); - if (fn_printn(bp, size - 3, snapend)) { - putchar('"'); - goto trunc; - } - putchar('"'); - bp += size - 3; - size = 0; - break; - - case TAG_CLIENT_ID: - { int type = *bp++; - size--; - if (type == 0) { - putchar('"'); - if (fn_printn(bp, size, snapend)) { - putchar('"'); - goto trunc; - } - putchar('"'); - bp += size; - size = 0; - break; - } else { - printf("[%s]", tok2str(arp2str, "type-%d", type)); - } - while (size > 0) { - if (!first) - putchar(':'); - printf("%02x", *bp); - ++bp; - --size; - first = 0; - } - break; - } - - default: - printf("[unknown special tag %u, size %u]", - tag, size); - bp += size; - size = 0; - break; - } - break; - } - /* Data left over? */ - if (size) { - printf("[len %u]", len); - bp += size; - } - } - return; -trunc: - printf("|[rfc1048]"); -} - -static void -cmu_print(register const u_char *bp) -{ - register const struct cmu_vend *cmu; - -#define PRINTCMUADDR(m, s) { TCHECK(cmu->m); \ - if (cmu->m.s_addr != 0) \ - printf(" %s:%s", s, ipaddr_string(&cmu->m.s_addr)); } - - printf(" vend-cmu"); - cmu = (const struct cmu_vend *)bp; - - /* Only print if there are unknown bits */ - TCHECK(cmu->v_flags); - if ((cmu->v_flags & ~(VF_SMASK)) != 0) - printf(" F:0x%x", cmu->v_flags); - PRINTCMUADDR(v_dgate, "DG"); - PRINTCMUADDR(v_smask, cmu->v_flags & VF_SMASK ? "SM" : "SM*"); - PRINTCMUADDR(v_dns1, "NS1"); - PRINTCMUADDR(v_dns2, "NS2"); - PRINTCMUADDR(v_ins1, "IEN1"); - PRINTCMUADDR(v_ins2, "IEN2"); - PRINTCMUADDR(v_ts1, "TS1"); - PRINTCMUADDR(v_ts2, "TS2"); - return; - -trunc: - fputs(tstr, stdout); -#undef PRINTCMUADDR -} diff --git a/contrib/tcpdump/print-bxxp.c b/contrib/tcpdump/print-bxxp.c deleted file mode 100644 index 56be54fc17f9b..0000000000000 --- a/contrib/tcpdump/print-bxxp.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (C) 2000, Richard Sharpe - * - * This software may be distributed either under the terms of the - * BSD-style licence that accompanies tcpdump or under the GNU GPL - * version 2 or later. - * - * print-bxxp.c - * - */ - -#ifndef lint -static const char rcsid[] = - "@(#) $Header: /tcpdump/master/tcpdump/print-bxxp.c,v 1.3 2000/10/05 04:10:01 itojun Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <sys/param.h> -#include <sys/time.h> - -#ifdef HAVE_MEMORY_H -#include <memory.h> -#endif -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - -#include "interface.h" -#include "extract.h" - -/* Check for a string but not go beyond length - * Return TRUE on match, FALSE otherwise - * - * Looks at the first few chars up to tl1 ... - */ - -int l_strnstart(const u_char *, u_int, const u_char *, u_int); - -int -l_strnstart(register const u_char *tstr1, register u_int tl1, - register const u_char *str2, register u_int l2) -{ - - if (tl1 > l2) - return 0; - - return (strncmp(tstr1, str2, tl1) == 0 ? 1 : 0); - -} - -void -bxxp_print(register const u_char *bp, register u_int length) -{ - - if (l_strnstart("REQ ", 4, bp, length)) { /* A REQuest */ - - printf(" BXXP REQ"); - - } - else if (l_strnstart("RSP ", 4, bp, length)) { - - printf(" BXXP RSP"); - - } - else if (l_strnstart("SEQ ", 4, bp, length)) { - - printf(" BXXP SEQ"); - - } - else if (l_strnstart("END", 4, bp, length)) { - - printf(" BXXP END"); - - } - else - printf(" BXXP (payload or undecoded)"); - -} diff --git a/contrib/tcpdump/print-cdp.c b/contrib/tcpdump/print-cdp.c deleted file mode 100644 index 4398fbefdae7a..0000000000000 --- a/contrib/tcpdump/print-cdp.c +++ /dev/null @@ -1,366 +0,0 @@ -/* - * Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * Code by Gert Doering, SpaceNet GmbH, gert@space.net - * - * Reference documentation: - * http://www.cisco.com/univercd/cc/td/doc/product/lan/trsrb/frames.htm - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-cdp.c,v 1.25 2004/10/07 14:53:11 hannes Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" /* must come after interface.h */ -#include "nlpid.h" - -#define CDP_HEADER_LEN 4 - -static struct tok cdp_tlv_values[] = { - { 0x01, "Device-ID"}, - { 0x02, "Address"}, - { 0x03, "Port-ID"}, - { 0x04, "Capability"}, - { 0x05, "Version String"}, - { 0x06, "Platform"}, - { 0x07, "Prefixes"}, - { 0x08, "Protocol-Hello option"}, - { 0x09, "VTP Management Domain"}, - { 0x0a, "Native VLAN ID"}, - { 0x0b, "Duplex"}, - { 0x0e, "ATA-186 VoIP VLAN request"}, - { 0x0f, "ATA-186 VoIP VLAN assignment"}, - { 0x10, "power consumption"}, - { 0x11, "MTU"}, - { 0x12, "AVVID trust bitmap"}, - { 0x13, "AVVID untrusted ports CoS"}, - { 0x14, "System Name"}, - { 0x15, "System Object ID (not decoded)"}, - { 0x16, "Management Addresses"}, - { 0x17, "Physical Location"}, - { 0, NULL} -}; - -static struct tok cdp_capability_values[] = { - { 0x01, "Router" }, - { 0x02, "Transparent Bridge" }, - { 0x04, "Source Route Bridge" }, - { 0x08, "L2 Switch" }, - { 0x10, "L3 capable" }, - { 0x20, "IGMP snooping" }, - { 0x40, "L1 capable" }, - { 0, NULL } -}; - -static int cdp_print_addr(const u_char *, int); -static int cdp_print_prefixes(const u_char *, int); -static unsigned long cdp_get_number(const u_char *, int); - -void -cdp_print(const u_char *pptr, u_int length, u_int caplen) -{ - int type, len, i, j; - const u_char *tptr; - - if (caplen < CDP_HEADER_LEN) { - (void)printf("[|cdp]"); - return; - } - - tptr = pptr; /* temporary pointer */ - - if (!TTEST2(*tptr, CDP_HEADER_LEN)) - goto trunc; - printf("CDPv%u, ttl: %us", *tptr, *(tptr+1)); - if (vflag) - printf(", checksum: %u (unverified), length %u", EXTRACT_16BITS(tptr), length); - tptr += CDP_HEADER_LEN; - - while (tptr < (pptr+length)) { - - if (!TTEST2(*tptr, 4)) /* read out Type and Length */ - goto trunc; - type = EXTRACT_16BITS(tptr); - len = EXTRACT_16BITS(tptr+2); /* object length includes the 4 bytes header length */ - tptr += 4; - len -= 4; - - if (!TTEST2(*tptr, len)) - goto trunc; - - if (vflag || type == 1) { /* in non-verbose mode just print Device-ID */ - - if (vflag) - printf("\n\t%s (0x%02x), length: %u byte%s: ", - tok2str(cdp_tlv_values,"unknown field type", type), - type, - len, - len>1 ? "s" : ""); /* plural */ - - switch (type) { - - case 0x01: /* Device-ID */ - if (!vflag) - printf(", Device-ID '%.*s'", len, tptr); - else - printf("'%.*s'", len, tptr); - break; - case 0x02: /* Address */ - if (cdp_print_addr(tptr, len) < 0) - goto trunc; - break; - case 0x03: /* Port-ID */ - printf("'%.*s'", len, tptr); - break; - case 0x04: /* Capabilities */ - printf("(0x%08x): %s", - EXTRACT_32BITS(tptr), - bittok2str(cdp_capability_values, "none",EXTRACT_32BITS(tptr))); - break; - case 0x05: /* Version */ - printf("\n\t "); - for (i=0;i<len;i++) { - j = *(tptr+i); - putchar(j); - if (j == 0x0a) /* lets rework the version string to get a nice identation */ - printf("\t "); - } - break; - case 0x06: /* Platform */ - printf("'%.*s'", len, tptr); - break; - case 0x07: /* Prefixes */ - if (cdp_print_prefixes(tptr, len) < 0) - goto trunc; - break; - case 0x08: /* Protocol Hello Option - not documented */ - break; - case 0x09: /* VTP Mgmt Domain - not documented */ - printf("'%.*s'", len,tptr); - break; - case 0x0a: /* Native VLAN ID - not documented */ - printf("%d",EXTRACT_16BITS(tptr)); - break; - case 0x0b: /* Duplex - not documented */ - printf("%s", *(tptr) ? "full": "half"); - break; - - /* http://www.cisco.com/univercd/cc/td/doc/product/voice/ata/atarn/186rn21m.htm - * plus more details from other sources - */ - case 0x0e: /* ATA-186 VoIP VLAN request - incomplete doc. */ - printf("app %d, vlan %d", - *(tptr), EXTRACT_16BITS(tptr+1)); - break; - case 0x10: /* ATA-186 VoIP VLAN assignment - incomplete doc. */ - printf("%1.2fW", - cdp_get_number(tptr, len)/1000.0 ); - break; - case 0x11: /* MTU - not documented */ - printf("%u bytes", EXTRACT_32BITS(tptr)); - break; - case 0x12: /* AVVID trust bitmap - not documented */ - printf("0x%02x", *(tptr) ); - break; - case 0x13: /* AVVID untrusted port CoS - not documented */ - printf("0x%02x", *(tptr)); - break; - case 0x14: /* System Name - not documented */ - printf("'%.*s'", len, tptr); - break; - case 0x16: /* System Object ID - not documented */ - if (cdp_print_addr(tptr, len) < 0) - goto trunc; - break; - case 0x17: /* Physical Location - not documented */ - printf("0x%02x/%.*s", *(tptr), len - 1, tptr + 1 ); - break; - default: - print_unknown_data(tptr,"\n\t ",len); - break; - } - } - /* avoid infinite loop */ - if (len == 0) - break; - tptr = tptr+len; - } - if (vflag < 1) - printf(", length %u",caplen); - - return; -trunc: - printf("[|cdp]"); -} - -/* - * Protocol type values. - * - * PT_NLPID means that the protocol type field contains an OSI NLPID. - * - * PT_IEEE_802_2 means that the protocol type field contains an IEEE 802.2 - * LLC header that specifies that the payload is for that protocol. - */ -#define PT_NLPID 1 /* OSI NLPID */ -#define PT_IEEE_802_2 2 /* IEEE 802.2 LLC header */ - -static int -cdp_print_addr(const u_char * p, int l) -{ - int pt, pl, al, num; - const u_char *endp = p + l; -#ifdef INET6 - static u_char prot_ipv6[] = { - 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, 0x86, 0xdd - }; -#endif - - TCHECK2(*p, 2); - num = EXTRACT_32BITS(p); - p += 4; - - while (p < endp && num >= 0) { - TCHECK2(*p, 2); - if (p + 2 > endp) - goto trunc; - pt = p[0]; /* type of "protocol" field */ - pl = p[1]; /* length of "protocol" field */ - p += 2; - - TCHECK2(p[pl], 2); - if (p + pl + 2 > endp) - goto trunc; - al = EXTRACT_16BITS(&p[pl]); /* address length */ - - if (pt == PT_NLPID && pl == 1 && *p == NLPID_IP && al == 4) { - /* - * IPv4: protocol type = NLPID, protocol length = 1 - * (1-byte NLPID), protocol = 0xcc (NLPID for IPv4), - * address length = 4 - */ - p += 3; - - TCHECK2(*p, 4); - if (p + 4 > endp) - goto trunc; - printf("IPv4 (%u) %s", - num, - ipaddr_string(p)); - p += 4; - } -#ifdef INET6 - else if (pt == PT_IEEE_802_2 && pl == 8 && - memcmp(p, prot_ipv6, 8) == 0 && al == 16) { - /* - * IPv6: protocol type = IEEE 802.2 header, - * protocol length = 8 (size of LLC+SNAP header), - * protocol = LLC+SNAP header with the IPv6 - * Ethertype, address length = 16 - */ - p += 10; - TCHECK2(*p, al); - if (p + al > endp) - goto trunc; - - printf("IPv6 (%u) %s", - num, - ip6addr_string(p)); - p += al; - } -#endif - else { - /* - * Generic case: just print raw data - */ - TCHECK2(*p, pl); - if (p + pl > endp) - goto trunc; - printf("pt=0x%02x, pl=%d, pb=", *(p - 2), pl); - while (pl-- > 0) - printf(" %02x", *p++); - TCHECK2(*p, 2); - if (p + 2 > endp) - goto trunc; - al = (*p << 8) + *(p + 1); - printf(", al=%d, a=", al); - p += 2; - TCHECK2(*p, al); - if (p + al > endp) - goto trunc; - while (al-- > 0) - printf(" %02x", *p++); - } - num--; - if (num) - printf(" "); - } - - return 0; - -trunc: - return -1; -} - - -static int -cdp_print_prefixes(const u_char * p, int l) -{ - if (l % 5) - goto trunc; - - printf(" IPv4 Prefixes (%d):", l / 5); - - while (l > 0) { - printf(" %u.%u.%u.%u/%u", p[0], p[1], p[2], p[3], p[4]); - l -= 5; - p += 5; - } - - return 0; - -trunc: - return -1; -} - -/* read in a <n>-byte number, MSB first - * (of course this can handle max sizeof(long)) - */ -static unsigned long cdp_get_number(const u_char * p, int l) -{ - unsigned long res=0; - while( l>0 ) - { - res = (res<<8) + *p; - p++; l--; - } - return res; -} diff --git a/contrib/tcpdump/print-chdlc.c b/contrib/tcpdump/print-chdlc.c deleted file mode 100644 index 244119fa0ec6b..0000000000000 --- a/contrib/tcpdump/print-chdlc.c +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-chdlc.c,v 1.32.2.8 2005/08/23 10:29:42 hannes Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <pcap.h> -#include <stdio.h> - -#include "interface.h" -#include "addrtoname.h" -#include "ethertype.h" -#include "extract.h" -#include "ppp.h" -#include "chdlc.h" - -static void chdlc_slarp_print(const u_char *, u_int); - -/* Standard CHDLC printer */ -u_int -chdlc_if_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - register u_int length = h->len; - register u_int caplen = h->caplen; - - if (caplen < CHDLC_HDRLEN) { - printf("[|chdlc]"); - return (caplen); - } - return (chdlc_print(p,length)); -} - -u_int -chdlc_print(register const u_char *p, u_int length) { - u_int proto; - const struct ip *ip; - - proto = EXTRACT_16BITS(&p[2]); - if (eflag) { - switch (p[0]) { - case CHDLC_UNICAST: - printf("unicast "); - break; - case CHDLC_BCAST: - printf("bcast "); - break; - default: - printf("0x%02x ", p[0]); - break; - } - printf("%d %04x: ", length, proto); - } - - length -= CHDLC_HDRLEN; - ip = (const struct ip *)(p + CHDLC_HDRLEN); - switch (proto) { - case ETHERTYPE_IP: - ip_print(gndo, (const u_char *)ip, length); - break; -#ifdef INET6 - case ETHERTYPE_IPV6: - ip6_print((const u_char *)ip, length); - break; -#endif - case CHDLC_TYPE_SLARP: - chdlc_slarp_print((const u_char *)ip, length); - break; -#if 0 - case CHDLC_TYPE_CDP: - chdlc_cdp_print((const u_char *)ip, length); - break; -#endif - case ETHERTYPE_MPLS: - case ETHERTYPE_MPLS_MULTI: - mpls_print((const u_char *)(ip), length); - break; - case ETHERTYPE_ISO: - /* is the fudge byte set ? lets verify by spotting ISO headers */ - if (*(p+CHDLC_HDRLEN+1) == 0x81 || - *(p+CHDLC_HDRLEN+1) == 0x82 || - *(p+CHDLC_HDRLEN+1) == 0x83) - isoclns_print(p+CHDLC_HDRLEN+1, length-1, length-1); - else - isoclns_print(p+CHDLC_HDRLEN, length, length); - break; - default: - printf("unknown CHDLC protocol (0x%04x)", proto); - break; - } - - return (CHDLC_HDRLEN); -} - -/* - * The fixed-length portion of a SLARP packet. - */ -struct cisco_slarp { - u_int8_t code[4]; -#define SLARP_REQUEST 0 -#define SLARP_REPLY 1 -#define SLARP_KEEPALIVE 2 - union { - struct { - u_int8_t addr[4]; - u_int8_t mask[4]; - } addr; - struct { - u_int8_t myseq[4]; - u_int8_t yourseq[4]; - u_int8_t rel[2]; - } keep; - } un; -}; - -#define SLARP_MIN_LEN 14 -#define SLARP_MAX_LEN 18 - -static void -chdlc_slarp_print(const u_char *cp, u_int length) -{ - const struct cisco_slarp *slarp; - u_int sec,min,hrs,days; - - printf("SLARP (length: %u), ",length); - if (length < SLARP_MIN_LEN) - goto trunc; - - slarp = (const struct cisco_slarp *)cp; - TCHECK2(*slarp, SLARP_MIN_LEN); - switch (EXTRACT_32BITS(&slarp->code)) { - case SLARP_REQUEST: - printf("request"); - /* - * At least according to William "Chops" Westfield's - * message in - * - * http://www.nethelp.no/net/cisco-hdlc.txt - * - * the address and mask aren't used in requests - - * they're just zero. - */ - break; - case SLARP_REPLY: - printf("reply %s/%s", - ipaddr_string(&slarp->un.addr.addr), - ipaddr_string(&slarp->un.addr.mask)); - break; - case SLARP_KEEPALIVE: - printf("keepalive: mineseen=0x%08x, yourseen=0x%08x, reliability=0x%04x", - EXTRACT_32BITS(&slarp->un.keep.myseq), - EXTRACT_32BITS(&slarp->un.keep.yourseq), - EXTRACT_16BITS(&slarp->un.keep.rel)); - - if (length >= SLARP_MAX_LEN) { /* uptime-stamp is optional */ - cp += SLARP_MIN_LEN; - if (!TTEST2(*cp, 4)) - goto trunc; - sec = EXTRACT_32BITS(cp) / 1000; - min = sec / 60; sec -= min * 60; - hrs = min / 60; min -= hrs * 60; - days = hrs / 24; hrs -= days * 24; - printf(", link uptime=%ud%uh%um%us",days,hrs,min,sec); - } - break; - default: - printf("0x%02x unknown", EXTRACT_32BITS(&slarp->code)); - if (vflag <= 1) - print_unknown_data(cp+4,"\n\t",length-4); - break; - } - - if (SLARP_MAX_LEN < length && vflag) - printf(", (trailing junk: %d bytes)", length - SLARP_MAX_LEN); - if (vflag > 1) - print_unknown_data(cp+4,"\n\t",length-4); - return; - -trunc: - printf("[|slarp]"); -} - - -/* - * Local Variables: - * c-style: whitesmith - * c-basic-offset: 8 - * End: - */ diff --git a/contrib/tcpdump/print-cip.c b/contrib/tcpdump/print-cip.c deleted file mode 100644 index 774b7002378ba..0000000000000 --- a/contrib/tcpdump/print-cip.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Marko Kiiskila carnil@cs.tut.fi - * - * Tampere University of Technology - Telecommunications Laboratory - * - * Permission to use, copy, modify and distribute this - * software and its documentation is hereby granted, - * provided that both the copyright notice and this - * permission notice appear in all copies of the software, - * derivative works or modified versions, and any portions - * thereof, that both notices appear in supporting - * documentation, and that the use of this software is - * acknowledged in any publications resulting from using - * the software. - * - * TUT ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION AND DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS - * SOFTWARE. - * - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-cip.c,v 1.25.2.1 2005/07/07 01:24:34 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <string.h> - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <pcap.h> - -#include "interface.h" -#include "addrtoname.h" -#include "ethertype.h" -#include "ether.h" - -#define RFC1483LLC_LEN 8 - -static unsigned char rfcllc[] = { - 0xaa, /* DSAP: non-ISO */ - 0xaa, /* SSAP: non-ISO */ - 0x03, /* Ctrl: Unnumbered Information Command PDU */ - 0x00, /* OUI: EtherType */ - 0x00, - 0x00 }; - -static inline void -cip_print(int length) -{ - /* - * There is no MAC-layer header, so just print the length. - */ - printf("%d: ", length); -} - -/* - * This is the top level routine of the printer. 'p' points - * to the LLC/SNAP or raw header of the packet, 'h->ts' is the timestamp, - * 'h->len' is the length of the packet off the wire, and 'h->caplen' - * is the number of bytes actually captured. - */ -u_int -cip_if_print(const struct pcap_pkthdr *h, const u_char *p) -{ - u_int caplen = h->caplen; - u_int length = h->len; - u_short extracted_ethertype; - - if (memcmp(rfcllc, p, sizeof(rfcllc))==0 && caplen < RFC1483LLC_LEN) { - printf("[|cip]"); - return (0); - } - - if (eflag) - cip_print(length); - - if (memcmp(rfcllc, p, sizeof(rfcllc)) == 0) { - /* - * LLC header is present. Try to print it & higher layers. - */ - if (llc_print(p, length, caplen, NULL, NULL, - &extracted_ethertype) == 0) { - /* ether_type not known, print raw packet */ - if (!eflag) - cip_print(length); - if (extracted_ethertype) { - printf("(LLC %s) ", - etherproto_string(htons(extracted_ethertype))); - } - if (!suppress_default_print) - default_print(p, caplen); - } - } else { - /* - * LLC header is absent; treat it as just IP. - */ - ip_print(gndo, p, length); - } - - return (0); -} - - -/* - * Local Variables: - * c-style: whitesmith - * c-basic-offset: 8 - * End: - */ diff --git a/contrib/tcpdump/print-cnfp.c b/contrib/tcpdump/print-cnfp.c deleted file mode 100644 index 9fdfbd4d06c77..0000000000000 --- a/contrib/tcpdump/print-cnfp.c +++ /dev/null @@ -1,190 +0,0 @@ -/* $OpenBSD: print-cnfp.c,v 1.2 1998/06/25 20:26:59 mickey Exp $ */ - -/* - * Copyright (c) 1998 Michael Shalayeff - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Michael Shalayeff. - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* Cisco NetFlow protocol */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-cnfp.c,v 1.16.2.1 2005/04/20 20:53:39 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -#include "tcp.h" -#include "ipproto.h" - -struct nfhdr { - u_int32_t ver_cnt; /* version [15], and # of records */ - u_int32_t msys_uptime; - u_int32_t utc_sec; - u_int32_t utc_nsec; - u_int32_t sequence; /* v5 flow sequence number */ - u_int32_t reserved; /* v5 only */ -}; - -struct nfrec { - struct in_addr src_ina; - struct in_addr dst_ina; - struct in_addr nhop_ina; - u_int32_t ifaces; /* src,dst ifaces */ - u_int32_t packets; - u_int32_t octets; - u_int32_t start_time; /* sys_uptime value */ - u_int32_t last_time; /* sys_uptime value */ - u_int32_t ports; /* src,dst ports */ - u_int32_t proto_tos; /* proto, tos, pad, flags(v5) */ - u_int32_t asses; /* v1: flags; v5: src,dst AS */ - u_int32_t masks; /* src,dst addr prefix; v6: encaps */ - struct in_addr peer_nexthop; /* v6: IP address of the nexthop within the peer (FIB)*/ -}; - -void -cnfp_print(const u_char *cp, const u_char *bp _U_) -{ - register const struct nfhdr *nh; - register const struct nfrec *nr; - struct protoent *pent; - int nrecs, ver; -#if 0 - time_t t; -#endif - - nh = (const struct nfhdr *)cp; - - if ((const u_char *)(nh + 1) > snapend) - return; - - nrecs = EXTRACT_32BITS(&nh->ver_cnt) & 0xffff; - ver = (EXTRACT_32BITS(&nh->ver_cnt) & 0xffff0000) >> 16; -#if 0 - /* - * This is seconds since the UN*X epoch, and is followed by - * nanoseconds. XXX - format it, rather than just dumping the - * raw seconds-since-the-Epoch. - */ - t = EXTRACT_32BITS(&nh->utc_sec); -#endif - - printf("NetFlow v%x, %u.%03u uptime, %u.%09u, ", ver, - EXTRACT_32BITS(&nh->msys_uptime)/1000, - EXTRACT_32BITS(&nh->msys_uptime)%1000, - EXTRACT_32BITS(&nh->utc_sec), EXTRACT_32BITS(&nh->utc_nsec)); - - if (ver == 5 || ver == 6) { - printf("#%u, ", EXTRACT_32BITS(&nh->sequence)); - nr = (const struct nfrec *)&nh[1]; - snaplen -= 24; - } else { - nr = (const struct nfrec *)&nh->sequence; - snaplen -= 16; - } - - printf("%2u recs", nrecs); - - for (; nrecs-- && (const u_char *)(nr + 1) <= snapend; nr++) { - char buf[20]; - char asbuf[20]; - - printf("\n started %u.%03u, last %u.%03u", - EXTRACT_32BITS(&nr->start_time)/1000, - EXTRACT_32BITS(&nr->start_time)%1000, - EXTRACT_32BITS(&nr->last_time)/1000, - EXTRACT_32BITS(&nr->last_time)%1000); - - asbuf[0] = buf[0] = '\0'; - if (ver == 5 || ver == 6) { - snprintf(buf, sizeof(buf), "/%u", - (EXTRACT_32BITS(&nr->masks) >> 24) & 0xff); - snprintf(asbuf, sizeof(asbuf), ":%u", - (EXTRACT_32BITS(&nr->asses) >> 16) & 0xffff); - } - printf("\n %s%s%s:%u ", intoa(nr->src_ina.s_addr), buf, asbuf, - EXTRACT_32BITS(&nr->ports) >> 16); - - if (ver == 5 || ver ==6) { - snprintf(buf, sizeof(buf), "/%d", - (EXTRACT_32BITS(&nr->masks) >> 16) & 0xff); - snprintf(asbuf, sizeof(asbuf), ":%u", - EXTRACT_32BITS(&nr->asses) & 0xffff); - } - printf("> %s%s%s:%u ", intoa(nr->dst_ina.s_addr), buf, asbuf, - EXTRACT_32BITS(&nr->ports) & 0xffff); - - printf(">> %s\n ", intoa(nr->nhop_ina.s_addr)); - - pent = getprotobynumber((EXTRACT_32BITS(&nr->proto_tos) >> 8) & 0xff); - if (!pent || nflag) - printf("%u ", - (EXTRACT_32BITS(&nr->proto_tos) >> 8) & 0xff); - else - printf("%s ", pent->p_name); - - /* tcp flags for tcp only */ - if (pent && pent->p_proto == IPPROTO_TCP) { - int flags; - if (ver == 1) - flags = (EXTRACT_32BITS(&nr->asses) >> 24) & 0xff; - else - flags = (EXTRACT_32BITS(&nr->proto_tos) >> 16) & 0xff; - if (flags & TH_FIN) putchar('F'); - if (flags & TH_SYN) putchar('S'); - if (flags & TH_RST) putchar('R'); - if (flags & TH_PUSH) putchar('P'); - if (flags & TH_ACK) putchar('A'); - if (flags & TH_URG) putchar('U'); - if (flags) - putchar(' '); - } - - buf[0]='\0'; - if (ver == 6) { - snprintf(buf, sizeof(buf), "(%u<>%u encaps)", - (EXTRACT_32BITS(&nr->masks) >> 8) & 0xff, - (EXTRACT_32BITS(&nr->masks)) & 0xff); - } - printf("tos %u, %u (%u octets) %s", - EXTRACT_32BITS(&nr->proto_tos) & 0xff, - EXTRACT_32BITS(&nr->packets), - EXTRACT_32BITS(&nr->octets), buf); - } -} diff --git a/contrib/tcpdump/print-dccp.c b/contrib/tcpdump/print-dccp.c deleted file mode 100644 index c0a5ea3a8966c..0000000000000 --- a/contrib/tcpdump/print-dccp.c +++ /dev/null @@ -1,526 +0,0 @@ -/* - * Copyright (C) Arnaldo Carvalho de Melo 2004 - * Copyright (C) Ian McDonald 2005 - * Copyright (C) Yoshifumi Nishida 2005 - * - * This software may be distributed either under the terms of the - * BSD-style license that accompanies tcpdump or the GNU GPL version 2 - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-dccp.c,v 1.1.2.2 2005/09/20 06:25:45 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include "dccp.h" - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" /* must come after interface.h */ -#include "ip.h" -#ifdef INET6 -#include "ip6.h" -#endif -#include "ipproto.h" - -static const char *dccp_reset_codes[] = { - "unspecified", - "closed", - "aborted", - "no_connection", - "packet_error", - "option_error", - "mandatory_error", - "connection_refused", - "bad_service_code", - "too_busy", - "bad_init_cookie", - "aggression_penalty", -}; - -static const char *dccp_feature_nums[] = { - "reserved", - "ccid", - "allow_short_seqno", - "sequence_window", - "ecn_incapable", - "ack_ratio", - "send_ack_vector", - "send_ndp_count", - "minimum checksum coverage", - "check data checksum", -}; - -static int dccp_cksum(const struct ip *ip, - const struct dccp_hdr *dh, u_int len) -{ - union phu { - struct phdr { - u_int32_t src; - u_int32_t dst; - u_char mbz; - u_char proto; - u_int16_t len; - } ph; - u_int16_t pa[6]; - } phu; - const u_int16_t *sp; - - /* pseudo-header.. */ - phu.ph.mbz = 0; - phu.ph.len = htons(len); - phu.ph.proto = IPPROTO_DCCP; - memcpy(&phu.ph.src, &ip->ip_src.s_addr, sizeof(u_int32_t)); - if (IP_HL(ip) == 5) - memcpy(&phu.ph.dst, &ip->ip_dst.s_addr, sizeof(u_int32_t)); - else - phu.ph.dst = ip_finddst(ip); - - sp = &phu.pa[0]; - return in_cksum((u_short *)dh, len, sp[0]+sp[1]+sp[2]+sp[3]+sp[4]+sp[5]); -} - -#ifdef INET6 -static int dccp6_cksum(const struct ip6_hdr *ip6, const struct dccp_hdr *dh, u_int len) -{ - size_t i; - const u_int16_t *sp; - u_int32_t sum; - union { - struct { - struct in6_addr ph_src; - struct in6_addr ph_dst; - u_int32_t ph_len; - u_int8_t ph_zero[3]; - u_int8_t ph_nxt; - } ph; - u_int16_t pa[20]; - } phu; - - /* pseudo-header */ - memset(&phu, 0, sizeof(phu)); - phu.ph.ph_src = ip6->ip6_src; - phu.ph.ph_dst = ip6->ip6_dst; - phu.ph.ph_len = htonl(len); - phu.ph.ph_nxt = IPPROTO_DCCP; - - sum = 0; - for (i = 0; i < sizeof(phu.pa) / sizeof(phu.pa[0]); i++) - sum += phu.pa[i]; - - sp = (const u_int16_t *)dh; - - for (i = 0; i < (len & ~1); i += 2) - sum += *sp++; - - if (len & 1) - sum += htons((*(const u_int8_t *)sp) << 8); - - while (sum > 0xffff) - sum = (sum & 0xffff) + (sum >> 16); - sum = ~sum & 0xffff; - - return (sum); -} -#endif - -static const char *dccp_reset_code(u_int8_t code) -{ - if (code >= __DCCP_RESET_CODE_LAST) - return "invalid"; - return dccp_reset_codes[code]; -} - -static u_int64_t dccp_seqno(const struct dccp_hdr *dh) -{ - u_int32_t seq_high = DCCPH_SEQ(dh); - u_int64_t seqno = EXTRACT_24BITS(&seq_high) & 0xFFFFFF; - - if (DCCPH_X(dh) != 0) { - const struct dccp_hdr_ext *dhx = (void *)dh + sizeof(*dh); - u_int32_t seq_low = dhx->dccph_seq_low; - seqno &= 0x00FFFF; /* clear reserved field */ - seqno = (seqno << 32) + EXTRACT_32BITS(&seq_low); - } - - return seqno; -} - -static u_int64_t dccp_ack_no(const struct dccp_hdr *dh, - const struct dccp_hdr_ack_bits *dh_ack) -{ - u_int32_t ack_high = DCCPH_ACK(dh_ack); - u_int64_t ackno = EXTRACT_24BITS(&ack_high) & 0xFFFFFF; - - if (DCCPH_X(dh) != 0) { - u_int32_t ack_low = dh_ack->dccph_ack_nr_low; - - ackno &= 0x00FFFF; /* clear reserved field */ - ackno = (ackno << 32) + EXTRACT_32BITS(&ack_low); - } - - return ackno; -} - -static inline unsigned int dccp_basic_hdr_len(const struct dccp_hdr *dh) -{ - return sizeof(*dh) + (DCCPH_X(dh) ? sizeof(struct dccp_hdr_ext) : 0); -} - -static inline unsigned int dccp_packet_hdr_len(const u_int8_t type) -{ - if (type == DCCP_PKT_DATA) - return 0; - if (type == DCCP_PKT_DATAACK || - type == DCCP_PKT_ACK || - type == DCCP_PKT_SYNC || - type == DCCP_PKT_SYNCACK || - type == DCCP_PKT_CLOSE || - type == DCCP_PKT_CLOSEREQ) - return sizeof(struct dccp_hdr_ack_bits); - if (type == DCCP_PKT_REQUEST) - return sizeof(struct dccp_hdr_request); - if (type == DCCP_PKT_RESPONSE) - return sizeof(struct dccp_hdr_response); - return sizeof(struct dccp_hdr_reset); -} - -static int dccp_print_option(const u_char *option); - -/** - * dccp_print - show dccp packet - * @bp - beginning of dccp packet - * @data2 - beginning of enclosing - * @len - lenght of ip packet - */ -void dccp_print(const u_char *bp, const u_char *data2, u_int len) -{ - const struct dccp_hdr *dh; - const struct ip *ip; -#ifdef INET6 - const struct ip6_hdr *ip6; -#endif - const u_char *cp; - u_short sport, dport; - u_int hlen; - u_int extlen = 0; - - dh = (const struct dccp_hdr *)bp; - - ip = (struct ip *)data2; -#ifdef INET6 - if (IP_V(ip) == 6) - ip6 = (const struct ip6_hdr *)data2; - else - ip6 = NULL; -#endif /*INET6*/ - cp = (const u_char *)(dh + 1); - if (cp > snapend) { - printf("[Invalid packet|dccp]"); - return; - } - - if (len < sizeof(struct dccp_hdr)) { - printf("truncated-dccp - %ld bytes missing!", - (long)len - sizeof(struct dccp_hdr)); - return; - } - - sport = EXTRACT_16BITS(&dh->dccph_sport); - dport = EXTRACT_16BITS(&dh->dccph_dport); - hlen = dh->dccph_doff * 4; - -#ifdef INET6 - if (ip6) { - (void)printf("%s.%d > %s.%d: ", - ip6addr_string(&ip6->ip6_src), sport, - ip6addr_string(&ip6->ip6_dst), dport); - } else -#endif /*INET6*/ - { - (void)printf("%s.%d > %s.%d: ", - ipaddr_string(&ip->ip_src), sport, - ipaddr_string(&ip->ip_dst), dport); - } - fflush(stdout); - - if (qflag) { - (void)printf(" %d", len - hlen); - if (hlen > len) { - (void)printf("dccp [bad hdr length %u - too long, > %u]", - hlen, len); - } - return; - } - - /* other variables in generic header */ - if (vflag) { - (void)printf("CCVal %d, CsCov %d, ", DCCPH_CCVAL(dh), DCCPH_CSCOV(dh)); - } - - /* checksum calculation */ -#ifdef INET6 - if (ip6) { - if (ip6->ip6_plen && vflag) { - u_int16_t sum, dccp_sum; - - sum = dccp6_cksum(ip6, dh, len); - dccp_sum = EXTRACT_16BITS(&dh->dccph_checksum); - printf("cksum 0x%04x", dccp_sum); - if (sum != 0) { - (void)printf(" (incorrect (-> 0x%04x), ",in_cksum_shouldbe(dccp_sum, sum)); - } else - (void)printf(" (correct), "); - } - } else -#endif /* INET6 */ - if (vflag) - { - u_int16_t sum, dccp_sum; - - sum = dccp_cksum(ip, dh, len); - dccp_sum = EXTRACT_16BITS(&dh->dccph_checksum); - printf("cksum 0x%04x", dccp_sum); - if (sum != 0) { - (void)printf(" (incorrect (-> 0x%04x), ",in_cksum_shouldbe(dccp_sum, sum)); - } else - (void)printf(" (correct), "); - } - - switch (DCCPH_TYPE(dh)) { - case DCCP_PKT_REQUEST: { - struct dccp_hdr_request *dhr = - (struct dccp_hdr_request *)(bp + dccp_basic_hdr_len(dh)); - TCHECK(*dhr); - (void)printf("request (service=%d) ", dhr->dccph_req_service); - extlen += 4; - break; - } - case DCCP_PKT_RESPONSE: { - struct dccp_hdr_response *dhr = - (struct dccp_hdr_response *)(bp + dccp_basic_hdr_len(dh)); - TCHECK(*dhr); - (void)printf("response (service=%d, ack=%" PRIu64 ") ", - dhr->dccph_resp_service, - dccp_ack_no(dh,&(dhr->dccph_resp_ack))); - extlen += 12; - break; - } - case DCCP_PKT_DATA: - (void)printf("data "); - break; - case DCCP_PKT_ACK: { - struct dccp_hdr_ack_bits *dha = - (struct dccp_hdr_ack_bits *)(bp + dccp_basic_hdr_len(dh)); - TCHECK(*dha); - (void)printf("ack (ack=%" PRIu64 ") ", - dccp_ack_no(dh,dha)); - extlen += 8; - break; - } - case DCCP_PKT_DATAACK: { - struct dccp_hdr_ack_bits *dha = - (struct dccp_hdr_ack_bits *)(bp + dccp_basic_hdr_len(dh)); - TCHECK(*dha); - (void)printf("dataack (ack=%" PRIu64 ") ", - dccp_ack_no(dh,dha)); - extlen += 8; - break; - } - case DCCP_PKT_CLOSEREQ: - (void)printf("closereq "); - extlen += 8; - break; - case DCCP_PKT_CLOSE: - (void)printf("close "); - extlen += 8; - break; - case DCCP_PKT_RESET: { - struct dccp_hdr_reset *dhr = - (struct dccp_hdr_reset *)(bp + dccp_basic_hdr_len(dh)); - TCHECK(*dhr); - (void)printf("reset (code=%s) ", - dccp_reset_code(dhr->dccph_reset_code)); - extlen += 12; - break; - } - case DCCP_PKT_SYNC: - (void)printf("sync "); - extlen += 8; - break; - case DCCP_PKT_SYNCACK: - (void)printf("syncack "); - extlen += 8; - break; - default: - (void)printf("invalid "); - break; - } - - if (vflag < 2) - return; - - (void)printf("seq %" PRIu64, dccp_seqno(dh)); - - /* process options */ - if (hlen > dccp_basic_hdr_len(dh) + extlen){ - const u_char *cp; - u_int optlen; - cp = bp + dccp_basic_hdr_len(dh) + extlen; - printf(" <"); - - hlen -= dccp_basic_hdr_len(dh) + extlen; - while(1){ - TCHECK(*cp); - optlen = dccp_print_option(cp); - if (!optlen) goto trunc2; - if (hlen <= optlen) break; - hlen -= optlen; - cp += optlen; - printf(", "); - } - printf(">"); - } - return; -trunc: - printf("[|dccp]"); -trunc2: - return; -} - -static int dccp_print_option(const u_char *option) -{ - u_int8_t optlen, i; - u_int32_t *ts; - u_int16_t *var16; - u_int32_t *var32; - - TCHECK(*option); - - if (*option >= 32) { - TCHECK(*(option+1)); - optlen = *(option +1); - if (optlen < 2) { - printf("Option %d optlen too short",*option); - return 1; - } - } else optlen = 1; - - TCHECK2(*option,optlen); - - switch (*option){ - case 0: - printf("nop"); - break; - case 1: - printf("mandatory"); - break; - case 2: - printf("slowreceiver"); - break; - case 32: - printf("change_l"); - if (*(option +2) < 10){ - printf(" %s", dccp_feature_nums[*(option +2)]); - for (i = 0; i < optlen -3; i ++) printf(" %d", *(option +3 + i)); - } - break; - case 33: - printf("confirm_l"); - if (*(option +2) < 10){ - printf(" %s", dccp_feature_nums[*(option +2)]); - for (i = 0; i < optlen -3; i ++) printf(" %d", *(option +3 + i)); - } - break; - case 34: - printf("change_r"); - if (*(option +2) < 10){ - printf(" %s", dccp_feature_nums[*(option +2)]); - for (i = 0; i < optlen -3; i ++) printf(" %d", *(option +3 + i)); - } - break; - case 35: - printf("confirm_r"); - if (*(option +2) < 10){ - printf(" %s", dccp_feature_nums[*(option +2)]); - for (i = 0; i < optlen -3; i ++) printf(" %d", *(option +3 + i)); - } - break; - case 36: - printf("initcookie 0x"); - for (i = 0; i < optlen -2; i ++) printf("%02x", *(option +2 + i)); - break; - case 37: - printf("ndp_count"); - for (i = 0; i < optlen -2; i ++) printf(" %d", *(option +2 + i)); - break; - case 38: - printf("ack_vector0 0x"); - for (i = 0; i < optlen -2; i ++) printf("%02x", *(option +2 + i)); - break; - case 39: - printf("ack_vector1 0x"); - for (i = 0; i < optlen -2; i ++) printf("%02x", *(option +2 + i)); - break; - case 40: - printf("data_dropped 0x"); - for (i = 0; i < optlen -2; i ++) printf("%02x", *(option +2 + i)); - break; - case 41: - ts = (u_int32_t *)(option + 2); - printf("timestamp %u", (u_int32_t)ntohl(*ts)); - break; - case 42: - ts = (u_int32_t *)(option + 2); - printf("timestamp_echo %u", (u_int32_t)ntohl(*ts)); - break; - case 43: - printf("elapsed_time "); - if (optlen == 6){ - ts = (u_int32_t *)(option + 2); - printf("%u", (u_int32_t)ntohl(*ts)); - } else { - var16 = (u_int16_t *)(option + 2); - printf("%u", ntohs(*var16)); - } - break; - case 44: - printf("data_checksum "); - for (i = 0; i < optlen -2; i ++) printf("%02x", *(option +2 + i)); - break; - default : - if (*option >= 128) { - printf("CCID option %d",*option); - switch (optlen) { - case 4: - var16 = (u_int16_t *)(option + 2); - printf(" %u",ntohs(*var16)); - break; - case 6: - var32 = (u_int32_t *)(option + 2); - printf(" %u",(u_int32_t)ntohl(*var32)); - break; - default: - break; - } - break; - } - - printf("unknown_opt %d", *option); - break; - } - - return optlen; -trunc: - printf("[|dccp]"); - return 0; -} diff --git a/contrib/tcpdump/print-decnet.c b/contrib/tcpdump/print-decnet.c deleted file mode 100644 index ae7ba5c4ea550..0000000000000 --- a/contrib/tcpdump/print-decnet.c +++ /dev/null @@ -1,895 +0,0 @@ -/* - * Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-decnet.c,v 1.38.2.1 2005/05/06 02:16:53 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -struct mbuf; -struct rtentry; - -#ifdef HAVE_NETDNET_DNETDB_H -#include <netdnet/dnetdb.h> -#endif - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "decnet.h" -#include "extract.h" -#include "interface.h" -#include "addrtoname.h" - -/* Forwards */ -static int print_decnet_ctlmsg(const union routehdr *, u_int, u_int); -static void print_t_info(int); -static int print_l1_routes(const char *, u_int); -static int print_l2_routes(const char *, u_int); -static void print_i_info(int); -static int print_elist(const char *, u_int); -static int print_nsp(const u_char *, u_int); -static void print_reason(int); -#ifdef PRINT_NSPDATA -static void pdata(u_char *, int); -#endif - -#ifndef HAVE_NETDNET_DNETDB_H_DNET_HTOA -extern char *dnet_htoa(struct dn_naddr *); -#endif - -void -decnet_print(register const u_char *ap, register u_int length, - register u_int caplen) -{ - register const union routehdr *rhp; - register int mflags; - int dst, src, hops; - u_int nsplen, pktlen; - const u_char *nspp; - - if (length < sizeof(struct shorthdr)) { - (void)printf("[|decnet]"); - return; - } - - TCHECK2(*ap, sizeof(short)); - pktlen = EXTRACT_LE_16BITS(ap); - if (pktlen < sizeof(struct shorthdr)) { - (void)printf("[|decnet]"); - return; - } - if (pktlen > length) { - (void)printf("[|decnet]"); - return; - } - length = pktlen; - - rhp = (const union routehdr *)&(ap[sizeof(short)]); - TCHECK(rhp->rh_short.sh_flags); - mflags = EXTRACT_LE_8BITS(rhp->rh_short.sh_flags); - - if (mflags & RMF_PAD) { - /* pad bytes of some sort in front of message */ - u_int padlen = mflags & RMF_PADMASK; - if (vflag) - (void) printf("[pad:%d] ", padlen); - if (length < padlen + 2) { - (void)printf("[|decnet]"); - return; - } - TCHECK2(ap[sizeof(short)], padlen); - ap += padlen; - length -= padlen; - caplen -= padlen; - rhp = (const union routehdr *)&(ap[sizeof(short)]); - mflags = EXTRACT_LE_8BITS(rhp->rh_short.sh_flags); - } - - if (mflags & RMF_FVER) { - (void) printf("future-version-decnet"); - default_print(ap, min(length, caplen)); - return; - } - - /* is it a control message? */ - if (mflags & RMF_CTLMSG) { - if (!print_decnet_ctlmsg(rhp, length, caplen)) - goto trunc; - return; - } - - switch (mflags & RMF_MASK) { - case RMF_LONG: - if (length < sizeof(struct longhdr)) { - (void)printf("[|decnet]"); - return; - } - TCHECK(rhp->rh_long); - dst = - EXTRACT_LE_16BITS(rhp->rh_long.lg_dst.dne_remote.dne_nodeaddr); - src = - EXTRACT_LE_16BITS(rhp->rh_long.lg_src.dne_remote.dne_nodeaddr); - hops = EXTRACT_LE_8BITS(rhp->rh_long.lg_visits); - nspp = &(ap[sizeof(short) + sizeof(struct longhdr)]); - nsplen = length - sizeof(struct longhdr); - break; - case RMF_SHORT: - TCHECK(rhp->rh_short); - dst = EXTRACT_LE_16BITS(rhp->rh_short.sh_dst); - src = EXTRACT_LE_16BITS(rhp->rh_short.sh_src); - hops = (EXTRACT_LE_8BITS(rhp->rh_short.sh_visits) & VIS_MASK)+1; - nspp = &(ap[sizeof(short) + sizeof(struct shorthdr)]); - nsplen = length - sizeof(struct shorthdr); - break; - default: - (void) printf("unknown message flags under mask"); - default_print((u_char *)ap, min(length, caplen)); - return; - } - - (void)printf("%s > %s %d ", - dnaddr_string(src), dnaddr_string(dst), pktlen); - if (vflag) { - if (mflags & RMF_RQR) - (void)printf("RQR "); - if (mflags & RMF_RTS) - (void)printf("RTS "); - if (mflags & RMF_IE) - (void)printf("IE "); - (void)printf("%d hops ", hops); - } - - if (!print_nsp(nspp, nsplen)) - goto trunc; - return; - -trunc: - (void)printf("[|decnet]"); - return; -} - -static int -print_decnet_ctlmsg(register const union routehdr *rhp, u_int length, - u_int caplen) -{ - int mflags = EXTRACT_LE_8BITS(rhp->rh_short.sh_flags); - register union controlmsg *cmp = (union controlmsg *)rhp; - int src, dst, info, blksize, eco, ueco, hello, other, vers; - etheraddr srcea, rtea; - int priority; - char *rhpx = (char *)rhp; - int ret; - - switch (mflags & RMF_CTLMASK) { - case RMF_INIT: - (void)printf("init "); - if (length < sizeof(struct initmsg)) - goto trunc; - TCHECK(cmp->cm_init); - src = EXTRACT_LE_16BITS(cmp->cm_init.in_src); - info = EXTRACT_LE_8BITS(cmp->cm_init.in_info); - blksize = EXTRACT_LE_16BITS(cmp->cm_init.in_blksize); - vers = EXTRACT_LE_8BITS(cmp->cm_init.in_vers); - eco = EXTRACT_LE_8BITS(cmp->cm_init.in_eco); - ueco = EXTRACT_LE_8BITS(cmp->cm_init.in_ueco); - hello = EXTRACT_LE_16BITS(cmp->cm_init.in_hello); - print_t_info(info); - (void)printf( - "src %sblksize %d vers %d eco %d ueco %d hello %d", - dnaddr_string(src), blksize, vers, eco, ueco, - hello); - ret = 1; - break; - case RMF_VER: - (void)printf("verification "); - if (length < sizeof(struct verifmsg)) - goto trunc; - TCHECK(cmp->cm_ver); - src = EXTRACT_LE_16BITS(cmp->cm_ver.ve_src); - other = EXTRACT_LE_8BITS(cmp->cm_ver.ve_fcnval); - (void)printf("src %s fcnval %o", dnaddr_string(src), other); - ret = 1; - break; - case RMF_TEST: - (void)printf("test "); - if (length < sizeof(struct testmsg)) - goto trunc; - TCHECK(cmp->cm_test); - src = EXTRACT_LE_16BITS(cmp->cm_test.te_src); - other = EXTRACT_LE_8BITS(cmp->cm_test.te_data); - (void)printf("src %s data %o", dnaddr_string(src), other); - ret = 1; - break; - case RMF_L1ROUT: - (void)printf("lev-1-routing "); - if (length < sizeof(struct l1rout)) - goto trunc; - TCHECK(cmp->cm_l1rou); - src = EXTRACT_LE_16BITS(cmp->cm_l1rou.r1_src); - (void)printf("src %s ", dnaddr_string(src)); - ret = print_l1_routes(&(rhpx[sizeof(struct l1rout)]), - length - sizeof(struct l1rout)); - break; - case RMF_L2ROUT: - (void)printf("lev-2-routing "); - if (length < sizeof(struct l2rout)) - goto trunc; - TCHECK(cmp->cm_l2rout); - src = EXTRACT_LE_16BITS(cmp->cm_l2rout.r2_src); - (void)printf("src %s ", dnaddr_string(src)); - ret = print_l2_routes(&(rhpx[sizeof(struct l2rout)]), - length - sizeof(struct l2rout)); - break; - case RMF_RHELLO: - (void)printf("router-hello "); - if (length < sizeof(struct rhellomsg)) - goto trunc; - TCHECK(cmp->cm_rhello); - vers = EXTRACT_LE_8BITS(cmp->cm_rhello.rh_vers); - eco = EXTRACT_LE_8BITS(cmp->cm_rhello.rh_eco); - ueco = EXTRACT_LE_8BITS(cmp->cm_rhello.rh_ueco); - memcpy((char *)&srcea, (char *)&(cmp->cm_rhello.rh_src), - sizeof(srcea)); - src = EXTRACT_LE_16BITS(srcea.dne_remote.dne_nodeaddr); - info = EXTRACT_LE_8BITS(cmp->cm_rhello.rh_info); - blksize = EXTRACT_LE_16BITS(cmp->cm_rhello.rh_blksize); - priority = EXTRACT_LE_8BITS(cmp->cm_rhello.rh_priority); - hello = EXTRACT_LE_16BITS(cmp->cm_rhello.rh_hello); - print_i_info(info); - (void)printf( - "vers %d eco %d ueco %d src %s blksize %d pri %d hello %d", - vers, eco, ueco, dnaddr_string(src), - blksize, priority, hello); - ret = print_elist(&(rhpx[sizeof(struct rhellomsg)]), - length - sizeof(struct rhellomsg)); - break; - case RMF_EHELLO: - (void)printf("endnode-hello "); - if (length < sizeof(struct ehellomsg)) - goto trunc; - TCHECK(cmp->cm_ehello); - vers = EXTRACT_LE_8BITS(cmp->cm_ehello.eh_vers); - eco = EXTRACT_LE_8BITS(cmp->cm_ehello.eh_eco); - ueco = EXTRACT_LE_8BITS(cmp->cm_ehello.eh_ueco); - memcpy((char *)&srcea, (char *)&(cmp->cm_ehello.eh_src), - sizeof(srcea)); - src = EXTRACT_LE_16BITS(srcea.dne_remote.dne_nodeaddr); - info = EXTRACT_LE_8BITS(cmp->cm_ehello.eh_info); - blksize = EXTRACT_LE_16BITS(cmp->cm_ehello.eh_blksize); - /*seed*/ - memcpy((char *)&rtea, (char *)&(cmp->cm_ehello.eh_router), - sizeof(rtea)); - dst = EXTRACT_LE_16BITS(rtea.dne_remote.dne_nodeaddr); - hello = EXTRACT_LE_16BITS(cmp->cm_ehello.eh_hello); - other = EXTRACT_LE_8BITS(cmp->cm_ehello.eh_data); - print_i_info(info); - (void)printf( - "vers %d eco %d ueco %d src %s blksize %d rtr %s hello %d data %o", - vers, eco, ueco, dnaddr_string(src), - blksize, dnaddr_string(dst), hello, other); - ret = 1; - break; - - default: - (void)printf("unknown control message"); - default_print((u_char *)rhp, min(length, caplen)); - ret = 1; - break; - } - return (ret); - -trunc: - return (0); -} - -static void -print_t_info(int info) -{ - int ntype = info & 3; - switch (ntype) { - case 0: (void)printf("reserved-ntype? "); break; - case TI_L2ROUT: (void)printf("l2rout "); break; - case TI_L1ROUT: (void)printf("l1rout "); break; - case TI_ENDNODE: (void)printf("endnode "); break; - } - if (info & TI_VERIF) - (void)printf("verif "); - if (info & TI_BLOCK) - (void)printf("blo "); -} - -static int -print_l1_routes(const char *rp, u_int len) -{ - int count; - int id; - int info; - - /* The last short is a checksum */ - while (len > (3 * sizeof(short))) { - TCHECK2(*rp, 3 * sizeof(short)); - count = EXTRACT_LE_16BITS(rp); - if (count > 1024) - return (1); /* seems to be bogus from here on */ - rp += sizeof(short); - len -= sizeof(short); - id = EXTRACT_LE_16BITS(rp); - rp += sizeof(short); - len -= sizeof(short); - info = EXTRACT_LE_16BITS(rp); - rp += sizeof(short); - len -= sizeof(short); - (void)printf("{ids %d-%d cost %d hops %d} ", id, id + count, - RI_COST(info), RI_HOPS(info)); - } - return (1); - -trunc: - return (0); -} - -static int -print_l2_routes(const char *rp, u_int len) -{ - int count; - int area; - int info; - - /* The last short is a checksum */ - while (len > (3 * sizeof(short))) { - TCHECK2(*rp, 3 * sizeof(short)); - count = EXTRACT_LE_16BITS(rp); - if (count > 1024) - return (1); /* seems to be bogus from here on */ - rp += sizeof(short); - len -= sizeof(short); - area = EXTRACT_LE_16BITS(rp); - rp += sizeof(short); - len -= sizeof(short); - info = EXTRACT_LE_16BITS(rp); - rp += sizeof(short); - len -= sizeof(short); - (void)printf("{areas %d-%d cost %d hops %d} ", area, area + count, - RI_COST(info), RI_HOPS(info)); - } - return (1); - -trunc: - return (0); -} - -static void -print_i_info(int info) -{ - int ntype = info & II_TYPEMASK; - switch (ntype) { - case 0: (void)printf("reserved-ntype? "); break; - case II_L2ROUT: (void)printf("l2rout "); break; - case II_L1ROUT: (void)printf("l1rout "); break; - case II_ENDNODE: (void)printf("endnode "); break; - } - if (info & II_VERIF) - (void)printf("verif "); - if (info & II_NOMCAST) - (void)printf("nomcast "); - if (info & II_BLOCK) - (void)printf("blo "); -} - -static int -print_elist(const char *elp _U_, u_int len _U_) -{ - /* Not enough examples available for me to debug this */ - return (1); -} - -static int -print_nsp(const u_char *nspp, u_int nsplen) -{ - const struct nsphdr *nsphp = (struct nsphdr *)nspp; - int dst, src, flags; - - if (nsplen < sizeof(struct nsphdr)) - goto trunc; - TCHECK(*nsphp); - flags = EXTRACT_LE_8BITS(nsphp->nh_flags); - dst = EXTRACT_LE_16BITS(nsphp->nh_dst); - src = EXTRACT_LE_16BITS(nsphp->nh_src); - - switch (flags & NSP_TYPEMASK) { - case MFT_DATA: - switch (flags & NSP_SUBMASK) { - case MFS_BOM: - case MFS_MOM: - case MFS_EOM: - case MFS_BOM+MFS_EOM: - printf("data %d>%d ", src, dst); - { - struct seghdr *shp = (struct seghdr *)nspp; - int ack; -#ifdef PRINT_NSPDATA - u_char *dp; -#endif - u_int data_off = sizeof(struct minseghdr); - - if (nsplen < data_off) - goto trunc; - TCHECK(shp->sh_seq[0]); - ack = EXTRACT_LE_16BITS(shp->sh_seq[0]); - if (ack & SGQ_ACK) { /* acknum field */ - if ((ack & SGQ_NAK) == SGQ_NAK) - (void)printf("nak %d ", ack & SGQ_MASK); - else - (void)printf("ack %d ", ack & SGQ_MASK); - data_off += sizeof(short); - if (nsplen < data_off) - goto trunc; - TCHECK(shp->sh_seq[1]); - ack = EXTRACT_LE_16BITS(shp->sh_seq[1]); - if (ack & SGQ_OACK) { /* ackoth field */ - if ((ack & SGQ_ONAK) == SGQ_ONAK) - (void)printf("onak %d ", ack & SGQ_MASK); - else - (void)printf("oack %d ", ack & SGQ_MASK); - data_off += sizeof(short); - if (nsplen < data_off) - goto trunc; - TCHECK(shp->sh_seq[2]); - ack = EXTRACT_LE_16BITS(shp->sh_seq[2]); - } - } - (void)printf("seg %d ", ack & SGQ_MASK); -#ifdef PRINT_NSPDATA - if (nsplen > data_off) { - dp = &(nspp[data_off]); - TCHECK2(*dp, nsplen - data_off); - pdata(dp, nsplen - data_off); - } -#endif - } - break; - case MFS_ILS+MFS_INT: - printf("intr "); - { - struct seghdr *shp = (struct seghdr *)nspp; - int ack; -#ifdef PRINT_NSPDATA - u_char *dp; -#endif - u_int data_off = sizeof(struct minseghdr); - - if (nsplen < data_off) - goto trunc; - TCHECK(shp->sh_seq[0]); - ack = EXTRACT_LE_16BITS(shp->sh_seq[0]); - if (ack & SGQ_ACK) { /* acknum field */ - if ((ack & SGQ_NAK) == SGQ_NAK) - (void)printf("nak %d ", ack & SGQ_MASK); - else - (void)printf("ack %d ", ack & SGQ_MASK); - data_off += sizeof(short); - if (nsplen < data_off) - goto trunc; - TCHECK(shp->sh_seq[1]); - ack = EXTRACT_LE_16BITS(shp->sh_seq[1]); - if (ack & SGQ_OACK) { /* ackdat field */ - if ((ack & SGQ_ONAK) == SGQ_ONAK) - (void)printf("nakdat %d ", ack & SGQ_MASK); - else - (void)printf("ackdat %d ", ack & SGQ_MASK); - data_off += sizeof(short); - if (nsplen < data_off) - goto trunc; - TCHECK(shp->sh_seq[2]); - ack = EXTRACT_LE_16BITS(shp->sh_seq[2]); - } - } - (void)printf("seg %d ", ack & SGQ_MASK); -#ifdef PRINT_NSPDATA - if (nsplen > data_off) { - dp = &(nspp[data_off]); - TCHECK2(*dp, nsplen - data_off); - pdata(dp, nsplen - data_off); - } -#endif - } - break; - case MFS_ILS: - (void)printf("link-service %d>%d ", src, dst); - { - struct seghdr *shp = (struct seghdr *)nspp; - struct lsmsg *lsmp = - (struct lsmsg *)&(nspp[sizeof(struct seghdr)]); - int ack; - int lsflags, fcval; - - if (nsplen < sizeof(struct seghdr) + sizeof(struct lsmsg)) - goto trunc; - TCHECK(shp->sh_seq[0]); - ack = EXTRACT_LE_16BITS(shp->sh_seq[0]); - if (ack & SGQ_ACK) { /* acknum field */ - if ((ack & SGQ_NAK) == SGQ_NAK) - (void)printf("nak %d ", ack & SGQ_MASK); - else - (void)printf("ack %d ", ack & SGQ_MASK); - TCHECK(shp->sh_seq[1]); - ack = EXTRACT_LE_16BITS(shp->sh_seq[1]); - if (ack & SGQ_OACK) { /* ackdat field */ - if ((ack & SGQ_ONAK) == SGQ_ONAK) - (void)printf("nakdat %d ", ack & SGQ_MASK); - else - (void)printf("ackdat %d ", ack & SGQ_MASK); - TCHECK(shp->sh_seq[2]); - ack = EXTRACT_LE_16BITS(shp->sh_seq[2]); - } - } - (void)printf("seg %d ", ack & SGQ_MASK); - TCHECK(*lsmp); - lsflags = EXTRACT_LE_8BITS(lsmp->ls_lsflags); - fcval = EXTRACT_LE_8BITS(lsmp->ls_fcval); - switch (lsflags & LSI_MASK) { - case LSI_DATA: - (void)printf("dat seg count %d ", fcval); - switch (lsflags & LSM_MASK) { - case LSM_NOCHANGE: - break; - case LSM_DONOTSEND: - (void)printf("donotsend-data "); - break; - case LSM_SEND: - (void)printf("send-data "); - break; - default: - (void)printf("reserved-fcmod? %x", lsflags); - break; - } - break; - case LSI_INTR: - (void)printf("intr req count %d ", fcval); - break; - default: - (void)printf("reserved-fcval-int? %x", lsflags); - break; - } - } - break; - default: - (void)printf("reserved-subtype? %x %d > %d", flags, src, dst); - break; - } - break; - case MFT_ACK: - switch (flags & NSP_SUBMASK) { - case MFS_DACK: - (void)printf("data-ack %d>%d ", src, dst); - { - struct ackmsg *amp = (struct ackmsg *)nspp; - int ack; - - if (nsplen < sizeof(struct ackmsg)) - goto trunc; - TCHECK(*amp); - ack = EXTRACT_LE_16BITS(amp->ak_acknum[0]); - if (ack & SGQ_ACK) { /* acknum field */ - if ((ack & SGQ_NAK) == SGQ_NAK) - (void)printf("nak %d ", ack & SGQ_MASK); - else - (void)printf("ack %d ", ack & SGQ_MASK); - ack = EXTRACT_LE_16BITS(amp->ak_acknum[1]); - if (ack & SGQ_OACK) { /* ackoth field */ - if ((ack & SGQ_ONAK) == SGQ_ONAK) - (void)printf("onak %d ", ack & SGQ_MASK); - else - (void)printf("oack %d ", ack & SGQ_MASK); - } - } - } - break; - case MFS_IACK: - (void)printf("ils-ack %d>%d ", src, dst); - { - struct ackmsg *amp = (struct ackmsg *)nspp; - int ack; - - if (nsplen < sizeof(struct ackmsg)) - goto trunc; - TCHECK(*amp); - ack = EXTRACT_LE_16BITS(amp->ak_acknum[0]); - if (ack & SGQ_ACK) { /* acknum field */ - if ((ack & SGQ_NAK) == SGQ_NAK) - (void)printf("nak %d ", ack & SGQ_MASK); - else - (void)printf("ack %d ", ack & SGQ_MASK); - TCHECK(amp->ak_acknum[1]); - ack = EXTRACT_LE_16BITS(amp->ak_acknum[1]); - if (ack & SGQ_OACK) { /* ackdat field */ - if ((ack & SGQ_ONAK) == SGQ_ONAK) - (void)printf("nakdat %d ", ack & SGQ_MASK); - else - (void)printf("ackdat %d ", ack & SGQ_MASK); - } - } - } - break; - case MFS_CACK: - (void)printf("conn-ack %d", dst); - break; - default: - (void)printf("reserved-acktype? %x %d > %d", flags, src, dst); - break; - } - break; - case MFT_CTL: - switch (flags & NSP_SUBMASK) { - case MFS_CI: - case MFS_RCI: - if ((flags & NSP_SUBMASK) == MFS_CI) - (void)printf("conn-initiate "); - else - (void)printf("retrans-conn-initiate "); - (void)printf("%d>%d ", src, dst); - { - struct cimsg *cimp = (struct cimsg *)nspp; - int services, info, segsize; -#ifdef PRINT_NSPDATA - u_char *dp; -#endif - - if (nsplen < sizeof(struct cimsg)) - goto trunc; - TCHECK(*cimp); - services = EXTRACT_LE_8BITS(cimp->ci_services); - info = EXTRACT_LE_8BITS(cimp->ci_info); - segsize = EXTRACT_LE_16BITS(cimp->ci_segsize); - - switch (services & COS_MASK) { - case COS_NONE: - break; - case COS_SEGMENT: - (void)printf("seg "); - break; - case COS_MESSAGE: - (void)printf("msg "); - break; - case COS_CRYPTSER: - (void)printf("crypt "); - break; - } - switch (info & COI_MASK) { - case COI_32: - (void)printf("ver 3.2 "); - break; - case COI_31: - (void)printf("ver 3.1 "); - break; - case COI_40: - (void)printf("ver 4.0 "); - break; - case COI_41: - (void)printf("ver 4.1 "); - break; - } - (void)printf("segsize %d ", segsize); -#ifdef PRINT_NSPDATA - if (nsplen > sizeof(struct cimsg)) { - dp = &(nspp[sizeof(struct cimsg)]); - TCHECK2(*dp, nsplen - sizeof(struct cimsg)); - pdata(dp, nsplen - sizeof(struct cimsg)); - } -#endif - } - break; - case MFS_CC: - (void)printf("conn-confirm %d>%d ", src, dst); - { - struct ccmsg *ccmp = (struct ccmsg *)nspp; - int services, info; - u_int segsize, optlen; -#ifdef PRINT_NSPDATA - u_char *dp; -#endif - - if (nsplen < sizeof(struct ccmsg)) - goto trunc; - TCHECK(*ccmp); - services = EXTRACT_LE_8BITS(ccmp->cc_services); - info = EXTRACT_LE_8BITS(ccmp->cc_info); - segsize = EXTRACT_LE_16BITS(ccmp->cc_segsize); - optlen = EXTRACT_LE_8BITS(ccmp->cc_optlen); - - switch (services & COS_MASK) { - case COS_NONE: - break; - case COS_SEGMENT: - (void)printf("seg "); - break; - case COS_MESSAGE: - (void)printf("msg "); - break; - case COS_CRYPTSER: - (void)printf("crypt "); - break; - } - switch (info & COI_MASK) { - case COI_32: - (void)printf("ver 3.2 "); - break; - case COI_31: - (void)printf("ver 3.1 "); - break; - case COI_40: - (void)printf("ver 4.0 "); - break; - case COI_41: - (void)printf("ver 4.1 "); - break; - } - (void)printf("segsize %d ", segsize); - if (optlen) { - (void)printf("optlen %d ", optlen); -#ifdef PRINT_NSPDATA - if (optlen > nsplen - sizeof(struct ccmsg)) - goto trunc; - dp = &(nspp[sizeof(struct ccmsg)]); - TCHECK2(*dp, optlen); - pdata(dp, optlen); -#endif - } - } - break; - case MFS_DI: - (void)printf("disconn-initiate %d>%d ", src, dst); - { - struct dimsg *dimp = (struct dimsg *)nspp; - int reason; - u_int optlen; -#ifdef PRINT_NSPDATA - u_char *dp; -#endif - - if (nsplen < sizeof(struct dimsg)) - goto trunc; - TCHECK(*dimp); - reason = EXTRACT_LE_16BITS(dimp->di_reason); - optlen = EXTRACT_LE_8BITS(dimp->di_optlen); - - print_reason(reason); - if (optlen) { - (void)printf("optlen %d ", optlen); -#ifdef PRINT_NSPDATA - if (optlen > nsplen - sizeof(struct dimsg)) - goto trunc; - dp = &(nspp[sizeof(struct dimsg)]); - TCHECK2(*dp, optlen); - pdata(dp, optlen); -#endif - } - } - break; - case MFS_DC: - (void)printf("disconn-confirm %d>%d ", src, dst); - { - struct dcmsg *dcmp = (struct dcmsg *)nspp; - int reason; - - TCHECK(*dcmp); - reason = EXTRACT_LE_16BITS(dcmp->dc_reason); - - print_reason(reason); - } - break; - default: - (void)printf("reserved-ctltype? %x %d > %d", flags, src, dst); - break; - } - break; - default: - (void)printf("reserved-type? %x %d > %d", flags, src, dst); - break; - } - return (1); - -trunc: - return (0); -} - -static struct tok reason2str[] = { - { UC_OBJREJECT, "object rejected connect" }, - { UC_RESOURCES, "insufficient resources" }, - { UC_NOSUCHNODE, "unrecognized node name" }, - { DI_SHUT, "node is shutting down" }, - { UC_NOSUCHOBJ, "unrecognized object" }, - { UC_INVOBJFORMAT, "invalid object name format" }, - { UC_OBJTOOBUSY, "object too busy" }, - { DI_PROTOCOL, "protocol error discovered" }, - { DI_TPA, "third party abort" }, - { UC_USERABORT, "user abort" }, - { UC_INVNODEFORMAT, "invalid node name format" }, - { UC_LOCALSHUT, "local node shutting down" }, - { DI_LOCALRESRC, "insufficient local resources" }, - { DI_REMUSERRESRC, "insufficient remote user resources" }, - { UC_ACCESSREJECT, "invalid access control information" }, - { DI_BADACCNT, "bad ACCOUNT information" }, - { UC_NORESPONSE, "no response from object" }, - { UC_UNREACHABLE, "node unreachable" }, - { DC_NOLINK, "no link terminate" }, - { DC_COMPLETE, "disconnect complete" }, - { DI_BADIMAGE, "bad image data in connect" }, - { DI_SERVMISMATCH, "cryptographic service mismatch" }, - { 0, NULL } -}; - -static void -print_reason(register int reason) -{ - printf("%s ", tok2str(reason2str, "reason-%d", reason)); -} - -const char * -dnnum_string(u_short dnaddr) -{ - char *str; - size_t siz; - int area = (u_short)(dnaddr & AREAMASK) >> AREASHIFT; - int node = dnaddr & NODEMASK; - - str = (char *)malloc(siz = sizeof("00.0000")); - if (str == NULL) - error("dnnum_string: malloc"); - snprintf(str, siz, "%d.%d", area, node); - return(str); -} - -const char * -dnname_string(u_short dnaddr) -{ -#ifdef HAVE_DNET_HTOA - struct dn_naddr dna; - - dna.a_len = sizeof(short); - memcpy((char *)dna.a_addr, (char *)&dnaddr, sizeof(short)); - return (strdup(dnet_htoa(&dna))); -#else - return(dnnum_string(dnaddr)); /* punt */ -#endif -} - -#ifdef PRINT_NSPDATA -static void -pdata(u_char *dp, u_int maxlen) -{ - char c; - u_int x = maxlen; - - while (x-- > 0) { - c = *dp++; - safeputchar(c); - } -} -#endif diff --git a/contrib/tcpdump/print-dhcp6.c b/contrib/tcpdump/print-dhcp6.c deleted file mode 100644 index b304f878a7434..0000000000000 --- a/contrib/tcpdump/print-dhcp6.c +++ /dev/null @@ -1,739 +0,0 @@ -/* - * Copyright (C) 1998 and 1999 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -/* - * RFC3315: DHCPv6 - * supported DHCPv6 options: - * RFC3319, - * RFC3633, - * RFC3646, - * draft-ietf-dhc-dhcpv6-opt-timeconfig-03.txt, - * draft-ietf-dhc-lifetime-00.txt, - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-dhcp6.c,v 1.35 2004/07/06 22:16:03 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -/* lease duration */ -#define DHCP6_DURATITION_INFINITE 0xffffffff - -/* Error Values */ -#define DH6ERR_FAILURE 16 -#define DH6ERR_AUTHFAIL 17 -#define DH6ERR_POORLYFORMED 18 -#define DH6ERR_UNAVAIL 19 -#define DH6ERR_OPTUNAVAIL 20 - -/* Message type */ -#define DH6_SOLICIT 1 -#define DH6_ADVERTISE 2 -#define DH6_REQUEST 3 -#define DH6_CONFIRM 4 -#define DH6_RENEW 5 -#define DH6_REBIND 6 -#define DH6_REPLY 7 -#define DH6_RELEASE 8 -#define DH6_DECLINE 9 -#define DH6_RECONFIGURE 10 -#define DH6_INFORM_REQ 11 -#define DH6_RELAY_FORW 12 -#define DH6_RELAY_REPLY 13 - -/* DHCP6 base packet format */ -struct dhcp6 { - union { - u_int8_t m; - u_int32_t x; - } dh6_msgtypexid; - /* options follow */ -}; -#define dh6_msgtype dh6_msgtypexid.m -#define dh6_xid dh6_msgtypexid.x -#define DH6_XIDMASK 0x00ffffff - -/* DHCPv6 relay messages */ -struct dhcp6_relay { - u_int8_t dh6relay_msgtype; - u_int8_t dh6relay_hcnt; - u_int8_t dh6relay_linkaddr[16]; /* XXX: badly aligned */ - u_int8_t dh6relay_peeraddr[16]; - /* options follow */ -}; - -/* options */ -#define DH6OPT_CLIENTID 1 -#define DH6OPT_SERVERID 2 -#define DH6OPT_IA_NA 3 -#define DH6OPT_IA_TMP 4 -#define DH6OPT_IADDR 5 -#define DH6OPT_ORO 6 -#define DH6OPT_PREFERENCE 7 -# define DH6OPT_PREF_MAX 255 -#define DH6OPT_ELAPSED_TIME 8 -#define DH6OPT_RELAY_MSG 9 -/*#define DH6OPT_SERVER_MSG 10 deprecated */ -#define DH6OPT_AUTH 11 -# define DH6OPT_AUTHPROTO_DELAYED 2 -# define DH6OPT_AUTHPROTO_RECONFIG 3 -# define DH6OPT_AUTHALG_HMACMD5 1 -# define DH6OPT_AUTHRDM_MONOCOUNTER 0 -# define DH6OPT_AUTHRECONFIG_KEY 1 -# define DH6OPT_AUTHRECONFIG_HMACMD5 2 -#define DH6OPT_UNICAST 12 -#define DH6OPT_STATUS_CODE 13 -# define DH6OPT_STCODE_SUCCESS 0 -# define DH6OPT_STCODE_UNSPECFAIL 1 -# define DH6OPT_STCODE_NOADDRAVAIL 2 -# define DH6OPT_STCODE_NOBINDING 3 -# define DH6OPT_STCODE_NOTONLINK 4 -# define DH6OPT_STCODE_USEMULTICAST 5 -# define DH6OPT_STCODE_NOPREFIXAVAIL 6 -#define DH6OPT_RAPID_COMMIT 14 -#define DH6OPT_USER_CLASS 15 -#define DH6OPT_VENDOR_CLASS 16 -#define DH6OPT_VENDOR_OPTS 17 -#define DH6OPT_INTERFACE_ID 18 -#define DH6OPT_RECONF_MSG 19 -#define DH6OPT_RECONF_ACCEPT 20 -#define DH6OPT_SIP_SERVER_D 21 -#define DH6OPT_SIP_SERVER_A 22 -#define DH6OPT_DNS 23 -#define DH6OPT_DNSNAME 24 -#define DH6OPT_IA_PD 25 -#define DH6OPT_IA_PD_PREFIX 26 - -/* - * The old prefix delegation option used in the service specification document - * (200206xx version) by NTT Communications. - */ -#define DH6OPT_PREFIX_DELEGATION 30 -#define DH6OPT_PREFIX_INFORMATION 31 -#define DH6OPT_PREFIX_REQUEST 32 - -/* - * The following one is an unassigned number. - * We temporarily use values as of KAME snap 20040322. - */ -#define DH6OPT_NTP_SERVERS 35 -#define DH6OPT_LIFETIME 36 - -struct dhcp6opt { - u_int16_t dh6opt_type; - u_int16_t dh6opt_len; - /* type-dependent data follows */ -}; - -struct dhcp6_ia { - u_int16_t dh6opt_ia_type; - u_int16_t dh6opt_ia_len; - u_int32_t dh6opt_ia_iaid; - u_int32_t dh6opt_ia_t1; - u_int32_t dh6opt_ia_t2; -}; - -struct dhcp6_ia_prefix { - u_int16_t dh6opt_ia_prefix_type; - u_int16_t dh6opt_ia_prefix_len; - u_int32_t dh6opt_ia_prefix_pltime; - u_int32_t dh6opt_ia_prefix_vltime; - u_int8_t dh6opt_ia_prefix_plen; - struct in6_addr dh6opt_ia_prefix_addr; -} __attribute__ ((__packed__)); - -struct dhcp6_auth { - u_int16_t dh6opt_auth_type; - u_int16_t dh6opt_auth_len; - u_int8_t dh6opt_auth_proto; - u_int8_t dh6opt_auth_alg; - u_int8_t dh6opt_auth_rdm; - u_int8_t dh6opt_auth_rdinfo[8]; - /* authentication information follows */ -} __attribute__ ((__packed__)); - -static const char * -dhcp6opt_name(int type) -{ - static char genstr[sizeof("opt_65535") + 1]; /* XXX thread unsafe */ - - if (type > 65535) - return "INVALID option"; - - switch(type) { - case DH6OPT_CLIENTID: - return "client ID"; - case DH6OPT_SERVERID: - return "server ID"; - case DH6OPT_IA_NA: - return "IA_NA"; - case DH6OPT_ORO: - return "option request"; - case DH6OPT_PREFERENCE: - return "preference"; - case DH6OPT_ELAPSED_TIME: - return "elapsed time"; - case DH6OPT_RELAY_MSG: - return "relay message"; - case DH6OPT_AUTH: - return "authentication"; - case DH6OPT_UNICAST: - return "server unicast"; - case DH6OPT_STATUS_CODE: - return "status code"; - case DH6OPT_RAPID_COMMIT: - return "rapid commit"; - case DH6OPT_USER_CLASS: - return "user class"; - case DH6OPT_VENDOR_CLASS: - return "vendor class"; - case DH6OPT_VENDOR_OPTS: - return "vendor-specific info"; - case DH6OPT_INTERFACE_ID: - return "interface ID"; - case DH6OPT_RECONF_MSG: - return "reconfigure message"; - case DH6OPT_RECONF_ACCEPT: - return "reconfigure accept"; - case DH6OPT_SIP_SERVER_D: - return "SIP servers domain"; - case DH6OPT_SIP_SERVER_A: - return "SIP servers address"; - case DH6OPT_DNS: - return "DNS"; - case DH6OPT_DNSNAME: - return "DNS name"; - case DH6OPT_PREFIX_DELEGATION: - return "prefix delegation"; - case DH6OPT_PREFIX_INFORMATION: - return "prefix information"; - case DH6OPT_IA_PD: - return "IA_PD"; - case DH6OPT_IA_PD_PREFIX: - return "IA_PD prefix"; - case DH6OPT_NTP_SERVERS: - return "NTP Server"; - case DH6OPT_LIFETIME: - return "lifetime"; - default: - snprintf(genstr, sizeof(genstr), "opt_%d", type); - return(genstr); - } -} - -static const char * -dhcp6stcode(int code) -{ - static char genstr[sizeof("code255") + 1]; /* XXX thread unsafe */ - - if (code > 255) - return "INVALID code"; - - switch(code) { - case DH6OPT_STCODE_SUCCESS: - return "success"; - case DH6OPT_STCODE_UNSPECFAIL: - return "unspec failure"; - case DH6OPT_STCODE_NOADDRAVAIL: - return "no addresses"; - case DH6OPT_STCODE_NOBINDING: - return "no binding"; - case DH6OPT_STCODE_NOTONLINK: - return "not on-link"; - case DH6OPT_STCODE_USEMULTICAST: - return "use multicast"; - case DH6OPT_STCODE_NOPREFIXAVAIL: - return "no prefixes"; - default: - snprintf(genstr, sizeof(genstr), "code%d", code); - return(genstr); - } -} - -static void -dhcp6opt_print(const u_char *cp, const u_char *ep) -{ - struct dhcp6opt *dh6o; - u_char *tp; - size_t i; - u_int16_t opttype; - size_t optlen; - u_int16_t val16; - u_int32_t val32; - struct in6_addr addr6; - struct dhcp6_ia ia; - struct dhcp6_ia_prefix ia_prefix; - struct dhcp6_auth authopt; - u_int authinfolen, authrealmlen; - - if (cp == ep) - return; - while (cp < ep) { - if (ep < cp + sizeof(*dh6o)) - goto trunc; - dh6o = (struct dhcp6opt *)cp; - optlen = EXTRACT_16BITS(&dh6o->dh6opt_len); - if (ep < cp + sizeof(*dh6o) + optlen) - goto trunc; - opttype = EXTRACT_16BITS(&dh6o->dh6opt_type); - printf(" (%s", dhcp6opt_name(opttype)); - switch (opttype) { - case DH6OPT_CLIENTID: - case DH6OPT_SERVERID: - if (optlen < 2) { - /*(*/ - printf(" ?)"); - break; - } - tp = (u_char *)(dh6o + 1); - switch (EXTRACT_16BITS(tp)) { - case 1: - if (optlen >= 2 + 6) { - printf(" hwaddr/time type %u time %u ", - EXTRACT_16BITS(&tp[2]), - EXTRACT_32BITS(&tp[4])); - for (i = 8; i < optlen; i++) - printf("%02x", tp[i]); - /*(*/ - printf(")"); - } else { - /*(*/ - printf(" ?)"); - } - break; - case 2: - if (optlen >= 2 + 8) { - printf(" vid "); - for (i = 2; i < 2 + 8; i++) - printf("%02x", tp[i]); - /*(*/ - printf(")"); - } else { - /*(*/ - printf(" ?)"); - } - break; - case 3: - if (optlen >= 2 + 2) { - printf(" hwaddr type %u ", - EXTRACT_16BITS(&tp[2])); - for (i = 4; i < optlen; i++) - printf("%02x", tp[i]); - /*(*/ - printf(")"); - } else { - /*(*/ - printf(" ?)"); - } - break; - default: - printf(" type %d)", EXTRACT_16BITS(tp)); - break; - } - break; - case DH6OPT_ORO: - if (optlen % 2) { - printf(" ?)"); - break; - } - tp = (u_char *)(dh6o + 1); - for (i = 0; i < optlen; i += 2) { - u_int16_t opt; - - memcpy(&opt, &tp[i], sizeof(opt)); - printf(" %s", dhcp6opt_name(ntohs(opt))); - } - printf(")"); - break; - case DH6OPT_PREFERENCE: - if (optlen != 1) { - printf(" ?)"); - break; - } - printf(" %d)", *((u_char *)(dh6o + 1) + 1)); - break; - case DH6OPT_ELAPSED_TIME: - if (optlen != 2) { - printf(" ?)"); - break; - } - memcpy(&val16, dh6o + 1, sizeof(val16)); - val16 = ntohs(val16); - printf(" %d)", (int)val16); - break; - case DH6OPT_RELAY_MSG: - printf(" ("); - dhcp6_print((const u_char *)(dh6o + 1), optlen); - printf(")"); - break; - case DH6OPT_AUTH: - if (optlen < sizeof(authopt) - sizeof(*dh6o)) { - printf(" ?)"); - break; - } - memcpy(&authopt, dh6o, sizeof(authopt)); - switch (authopt.dh6opt_auth_proto) { - case DH6OPT_AUTHPROTO_DELAYED: - printf(" proto: delayed"); - break; - case DH6OPT_AUTHPROTO_RECONFIG: - printf(" proto: reconfigure"); - break; - default: - printf(" proto: %d", - authopt.dh6opt_auth_proto); - break; - } - switch (authopt.dh6opt_auth_alg) { - case DH6OPT_AUTHALG_HMACMD5: - /* XXX: may depend on the protocol */ - printf(", alg: HMAC-MD5"); - break; - default: - printf(", alg: %d", authopt.dh6opt_auth_alg); - break; - } - switch (authopt.dh6opt_auth_rdm) { - case DH6OPT_AUTHRDM_MONOCOUNTER: - printf(", RDM: mono"); - break; - default: - printf(", RDM: %d", authopt.dh6opt_auth_rdm); - break; - } - tp = (u_char *)&authopt.dh6opt_auth_rdinfo; - printf(", RD:"); - for (i = 0; i < 4; i++, tp += sizeof(val16)) - printf(" %04x", EXTRACT_16BITS(tp)); - - /* protocol dependent part */ - tp = (u_char *)dh6o + sizeof(authopt); - authinfolen = - optlen + sizeof(*dh6o) - sizeof(authopt); - switch (authopt.dh6opt_auth_proto) { - case DH6OPT_AUTHPROTO_DELAYED: - if (authinfolen == 0) - break; - if (authinfolen < 20) { - printf(" ??"); - break; - } - authrealmlen = authinfolen - 20; - if (authrealmlen > 0) { - printf(", realm: "); - } - for (i = 0; i < authrealmlen; i++, tp++) - printf("%02x", *tp); - printf(", key ID: %08x", EXTRACT_32BITS(tp)); - tp += 4; - printf(", HMAC-MD5:"); - for (i = 0; i < 4; i++, tp+= 4) - printf(" %08x", EXTRACT_32BITS(tp)); - break; - case DH6OPT_AUTHPROTO_RECONFIG: - if (authinfolen != 17) { - printf(" ??"); - break; - } - switch (*tp++) { - case DH6OPT_AUTHRECONFIG_KEY: - printf(" reconfig-key"); - break; - case DH6OPT_AUTHRECONFIG_HMACMD5: - printf(" type: HMAC-MD5"); - break; - default: - printf(" type: ??"); - break; - } - printf(" value:"); - for (i = 0; i < 4; i++, tp+= 4) - printf(" %08x", EXTRACT_32BITS(tp)); - break; - default: - printf(" ??"); - break; - } - - printf(")"); - break; - case DH6OPT_RAPID_COMMIT: /* nothing todo */ - printf(")"); - break; - case DH6OPT_INTERFACE_ID: - /* - * Since we cannot predict the encoding, print hex dump - * at most 10 characters. - */ - for (i = 0; i < optlen && i < 10; i++) - printf("%02x", ((u_char *)(dh6o + 1))[i]); - break; - case DH6OPT_RECONF_MSG: - tp = (u_char *)(dh6o + 1); - switch (*tp) { - case DH6_RENEW: - printf(" for renew)"); - break; - case DH6_INFORM_REQ: - printf(" for inf-req)"); - break; - default: - printf(" for ?\?\?(%02x))", *tp); - break; - } - break; - case DH6OPT_RECONF_ACCEPT: /* nothing todo */ - printf(")"); - break; - case DH6OPT_SIP_SERVER_A: - case DH6OPT_DNS: - case DH6OPT_NTP_SERVERS: - if (optlen % 16) { - printf(" ?)"); - break; - } - tp = (u_char *)(dh6o + 1); - for (i = 0; i < optlen; i += 16) - printf(" %s", ip6addr_string(&tp[i])); - printf(")"); - break; - case DH6OPT_PREFIX_DELEGATION: - dhcp6opt_print((u_char *)(dh6o + 1), - (u_char *)(dh6o + 1) + optlen); - printf(")"); - break; - case DH6OPT_PREFIX_INFORMATION: - if (optlen % 21) - printf(" ?)"); - memcpy(&addr6, (u_char *)(dh6o + 1) + 5, - sizeof(addr6)); - printf(" %s/%d", ip6addr_string(&addr6), - (int)*((u_char *)(dh6o + 1) + 4)); - memcpy(&val32, dh6o + 1, sizeof(val32)); - val32 = ntohl(val32); - if (val32 == DHCP6_DURATITION_INFINITE) - printf(" lease-duration: infinite)"); - else - printf(" lease-duration: %u)", val32); - break; - case DH6OPT_STATUS_CODE: - if (optlen < 2) { - printf(" ?)"); - break; - } - memcpy(&val16, (u_char *)(dh6o + 1), sizeof(val16)); - val16 = ntohs(val16); - printf(" %s)", dhcp6stcode(val16)); - break; - case DH6OPT_IA_NA: - case DH6OPT_IA_PD: - if (optlen < sizeof(ia) - 4) { - printf(" ?)"); - break; - } - memcpy(&ia, (u_char *)dh6o, sizeof(ia)); - ia.dh6opt_ia_iaid = ntohl(ia.dh6opt_ia_iaid); - ia.dh6opt_ia_t1 = ntohl(ia.dh6opt_ia_t1); - ia.dh6opt_ia_t2 = ntohl(ia.dh6opt_ia_t2); - printf(" IAID:%lu T1:%lu T2:%lu", - (unsigned long)ia.dh6opt_ia_iaid, - (unsigned long)ia.dh6opt_ia_t1, - (unsigned long)ia.dh6opt_ia_t2); - if (optlen > sizeof(ia) - 4) { - /* there are sub-options */ - dhcp6opt_print((u_char *)dh6o + sizeof(ia), - (u_char *)(dh6o + 1) + optlen); - } - printf(")"); - break; - case DH6OPT_IA_PD_PREFIX: - if (optlen < sizeof(ia_prefix) - 4) { - printf(" ?)"); - break; - } - memcpy(&ia_prefix, (u_char *)dh6o, sizeof(ia_prefix)); - printf(" %s/%d", - ip6addr_string(&ia_prefix.dh6opt_ia_prefix_addr), - ia_prefix.dh6opt_ia_prefix_plen); - ia_prefix.dh6opt_ia_prefix_pltime = - ntohl(ia_prefix.dh6opt_ia_prefix_pltime); - ia_prefix.dh6opt_ia_prefix_vltime = - ntohl(ia_prefix.dh6opt_ia_prefix_vltime); - printf(" pltime:%lu vltime:%lu", - (unsigned long)ia_prefix.dh6opt_ia_prefix_pltime, - (unsigned long)ia_prefix.dh6opt_ia_prefix_vltime); - if (optlen > sizeof(ia_prefix) - 4) { - /* there are sub-options */ - dhcp6opt_print((u_char *)dh6o + - sizeof(ia_prefix), - (u_char *)(dh6o + 1) + optlen); - } - printf(")"); - break; - case DH6OPT_LIFETIME: - if (optlen != 4) { - printf(" ?)"); - break; - } - memcpy(&val32, dh6o + 1, sizeof(val32)); - val32 = ntohl(val32); - printf(" %d)", (int)val32); - break; - default: - printf(")"); - break; - } - - cp += sizeof(*dh6o) + optlen; - } - return; - -trunc: - printf("[|dhcp6ext]"); -} - -/* - * Print dhcp6 packets - */ -void -dhcp6_print(const u_char *cp, u_int length) -{ - struct dhcp6 *dh6; - struct dhcp6_relay *dh6relay; - const u_char *ep; - u_char *extp; - const char *name; - - printf("dhcp6"); - - ep = (u_char *)snapend; - if (cp + length < ep) - ep = cp + length; - - dh6 = (struct dhcp6 *)cp; - dh6relay = (struct dhcp6_relay *)cp; - TCHECK(dh6->dh6_xid); - switch (dh6->dh6_msgtype) { - case DH6_SOLICIT: - name = "solicit"; - break; - case DH6_ADVERTISE: - name = "advertise"; - break; - case DH6_REQUEST: - name = "request"; - break; - case DH6_CONFIRM: - name = "confirm"; - break; - case DH6_RENEW: - name = "renew"; - break; - case DH6_REBIND: - name = "rebind"; - break; - case DH6_REPLY: - name = "reply"; - break; - case DH6_RELEASE: - name = "release"; - break; - case DH6_DECLINE: - name = "decline"; - break; - case DH6_RECONFIGURE: - name = "reconfigure"; - break; - case DH6_INFORM_REQ: - name= "inf-req"; - break; - case DH6_RELAY_FORW: - name= "relay-fwd"; - break; - case DH6_RELAY_REPLY: - name= "relay-reply"; - break; - default: - name = NULL; - break; - } - - if (!vflag) { - if (name) - printf(" %s", name); - else if (dh6->dh6_msgtype != DH6_RELAY_FORW && - dh6->dh6_msgtype != DH6_RELAY_REPLY) { - printf(" msgtype-%u", dh6->dh6_msgtype); - } - return; - } - - /* XXX relay agent messages have to be handled differently */ - - if (name) - printf(" %s (", name); /*)*/ - else - printf(" msgtype-%u (", dh6->dh6_msgtype); /*)*/ - if (dh6->dh6_msgtype != DH6_RELAY_FORW && - dh6->dh6_msgtype != DH6_RELAY_REPLY) { - printf("xid=%x", EXTRACT_32BITS(&dh6->dh6_xid) & DH6_XIDMASK); - extp = (u_char *)(dh6 + 1); - dhcp6opt_print(extp, ep); - } else { /* relay messages */ - struct in6_addr addr6; - - TCHECK(dh6relay->dh6relay_peeraddr); - - memcpy(&addr6, dh6relay->dh6relay_linkaddr, sizeof (addr6)); - printf("linkaddr=%s", ip6addr_string(&addr6)); - - memcpy(&addr6, dh6relay->dh6relay_peeraddr, sizeof (addr6)); - printf(" peeraddr=%s", ip6addr_string(&addr6)); - - dhcp6opt_print((u_char *)(dh6relay + 1), ep); - } - /*(*/ - printf(")"); - return; - -trunc: - printf("[|dhcp6]"); -} diff --git a/contrib/tcpdump/print-domain.c b/contrib/tcpdump/print-domain.c deleted file mode 100644 index adcf59267c93b..0000000000000 --- a/contrib/tcpdump/print-domain.c +++ /dev/null @@ -1,698 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-domain.c,v 1.89.2.1 2005/04/20 20:59:00 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include "nameser.h" - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" /* must come after interface.h */ - -static const char *ns_ops[] = { - "", " inv_q", " stat", " op3", " notify", " update", " op6", " op7", - " op8", " updataA", " updateD", " updateDA", - " updateM", " updateMA", " zoneInit", " zoneRef", -}; - -static const char *ns_resp[] = { - "", " FormErr", " ServFail", " NXDomain", - " NotImp", " Refused", " YXDomain", " YXRRSet", - " NXRRSet", " NotAuth", " NotZone", " Resp11", - " Resp12", " Resp13", " Resp14", " NoChange", -}; - -/* skip over a domain name */ -static const u_char * -ns_nskip(register const u_char *cp) -{ - register u_char i; - - if (!TTEST2(*cp, 1)) - return (NULL); - i = *cp++; - while (i) { - if ((i & INDIR_MASK) == INDIR_MASK) - return (cp + 1); - if ((i & INDIR_MASK) == EDNS0_MASK) { - int bitlen, bytelen; - - if ((i & ~INDIR_MASK) != EDNS0_ELT_BITLABEL) - return(NULL); /* unknown ELT */ - if (!TTEST2(*cp, 1)) - return (NULL); - if ((bitlen = *cp++) == 0) - bitlen = 256; - bytelen = (bitlen + 7) / 8; - cp += bytelen; - } else - cp += i; - if (!TTEST2(*cp, 1)) - return (NULL); - i = *cp++; - } - return (cp); -} - -/* print a <domain-name> */ -static const u_char * -blabel_print(const u_char *cp) -{ - int bitlen, slen, b; - const u_char *bitp, *lim; - char tc; - - if (!TTEST2(*cp, 1)) - return(NULL); - if ((bitlen = *cp) == 0) - bitlen = 256; - slen = (bitlen + 3) / 4; - lim = cp + 1 + slen; - - /* print the bit string as a hex string */ - printf("\\[x"); - for (bitp = cp + 1, b = bitlen; bitp < lim && b > 7; b -= 8, bitp++) { - TCHECK(*bitp); - printf("%02x", *bitp); - } - if (b > 4) { - TCHECK(*bitp); - tc = *bitp++; - printf("%02x", tc & (0xff << (8 - b))); - } else if (b > 0) { - TCHECK(*bitp); - tc = *bitp++; - printf("%1x", ((tc >> 4) & 0x0f) & (0x0f << (4 - b))); - } - printf("/%d]", bitlen); - return lim; -trunc: - printf(".../%d]", bitlen); - return NULL; -} - -static int -labellen(const u_char *cp) -{ - register u_int i; - - if (!TTEST2(*cp, 1)) - return(-1); - i = *cp; - if ((i & INDIR_MASK) == EDNS0_MASK) { - int bitlen, elt; - if ((elt = (i & ~INDIR_MASK)) != EDNS0_ELT_BITLABEL) { - printf("<ELT %d>", elt); - return(-1); - } - if (!TTEST2(*(cp + 1), 1)) - return(-1); - if ((bitlen = *(cp + 1)) == 0) - bitlen = 256; - return(((bitlen + 7) / 8) + 1); - } else - return(i); -} - -static const u_char * -ns_nprint(register const u_char *cp, register const u_char *bp) -{ - register u_int i, l; - register const u_char *rp = NULL; - register int compress = 0; - int chars_processed; - int elt; - int data_size = snapend - bp; - - if ((l = labellen(cp)) == (u_int)-1) - return(NULL); - if (!TTEST2(*cp, 1)) - return(NULL); - chars_processed = 1; - if (((i = *cp++) & INDIR_MASK) != INDIR_MASK) { - compress = 0; - rp = cp + l; - } - - if (i != 0) - while (i && cp < snapend) { - if ((i & INDIR_MASK) == INDIR_MASK) { - if (!compress) { - rp = cp + 1; - compress = 1; - } - if (!TTEST2(*cp, 1)) - return(NULL); - cp = bp + (((i << 8) | *cp) & 0x3fff); - if ((l = labellen(cp)) == (u_int)-1) - return(NULL); - if (!TTEST2(*cp, 1)) - return(NULL); - i = *cp++; - chars_processed++; - - /* - * If we've looked at every character in - * the message, this pointer will make - * us look at some character again, - * which means we're looping. - */ - if (chars_processed >= data_size) { - printf("<LOOP>"); - return (NULL); - } - continue; - } - if ((i & INDIR_MASK) == EDNS0_MASK) { - elt = (i & ~INDIR_MASK); - switch(elt) { - case EDNS0_ELT_BITLABEL: - if (blabel_print(cp) == NULL) - return (NULL); - break; - default: - /* unknown ELT */ - printf("<ELT %d>", elt); - return(NULL); - } - } else { - if (fn_printn(cp, l, snapend)) - return(NULL); - } - - cp += l; - chars_processed += l; - putchar('.'); - if ((l = labellen(cp)) == (u_int)-1) - return(NULL); - if (!TTEST2(*cp, 1)) - return(NULL); - i = *cp++; - chars_processed++; - if (!compress) - rp += l + 1; - } - else - putchar('.'); - return (rp); -} - -/* print a <character-string> */ -static const u_char * -ns_cprint(register const u_char *cp) -{ - register u_int i; - - if (!TTEST2(*cp, 1)) - return (NULL); - i = *cp++; - if (fn_printn(cp, i, snapend)) - return (NULL); - return (cp + i); -} - -/* http://www.iana.org/assignments/dns-parameters */ -struct tok ns_type2str[] = { - { T_A, "A" }, /* RFC 1035 */ - { T_NS, "NS" }, /* RFC 1035 */ - { T_MD, "MD" }, /* RFC 1035 */ - { T_MF, "MF" }, /* RFC 1035 */ - { T_CNAME, "CNAME" }, /* RFC 1035 */ - { T_SOA, "SOA" }, /* RFC 1035 */ - { T_MB, "MB" }, /* RFC 1035 */ - { T_MG, "MG" }, /* RFC 1035 */ - { T_MR, "MR" }, /* RFC 1035 */ - { T_NULL, "NULL" }, /* RFC 1035 */ - { T_WKS, "WKS" }, /* RFC 1035 */ - { T_PTR, "PTR" }, /* RFC 1035 */ - { T_HINFO, "HINFO" }, /* RFC 1035 */ - { T_MINFO, "MINFO" }, /* RFC 1035 */ - { T_MX, "MX" }, /* RFC 1035 */ - { T_TXT, "TXT" }, /* RFC 1035 */ - { T_RP, "RP" }, /* RFC 1183 */ - { T_AFSDB, "AFSDB" }, /* RFC 1183 */ - { T_X25, "X25" }, /* RFC 1183 */ - { T_ISDN, "ISDN" }, /* RFC 1183 */ - { T_RT, "RT" }, /* RFC 1183 */ - { T_NSAP, "NSAP" }, /* RFC 1706 */ - { T_NSAP_PTR, "NSAP_PTR" }, - { T_SIG, "SIG" }, /* RFC 2535 */ - { T_KEY, "KEY" }, /* RFC 2535 */ - { T_PX, "PX" }, /* RFC 2163 */ - { T_GPOS, "GPOS" }, /* RFC 1712 */ - { T_AAAA, "AAAA" }, /* RFC 1886 */ - { T_LOC, "LOC" }, /* RFC 1876 */ - { T_NXT, "NXT" }, /* RFC 2535 */ - { T_EID, "EID" }, /* Nimrod */ - { T_NIMLOC, "NIMLOC" }, /* Nimrod */ - { T_SRV, "SRV" }, /* RFC 2782 */ - { T_ATMA, "ATMA" }, /* ATM Forum */ - { T_NAPTR, "NAPTR" }, /* RFC 2168, RFC 2915 */ - { T_A6, "A6" }, /* RFC 2874 */ - { T_DNAME, "DNAME" }, /* RFC 2672 */ - { T_OPT, "OPT" }, /* RFC 2671 */ - { T_UINFO, "UINFO" }, - { T_UID, "UID" }, - { T_GID, "GID" }, - { T_UNSPEC, "UNSPEC" }, - { T_UNSPECA, "UNSPECA" }, - { T_TKEY, "TKEY" }, /* RFC 2930 */ - { T_TSIG, "TSIG" }, /* RFC 2845 */ - { T_IXFR, "IXFR" }, /* RFC 1995 */ - { T_AXFR, "AXFR" }, /* RFC 1035 */ - { T_MAILB, "MAILB" }, /* RFC 1035 */ - { T_MAILA, "MAILA" }, /* RFC 1035 */ - { T_ANY, "ANY" }, - { 0, NULL } -}; - -struct tok ns_class2str[] = { - { C_IN, "IN" }, /* Not used */ - { C_CHAOS, "CHAOS" }, - { C_HS, "HS" }, - { C_ANY, "ANY" }, - { 0, NULL } -}; - -/* print a query */ -static const u_char * -ns_qprint(register const u_char *cp, register const u_char *bp, int is_mdns) -{ - register const u_char *np = cp; - register u_int i; - - cp = ns_nskip(cp); - - if (cp == NULL || !TTEST2(*cp, 4)) - return(NULL); - - /* print the qtype and qclass (if it's not IN) */ - i = EXTRACT_16BITS(cp); - cp += 2; - printf(" %s", tok2str(ns_type2str, "Type%d", i)); - i = EXTRACT_16BITS(cp); - cp += 2; - if (is_mdns && i == (C_IN|C_CACHE_FLUSH)) - printf(" (Cache flush)"); - else if (i != C_IN) - printf(" %s", tok2str(ns_class2str, "(Class %d)", i)); - - fputs("? ", stdout); - cp = ns_nprint(np, bp); - return(cp ? cp + 4 : NULL); -} - -/* print a reply */ -static const u_char * -ns_rprint(register const u_char *cp, register const u_char *bp, int is_mdns) -{ - register u_int class; - register u_short typ, len; - register const u_char *rp; - - if (vflag) { - putchar(' '); - if ((cp = ns_nprint(cp, bp)) == NULL) - return NULL; - } else - cp = ns_nskip(cp); - - if (cp == NULL || !TTEST2(*cp, 10)) - return (snapend); - - /* print the type/qtype and class (if it's not IN) */ - typ = EXTRACT_16BITS(cp); - cp += 2; - class = EXTRACT_16BITS(cp); - cp += 2; - if (is_mdns && class == (C_IN|C_CACHE_FLUSH)) - printf(" (Cache flush)"); - else if (class != C_IN && typ != T_OPT) - printf(" %s", tok2str(ns_class2str, "(Class %d)", class)); - - /* ignore ttl */ - cp += 4; - - len = EXTRACT_16BITS(cp); - cp += 2; - - rp = cp + len; - - printf(" %s", tok2str(ns_type2str, "Type%d", typ)); - if (rp > snapend) - return(NULL); - - switch (typ) { - case T_A: - if (!TTEST2(*cp, sizeof(struct in_addr))) - return(NULL); - printf(" %s", ipaddr_string(cp)); - break; - - case T_NS: - case T_CNAME: - case T_PTR: -#ifdef T_DNAME - case T_DNAME: -#endif - putchar(' '); - if (ns_nprint(cp, bp) == NULL) - return(NULL); - break; - - case T_SOA: - if (!vflag) - break; - putchar(' '); - if ((cp = ns_nprint(cp, bp)) == NULL) - return(NULL); - putchar(' '); - if ((cp = ns_nprint(cp, bp)) == NULL) - return(NULL); - if (!TTEST2(*cp, 5 * 4)) - return(NULL); - printf(" %u", EXTRACT_32BITS(cp)); - cp += 4; - printf(" %u", EXTRACT_32BITS(cp)); - cp += 4; - printf(" %u", EXTRACT_32BITS(cp)); - cp += 4; - printf(" %u", EXTRACT_32BITS(cp)); - cp += 4; - printf(" %u", EXTRACT_32BITS(cp)); - cp += 4; - break; - case T_MX: - putchar(' '); - if (!TTEST2(*cp, 2)) - return(NULL); - if (ns_nprint(cp + 2, bp) == NULL) - return(NULL); - printf(" %d", EXTRACT_16BITS(cp)); - break; - - case T_TXT: - while (cp < rp) { - printf(" \""); - cp = ns_cprint(cp); - if (cp == NULL) - return(NULL); - putchar('"'); - } - break; - - case T_SRV: - putchar(' '); - if (!TTEST2(*cp, 6)) - return(NULL); - if (ns_nprint(cp + 6, bp) == NULL) - return(NULL); - printf(":%d %d %d", EXTRACT_16BITS(cp + 4), - EXTRACT_16BITS(cp), EXTRACT_16BITS(cp + 2)); - break; - -#ifdef INET6 - case T_AAAA: - if (!TTEST2(*cp, sizeof(struct in6_addr))) - return(NULL); - printf(" %s", ip6addr_string(cp)); - break; - - case T_A6: - { - struct in6_addr a; - int pbit, pbyte; - - if (!TTEST2(*cp, 1)) - return(NULL); - pbit = *cp; - pbyte = (pbit & ~7) / 8; - if (pbit > 128) { - printf(" %u(bad plen)", pbit); - break; - } else if (pbit < 128) { - if (!TTEST2(*(cp + 1), sizeof(a) - pbyte)) - return(NULL); - memset(&a, 0, sizeof(a)); - memcpy(&a.s6_addr[pbyte], cp + 1, sizeof(a) - pbyte); - printf(" %u %s", pbit, ip6addr_string(&a)); - } - if (pbit > 0) { - putchar(' '); - if (ns_nprint(cp + 1 + sizeof(a) - pbyte, bp) == NULL) - return(NULL); - } - break; - } -#endif /*INET6*/ - - case T_OPT: - printf(" UDPsize=%u", class); - break; - - case T_UNSPECA: /* One long string */ - if (!TTEST2(*cp, len)) - return(NULL); - if (fn_printn(cp, len, snapend)) - return(NULL); - break; - - case T_TSIG: - { - if (cp + len > snapend) - return(NULL); - if (!vflag) - break; - putchar(' '); - if ((cp = ns_nprint(cp, bp)) == NULL) - return(NULL); - cp += 6; - if (!TTEST2(*cp, 2)) - return(NULL); - printf(" fudge=%u", EXTRACT_16BITS(cp)); - cp += 2; - if (!TTEST2(*cp, 2)) - return(NULL); - printf(" maclen=%u", EXTRACT_16BITS(cp)); - cp += 2 + EXTRACT_16BITS(cp); - if (!TTEST2(*cp, 2)) - return(NULL); - printf(" origid=%u", EXTRACT_16BITS(cp)); - cp += 2; - if (!TTEST2(*cp, 2)) - return(NULL); - printf(" error=%u", EXTRACT_16BITS(cp)); - cp += 2; - if (!TTEST2(*cp, 2)) - return(NULL); - printf(" otherlen=%u", EXTRACT_16BITS(cp)); - cp += 2; - } - } - return (rp); /* XXX This isn't always right */ -} - -void -ns_print(register const u_char *bp, u_int length, int is_mdns) -{ - register const HEADER *np; - register int qdcount, ancount, nscount, arcount; - register const u_char *cp; - u_int16_t b2; - - np = (const HEADER *)bp; - TCHECK(*np); - /* get the byte-order right */ - qdcount = EXTRACT_16BITS(&np->qdcount); - ancount = EXTRACT_16BITS(&np->ancount); - nscount = EXTRACT_16BITS(&np->nscount); - arcount = EXTRACT_16BITS(&np->arcount); - - if (DNS_QR(np)) { - /* this is a response */ - printf(" %d%s%s%s%s%s%s", - EXTRACT_16BITS(&np->id), - ns_ops[DNS_OPCODE(np)], - ns_resp[DNS_RCODE(np)], - DNS_AA(np)? "*" : "", - DNS_RA(np)? "" : "-", - DNS_TC(np)? "|" : "", - DNS_AD(np)? "$" : ""); - - if (qdcount != 1) - printf(" [%dq]", qdcount); - /* Print QUESTION section on -vv */ - cp = (const u_char *)(np + 1); - while (qdcount--) { - if (qdcount < EXTRACT_16BITS(&np->qdcount) - 1) - putchar(','); - if (vflag > 1) { - fputs(" q:", stdout); - if ((cp = ns_qprint(cp, bp, is_mdns)) == NULL) - goto trunc; - } else { - if ((cp = ns_nskip(cp)) == NULL) - goto trunc; - cp += 4; /* skip QTYPE and QCLASS */ - } - } - printf(" %d/%d/%d", ancount, nscount, arcount); - if (ancount--) { - if ((cp = ns_rprint(cp, bp, is_mdns)) == NULL) - goto trunc; - while (cp < snapend && ancount--) { - putchar(','); - if ((cp = ns_rprint(cp, bp, is_mdns)) == NULL) - goto trunc; - } - } - if (ancount > 0) - goto trunc; - /* Print NS and AR sections on -vv */ - if (vflag > 1) { - if (cp < snapend && nscount--) { - fputs(" ns:", stdout); - if ((cp = ns_rprint(cp, bp, is_mdns)) == NULL) - goto trunc; - while (cp < snapend && nscount--) { - putchar(','); - if ((cp = ns_rprint(cp, bp, is_mdns)) == NULL) - goto trunc; - } - } - if (nscount > 0) - goto trunc; - if (cp < snapend && arcount--) { - fputs(" ar:", stdout); - if ((cp = ns_rprint(cp, bp, is_mdns)) == NULL) - goto trunc; - while (cp < snapend && arcount--) { - putchar(','); - if ((cp = ns_rprint(cp, bp, is_mdns)) == NULL) - goto trunc; - } - } - if (arcount > 0) - goto trunc; - } - } - else { - /* this is a request */ - printf(" %d%s%s%s", EXTRACT_16BITS(&np->id), ns_ops[DNS_OPCODE(np)], - DNS_RD(np) ? "+" : "", - DNS_CD(np) ? "%" : ""); - - /* any weirdness? */ - b2 = EXTRACT_16BITS(((u_short *)np)+1); - if (b2 & 0x6cf) - printf(" [b2&3=0x%x]", b2); - - if (DNS_OPCODE(np) == IQUERY) { - if (qdcount) - printf(" [%dq]", qdcount); - if (ancount != 1) - printf(" [%da]", ancount); - } - else { - if (ancount) - printf(" [%da]", ancount); - if (qdcount != 1) - printf(" [%dq]", qdcount); - } - if (nscount) - printf(" [%dn]", nscount); - if (arcount) - printf(" [%dau]", arcount); - - cp = (const u_char *)(np + 1); - if (qdcount--) { - cp = ns_qprint(cp, (const u_char *)np, is_mdns); - if (!cp) - goto trunc; - while (cp < snapend && qdcount--) { - cp = ns_qprint((const u_char *)cp, - (const u_char *)np, - is_mdns); - if (!cp) - goto trunc; - } - } - if (qdcount > 0) - goto trunc; - - /* Print remaining sections on -vv */ - if (vflag > 1) { - if (ancount--) { - if ((cp = ns_rprint(cp, bp, is_mdns)) == NULL) - goto trunc; - while (cp < snapend && ancount--) { - putchar(','); - if ((cp = ns_rprint(cp, bp, is_mdns)) == NULL) - goto trunc; - } - } - if (ancount > 0) - goto trunc; - if (cp < snapend && nscount--) { - fputs(" ns:", stdout); - if ((cp = ns_rprint(cp, bp, is_mdns)) == NULL) - goto trunc; - while (nscount-- && cp < snapend) { - putchar(','); - if ((cp = ns_rprint(cp, bp, is_mdns)) == NULL) - goto trunc; - } - } - if (nscount > 0) - goto trunc; - if (cp < snapend && arcount--) { - fputs(" ar:", stdout); - if ((cp = ns_rprint(cp, bp, is_mdns)) == NULL) - goto trunc; - while (cp < snapend && arcount--) { - putchar(','); - if ((cp = ns_rprint(cp, bp, is_mdns)) == NULL) - goto trunc; - } - } - if (arcount > 0) - goto trunc; - } - } - printf(" (%d)", length); - return; - - trunc: - printf("[|domain]"); - return; -} diff --git a/contrib/tcpdump/print-dvmrp.c b/contrib/tcpdump/print-dvmrp.c deleted file mode 100644 index 2c159bf945081..0000000000000 --- a/contrib/tcpdump/print-dvmrp.c +++ /dev/null @@ -1,369 +0,0 @@ -/* - * Copyright (c) 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-dvmrp.c,v 1.27 2003/11/19 09:42:04 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> - -#include "interface.h" -#include "extract.h" -#include "addrtoname.h" - -/* - * DVMRP message types and flag values shamelessly stolen from - * mrouted/dvmrp.h. - */ -#define DVMRP_PROBE 1 /* for finding neighbors */ -#define DVMRP_REPORT 2 /* for reporting some or all routes */ -#define DVMRP_ASK_NEIGHBORS 3 /* sent by mapper, asking for a list */ - /* of this router's neighbors */ -#define DVMRP_NEIGHBORS 4 /* response to such a request */ -#define DVMRP_ASK_NEIGHBORS2 5 /* as above, want new format reply */ -#define DVMRP_NEIGHBORS2 6 -#define DVMRP_PRUNE 7 /* prune message */ -#define DVMRP_GRAFT 8 /* graft message */ -#define DVMRP_GRAFT_ACK 9 /* graft acknowledgement */ - -/* - * 'flags' byte values in DVMRP_NEIGHBORS2 reply. - */ -#define DVMRP_NF_TUNNEL 0x01 /* neighbors reached via tunnel */ -#define DVMRP_NF_SRCRT 0x02 /* tunnel uses IP source routing */ -#define DVMRP_NF_DOWN 0x10 /* kernel state of interface */ -#define DVMRP_NF_DISABLED 0x20 /* administratively disabled */ -#define DVMRP_NF_QUERIER 0x40 /* I am the subnet's querier */ - -static int print_probe(const u_char *, const u_char *, u_int); -static int print_report(const u_char *, const u_char *, u_int); -static int print_neighbors(const u_char *, const u_char *, u_int); -static int print_neighbors2(const u_char *, const u_char *, u_int); -static int print_prune(const u_char *); -static int print_graft(const u_char *); -static int print_graft_ack(const u_char *); - -static u_int32_t target_level; - -void -dvmrp_print(register const u_char *bp, register u_int len) -{ - register const u_char *ep; - register u_char type; - - ep = (const u_char *)snapend; - if (bp >= ep) - return; - - TCHECK(bp[1]); - type = bp[1]; - - /* Skip IGMP header */ - bp += 8; - len -= 8; - - switch (type) { - - case DVMRP_PROBE: - printf(" Probe"); - if (vflag) { - if (print_probe(bp, ep, len) < 0) - goto trunc; - } - break; - - case DVMRP_REPORT: - printf(" Report"); - if (vflag > 1) { - if (print_report(bp, ep, len) < 0) - goto trunc; - } - break; - - case DVMRP_ASK_NEIGHBORS: - printf(" Ask-neighbors(old)"); - break; - - case DVMRP_NEIGHBORS: - printf(" Neighbors(old)"); - if (print_neighbors(bp, ep, len) < 0) - goto trunc; - break; - - case DVMRP_ASK_NEIGHBORS2: - printf(" Ask-neighbors2"); - break; - - case DVMRP_NEIGHBORS2: - printf(" Neighbors2"); - /* - * extract version and capabilities from IGMP group - * address field - */ - bp -= 4; - TCHECK2(bp[0], 4); - target_level = (bp[0] << 24) | (bp[1] << 16) | - (bp[2] << 8) | bp[3]; - bp += 4; - if (print_neighbors2(bp, ep, len) < 0) - goto trunc; - break; - - case DVMRP_PRUNE: - printf(" Prune"); - if (print_prune(bp) < 0) - goto trunc; - break; - - case DVMRP_GRAFT: - printf(" Graft"); - if (print_graft(bp) < 0) - goto trunc; - break; - - case DVMRP_GRAFT_ACK: - printf(" Graft-ACK"); - if (print_graft_ack(bp) < 0) - goto trunc; - break; - - default: - printf(" [type %d]", type); - break; - } - return; - -trunc: - printf("[|dvmrp]"); - return; -} - -static int -print_report(register const u_char *bp, register const u_char *ep, - register u_int len) -{ - register u_int32_t mask, origin; - register int metric, done; - register u_int i, width; - - while (len > 0) { - if (len < 3) { - printf(" [|]"); - return (0); - } - TCHECK2(bp[0], 3); - mask = (u_int32_t)0xff << 24 | bp[0] << 16 | bp[1] << 8 | bp[2]; - width = 1; - if (bp[0]) - width = 2; - if (bp[1]) - width = 3; - if (bp[2]) - width = 4; - - printf("\n\tMask %s", intoa(htonl(mask))); - bp += 3; - len -= 3; - do { - if (bp + width + 1 > ep) { - printf(" [|]"); - return (0); - } - if (len < width + 1) { - printf("\n\t [Truncated Report]"); - return (0); - } - origin = 0; - for (i = 0; i < width; ++i) { - TCHECK(*bp); - origin = origin << 8 | *bp++; - } - for ( ; i < 4; ++i) - origin <<= 8; - - TCHECK(*bp); - metric = *bp++; - done = metric & 0x80; - metric &= 0x7f; - printf("\n\t %s metric %d", intoa(htonl(origin)), - metric); - len -= width + 1; - } while (!done); - } - return (0); -trunc: - return (-1); -} - -static int -print_probe(register const u_char *bp, register const u_char *ep, - register u_int len) -{ - register u_int32_t genid; - - TCHECK2(bp[0], 4); - if ((len < 4) || ((bp + 4) > ep)) { - /* { (ctags) */ - printf(" [|}"); - return (0); - } - genid = (bp[0] << 24) | (bp[1] << 16) | (bp[2] << 8) | bp[3]; - bp += 4; - len -= 4; - if (vflag > 1) - printf("\n\t"); - else - printf(" "); - printf("genid %u", genid); - if (vflag < 2) - return (0); - - while ((len > 0) && (bp < ep)) { - TCHECK2(bp[0], 4); - printf("\n\tneighbor %s", ipaddr_string(bp)); - bp += 4; len -= 4; - } - return (0); -trunc: - return (-1); -} - -static int -print_neighbors(register const u_char *bp, register const u_char *ep, - register u_int len) -{ - const u_char *laddr; - register u_char metric; - register u_char thresh; - register int ncount; - - while (len > 0 && bp < ep) { - TCHECK2(bp[0], 7); - laddr = bp; - bp += 4; - metric = *bp++; - thresh = *bp++; - ncount = *bp++; - len -= 7; - while (--ncount >= 0) { - TCHECK2(bp[0], 4); - printf(" [%s ->", ipaddr_string(laddr)); - printf(" %s, (%d/%d)]", - ipaddr_string(bp), metric, thresh); - bp += 4; - len -= 4; - } - } - return (0); -trunc: - return (-1); -} - -static int -print_neighbors2(register const u_char *bp, register const u_char *ep, - register u_int len) -{ - const u_char *laddr; - register u_char metric, thresh, flags; - register int ncount; - - printf(" (v %d.%d):", - (int)target_level & 0xff, - (int)(target_level >> 8) & 0xff); - - while (len > 0 && bp < ep) { - TCHECK2(bp[0], 8); - laddr = bp; - bp += 4; - metric = *bp++; - thresh = *bp++; - flags = *bp++; - ncount = *bp++; - len -= 8; - while (--ncount >= 0 && (len >= 4) && (bp + 4) <= ep) { - printf(" [%s -> ", ipaddr_string(laddr)); - printf("%s (%d/%d", ipaddr_string(bp), - metric, thresh); - if (flags & DVMRP_NF_TUNNEL) - printf("/tunnel"); - if (flags & DVMRP_NF_SRCRT) - printf("/srcrt"); - if (flags & DVMRP_NF_QUERIER) - printf("/querier"); - if (flags & DVMRP_NF_DISABLED) - printf("/disabled"); - if (flags & DVMRP_NF_DOWN) - printf("/down"); - printf(")]"); - bp += 4; - len -= 4; - } - if (ncount != -1) { - printf(" [|]"); - return (0); - } - } - return (0); -trunc: - return (-1); -} - -static int -print_prune(register const u_char *bp) -{ - TCHECK2(bp[0], 12); - printf(" src %s grp %s", ipaddr_string(bp), ipaddr_string(bp + 4)); - bp += 8; - (void)printf(" timer "); - relts_print(EXTRACT_32BITS(bp)); - return (0); -trunc: - return (-1); -} - -static int -print_graft(register const u_char *bp) -{ - TCHECK2(bp[0], 8); - printf(" src %s grp %s", ipaddr_string(bp), ipaddr_string(bp + 4)); - return (0); -trunc: - return (-1); -} - -static int -print_graft_ack(register const u_char *bp) -{ - TCHECK2(bp[0], 8); - printf(" src %s grp %s", ipaddr_string(bp), ipaddr_string(bp + 4)); - return (0); -trunc: - return (-1); -} diff --git a/contrib/tcpdump/print-eap.c b/contrib/tcpdump/print-eap.c deleted file mode 100644 index fb39e76f89b93..0000000000000 --- a/contrib/tcpdump/print-eap.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2004 - Michael Richardson <mcr@xelerance.com> - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * Format and print bootp packets. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-eap.c,v 1.3 2004/04/23 19:03:39 mcr Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#include "netdissect.h" -#include "addrtoname.h" -#include "extract.h" -#include "ether.h" - -struct eap_packet_t { - unsigned char code; - unsigned char id; - unsigned char length[2]; - unsigned char data[1]; -}; - -/* - * Print bootp requests - */ -void -eap_print(netdissect_options *ndo, - register const u_char *cp, - u_int length _U_) -{ - const struct eap_packet_t *eap; - - eap = (const struct eap_packet_t *)cp; - ND_TCHECK(eap->data); - - ND_PRINT((ndo, "EAP code=%u id=%u length=%u ", - eap->code, eap->id, (eap->length[0]<<8) + eap->length[1])); - - if (!ndo->ndo_vflag) - return; - -trunc: - ; -} - diff --git a/contrib/tcpdump/print-egp.c b/contrib/tcpdump/print-egp.c deleted file mode 100644 index e5a811d7dc8dc..0000000000000 --- a/contrib/tcpdump/print-egp.c +++ /dev/null @@ -1,352 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the University of California, Lawrence Berkeley Laboratory, - * Berkeley, CA. The name of the University may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * 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. - * - * Initial contribution from Jeff Honig (jch@MITCHELL.CIT.CORNELL.EDU). - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-egp.c,v 1.37 2005/01/12 11:19:09 hannes Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -#include "ip.h" - -struct egp_packet { - u_int8_t egp_version; -#define EGP_VERSION 2 - u_int8_t egp_type; -#define EGPT_ACQUIRE 3 -#define EGPT_REACH 5 -#define EGPT_POLL 2 -#define EGPT_UPDATE 1 -#define EGPT_ERROR 8 - u_int8_t egp_code; -#define EGPC_REQUEST 0 -#define EGPC_CONFIRM 1 -#define EGPC_REFUSE 2 -#define EGPC_CEASE 3 -#define EGPC_CEASEACK 4 -#define EGPC_HELLO 0 -#define EGPC_HEARDU 1 - u_int8_t egp_status; -#define EGPS_UNSPEC 0 -#define EGPS_ACTIVE 1 -#define EGPS_PASSIVE 2 -#define EGPS_NORES 3 -#define EGPS_ADMIN 4 -#define EGPS_GODOWN 5 -#define EGPS_PARAM 6 -#define EGPS_PROTO 7 -#define EGPS_INDET 0 -#define EGPS_UP 1 -#define EGPS_DOWN 2 -#define EGPS_UNSOL 0x80 - u_int16_t egp_checksum; - u_int16_t egp_as; - u_int16_t egp_sequence; - union { - u_int16_t egpu_hello; - u_int8_t egpu_gws[2]; - u_int16_t egpu_reason; -#define EGPR_UNSPEC 0 -#define EGPR_BADHEAD 1 -#define EGPR_BADDATA 2 -#define EGPR_NOREACH 3 -#define EGPR_XSPOLL 4 -#define EGPR_NORESP 5 -#define EGPR_UVERSION 6 - } egp_handg; -#define egp_hello egp_handg.egpu_hello -#define egp_intgw egp_handg.egpu_gws[0] -#define egp_extgw egp_handg.egpu_gws[1] -#define egp_reason egp_handg.egpu_reason - union { - u_int16_t egpu_poll; - u_int32_t egpu_sourcenet; - } egp_pands; -#define egp_poll egp_pands.egpu_poll -#define egp_sourcenet egp_pands.egpu_sourcenet -}; - -const char *egp_acquire_codes[] = { - "request", - "confirm", - "refuse", - "cease", - "cease_ack" -}; - -const char *egp_acquire_status[] = { - "unspecified", - "active_mode", - "passive_mode", - "insufficient_resources", - "administratively_prohibited", - "going_down", - "parameter_violation", - "protocol_violation" -}; - -const char *egp_reach_codes[] = { - "hello", - "i-h-u" -}; - -const char *egp_status_updown[] = { - "indeterminate", - "up", - "down" -}; - -const char *egp_reasons[] = { - "unspecified", - "bad_EGP_header_format", - "bad_EGP_data_field_format", - "reachability_info_unavailable", - "excessive_polling_rate", - "no_response", - "unsupported_version" -}; - -static void -egpnrprint(register const struct egp_packet *egp) -{ - register const u_int8_t *cp; - u_int32_t addr; - register u_int32_t net; - register u_int netlen; - int gateways, distances, networks; - int t_gateways; - const char *comma; - - addr = egp->egp_sourcenet; - if (IN_CLASSA(addr)) { - net = addr & IN_CLASSA_NET; - netlen = 1; - } else if (IN_CLASSB(addr)) { - net = addr & IN_CLASSB_NET; - netlen = 2; - } else if (IN_CLASSC(addr)) { - net = addr & IN_CLASSC_NET; - netlen = 3; - } else { - net = 0; - netlen = 0; - } - cp = (u_int8_t *)(egp + 1); - - t_gateways = egp->egp_intgw + egp->egp_extgw; - for (gateways = 0; gateways < t_gateways; ++gateways) { - /* Pickup host part of gateway address */ - addr = 0; - TCHECK2(cp[0], 4 - netlen); - switch (netlen) { - - case 1: - addr = *cp++; - /* fall through */ - case 2: - addr = (addr << 8) | *cp++; - /* fall through */ - case 3: - addr = (addr << 8) | *cp++; - } - addr |= net; - TCHECK2(cp[0], 1); - distances = *cp++; - printf(" %s %s ", - gateways < (int)egp->egp_intgw ? "int" : "ext", - ipaddr_string(&addr)); - - comma = ""; - putchar('('); - while (--distances >= 0) { - TCHECK2(cp[0], 2); - printf("%sd%d:", comma, (int)*cp++); - comma = ", "; - networks = *cp++; - while (--networks >= 0) { - /* Pickup network number */ - TCHECK2(cp[0], 1); - addr = (u_int32_t)*cp++ << 24; - if (IN_CLASSB(addr)) { - TCHECK2(cp[0], 1); - addr |= (u_int32_t)*cp++ << 16; - } else if (!IN_CLASSA(addr)) { - TCHECK2(cp[0], 2); - addr |= (u_int32_t)*cp++ << 16; - addr |= (u_int32_t)*cp++ << 8; - } - printf(" %s", ipaddr_string(&addr)); - } - } - putchar(')'); - } - return; -trunc: - fputs("[|]", stdout); -} - -void -egp_print(register const u_int8_t *bp, register u_int length) -{ - register const struct egp_packet *egp; - register int status; - register int code; - register int type; - - egp = (struct egp_packet *)bp; - if (!TTEST2(*egp, length)) { - printf("[|egp]"); - return; - } - (void)printf("egp: "); - - if (egp->egp_version != EGP_VERSION) { - printf("[version %d]", egp->egp_version); - return; - } - printf("as:%d seq:%d", EXTRACT_16BITS(&egp->egp_as), EXTRACT_16BITS(&egp->egp_sequence)); - - type = egp->egp_type; - code = egp->egp_code; - status = egp->egp_status; - - switch (type) { - case EGPT_ACQUIRE: - printf(" acquire"); - switch (code) { - case EGPC_REQUEST: - case EGPC_CONFIRM: - printf(" %s", egp_acquire_codes[code]); - switch (status) { - case EGPS_UNSPEC: - case EGPS_ACTIVE: - case EGPS_PASSIVE: - printf(" %s", egp_acquire_status[status]); - break; - - default: - printf(" [status %d]", status); - break; - } - printf(" hello:%d poll:%d", - EXTRACT_16BITS(&egp->egp_hello), - EXTRACT_16BITS(&egp->egp_poll)); - break; - - case EGPC_REFUSE: - case EGPC_CEASE: - case EGPC_CEASEACK: - printf(" %s", egp_acquire_codes[code]); - switch (status ) { - case EGPS_UNSPEC: - case EGPS_NORES: - case EGPS_ADMIN: - case EGPS_GODOWN: - case EGPS_PARAM: - case EGPS_PROTO: - printf(" %s", egp_acquire_status[status]); - break; - - default: - printf("[status %d]", status); - break; - } - break; - - default: - printf("[code %d]", code); - break; - } - break; - - case EGPT_REACH: - switch (code) { - - case EGPC_HELLO: - case EGPC_HEARDU: - printf(" %s", egp_reach_codes[code]); - if (status <= EGPS_DOWN) - printf(" state:%s", egp_status_updown[status]); - else - printf(" [status %d]", status); - break; - - default: - printf("[reach code %d]", code); - break; - } - break; - - case EGPT_POLL: - printf(" poll"); - if (egp->egp_status <= EGPS_DOWN) - printf(" state:%s", egp_status_updown[status]); - else - printf(" [status %d]", status); - printf(" net:%s", ipaddr_string(&egp->egp_sourcenet)); - break; - - case EGPT_UPDATE: - printf(" update"); - if (status & EGPS_UNSOL) { - status &= ~EGPS_UNSOL; - printf(" unsolicited"); - } - if (status <= EGPS_DOWN) - printf(" state:%s", egp_status_updown[status]); - else - printf(" [status %d]", status); - printf(" %s int %d ext %d", - ipaddr_string(&egp->egp_sourcenet), - egp->egp_intgw, - egp->egp_extgw); - if (vflag) - egpnrprint(egp); - break; - - case EGPT_ERROR: - printf(" error"); - if (status <= EGPS_DOWN) - printf(" state:%s", egp_status_updown[status]); - else - printf(" [status %d]", status); - - if (EXTRACT_16BITS(&egp->egp_reason) <= EGPR_UVERSION) - printf(" %s", egp_reasons[EXTRACT_16BITS(&egp->egp_reason)]); - else - printf(" [reason %d]", EXTRACT_16BITS(&egp->egp_reason)); - break; - - default: - printf("[type %d]", type); - break; - } -} diff --git a/contrib/tcpdump/print-eigrp.c b/contrib/tcpdump/print-eigrp.c deleted file mode 100644 index 3168b3ca784c6..0000000000000 --- a/contrib/tcpdump/print-eigrp.c +++ /dev/null @@ -1,480 +0,0 @@ -/* - * Copyright (c) 1998-2004 Hannes Gredler <hannes@tcpdump.org> - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-eigrp.c,v 1.5.2.2 2005/05/06 02:53:41 guy 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" - -/* - * packet format documented at - * http://www.rhyshaden.com/eigrp.htm - */ - -struct eigrp_common_header { - u_int8_t version; - u_int8_t opcode; - u_int8_t checksum[2]; - u_int8_t flags[4]; - u_int8_t seq[4]; - u_int8_t ack[4]; - u_int8_t asn[4]; -}; - -#define EIGRP_VERSION 2 - -#define EIGRP_OPCODE_UPDATE 1 -#define EIGRP_OPCODE_QUERY 3 -#define EIGRP_OPCODE_REPLY 4 -#define EIGRP_OPCODE_HELLO 5 -#define EIGRP_OPCODE_IPXSAP 6 -#define EIGRP_OPCODE_PROBE 7 - -static const struct tok eigrp_opcode_values[] = { - { EIGRP_OPCODE_UPDATE, "Update" }, - { EIGRP_OPCODE_QUERY, "Query" }, - { EIGRP_OPCODE_REPLY, "Reply" }, - { EIGRP_OPCODE_HELLO, "Hello" }, - { EIGRP_OPCODE_IPXSAP, "IPX SAP" }, - { EIGRP_OPCODE_PROBE, "Probe" }, - { 0, NULL} -}; - -static const struct tok eigrp_common_header_flag_values[] = { - { 0x01, "Init" }, - { 0x02, "Conditionally Received" }, - { 0, NULL} -}; - -struct eigrp_tlv_header { - u_int8_t type[2]; - u_int8_t length[2]; -}; - -#define EIGRP_TLV_GENERAL_PARM 0x0001 -#define EIGRP_TLV_AUTH 0x0002 -#define EIGRP_TLV_SEQ 0x0003 -#define EIGRP_TLV_SW_VERSION 0x0004 -#define EIGRP_TLV_MCAST_SEQ 0x0005 -#define EIGRP_TLV_IP_INT 0x0102 -#define EIGRP_TLV_IP_EXT 0x0103 -#define EIGRP_TLV_AT_INT 0x0202 -#define EIGRP_TLV_AT_EXT 0x0203 -#define EIGRP_TLV_AT_CABLE_SETUP 0x0204 -#define EIGRP_TLV_IPX_INT 0x0302 -#define EIGRP_TLV_IPX_EXT 0x0303 - -static const struct tok eigrp_tlv_values[] = { - { EIGRP_TLV_GENERAL_PARM, "General Parameters"}, - { EIGRP_TLV_AUTH, "Authentication"}, - { EIGRP_TLV_SEQ, "Sequence"}, - { EIGRP_TLV_SW_VERSION, "Software Version"}, - { EIGRP_TLV_MCAST_SEQ, "Next Multicast Sequence"}, - { EIGRP_TLV_IP_INT, "IP Internal routes"}, - { EIGRP_TLV_IP_EXT, "IP External routes"}, - { EIGRP_TLV_AT_INT, "AppleTalk Internal routes"}, - { EIGRP_TLV_AT_EXT, "AppleTalk External routes"}, - { EIGRP_TLV_AT_CABLE_SETUP, "AppleTalk Cable setup"}, - { EIGRP_TLV_IPX_INT, "IPX Internal routes"}, - { EIGRP_TLV_IPX_EXT, "IPX External routes"}, - { 0, NULL} -}; - -struct eigrp_tlv_general_parm_t { - u_int8_t k1; - u_int8_t k2; - u_int8_t k3; - u_int8_t k4; - u_int8_t k5; - u_int8_t res; - u_int8_t holdtime[2]; -}; - -struct eigrp_tlv_sw_version_t { - u_int8_t ios_major; - u_int8_t ios_minor; - u_int8_t eigrp_major; - u_int8_t eigrp_minor; -}; - -struct eigrp_tlv_ip_int_t { - u_int8_t nexthop[4]; - u_int8_t delay[4]; - u_int8_t bandwidth[4]; - u_int8_t mtu[3]; - u_int8_t hopcount; - u_int8_t reliability; - u_int8_t load; - u_int8_t reserved[2]; - u_int8_t plen; - u_int8_t destination; /* variable length [1-4] bytes encoding */ -}; - -struct eigrp_tlv_ip_ext_t { - u_int8_t nexthop[4]; - u_int8_t origin_router[4]; - u_int8_t origin_as[4]; - u_int8_t tag[4]; - u_int8_t metric[4]; - u_int8_t reserved[2]; - u_int8_t proto_id; - u_int8_t flags; - u_int8_t delay[4]; - u_int8_t bandwidth[4]; - u_int8_t mtu[3]; - u_int8_t hopcount; - u_int8_t reliability; - u_int8_t load; - u_int8_t reserved2[2]; - u_int8_t plen; - u_int8_t destination; /* variable length [1-4] bytes encoding */ -}; - -struct eigrp_tlv_at_cable_setup_t { - u_int8_t cable_start[2]; - u_int8_t cable_end[2]; - u_int8_t router_id[4]; -}; - -struct eigrp_tlv_at_int_t { - u_int8_t nexthop[4]; - u_int8_t delay[4]; - u_int8_t bandwidth[4]; - u_int8_t mtu[3]; - u_int8_t hopcount; - u_int8_t reliability; - u_int8_t load; - u_int8_t reserved[2]; - u_int8_t cable_start[2]; - u_int8_t cable_end[2]; -}; - -struct eigrp_tlv_at_ext_t { - u_int8_t nexthop[4]; - u_int8_t origin_router[4]; - u_int8_t origin_as[4]; - u_int8_t tag[4]; - u_int8_t proto_id; - u_int8_t flags; - u_int8_t metric[2]; - u_int8_t delay[4]; - u_int8_t bandwidth[4]; - u_int8_t mtu[3]; - u_int8_t hopcount; - u_int8_t reliability; - u_int8_t load; - u_int8_t reserved2[2]; - u_int8_t cable_start[2]; - u_int8_t cable_end[2]; -}; - -static const struct tok eigrp_ext_proto_id_values[] = { - { 0x01, "IGRP" }, - { 0x02, "EIGRP" }, - { 0x03, "Static" }, - { 0x04, "RIP" }, - { 0x05, "Hello" }, - { 0x06, "OSPF" }, - { 0x07, "IS-IS" }, - { 0x08, "EGP" }, - { 0x09, "BGP" }, - { 0x0a, "IDRP" }, - { 0x0b, "Connected" }, - { 0, NULL} -}; - -void -eigrp_print(register const u_char *pptr, register u_int len) { - - const struct eigrp_common_header *eigrp_com_header; - const struct eigrp_tlv_header *eigrp_tlv_header; - const u_char *tptr,*tlv_tptr; - u_int tlen,eigrp_tlv_len,eigrp_tlv_type,tlv_tlen, byte_length, bit_length; - u_int8_t prefix[4]; - - union { - const struct eigrp_tlv_general_parm_t *eigrp_tlv_general_parm; - const struct eigrp_tlv_sw_version_t *eigrp_tlv_sw_version; - const struct eigrp_tlv_ip_int_t *eigrp_tlv_ip_int; - const struct eigrp_tlv_ip_ext_t *eigrp_tlv_ip_ext; - const struct eigrp_tlv_at_cable_setup_t *eigrp_tlv_at_cable_setup; - const struct eigrp_tlv_at_int_t *eigrp_tlv_at_int; - const struct eigrp_tlv_at_ext_t *eigrp_tlv_at_ext; - } tlv_ptr; - - tptr=pptr; - eigrp_com_header = (const struct eigrp_common_header *)pptr; - TCHECK(*eigrp_com_header); - - /* - * Sanity checking of the header. - */ - if (eigrp_com_header->version != EIGRP_VERSION) { - printf("EIGRP version %u packet not supported",eigrp_com_header->version); - return; - } - - /* in non-verbose mode just lets print the basic Message Type*/ - if (vflag < 1) { - printf("EIGRP %s, length: %u", - tok2str(eigrp_opcode_values, "unknown (%u)",eigrp_com_header->opcode), - len); - return; - } - - /* ok they seem to want to know everything - lets fully decode it */ - - tlen=len-sizeof(struct eigrp_common_header); - - /* FIXME print other header info */ - printf("\n\tEIGRP v%u, opcode: %s (%u), chksum: 0x%04x, Flags: [%s]\n\tseq: 0x%08x, ack: 0x%08x, AS: %u, length: %u", - eigrp_com_header->version, - tok2str(eigrp_opcode_values, "unknown, type: %u",eigrp_com_header->opcode), - eigrp_com_header->opcode, - EXTRACT_16BITS(&eigrp_com_header->checksum), - tok2str(eigrp_common_header_flag_values, - "none", - EXTRACT_32BITS(&eigrp_com_header->flags)), - EXTRACT_32BITS(&eigrp_com_header->seq), - EXTRACT_32BITS(&eigrp_com_header->ack), - EXTRACT_32BITS(&eigrp_com_header->asn), - tlen); - - tptr+=sizeof(const struct eigrp_common_header); - - while(tlen>0) { - /* did we capture enough for fully decoding the object header ? */ - TCHECK2(*tptr, sizeof(struct eigrp_tlv_header)); - - eigrp_tlv_header = (const struct eigrp_tlv_header *)tptr; - eigrp_tlv_len=EXTRACT_16BITS(&eigrp_tlv_header->length); - eigrp_tlv_type=EXTRACT_16BITS(&eigrp_tlv_header->type); - - - if (eigrp_tlv_len < sizeof(struct eigrp_tlv_header) || - eigrp_tlv_len > tlen) { - print_unknown_data(tptr+sizeof(sizeof(struct eigrp_tlv_header)),"\n\t ",tlen); - return; - } - - printf("\n\t %s TLV (0x%04x), length: %u", - tok2str(eigrp_tlv_values, - "Unknown", - eigrp_tlv_type), - eigrp_tlv_type, - eigrp_tlv_len); - - tlv_tptr=tptr+sizeof(struct eigrp_tlv_header); - tlv_tlen=eigrp_tlv_len-sizeof(struct eigrp_tlv_header); - - /* did we capture enough for fully decoding the object ? */ - TCHECK2(*tptr, eigrp_tlv_len); - - switch(eigrp_tlv_type) { - - case EIGRP_TLV_GENERAL_PARM: - tlv_ptr.eigrp_tlv_general_parm = (const struct eigrp_tlv_general_parm_t *)tlv_tptr; - - printf("\n\t holdtime: %us, k1 %u, k2 %u, k3 %u, k4 %u, k5 %u", - EXTRACT_16BITS(tlv_ptr.eigrp_tlv_general_parm->holdtime), - tlv_ptr.eigrp_tlv_general_parm->k1, - tlv_ptr.eigrp_tlv_general_parm->k2, - tlv_ptr.eigrp_tlv_general_parm->k3, - tlv_ptr.eigrp_tlv_general_parm->k4, - tlv_ptr.eigrp_tlv_general_parm->k5); - break; - - case EIGRP_TLV_SW_VERSION: - tlv_ptr.eigrp_tlv_sw_version = (const struct eigrp_tlv_sw_version_t *)tlv_tptr; - - printf("\n\t IOS version: %u.%u, EIGRP version %u.%u", - tlv_ptr.eigrp_tlv_sw_version->ios_major, - tlv_ptr.eigrp_tlv_sw_version->ios_minor, - tlv_ptr.eigrp_tlv_sw_version->eigrp_major, - tlv_ptr.eigrp_tlv_sw_version->eigrp_minor); - break; - - case EIGRP_TLV_IP_INT: - tlv_ptr.eigrp_tlv_ip_int = (const struct eigrp_tlv_ip_int_t *)tlv_tptr; - - bit_length = tlv_ptr.eigrp_tlv_ip_int->plen; - if (bit_length > 32) { - printf("\n\t illegal prefix length %u",bit_length); - break; - } - byte_length = (bit_length + 7) / 8; /* variable length encoding */ - memset(prefix, 0, 4); - memcpy(prefix,&tlv_ptr.eigrp_tlv_ip_int->destination,byte_length); - - printf("\n\t IPv4 prefix: %15s/%u, nexthop: ", - ipaddr_string(prefix), - bit_length); - if (EXTRACT_32BITS(&tlv_ptr.eigrp_tlv_ip_int->nexthop) == 0) - printf("self"); - else - printf("%s",ipaddr_string(&tlv_ptr.eigrp_tlv_ip_int->nexthop)); - - printf("\n\t delay %u ms, bandwidth %u Kbps, mtu %u, hop %u, reliability %u, load %u", - (EXTRACT_32BITS(&tlv_ptr.eigrp_tlv_ip_int->delay)/100), - EXTRACT_32BITS(&tlv_ptr.eigrp_tlv_ip_int->bandwidth), - EXTRACT_24BITS(&tlv_ptr.eigrp_tlv_ip_int->mtu), - tlv_ptr.eigrp_tlv_ip_int->hopcount, - tlv_ptr.eigrp_tlv_ip_int->reliability, - tlv_ptr.eigrp_tlv_ip_int->load); - break; - - case EIGRP_TLV_IP_EXT: - tlv_ptr.eigrp_tlv_ip_ext = (const struct eigrp_tlv_ip_ext_t *)tlv_tptr; - - bit_length = tlv_ptr.eigrp_tlv_ip_ext->plen; - if (bit_length > 32) { - printf("\n\t illegal prefix length %u",bit_length); - break; - } - byte_length = (bit_length + 7) / 8; /* variable length encoding */ - memset(prefix, 0, 4); - memcpy(prefix,&tlv_ptr.eigrp_tlv_ip_ext->destination,byte_length); - - printf("\n\t IPv4 prefix: %15s/%u, nexthop: ", - ipaddr_string(prefix), - bit_length); - if (EXTRACT_32BITS(&tlv_ptr.eigrp_tlv_ip_ext->nexthop) == 0) - printf("self"); - else - printf("%s",ipaddr_string(&tlv_ptr.eigrp_tlv_ip_ext->nexthop)); - - printf("\n\t origin-router %s, origin-as %u, origin-proto %s, flags [0x%02x], tag 0x%08x, metric %u", - ipaddr_string(tlv_ptr.eigrp_tlv_ip_ext->origin_router), - EXTRACT_32BITS(tlv_ptr.eigrp_tlv_ip_ext->origin_as), - tok2str(eigrp_ext_proto_id_values,"unknown",tlv_ptr.eigrp_tlv_ip_ext->proto_id), - tlv_ptr.eigrp_tlv_ip_ext->flags, - EXTRACT_32BITS(tlv_ptr.eigrp_tlv_ip_ext->tag), - EXTRACT_32BITS(tlv_ptr.eigrp_tlv_ip_ext->metric)); - - printf("\n\t delay %u ms, bandwidth %u Kbps, mtu %u, hop %u, reliability %u, load %u", - (EXTRACT_32BITS(&tlv_ptr.eigrp_tlv_ip_ext->delay)/100), - EXTRACT_32BITS(&tlv_ptr.eigrp_tlv_ip_ext->bandwidth), - EXTRACT_24BITS(&tlv_ptr.eigrp_tlv_ip_ext->mtu), - tlv_ptr.eigrp_tlv_ip_ext->hopcount, - tlv_ptr.eigrp_tlv_ip_ext->reliability, - tlv_ptr.eigrp_tlv_ip_ext->load); - break; - - case EIGRP_TLV_AT_CABLE_SETUP: - tlv_ptr.eigrp_tlv_at_cable_setup = (const struct eigrp_tlv_at_cable_setup_t *)tlv_tptr; - - printf("\n\t Cable-range: %u-%u, Router-ID %u", - EXTRACT_16BITS(&tlv_ptr.eigrp_tlv_at_cable_setup->cable_start), - EXTRACT_16BITS(&tlv_ptr.eigrp_tlv_at_cable_setup->cable_end), - EXTRACT_32BITS(&tlv_ptr.eigrp_tlv_at_cable_setup->router_id)); - break; - - case EIGRP_TLV_AT_INT: - tlv_ptr.eigrp_tlv_at_int = (const struct eigrp_tlv_at_int_t *)tlv_tptr; - - printf("\n\t Cable-Range: %u-%u, nexthop: ", - EXTRACT_16BITS(&tlv_ptr.eigrp_tlv_at_int->cable_start), - EXTRACT_16BITS(&tlv_ptr.eigrp_tlv_at_int->cable_end)); - - if (EXTRACT_32BITS(&tlv_ptr.eigrp_tlv_at_int->nexthop) == 0) - printf("self"); - else - printf("%u.%u", - EXTRACT_16BITS(&tlv_ptr.eigrp_tlv_at_int->nexthop), - EXTRACT_16BITS(&tlv_ptr.eigrp_tlv_at_int->nexthop[2])); - - printf("\n\t delay %u ms, bandwidth %u Kbps, mtu %u, hop %u, reliability %u, load %u", - (EXTRACT_32BITS(&tlv_ptr.eigrp_tlv_at_int->delay)/100), - EXTRACT_32BITS(&tlv_ptr.eigrp_tlv_at_int->bandwidth), - EXTRACT_24BITS(&tlv_ptr.eigrp_tlv_at_int->mtu), - tlv_ptr.eigrp_tlv_at_int->hopcount, - tlv_ptr.eigrp_tlv_at_int->reliability, - tlv_ptr.eigrp_tlv_at_int->load); - break; - - case EIGRP_TLV_AT_EXT: - tlv_ptr.eigrp_tlv_at_ext = (const struct eigrp_tlv_at_ext_t *)tlv_tptr; - - printf("\n\t Cable-Range: %u-%u, nexthop: ", - EXTRACT_16BITS(&tlv_ptr.eigrp_tlv_at_ext->cable_start), - EXTRACT_16BITS(&tlv_ptr.eigrp_tlv_at_ext->cable_end)); - - if (EXTRACT_32BITS(&tlv_ptr.eigrp_tlv_at_ext->nexthop) == 0) - printf("self"); - else - printf("%u.%u", - EXTRACT_16BITS(&tlv_ptr.eigrp_tlv_at_ext->nexthop), - EXTRACT_16BITS(&tlv_ptr.eigrp_tlv_at_ext->nexthop[2])); - - printf("\n\t origin-router %u, origin-as %u, origin-proto %s, flags [0x%02x], tag 0x%08x, metric %u", - EXTRACT_32BITS(tlv_ptr.eigrp_tlv_at_ext->origin_router), - EXTRACT_32BITS(tlv_ptr.eigrp_tlv_at_ext->origin_as), - tok2str(eigrp_ext_proto_id_values,"unknown",tlv_ptr.eigrp_tlv_at_ext->proto_id), - tlv_ptr.eigrp_tlv_at_ext->flags, - EXTRACT_32BITS(tlv_ptr.eigrp_tlv_at_ext->tag), - EXTRACT_16BITS(tlv_ptr.eigrp_tlv_at_ext->metric)); - - printf("\n\t delay %u ms, bandwidth %u Kbps, mtu %u, hop %u, reliability %u, load %u", - (EXTRACT_32BITS(&tlv_ptr.eigrp_tlv_at_ext->delay)/100), - EXTRACT_32BITS(&tlv_ptr.eigrp_tlv_at_ext->bandwidth), - EXTRACT_24BITS(&tlv_ptr.eigrp_tlv_at_ext->mtu), - tlv_ptr.eigrp_tlv_at_ext->hopcount, - tlv_ptr.eigrp_tlv_at_ext->reliability, - tlv_ptr.eigrp_tlv_at_ext->load); - break; - - /* - * FIXME those are the defined TLVs that lack a decoder - * you are welcome to contribute code ;-) - */ - - case EIGRP_TLV_AUTH: - case EIGRP_TLV_SEQ: - case EIGRP_TLV_MCAST_SEQ: - case EIGRP_TLV_IPX_INT: - case EIGRP_TLV_IPX_EXT: - - 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 eigrp_tlv_header)),"\n\t ", - eigrp_tlv_len-sizeof(struct eigrp_tlv_header)); - - tptr+=eigrp_tlv_len; - tlen-=eigrp_tlv_len; - } - return; -trunc: - printf("\n\t\t packet exceeded snapshot"); -} diff --git a/contrib/tcpdump/print-enc.c b/contrib/tcpdump/print-enc.c deleted file mode 100644 index f9b871b351d87..0000000000000 --- a/contrib/tcpdump/print-enc.c +++ /dev/null @@ -1,86 +0,0 @@ -/* $OpenBSD: print-enc.c,v 1.7 2002/02/19 19:39:40 millert Exp $ */ - -/* - * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-enc.c,v 1.4 2005/04/06 21:32:39 mcr Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <pcap.h> - -#include "interface.h" -#include "addrtoname.h" - -#include "enc.h" - -#define ENC_PRINT_TYPE(wh, xf, nam) \ - if ((wh) & (xf)) { \ - printf("%s%s", nam, (wh) == (xf) ? "): " : ","); \ - (wh) &= ~(xf); \ - } - -u_int -enc_if_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - register u_int length = h->len; - register u_int caplen = h->caplen; - int flags; - const struct enchdr *hdr; - - if (caplen < ENC_HDRLEN) { - printf("[|enc]"); - goto out; - } - - hdr = (struct enchdr *)p; - flags = hdr->flags; - if (flags == 0) - printf("(unprotected): "); - else - printf("("); - ENC_PRINT_TYPE(flags, M_AUTH, "authentic"); - ENC_PRINT_TYPE(flags, M_CONF, "confidential"); - /* ENC_PRINT_TYPE(flags, M_TUNNEL, "tunnel"); */ - printf("SPI 0x%08x: ", (u_int32_t)ntohl(hdr->spi)); - - length -= ENC_HDRLEN; - /* XXX - use the address family */ - ip_print(gndo, p + ENC_HDRLEN, length); - -out: - return (ENC_HDRLEN); -} - - -/* - * Local Variables: - * c-style: whitesmith - * c-basic-offset: 8 - * End: - */ diff --git a/contrib/tcpdump/print-esp.c b/contrib/tcpdump/print-esp.c deleted file mode 100644 index 3ccc899e9cf45..0000000000000 --- a/contrib/tcpdump/print-esp.c +++ /dev/null @@ -1,511 +0,0 @@ -/* $NetBSD: print-ah.c,v 1.4 1996/05/20 00:41:16 fvdl Exp $ */ - -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-esp.c,v 1.55.2.1 2005/04/21 06:44:57 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <string.h> - -#include <tcpdump-stdinc.h> - -#include <stdlib.h> - -#ifdef HAVE_LIBCRYPTO -#ifdef HAVE_OPENSSL_EVP_H -#include <openssl/evp.h> -#endif -#endif - -#include <stdio.h> - -#include "ip.h" -#include "esp.h" -#ifdef INET6 -#include "ip6.h" -#endif - -#include "netdissect.h" -#include "addrtoname.h" -#include "extract.h" - -#ifndef HAVE_SOCKADDR_STORAGE -#ifdef INET6 -struct sockaddr_storage { - union { - struct sockaddr_in sin; - struct sockaddr_in6 sin6; - } un; -}; -#else -#define sockaddr_storage sockaddr -#endif -#endif /* HAVE_SOCKADDR_STORAGE */ - -#ifdef HAVE_LIBCRYPTO -struct sa_list { - struct sa_list *next; - struct sockaddr_storage daddr; - u_int32_t spi; - const EVP_CIPHER *evp; - int ivlen; - int authlen; - u_char secret[256]; /* is that big enough for all secrets? */ - int secretlen; -}; - -static void esp_print_addsa(netdissect_options *ndo, - struct sa_list *sa, int sa_def) -{ - /* copy the "sa" */ - - struct sa_list *nsa; - - nsa = (struct sa_list *)malloc(sizeof(struct sa_list)); - if (nsa == NULL) - (*ndo->ndo_error)(ndo, "ran out of memory to allocate sa structure"); - - *nsa = *sa; - - if (sa_def) - ndo->ndo_sa_default = nsa; - - nsa->next = ndo->ndo_sa_list_head; - ndo->ndo_sa_list_head = nsa; -} - - -static u_int hexdigit(netdissect_options *ndo, char hex) -{ - if (hex >= '0' && hex <= '9') - return (hex - '0'); - else if (hex >= 'A' && hex <= 'F') - return (hex - 'A' + 10); - else if (hex >= 'a' && hex <= 'f') - return (hex - 'a' + 10); - else { - (*ndo->ndo_error)(ndo, "invalid hex digit %c in espsecret\n", hex); - return 0; - } -} - -static u_int hex2byte(netdissect_options *ndo, char *hexstring) -{ - u_int byte; - - byte = (hexdigit(ndo, hexstring[0]) << 4) + hexdigit(ndo, hexstring[1]); - return byte; -} - -/* - * decode the form: SPINUM@IP <tab> ALGONAME:0xsecret - * - * special form: file /name - * causes us to go read from this file instead. - * - */ -static void esp_print_decode_onesecret(netdissect_options *ndo, char *line) -{ - struct sa_list sa1; - int sa_def; - - char *spikey; - char *decode; - - spikey = strsep(&line, " \t"); - sa_def = 0; - memset(&sa1, 0, sizeof(struct sa_list)); - - /* if there is only one token, then it is an algo:key token */ - if (line == NULL) { - decode = spikey; - spikey = NULL; - /* memset(&sa1.daddr, 0, sizeof(sa1.daddr)); */ - /* sa1.spi = 0; */ - sa_def = 1; - } else - decode = line; - - if (spikey && strcasecmp(spikey, "file") == 0) { - /* open file and read it */ - FILE *secretfile; - char fileline[1024]; - char *nl; - - secretfile = fopen(line, FOPEN_READ_TXT); - if (secretfile == NULL) { - perror(line); - exit(3); - } - - while (fgets(fileline, sizeof(fileline)-1, secretfile) != NULL) { - /* remove newline from the line */ - nl = strchr(fileline, '\n'); - if (nl) - *nl = '\0'; - if (fileline[0] == '#') continue; - if (fileline[0] == '\0') continue; - - esp_print_decode_onesecret(ndo, fileline); - } - fclose(secretfile); - - return; - } - - if (spikey) { - char *spistr, *foo; - u_int32_t spino; - struct sockaddr_in *sin; -#ifdef INET6 - struct sockaddr_in6 *sin6; -#endif - - spistr = strsep(&spikey, "@"); - - spino = strtoul(spistr, &foo, 0); - if (spistr == foo || !spikey) { - (*ndo->ndo_warning)(ndo, "print_esp: failed to decode spi# %s\n", foo); - return; - } - - sa1.spi = spino; - - sin = (struct sockaddr_in *)&sa1.daddr; -#ifdef INET6 - sin6 = (struct sockaddr_in6 *)&sa1.daddr; - if (inet_pton(AF_INET6, spikey, &sin6->sin6_addr) == 1) { -#ifdef HAVE_SOCKADDR_SA_LEN - sin6->sin6_len = sizeof(struct sockaddr_in6); -#endif - sin6->sin6_family = AF_INET6; - } else -#endif - if (inet_pton(AF_INET, spikey, &sin->sin_addr) == 1) { -#ifdef HAVE_SOCKADDR_SA_LEN - sin->sin_len = sizeof(struct sockaddr_in); -#endif - sin->sin_family = AF_INET; - } else { - (*ndo->ndo_warning)(ndo, "print_esp: can not decode IP# %s\n", spikey); - return; - } - } - - if (decode) { - char *colon, *p; - u_char espsecret_key[256]; - int len; - size_t i; - const EVP_CIPHER *evp; - int authlen = 0; - - /* skip any blank spaces */ - while (isspace((unsigned char)*decode)) - decode++; - - colon = strchr(decode, ':'); - if (colon == NULL) { - (*ndo->ndo_warning)(ndo, "failed to decode espsecret: %s\n", decode); - return; - } - *colon = '\0'; - - len = colon - decode; - if (strlen(decode) > strlen("-hmac96") && - !strcmp(decode + strlen(decode) - strlen("-hmac96"), - "-hmac96")) { - p = strstr(decode, "-hmac96"); - *p = '\0'; - authlen = 12; - } - if (strlen(decode) > strlen("-cbc") && - !strcmp(decode + strlen(decode) - strlen("-cbc"), "-cbc")) { - p = strstr(decode, "-cbc"); - *p = '\0'; - } - evp = EVP_get_cipherbyname(decode); - if (!evp) { - (*ndo->ndo_warning)(ndo, "failed to find cipher algo %s\n", decode); - sa1.evp = NULL; - sa1.authlen = 0; - sa1.ivlen = 0; - return; - } - - sa1.evp = evp; - sa1.authlen = authlen; - sa1.ivlen = EVP_CIPHER_iv_length(evp); - - colon++; - if (colon[0] == '0' && colon[1] == 'x') { - /* decode some hex! */ - colon += 2; - len = strlen(colon) / 2; - - if (len > 256) { - (*ndo->ndo_warning)(ndo, "secret is too big: %d\n", len); - return; - } - - i = 0; - while (colon[0] != '\0' && colon[1]!='\0') { - espsecret_key[i] = hex2byte(ndo, colon); - colon += 2; - i++; - } - - memcpy(sa1.secret, espsecret_key, i); - sa1.secretlen = i; - } else { - i = strlen(colon); - - if (i < sizeof(sa1.secret)) { - memcpy(sa1.secret, colon, i); - sa1.secretlen = i; - } else { - memcpy(sa1.secret, colon, sizeof(sa1.secret)); - sa1.secretlen = sizeof(sa1.secret); - } - } - } - - esp_print_addsa(ndo, &sa1, sa_def); -} - -static void esp_print_decodesecret(netdissect_options *ndo) -{ - char *line; - char *p; - - p = ndo->ndo_espsecret; - - while (ndo->ndo_espsecret && ndo->ndo_espsecret[0] != '\0') { - /* pick out the first line or first thing until a comma */ - if ((line = strsep(&ndo->ndo_espsecret, "\n,")) == NULL) { - line = ndo->ndo_espsecret; - ndo->ndo_espsecret = NULL; - } - - esp_print_decode_onesecret(ndo, line); - } -} - -static void esp_init(netdissect_options *ndo _U_) -{ - - OpenSSL_add_all_algorithms(); - EVP_add_cipher_alias(SN_des_ede3_cbc, "3des"); -} -#endif - -int -esp_print(netdissect_options *ndo, - const u_char *bp, const int length, const u_char *bp2 -#ifndef HAVE_LIBCRYPTO - _U_ -#endif - , - int *nhdr -#ifndef HAVE_LIBCRYPTO - _U_ -#endif - , - int *padlen -#ifndef HAVE_LIBCRYPTO - _U_ -#endif - ) -{ - register const struct newesp *esp; - register const u_char *ep; -#ifdef HAVE_LIBCRYPTO - struct ip *ip; - struct sa_list *sa = NULL; - int espsecret_keylen; -#ifdef INET6 - struct ip6_hdr *ip6 = NULL; -#endif - int advance; - int len; - u_char *secret; - int ivlen = 0; - u_char *ivoff; - u_char *p; - EVP_CIPHER_CTX ctx; - int blocksz; - static int initialized = 0; -#endif - - esp = (struct newesp *)bp; - -#ifdef HAVE_LIBCRYPTO - secret = NULL; - advance = 0; - - if (!initialized) { - esp_init(ndo); - initialized = 1; - } -#endif - -#if 0 - /* keep secret out of a register */ - p = (u_char *)&secret; -#endif - - /* 'ep' points to the end of available data. */ - ep = ndo->ndo_snapend; - - if ((u_char *)(esp + 1) >= ep) { - fputs("[|ESP]", stdout); - goto fail; - } - (*ndo->ndo_printf)(ndo, "ESP(spi=0x%08x", EXTRACT_32BITS(&esp->esp_spi)); - (*ndo->ndo_printf)(ndo, ",seq=0x%x)", EXTRACT_32BITS(&esp->esp_seq)); - (*ndo->ndo_printf)(ndo, ", length %u", length); - -#ifndef HAVE_LIBCRYPTO - goto fail; -#else - /* initiailize SAs */ - if (ndo->ndo_sa_list_head == NULL) { - if (!ndo->ndo_espsecret) - goto fail; - - esp_print_decodesecret(ndo); - } - - if (ndo->ndo_sa_list_head == NULL) - goto fail; - - ip = (struct ip *)bp2; - switch (IP_V(ip)) { -#ifdef INET6 - case 6: - ip6 = (struct ip6_hdr *)bp2; - /* we do not attempt to decrypt jumbograms */ - if (!EXTRACT_16BITS(&ip6->ip6_plen)) - goto fail; - /* if we can't get nexthdr, we do not need to decrypt it */ - len = sizeof(struct ip6_hdr) + EXTRACT_16BITS(&ip6->ip6_plen); - - /* see if we can find the SA, and if so, decode it */ - for (sa = ndo->ndo_sa_list_head; sa != NULL; sa = sa->next) { - struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&sa->daddr; - if (sa->spi == ntohl(esp->esp_spi) && - sin6->sin6_family == AF_INET6 && - memcmp(&sin6->sin6_addr, &ip6->ip6_dst, - sizeof(struct in6_addr)) == 0) { - break; - } - } - break; -#endif /*INET6*/ - case 4: - /* nexthdr & padding are in the last fragment */ - if (EXTRACT_16BITS(&ip->ip_off) & IP_MF) - goto fail; - len = EXTRACT_16BITS(&ip->ip_len); - - /* see if we can find the SA, and if so, decode it */ - for (sa = ndo->ndo_sa_list_head; sa != NULL; sa = sa->next) { - struct sockaddr_in *sin = (struct sockaddr_in *)&sa->daddr; - if (sa->spi == ntohl(esp->esp_spi) && - sin->sin_family == AF_INET && - sin->sin_addr.s_addr == ip->ip_dst.s_addr) { - break; - } - } - break; - default: - goto fail; - } - - /* if we didn't find the specific one, then look for - * an unspecified one. - */ - if (sa == NULL) - sa = ndo->ndo_sa_default; - - /* if not found fail */ - if (sa == NULL) - goto fail; - - /* if we can't get nexthdr, we do not need to decrypt it */ - if (ep - bp2 < len) - goto fail; - if (ep - bp2 > len) { - /* FCS included at end of frame (NetBSD 1.6 or later) */ - ep = bp2 + len; - } - - ivoff = (u_char *)(esp + 1) + 0; - ivlen = sa->ivlen; - secret = sa->secret; - espsecret_keylen = sa->secretlen; - ep = ep - sa->authlen; - - if (sa->evp) { - memset(&ctx, 0, sizeof(ctx)); - if (EVP_CipherInit(&ctx, sa->evp, secret, NULL, 0) < 0) - (*ndo->ndo_warning)(ndo, "espkey init failed"); - - blocksz = EVP_CIPHER_CTX_block_size(&ctx); - - p = ivoff; - EVP_CipherInit(&ctx, NULL, NULL, p, 0); - EVP_Cipher(&ctx, p + ivlen, p + ivlen, ep - (p + ivlen)); - advance = ivoff - (u_char *)esp + ivlen; - } else - advance = sizeof(struct newesp); - - /* sanity check for pad length */ - if (ep - bp < *(ep - 2)) - goto fail; - - if (padlen) - *padlen = *(ep - 2) + 2; - - if (nhdr) - *nhdr = *(ep - 1); - - (ndo->ndo_printf)(ndo, ": "); - return advance; -#endif - -fail: - return -1; -} - -/* - * Local Variables: - * c-style: whitesmith - * c-basic-offset: 8 - * End: - */ diff --git a/contrib/tcpdump/print-ether.c b/contrib/tcpdump/print-ether.c deleted file mode 100644 index 8d87830785b68..0000000000000 --- a/contrib/tcpdump/print-ether.c +++ /dev/null @@ -1,328 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-ether.c,v 1.95.2.4 2005/07/10 14:47:57 hannes Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <pcap.h> - -#include "interface.h" -#include "addrtoname.h" -#include "ethertype.h" - -#include "ether.h" - -const struct tok ethertype_values[] = { - { ETHERTYPE_IP, "IPv4" }, - { ETHERTYPE_MPLS, "MPLS unicast" }, - { ETHERTYPE_MPLS_MULTI, "MPLS multicast" }, - { ETHERTYPE_IPV6, "IPv6" }, - { ETHERTYPE_8021Q, "802.1Q" }, - { ETHERTYPE_VMAN, "VMAN" }, - { ETHERTYPE_PUP, "PUP" }, - { ETHERTYPE_ARP, "ARP"}, - { ETHERTYPE_REVARP , "Reverse ARP"}, - { ETHERTYPE_NS, "NS" }, - { ETHERTYPE_SPRITE, "Sprite" }, - { ETHERTYPE_TRAIL, "Trail" }, - { ETHERTYPE_MOPDL, "MOP DL" }, - { ETHERTYPE_MOPRC, "MOP RC" }, - { ETHERTYPE_DN, "DN" }, - { ETHERTYPE_LAT, "LAT" }, - { ETHERTYPE_SCA, "SCA" }, - { ETHERTYPE_LANBRIDGE, "Lanbridge" }, - { ETHERTYPE_DECDNS, "DEC DNS" }, - { ETHERTYPE_DECDTS, "DEC DTS" }, - { ETHERTYPE_VEXP, "VEXP" }, - { ETHERTYPE_VPROD, "VPROD" }, - { ETHERTYPE_ATALK, "Appletalk" }, - { ETHERTYPE_AARP, "Appletalk ARP" }, - { ETHERTYPE_IPX, "IPX" }, - { ETHERTYPE_PPP, "PPP" }, - { ETHERTYPE_SLOW, "Slow Protocols" }, - { ETHERTYPE_PPPOED, "PPPoE D" }, - { ETHERTYPE_PPPOES, "PPPoE S" }, - { ETHERTYPE_EAPOL, "EAPOL" }, - { ETHERTYPE_JUMBO, "Jumbo" }, - { ETHERTYPE_LOOPBACK, "Loopback" }, - { ETHERTYPE_ISO, "OSI" }, - { ETHERTYPE_GRE_ISO, "GRE-OSI" }, - { 0, NULL} -}; - -static inline void -ether_hdr_print(register const u_char *bp, u_int length) -{ - register const struct ether_header *ep; - ep = (const struct ether_header *)bp; - - (void)printf("%s > %s", - etheraddr_string(ESRC(ep)), - etheraddr_string(EDST(ep))); - - if (!qflag) { - if (ntohs(ep->ether_type) <= ETHERMTU) - (void)printf(", 802.3"); - else - (void)printf(", ethertype %s (0x%04x)", - tok2str(ethertype_values,"Unknown", ntohs(ep->ether_type)), - ntohs(ep->ether_type)); - } else { - if (ntohs(ep->ether_type) <= ETHERMTU) - (void)printf(", 802.3"); - else - (void)printf(", %s", tok2str(ethertype_values,"Unknown Ethertype (0x%04x)", ntohs(ep->ether_type))); - } - - (void)printf(", length %u: ", length); -} - -void -ether_print(const u_char *p, u_int length, u_int caplen) -{ - struct ether_header *ep; - u_short ether_type; - u_short extracted_ether_type; - - if (caplen < ETHER_HDRLEN) { - printf("[|ether]"); - return; - } - - if (eflag) - ether_hdr_print(p, length); - - length -= ETHER_HDRLEN; - caplen -= ETHER_HDRLEN; - ep = (struct ether_header *)p; - p += ETHER_HDRLEN; - - ether_type = ntohs(ep->ether_type); - - /* - * Is it (gag) an 802.3 encapsulation? - */ - extracted_ether_type = 0; - if (ether_type <= ETHERMTU) { - /* Try to print the LLC-layer header & higher layers */ - if (llc_print(p, length, caplen, ESRC(ep), EDST(ep), - &extracted_ether_type) == 0) { - /* ether_type not known, print raw packet */ - if (!eflag) - ether_hdr_print((u_char *)ep, length + ETHER_HDRLEN); - - if (!suppress_default_print) - default_print(p, caplen); - } - } else if (ether_encap_print(ether_type, p, length, caplen, - &extracted_ether_type) == 0) { - /* ether_type not known, print raw packet */ - if (!eflag) - ether_hdr_print((u_char *)ep, length + ETHER_HDRLEN); - - if (!suppress_default_print) - default_print(p, caplen); - } -} - -/* - * This is the top level routine of the printer. 'p' points - * to the ether header of the packet, 'h->ts' is the timestamp, - * 'h->len' is the length of the packet off the wire, and 'h->caplen' - * is the number of bytes actually captured. - */ -u_int -ether_if_print(const struct pcap_pkthdr *h, const u_char *p) -{ - ether_print(p, h->len, h->caplen); - - return (ETHER_HDRLEN); -} - -/* - * Prints the packet encapsulated in an Ethernet data segment - * (or an equivalent encapsulation), given the Ethernet type code. - * - * Returns non-zero if it can do so, zero if the ethertype is unknown. - * - * The Ethernet type code is passed through a pointer; if it was - * ETHERTYPE_8021Q, it gets updated to be the Ethernet type of - * the 802.1Q payload, for the benefit of lower layers that might - * want to know what it is. - */ - -int -ether_encap_print(u_short ether_type, const u_char *p, - u_int length, u_int caplen, u_short *extracted_ether_type) -{ - recurse: - *extracted_ether_type = ether_type; - - switch (ether_type) { - - case ETHERTYPE_IP: - ip_print(gndo, p, length); - return (1); - -#ifdef INET6 - case ETHERTYPE_IPV6: - ip6_print(p, length); - return (1); -#endif /*INET6*/ - - case ETHERTYPE_ARP: - case ETHERTYPE_REVARP: - arp_print(gndo, p, length, caplen); - return (1); - - case ETHERTYPE_DN: - decnet_print(p, length, caplen); - return (1); - - case ETHERTYPE_ATALK: - if (vflag) - fputs("et1 ", stdout); - atalk_print(p, length); - return (1); - - case ETHERTYPE_AARP: - aarp_print(p, length); - return (1); - - case ETHERTYPE_IPX: - printf("(NOV-ETHII) "); - ipx_print(p, length); - return (1); - - case ETHERTYPE_8021Q: - if (eflag) - printf("vlan %u, p %u%s, ", - ntohs(*(u_int16_t *)p) & 0xfff, - ntohs(*(u_int16_t *)p) >> 13, - (ntohs(*(u_int16_t *)p) & 0x1000) ? ", CFI" : ""); - - ether_type = ntohs(*(u_int16_t *)(p + 2)); - p += 4; - length -= 4; - caplen -= 4; - - if (ether_type > ETHERMTU) { - if (eflag) - printf("ethertype %s, ", - tok2str(ethertype_values,"0x%04x", ether_type)); - goto recurse; - } - - *extracted_ether_type = 0; - - if (llc_print(p, length, caplen, p - 18, p - 12, - extracted_ether_type) == 0) { - ether_hdr_print(p - 18, length + 4); - } - - if (!suppress_default_print) - default_print(p - 18, caplen + 4); - - return (1); - - case ETHERTYPE_JUMBO: - ether_type = ntohs(*(u_int16_t *)(p)); - p += 2; - length -= 2; - caplen -= 2; - - if (ether_type > ETHERMTU) { - if (eflag) - printf("ethertype %s, ", - tok2str(ethertype_values,"0x%04x", ether_type)); - goto recurse; - } - - *extracted_ether_type = 0; - - if (llc_print(p, length, caplen, p - 16, p - 10, - extracted_ether_type) == 0) { - ether_hdr_print(p - 16, length + 2); - } - - if (!suppress_default_print) - default_print(p - 16, caplen + 2); - - return (1); - - case ETHERTYPE_ISO: - isoclns_print(p+1, length-1, length-1); - return(1); - - case ETHERTYPE_PPPOED: - case ETHERTYPE_PPPOES: - pppoe_print(p, length); - return (1); - - case ETHERTYPE_EAPOL: - eap_print(gndo, p, length); - return (1); - - case ETHERTYPE_PPP: - if (length) { - printf(": "); - ppp_print(p, length); - } - return (1); - - case ETHERTYPE_SLOW: - slow_print(p, length); - return (1); - - case ETHERTYPE_LOOPBACK: - return (1); - - case ETHERTYPE_MPLS: - case ETHERTYPE_MPLS_MULTI: - mpls_print(p, length); - return (1); - - case ETHERTYPE_LAT: - case ETHERTYPE_SCA: - case ETHERTYPE_MOPRC: - case ETHERTYPE_MOPDL: - /* default_print for now */ - default: - return (0); - } -} - - -/* - * Local Variables: - * c-style: whitesmith - * c-basic-offset: 8 - * End: - */ - diff --git a/contrib/tcpdump/print-fddi.c b/contrib/tcpdump/print-fddi.c deleted file mode 100644 index 7d12a303252da..0000000000000 --- a/contrib/tcpdump/print-fddi.c +++ /dev/null @@ -1,310 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-fddi.c,v 1.64.2.1 2005/07/07 01:24:35 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <pcap.h> -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "ethertype.h" - -#include "ether.h" -#include "fddi.h" - -/* - * Some FDDI interfaces use bit-swapped addresses. - */ -#if defined(ultrix) || defined(__alpha) || defined(__bsdi) || defined(__NetBSD__) || defined(__linux__) -int fddi_bitswap = 0; -#else -int fddi_bitswap = 1; -#endif - -/* - * FDDI support for tcpdump, by Jeffrey Mogul [DECWRL], June 1992 - * - * Based in part on code by Van Jacobson, which bears this note: - * - * NOTE: This is a very preliminary hack for FDDI support. - * There are all sorts of wired in constants & nothing (yet) - * to print SMT packets as anything other than hex dumps. - * Most of the necessary changes are waiting on my redoing - * the "header" that a kernel fddi driver supplies to bpf: I - * want it to look like one byte of 'direction' (0 or 1 - * depending on whether the packet was inbound or outbound), - * two bytes of system/driver dependent data (anything an - * implementor thinks would be useful to filter on and/or - * save per-packet, then the real 21-byte FDDI header. - * Steve McCanne & I have also talked about adding the - * 'direction' byte to all bpf headers (e.g., in the two - * bytes of padding on an ethernet header). It's not clear - * we could do this in a backwards compatible way & we hate - * the idea of an incompatible bpf change. Discussions are - * proceeding. - * - * Also, to really support FDDI (and better support 802.2 - * over ethernet) we really need to re-think the rather simple - * minded assumptions about fixed length & fixed format link - * level headers made in gencode.c. One day... - * - * - vj - */ - -static u_char fddi_bit_swap[] = { - 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, - 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, - 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, - 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, - 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, - 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, - 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, - 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, - 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, - 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, - 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, - 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, - 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, - 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, - 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, - 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, - 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, - 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, - 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, - 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, - 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, - 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, - 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, - 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, - 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, - 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, - 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, - 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, - 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, - 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, - 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, - 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff, -}; - -/* - * Print FDDI frame-control bits - */ -static inline void -print_fddi_fc(u_char fc) -{ - switch (fc) { - - case FDDIFC_VOID: /* Void frame */ - printf("void "); - break; - - case FDDIFC_NRT: /* Nonrestricted token */ - printf("nrt "); - break; - - case FDDIFC_RT: /* Restricted token */ - printf("rt "); - break; - - case FDDIFC_SMT_INFO: /* SMT Info */ - printf("info "); - break; - - case FDDIFC_SMT_NSA: /* SMT Next station adrs */ - printf("nsa "); - break; - - case FDDIFC_MAC_BEACON: /* MAC Beacon frame */ - printf("beacon "); - break; - - case FDDIFC_MAC_CLAIM: /* MAC Claim frame */ - printf("claim "); - break; - - default: - switch (fc & FDDIFC_CLFF) { - - case FDDIFC_MAC: - printf("mac%1x ", fc & FDDIFC_ZZZZ); - break; - - case FDDIFC_SMT: - printf("smt%1x ", fc & FDDIFC_ZZZZ); - break; - - case FDDIFC_LLC_ASYNC: - printf("async%1x ", fc & FDDIFC_ZZZZ); - break; - - case FDDIFC_LLC_SYNC: - printf("sync%1x ", fc & FDDIFC_ZZZZ); - break; - - case FDDIFC_IMP_ASYNC: - printf("imp_async%1x ", fc & FDDIFC_ZZZZ); - break; - - case FDDIFC_IMP_SYNC: - printf("imp_sync%1x ", fc & FDDIFC_ZZZZ); - break; - - default: - printf("%02x ", fc); - break; - } - } -} - -/* Extract src, dst addresses */ -static inline void -extract_fddi_addrs(const struct fddi_header *fddip, char *fsrc, char *fdst) -{ - register int i; - - if (fddi_bitswap) { - /* - * bit-swap the fddi addresses (isn't the IEEE standards - * process wonderful!) then convert them to names. - */ - for (i = 0; i < 6; ++i) - fdst[i] = fddi_bit_swap[fddip->fddi_dhost[i]]; - for (i = 0; i < 6; ++i) - fsrc[i] = fddi_bit_swap[fddip->fddi_shost[i]]; - } - else { - memcpy(fdst, (const char *)fddip->fddi_dhost, 6); - memcpy(fsrc, (const char *)fddip->fddi_shost, 6); - } -} - -/* - * Print the FDDI MAC header - */ -static inline void -fddi_hdr_print(register const struct fddi_header *fddip, register u_int length, - register const u_char *fsrc, register const u_char *fdst) -{ - const char *srcname, *dstname; - - srcname = etheraddr_string(fsrc); - dstname = etheraddr_string(fdst); - - if (vflag) - (void) printf("%02x %s %s %d: ", - fddip->fddi_fc, - srcname, dstname, - length); - else if (qflag) - printf("%s %s %d: ", srcname, dstname, length); - else { - (void) print_fddi_fc(fddip->fddi_fc); - (void) printf("%s %s %d: ", srcname, dstname, length); - } -} - -static inline void -fddi_smt_print(const u_char *p _U_, u_int length _U_) -{ - printf("<SMT printer not yet implemented>"); -} - -void -fddi_print(const u_char *p, u_int length, u_int caplen) -{ - const struct fddi_header *fddip = (const struct fddi_header *)p; - struct ether_header ehdr; - u_short extracted_ethertype; - - if (caplen < FDDI_HDRLEN) { - printf("[|fddi]"); - return; - } - - /* - * Get the FDDI addresses into a canonical form - */ - extract_fddi_addrs(fddip, (char *)ESRC(&ehdr), (char *)EDST(&ehdr)); - - if (eflag) - fddi_hdr_print(fddip, length, ESRC(&ehdr), EDST(&ehdr)); - - /* Skip over FDDI MAC header */ - length -= FDDI_HDRLEN; - p += FDDI_HDRLEN; - caplen -= FDDI_HDRLEN; - - /* Frame Control field determines interpretation of packet */ - extracted_ethertype = 0; - if ((fddip->fddi_fc & FDDIFC_CLFF) == FDDIFC_LLC_ASYNC) { - /* Try to print the LLC-layer header & higher layers */ - if (llc_print(p, length, caplen, ESRC(&ehdr), EDST(&ehdr), - &extracted_ethertype) == 0) { - /* - * Some kinds of LLC packet we cannot - * handle intelligently - */ - if (!eflag) - fddi_hdr_print(fddip, length + FDDI_HDRLEN, - ESRC(&ehdr), EDST(&ehdr)); - if (extracted_ethertype) { - printf("(LLC %s) ", - etherproto_string(htons(extracted_ethertype))); - } - if (!suppress_default_print) - default_print(p, caplen); - } - } else if ((fddip->fddi_fc & FDDIFC_CLFF) == FDDIFC_SMT) - fddi_smt_print(p, caplen); - else { - /* Some kinds of FDDI packet we cannot handle intelligently */ - if (!eflag) - fddi_hdr_print(fddip, length + FDDI_HDRLEN, ESRC(&ehdr), - EDST(&ehdr)); - if (!suppress_default_print) - default_print(p, caplen); - } -} - -/* - * This is the top level routine of the printer. 'p' points - * to the FDDI header of the packet, 'h->ts' is the timestamp, - * 'h->len' is the length of the packet off the wire, and 'h->caplen' - * is the number of bytes actually captured. - */ -u_int -fddi_if_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - fddi_print(p, h->len, h->caplen); - - return (FDDI_HDRLEN); -} diff --git a/contrib/tcpdump/print-fr.c b/contrib/tcpdump/print-fr.c deleted file mode 100644 index 189612d81f589..0000000000000 --- a/contrib/tcpdump/print-fr.c +++ /dev/null @@ -1,831 +0,0 @@ -/* - * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#)$Header: /tcpdump/master/tcpdump/print-fr.c,v 1.32.2.12 2005/08/23 03:15:51 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> -#include <pcap.h> - -#include "addrtoname.h" -#include "interface.h" -#include "ethertype.h" -#include "nlpid.h" -#include "extract.h" -#include "oui.h" - -static void frf15_print(const u_char *, u_int); - -/* - * the frame relay header has a variable length - * - * the EA bit determines if there is another byte - * in the header - * - * minimum header length is 2 bytes - * maximum header length is 4 bytes - * - * 7 6 5 4 3 2 1 0 - * +----+----+----+----+----+----+----+----+ - * | DLCI (6 bits) | CR | EA | - * +----+----+----+----+----+----+----+----+ - * | DLCI (4 bits) |FECN|BECN| DE | EA | - * +----+----+----+----+----+----+----+----+ - * | DLCI (7 bits) | EA | - * +----+----+----+----+----+----+----+----+ - * | DLCI (6 bits) |SDLC| EA | - * +----+----+----+----+----+----+----+----+ - */ - -#define FR_EA_BIT 0x01 - -#define FR_CR_BIT 0x02000000 -#define FR_DE_BIT 0x00020000 -#define FR_BECN_BIT 0x00040000 -#define FR_FECN_BIT 0x00080000 -#define FR_SDLC_BIT 0x00000002 - - -struct tok fr_header_flag_values[] = { - { FR_CR_BIT, "C!" }, - { FR_DE_BIT, "DE" }, - { FR_BECN_BIT, "BECN" }, - { FR_FECN_BIT, "FECN" }, - { FR_SDLC_BIT, "sdlcore" }, - { 0, NULL } -}; - -/* FRF.15 / FRF.16 */ -#define MFR_B_BIT 0x80 -#define MFR_E_BIT 0x40 -#define MFR_C_BIT 0x20 -#define MFR_BEC_MASK (MFR_B_BIT | MFR_E_BIT | MFR_C_BIT) -#define MFR_CTRL_FRAME (MFR_B_BIT | MFR_E_BIT | MFR_C_BIT) -#define MFR_FRAG_FRAME (MFR_B_BIT | MFR_E_BIT ) - -struct tok frf_flag_values[] = { - { MFR_B_BIT, "Begin" }, - { MFR_E_BIT, "End" }, - { MFR_C_BIT, "Control" }, - { 0, NULL } -}; - -/* Finds out Q.922 address length, DLCI and flags. Returns 0 on success - * save the flags dep. on address length - */ -static int parse_q922_addr(const u_char *p, u_int *dlci, u_int *sdlcore, - u_int *addr_len, u_int8_t *flags) -{ - if ((p[0] & FR_EA_BIT)) - return -1; - - *addr_len = 2; - *dlci = ((p[0] & 0xFC) << 2) | ((p[1] & 0xF0) >> 4); - - flags[0] = p[0] & 0x02; /* populate the first flag fields */ - flags[1] = p[1] & 0x0c; - - if (p[1] & FR_EA_BIT) - return 0; /* 2-byte Q.922 address */ - - p += 2; - (*addr_len)++; /* 3- or 4-byte Q.922 address */ - if ((p[0] & FR_EA_BIT) == 0) { - *dlci = (*dlci << 7) | (p[0] >> 1); - (*addr_len)++; /* 4-byte Q.922 address */ - p++; - } - - if ((p[0] & FR_EA_BIT) == 0) - return -1; /* more than 4 bytes of Q.922 address? */ - - flags[3] = p[0] & 0x02; - - if (p[0] & 0x02) - *sdlcore = p[0] >> 2; - else - *dlci = (*dlci << 6) | (p[0] >> 2); - - return 0; -} - -/* Frame Relay packet structure, with flags and CRC removed - - +---------------------------+ - | Q.922 Address* | - +-- --+ - | | - +---------------------------+ - | Control (UI = 0x03) | - +---------------------------+ - | Optional Pad (0x00) | - +---------------------------+ - | NLPID | - +---------------------------+ - | . | - | . | - | . | - | Data | - | . | - | . | - +---------------------------+ - - * Q.922 addresses, as presently defined, are two octets and - contain a 10-bit DLCI. In some networks Q.922 addresses - may optionally be increased to three or four octets. -*/ - -static u_int -fr_hdrlen(const u_char *p, u_int addr_len) -{ - if (!p[addr_len + 1] /* pad exist */) - return addr_len + 1 /* UI */ + 1 /* pad */ + 1 /* NLPID */; - else - return addr_len + 1 /* UI */ + 1 /* NLPID */; -} - -static void -fr_hdr_print(int length, u_int addr_len, u_int dlci, u_int8_t *flags, u_int16_t nlpid) -{ - if (qflag) { - (void)printf("Q.922, DLCI %u, length %u: ", - dlci, - length); - } else { - if (nlpid <= 0xff) /* if its smaller than 256 then its a NLPID */ - (void)printf("Q.922, hdr-len %u, DLCI %u, Flags [%s], NLPID %s (0x%02x), length %u: ", - addr_len, - dlci, - bittok2str(fr_header_flag_values, "none", EXTRACT_32BITS(flags)), - tok2str(nlpid_values,"unknown", nlpid), - nlpid, - length); - else /* must be an ethertype */ - (void)printf("Q.922, hdr-len %u, DLCI %u, Flags [%s], cisco-ethertype %s (0x%04x), length %u: ", - addr_len, - dlci, - bittok2str(fr_header_flag_values, "none", EXTRACT_32BITS(flags)), - tok2str(ethertype_values, "unknown", nlpid), - nlpid, - length); - } -} - -u_int -fr_if_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - register u_int length = h->len; - register u_int caplen = h->caplen; - - TCHECK2(*p, 4); /* minimum frame header length */ - - if ((length = fr_print(p, length)) == 0) - return (0); - else - return length; - trunc: - printf("[|fr]"); - return caplen; -} - -u_int -fr_print(register const u_char *p, u_int length) -{ - u_int16_t extracted_ethertype; - u_int dlci; - u_int sdlcore; - u_int addr_len; - u_int16_t nlpid; - u_int hdr_len; - u_int8_t flags[4]; - - if (parse_q922_addr(p, &dlci, &sdlcore, &addr_len, flags)) { - printf("Q.922, invalid address"); - return 0; - } - - TCHECK2(*p,addr_len+1+1); - hdr_len = fr_hdrlen(p, addr_len); - TCHECK2(*p,hdr_len); - - if (p[addr_len] != 0x03 && dlci != 0) { - - /* lets figure out if we have cisco style encapsulation: */ - extracted_ethertype = EXTRACT_16BITS(p+addr_len); - - if (eflag) - fr_hdr_print(length, addr_len, dlci, flags, extracted_ethertype); - - if (ether_encap_print(extracted_ethertype, - p+addr_len+ETHERTYPE_LEN, - length-addr_len-ETHERTYPE_LEN, - length-addr_len-ETHERTYPE_LEN, - &extracted_ethertype) == 0) - /* ether_type not known, probably it wasn't one */ - printf("UI %02x! ", p[addr_len]); - else - return hdr_len; - } - - if (!p[addr_len + 1]) { /* pad byte should be used with 3-byte Q.922 */ - if (addr_len != 3) - printf("Pad! "); - } else if (addr_len == 3) - printf("No pad! "); - - nlpid = p[hdr_len - 1]; - - if (eflag) - fr_hdr_print(length, addr_len, dlci, flags, nlpid); - p += hdr_len; - length -= hdr_len; - - switch (nlpid) { - case NLPID_IP: - ip_print(gndo, p, length); - break; - -#ifdef INET6 - case NLPID_IP6: - ip6_print(p, length); - break; -#endif - case NLPID_CLNP: - case NLPID_ESIS: - case NLPID_ISIS: - isoclns_print(p-1, length+1, length+1); /* OSI printers need the NLPID field */ - break; - - case NLPID_SNAP: - if (snap_print(p, length, length, &extracted_ethertype, 0) == 0) { - /* ether_type not known, print raw packet */ - if (!eflag) - fr_hdr_print(length + hdr_len, hdr_len, - dlci, flags, nlpid); - if (!suppress_default_print) - default_print(p - hdr_len, length + hdr_len); - } - break; - - case NLPID_Q933: - q933_print(p, length); - break; - - case NLPID_MFR: - frf15_print(p, length); - break; - - default: - if (!eflag) - fr_hdr_print(length + hdr_len, addr_len, - dlci, flags, nlpid); - if (!xflag) - default_print(p, length); - } - - return hdr_len; - - trunc: - printf("[|fr]"); - return 0; - -} - -#define MFR_CTRL_MSG_ADD_LINK 1 -#define MFR_CTRL_MSG_ADD_LINK_ACK 2 -#define MFR_CTRL_MSG_ADD_LINK_REJ 3 -#define MFR_CTRL_MSG_HELLO 4 -#define MFR_CTRL_MSG_HELLO_ACK 5 -#define MFR_CTRL_MSG_REMOVE_LINK 6 -#define MFR_CTRL_MSG_REMOVE_LINK_ACK 7 - -struct tok mfr_ctrl_msg_values[] = { - { MFR_CTRL_MSG_ADD_LINK, "Add Link" }, - { MFR_CTRL_MSG_ADD_LINK_ACK, "Add Link ACK" }, - { MFR_CTRL_MSG_ADD_LINK_REJ, "Add Link Reject" }, - { MFR_CTRL_MSG_HELLO, "Hello" }, - { MFR_CTRL_MSG_HELLO_ACK, "Hello ACK" }, - { MFR_CTRL_MSG_REMOVE_LINK, "Remove Link" }, - { MFR_CTRL_MSG_REMOVE_LINK_ACK, "Remove Link ACK" }, - { 0, NULL } -}; - -#define MFR_CTRL_IE_BUNDLE_ID 1 -#define MFR_CTRL_IE_LINK_ID 2 -#define MFR_CTRL_IE_MAGIC_NUM 3 -#define MFR_CTRL_IE_TIMESTAMP 5 -#define MFR_CTRL_IE_VENDOR_EXT 6 -#define MFR_CTRL_IE_CAUSE 7 - -struct tok mfr_ctrl_ie_values[] = { - { MFR_CTRL_IE_BUNDLE_ID, "Bundle ID"}, - { MFR_CTRL_IE_LINK_ID, "Link ID"}, - { MFR_CTRL_IE_MAGIC_NUM, "Magic Number"}, - { MFR_CTRL_IE_TIMESTAMP, "Timestamp"}, - { MFR_CTRL_IE_VENDOR_EXT, "Vendor Extension"}, - { MFR_CTRL_IE_CAUSE, "Cause"}, - { 0, NULL } -}; - -#define MFR_ID_STRING_MAXLEN 50 - -struct ie_tlv_header_t { - u_int8_t ie_type; - u_int8_t ie_len; -}; - -u_int -mfr_print(register const u_char *p, u_int length) -{ - u_int tlen,idx,hdr_len = 0; - u_int16_t sequence_num; - u_int8_t ie_type,ie_len; - const u_int8_t *tptr; - - -/* - * FRF.16 Link Integrity Control Frame - * - * 7 6 5 4 3 2 1 0 - * +----+----+----+----+----+----+----+----+ - * | B | E | C=1| 0 0 0 0 | EA | - * +----+----+----+----+----+----+----+----+ - * | 0 0 0 0 0 0 0 0 | - * +----+----+----+----+----+----+----+----+ - * | message type | - * +----+----+----+----+----+----+----+----+ - */ - - TCHECK2(*p, 4); /* minimum frame header length */ - - if ((p[0] & MFR_BEC_MASK) == MFR_CTRL_FRAME && p[1] == 0) { - printf("FRF.16 Control, Flags [%s], %s, length %u", - bittok2str(frf_flag_values,"none",(p[0] & MFR_BEC_MASK)), - tok2str(mfr_ctrl_msg_values,"Unknown Message (0x%02x)",p[2]), - length); - tptr = p + 3; - tlen = length -3; - hdr_len = 3; - - if (!vflag) - return hdr_len; - - while (tlen>sizeof(struct ie_tlv_header_t)) { - TCHECK2(*tptr, sizeof(struct ie_tlv_header_t)); - ie_type=tptr[0]; - ie_len=tptr[1]; - - printf("\n\tIE %s (%u), length %u: ", - tok2str(mfr_ctrl_ie_values,"Unknown",ie_type), - ie_type, - ie_len); - - /* infinite loop check */ - if (ie_type == 0 || ie_len <= sizeof(struct ie_tlv_header_t)) - return hdr_len; - - TCHECK2(*tptr,ie_len); - tptr+=sizeof(struct ie_tlv_header_t); - /* tlv len includes header */ - ie_len-=sizeof(struct ie_tlv_header_t); - tlen-=sizeof(struct ie_tlv_header_t); - - switch (ie_type) { - - case MFR_CTRL_IE_MAGIC_NUM: - printf("0x%08x",EXTRACT_32BITS(tptr)); - break; - - case MFR_CTRL_IE_BUNDLE_ID: /* same message format */ - case MFR_CTRL_IE_LINK_ID: - for (idx = 0; idx < ie_len && idx < MFR_ID_STRING_MAXLEN; idx++) { - if (*(tptr+idx) != 0) /* don't print null termination */ - safeputchar(*(tptr+idx)); - else - break; - } - break; - - case MFR_CTRL_IE_TIMESTAMP: - if (ie_len == sizeof(struct timeval)) { - ts_print((const struct timeval *)tptr); - break; - } - /* fall through and hexdump if no unix timestamp */ - - /* - * FIXME those are the defined IEs that lack a decoder - * you are welcome to contribute code ;-) - */ - - case MFR_CTRL_IE_VENDOR_EXT: - case MFR_CTRL_IE_CAUSE: - - default: - if (vflag <= 1) - print_unknown_data(tptr,"\n\t ",ie_len); - break; - } - - /* do we want to see a hexdump of the IE ? */ - if (vflag > 1 ) - print_unknown_data(tptr,"\n\t ",ie_len); - - tlen-=ie_len; - tptr+=ie_len; - } - return hdr_len; - } -/* - * FRF.16 Fragmentation Frame - * - * 7 6 5 4 3 2 1 0 - * +----+----+----+----+----+----+----+----+ - * | B | E | C=0|seq. (high 4 bits) | EA | - * +----+----+----+----+----+----+----+----+ - * | sequence (low 8 bits) | - * +----+----+----+----+----+----+----+----+ - * | DLCI (6 bits) | CR | EA | - * +----+----+----+----+----+----+----+----+ - * | DLCI (4 bits) |FECN|BECN| DE | EA | - * +----+----+----+----+----+----+----+----+ - */ - - sequence_num = (p[0]&0x1e)<<7 | p[1]; - /* whole packet or first fragment ? */ - if ((p[0] & MFR_BEC_MASK) == MFR_FRAG_FRAME || - (p[0] & MFR_BEC_MASK) == MFR_B_BIT) { - printf("FRF.16 Frag, seq %u, Flags [%s], ", - sequence_num, - bittok2str(frf_flag_values,"none",(p[0] & MFR_BEC_MASK))); - hdr_len = 2; - fr_print(p+hdr_len,length-hdr_len); - return hdr_len; - } - - /* must be a middle or the last fragment */ - printf("FRF.16 Frag, seq %u, Flags [%s]", - sequence_num, - bittok2str(frf_flag_values,"none",(p[0] & MFR_BEC_MASK))); - print_unknown_data(p,"\n\t",length); - - return hdr_len; - - trunc: - printf("[|mfr]"); - return length; -} - -/* an NLPID of 0xb1 indicates a 2-byte - * FRF.15 header - * - * 7 6 5 4 3 2 1 0 - * +----+----+----+----+----+----+----+----+ - * ~ Q.922 header ~ - * +----+----+----+----+----+----+----+----+ - * | NLPID (8 bits) | NLPID=0xb1 - * +----+----+----+----+----+----+----+----+ - * | B | E | C |seq. (high 4 bits) | R | - * +----+----+----+----+----+----+----+----+ - * | sequence (low 8 bits) | - * +----+----+----+----+----+----+----+----+ - */ - -#define FR_FRF15_FRAGTYPE 0x01 - -static void -frf15_print (const u_char *p, u_int length) { - - u_int16_t sequence_num, flags; - - flags = p[0]&MFR_BEC_MASK; - sequence_num = (p[0]&0x1e)<<7 | p[1]; - - printf("FRF.15, seq 0x%03x, Flags [%s],%s Fragmentation, length %u", - sequence_num, - bittok2str(frf_flag_values,"none",flags), - p[0]&FR_FRF15_FRAGTYPE ? "Interface" : "End-to-End", - length); - -/* TODO: - * depending on all permutations of the B, E and C bit - * dig as deep as we can - e.g. on the first (B) fragment - * there is enough payload to print the IP header - * on non (B) fragments it depends if the fragmentation - * model is end-to-end or interface based wether we want to print - * another Q.922 header - */ - -} - -/* - * Q.933 decoding portion for framerelay specific. - */ - -/* Q.933 packet format - Format of Other Protocols - using Q.933 NLPID - +-------------------------------+ - | Q.922 Address | - +---------------+---------------+ - |Control 0x03 | NLPID 0x08 | - +---------------+---------------+ - | L2 Protocol ID | - | octet 1 | octet 2 | - +-------------------------------+ - | L3 Protocol ID | - | octet 2 | octet 2 | - +-------------------------------+ - | Protocol Data | - +-------------------------------+ - | FCS | - +-------------------------------+ - */ - -/* L2 (Octet 1)- Call Reference Usually is 0x0 */ - -/* - * L2 (Octet 2)- Message Types definition 1 byte long. - */ -/* Call Establish */ -#define MSG_TYPE_ESC_TO_NATIONAL 0x00 -#define MSG_TYPE_ALERT 0x01 -#define MSG_TYPE_CALL_PROCEEDING 0x02 -#define MSG_TYPE_CONNECT 0x07 -#define MSG_TYPE_CONNECT_ACK 0x0F -#define MSG_TYPE_PROGRESS 0x03 -#define MSG_TYPE_SETUP 0x05 -/* Call Clear */ -#define MSG_TYPE_DISCONNECT 0x45 -#define MSG_TYPE_RELEASE 0x4D -#define MSG_TYPE_RELEASE_COMPLETE 0x5A -#define MSG_TYPE_RESTART 0x46 -#define MSG_TYPE_RESTART_ACK 0x4E -/* Status */ -#define MSG_TYPE_STATUS 0x7D -#define MSG_TYPE_STATUS_ENQ 0x75 - -struct tok fr_q933_msg_values[] = { - { MSG_TYPE_ESC_TO_NATIONAL, "ESC to National" }, - { MSG_TYPE_ALERT, "Alert" }, - { MSG_TYPE_CALL_PROCEEDING, "Call proceeding" }, - { MSG_TYPE_CONNECT, "Connect" }, - { MSG_TYPE_CONNECT_ACK, "Connect ACK" }, - { MSG_TYPE_PROGRESS, "Progress" }, - { MSG_TYPE_SETUP, "Setup" }, - { MSG_TYPE_DISCONNECT, "Disconnect" }, - { MSG_TYPE_RELEASE, "Release" }, - { MSG_TYPE_RELEASE_COMPLETE, "Release Complete" }, - { MSG_TYPE_RESTART, "Restart" }, - { MSG_TYPE_RESTART_ACK, "Restart ACK" }, - { MSG_TYPE_STATUS, "Status Reply" }, - { MSG_TYPE_STATUS_ENQ, "Status Enquiry" }, - { 0, NULL } -}; - -#define MSG_ANSI_LOCKING_SHIFT 0x95 - -#define FR_LMI_ANSI_REPORT_TYPE_IE 0x01 -#define FR_LMI_ANSI_LINK_VERIFY_IE_91 0x19 /* details? */ -#define FR_LMI_ANSI_LINK_VERIFY_IE 0x03 -#define FR_LMI_ANSI_PVC_STATUS_IE 0x07 - -#define FR_LMI_CCITT_REPORT_TYPE_IE 0x51 -#define FR_LMI_CCITT_LINK_VERIFY_IE 0x53 -#define FR_LMI_CCITT_PVC_STATUS_IE 0x57 - -struct tok fr_q933_ie_values_codeset5[] = { - { FR_LMI_ANSI_REPORT_TYPE_IE, "ANSI Report Type" }, - { FR_LMI_ANSI_LINK_VERIFY_IE_91, "ANSI Link Verify" }, - { FR_LMI_ANSI_LINK_VERIFY_IE, "ANSI Link Verify" }, - { FR_LMI_ANSI_PVC_STATUS_IE, "ANSI PVC Status" }, - { FR_LMI_CCITT_REPORT_TYPE_IE, "CCITT Report Type" }, - { FR_LMI_CCITT_LINK_VERIFY_IE, "CCITT Link Verify" }, - { FR_LMI_CCITT_PVC_STATUS_IE, "CCITT PVC Status" }, - { 0, NULL } -}; - -#define FR_LMI_REPORT_TYPE_IE_FULL_STATUS 0 -#define FR_LMI_REPORT_TYPE_IE_LINK_VERIFY 1 -#define FR_LMI_REPORT_TYPE_IE_ASYNC_PVC 2 - -struct tok fr_lmi_report_type_ie_values[] = { - { FR_LMI_REPORT_TYPE_IE_FULL_STATUS, "Full Status" }, - { FR_LMI_REPORT_TYPE_IE_LINK_VERIFY, "Link verify" }, - { FR_LMI_REPORT_TYPE_IE_ASYNC_PVC, "Async PVC Status" }, - { 0, NULL } -}; - -/* array of 16 codepages - currently we only support codepage 1,5 */ -static struct tok *fr_q933_ie_codesets[] = { - NULL, - fr_q933_ie_values_codeset5, - NULL, - NULL, - NULL, - fr_q933_ie_values_codeset5, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL -}; - -static int fr_q933_print_ie_codeset5(const struct ie_tlv_header_t *ie_p, - const u_char *p); - -typedef int (*codeset_pr_func_t)(const struct ie_tlv_header_t *ie_p, - const u_char *p); - -/* array of 16 codepages - currently we only support codepage 1,5 */ -static codeset_pr_func_t fr_q933_print_ie_codeset[] = { - NULL, - fr_q933_print_ie_codeset5, - NULL, - NULL, - NULL, - fr_q933_print_ie_codeset5, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL -}; - -void -q933_print(const u_char *p, u_int length) -{ - const u_char *ptemp = p; - struct ie_tlv_header_t *ie_p; - int olen; - int is_ansi = 0; - u_int codeset; - u_int ie_is_known = 0; - - if (length < 9) { /* shortest: Q.933a LINK VERIFY */ - printf("[|q.933]"); - return; - } - - codeset = p[2]&0x0f; /* extract the codeset */ - - if (p[2] == MSG_ANSI_LOCKING_SHIFT) - is_ansi = 1; - - printf("%s", eflag ? "" : "Q.933, "); - - /* printing out header part */ - printf("%s, codeset %u", is_ansi ? "ANSI" : "CCITT", codeset); - - if (p[0]) - printf(", Call Ref: 0x%02x", p[0]); - - if (vflag) - printf(", %s (0x%02x), length %u", - tok2str(fr_q933_msg_values,"unknown message",p[1]), - p[1], - length); - else - printf(", %s", - tok2str(fr_q933_msg_values,"unknown message 0x%02x",p[1])); - - olen = length; /* preserve the original length for non verbose mode */ - - if (length < (u_int)(2 - is_ansi)) { - printf("[|q.933]"); - return; - } - length -= 2 - is_ansi; - ptemp += 2 + is_ansi; - - /* Loop through the rest of IE */ - while (length > sizeof(struct ie_tlv_header_t )) { - ie_p = (struct ie_tlv_header_t *)ptemp; - if (length < sizeof(struct ie_tlv_header_t ) || - length < sizeof(struct ie_tlv_header_t ) + ie_p->ie_len) { - if (vflag) /* not bark if there is just a trailer */ - printf("\n[|q.933]"); - else - printf(", length %u",olen); - return; - } - - /* lets do the full IE parsing only in verbose mode - * however some IEs (DLCI Status, Link Verify) - * are also intereststing in non-verbose mode */ - if (vflag) - printf("\n\t%s IE (0x%02x), length %u: ", - tok2str(fr_q933_ie_codesets[codeset],"unknown",ie_p->ie_type), - ie_p->ie_type, - ie_p->ie_len); - - /* sanity check */ - if (ie_p->ie_type == 0 || ie_p->ie_len == 0) - return; - - if (fr_q933_print_ie_codeset[codeset] != NULL) - ie_is_known = fr_q933_print_ie_codeset[codeset](ie_p, ptemp); - - if (vflag >= 1 && !ie_is_known) - print_unknown_data(ptemp+2,"\n\t",ie_p->ie_len); - - /* do we want to see a hexdump of the IE ? */ - if (vflag> 1 && ie_is_known) - print_unknown_data(ptemp+2,"\n\t ",ie_p->ie_len); - - length = length - ie_p->ie_len - 2; - ptemp = ptemp + ie_p->ie_len + 2; - } - if (!vflag) - printf(", length %u",olen); -} - -static int -fr_q933_print_ie_codeset5(const struct ie_tlv_header_t *ie_p, const u_char *p) -{ - u_int dlci; - - switch (ie_p->ie_type) { - - case FR_LMI_ANSI_REPORT_TYPE_IE: /* fall through */ - case FR_LMI_CCITT_REPORT_TYPE_IE: - if (vflag) - printf("%s (%u)", - tok2str(fr_lmi_report_type_ie_values,"unknown",p[2]), - p[2]); - return 1; - - case FR_LMI_ANSI_LINK_VERIFY_IE: /* fall through */ - case FR_LMI_CCITT_LINK_VERIFY_IE: - case FR_LMI_ANSI_LINK_VERIFY_IE_91: - if (!vflag) - printf(", "); - printf("TX Seq: %3d, RX Seq: %3d", p[2], p[3]); - return 1; - - case FR_LMI_ANSI_PVC_STATUS_IE: /* fall through */ - case FR_LMI_CCITT_PVC_STATUS_IE: - if (!vflag) - printf(", "); - /* now parse the DLCI information element. */ - if ((ie_p->ie_len < 3) || - (p[2] & 0x80) || - ((ie_p->ie_len == 3) && !(p[3] & 0x80)) || - ((ie_p->ie_len == 4) && ((p[3] & 0x80) || !(p[4] & 0x80))) || - ((ie_p->ie_len == 5) && ((p[3] & 0x80) || (p[4] & 0x80) || - !(p[5] & 0x80))) || - (ie_p->ie_len > 5) || - !(p[ie_p->ie_len + 1] & 0x80)) - printf("Invalid DLCI IE"); - - dlci = ((p[2] & 0x3F) << 4) | ((p[3] & 0x78) >> 3); - if (ie_p->ie_len == 4) - dlci = (dlci << 6) | ((p[4] & 0x7E) >> 1); - else if (ie_p->ie_len == 5) - dlci = (dlci << 13) | (p[4] & 0x7F) | ((p[5] & 0x7E) >> 1); - - printf("DLCI %u: status %s%s", dlci, - p[ie_p->ie_len + 1] & 0x8 ? "New, " : "", - p[ie_p->ie_len + 1] & 0x2 ? "Active" : "Inactive"); - return 1; - } - - return 0; -} diff --git a/contrib/tcpdump/print-frag6.c b/contrib/tcpdump/print-frag6.c deleted file mode 100644 index 2c7788ba26007..0000000000000 --- a/contrib/tcpdump/print-frag6.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1993, 1994 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-frag6.c,v 1.19.2.1 2005/04/20 22:33:21 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifdef INET6 - -#include <tcpdump-stdinc.h> - -#include <stdio.h> - -#include "ip6.h" - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -int -frag6_print(register const u_char *bp, register const u_char *bp2) -{ - register const struct ip6_frag *dp; - register const struct ip6_hdr *ip6; - - dp = (const struct ip6_frag *)bp; - ip6 = (const struct ip6_hdr *)bp2; - - TCHECK(dp->ip6f_offlg); - - if (vflag) { - printf("frag (0x%08x:%d|%ld)", - EXTRACT_32BITS(&dp->ip6f_ident), - EXTRACT_16BITS(&dp->ip6f_offlg) & IP6F_OFF_MASK, - sizeof(struct ip6_hdr) + EXTRACT_16BITS(&ip6->ip6_plen) - - (long)(bp - bp2) - sizeof(struct ip6_frag)); - } else { - printf("frag (%d|%ld)", - EXTRACT_16BITS(&dp->ip6f_offlg) & IP6F_OFF_MASK, - sizeof(struct ip6_hdr) + EXTRACT_16BITS(&ip6->ip6_plen) - - (long)(bp - bp2) - sizeof(struct ip6_frag)); - } - -#if 1 - /* it is meaningless to decode non-first fragment */ - if ((EXTRACT_16BITS(&dp->ip6f_offlg) & IP6F_OFF_MASK) != 0) - return -1; - else -#endif - { - fputs(" ", stdout); - return sizeof(struct ip6_frag); - } -trunc: - fputs("[|frag]", stdout); - return -1; -#undef TCHECK -} -#endif /* INET6 */ diff --git a/contrib/tcpdump/print-gre.c b/contrib/tcpdump/print-gre.c deleted file mode 100644 index d739356ac8186..0000000000000 --- a/contrib/tcpdump/print-gre.c +++ /dev/null @@ -1,400 +0,0 @@ -/* $OpenBSD: print-gre.c,v 1.6 2002/10/30 03:04:04 fgsch Exp $ */ - -/* - * Copyright (c) 2002 Jason L. Wright (jason@thought.net) - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Jason L. Wright - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * tcpdump filter for GRE - Generic Routing Encapsulation - * RFC1701 (GRE), RFC1702 (GRE IPv4), and RFC2637 (Enhanced GRE) - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-gre.c,v 1.28 2005/04/06 21:32:39 mcr Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -#include "ip.h" -#include "ethertype.h" - -#define GRE_CP 0x8000 /* checksum present */ -#define GRE_RP 0x4000 /* routing present */ -#define GRE_KP 0x2000 /* key present */ -#define GRE_SP 0x1000 /* sequence# present */ -#define GRE_sP 0x0800 /* source routing */ -#define GRE_RECRS 0x0700 /* recursion count */ -#define GRE_AP 0x0080 /* acknowledgment# present */ - -struct tok gre_flag_values[] = { - { GRE_CP, "checksum present"}, - { GRE_RP, "routing present"}, - { GRE_KP, "key present"}, - { GRE_SP, "sequence# present"}, - { GRE_sP, "source routing present"}, - { GRE_RECRS, "recursion count"}, - { GRE_AP, "ack present"}, - { 0, NULL } -}; - -#define GRE_VERS_MASK 0x0007 /* protocol version */ - -/* source route entry types */ -#define GRESRE_IP 0x0800 /* IP */ -#define GRESRE_ASN 0xfffe /* ASN */ - -void gre_print_0(const u_char *, u_int); -void gre_print_1(const u_char *, u_int); -void gre_sre_print(u_int16_t, u_int8_t, u_int8_t, const u_char *, u_int); -void gre_sre_ip_print(u_int8_t, u_int8_t, const u_char *, u_int); -void gre_sre_asn_print(u_int8_t, u_int8_t, const u_char *, u_int); - -void -gre_print(const u_char *bp, u_int length) -{ - u_int len = length, vers; - - if (len < 2) { - printf("[|gre]"); - return; - } - vers = EXTRACT_16BITS(bp) & GRE_VERS_MASK; - printf("GREv%u",vers); - - switch(vers) { - case 0: - gre_print_0(bp, len); - break; - case 1: - gre_print_1(bp, len); - break; - default: - printf(" ERROR: unknown-version"); - break; - } - return; - -} - -void -gre_print_0(const u_char *bp, u_int length) -{ - u_int len = length; - u_int16_t flags, prot; - - flags = EXTRACT_16BITS(bp); - if (vflag) - printf(", Flags [%s]", - bittok2str(gre_flag_values,"none",flags)); - - len -= 2; - bp += 2; - - if (len < 2) - goto trunc; - prot = EXTRACT_16BITS(bp); - len -= 2; - bp += 2; - - if ((flags & GRE_CP) | (flags & GRE_RP)) { - if (len < 2) - goto trunc; - if (vflag) - printf(", sum 0x%x", EXTRACT_16BITS(bp)); - bp += 2; - len -= 2; - - if (len < 2) - goto trunc; - printf(", off 0x%x", EXTRACT_16BITS(bp)); - bp += 2; - len -= 2; - } - - if (flags & GRE_KP) { - if (len < 4) - goto trunc; - printf(", key=0x%x", EXTRACT_32BITS(bp)); - bp += 4; - len -= 4; - } - - if (flags & GRE_SP) { - if (len < 4) - goto trunc; - printf(", seq %u", EXTRACT_32BITS(bp)); - bp += 4; - len -= 4; - } - - if (flags & GRE_RP) { - for (;;) { - u_int16_t af; - u_int8_t sreoff; - u_int8_t srelen; - - if (len < 4) - goto trunc; - af = EXTRACT_16BITS(bp); - sreoff = *(bp + 2); - srelen = *(bp + 3); - bp += 4; - len -= 4; - - if (af == 0 && srelen == 0) - break; - - gre_sre_print(af, sreoff, srelen, bp, len); - - if (len < srelen) - goto trunc; - bp += srelen; - len -= srelen; - } - } - - if (eflag) - printf(", proto %s (0x%04x)", - tok2str(ethertype_values,"unknown",prot), - prot); - - printf(", length %u",length); - - if (vflag < 1) - printf(": "); /* put in a colon as protocol demarc */ - else - printf("\n\t"); /* if verbose go multiline */ - - switch (prot) { - case ETHERTYPE_IP: - ip_print(gndo, bp, len); - break; -#ifdef INET6 - case ETHERTYPE_IPV6: - ip6_print(bp, len); - break; -#endif - case ETHERTYPE_MPLS: - mpls_print(bp, len); - break; - case ETHERTYPE_IPX: - ipx_print(bp, len); - break; - case ETHERTYPE_ATALK: - atalk_print(bp, len); - break; - case ETHERTYPE_GRE_ISO: - isoclns_print(bp, len, len); - break; - default: - printf("gre-proto-0x%x", prot); - } - return; - -trunc: - printf("[|gre]"); -} - -void -gre_print_1(const u_char *bp, u_int length) -{ - u_int len = length; - u_int16_t flags, prot; - - flags = EXTRACT_16BITS(bp); - len -= 2; - bp += 2; - - if (vflag) - printf(", Flags [%s]", - bittok2str(gre_flag_values,"none",flags)); - - if (len < 2) - goto trunc; - prot = EXTRACT_16BITS(bp); - len -= 2; - bp += 2; - - - if (flags & GRE_KP) { - u_int32_t k; - - if (len < 4) - goto trunc; - k = EXTRACT_32BITS(bp); - printf(", call %d", k & 0xffff); - len -= 4; - bp += 4; - } - - if (flags & GRE_SP) { - if (len < 4) - goto trunc; - printf(", seq %u", EXTRACT_32BITS(bp)); - bp += 4; - len -= 4; - } - - if (flags & GRE_AP) { - if (len < 4) - goto trunc; - printf(", ack %u", EXTRACT_32BITS(bp)); - bp += 4; - len -= 4; - } - - if ((flags & GRE_SP) == 0) - printf(", no-payload"); - - if (eflag) - printf(", proto %s (0x%04x)", - tok2str(ethertype_values,"unknown",prot), - prot); - - printf(", length %u",length); - - if ((flags & GRE_SP) == 0) - return; - - if (vflag < 1) - printf(": "); /* put in a colon as protocol demarc */ - else - printf("\n\t"); /* if verbose go multiline */ - - switch (prot) { - case ETHERTYPE_PPP: - ppp_print(bp, len); - break; - default: - printf("gre-proto-0x%x", prot); - break; - } - return; - -trunc: - printf("[|gre]"); -} - -void -gre_sre_print(u_int16_t af, u_int8_t sreoff, u_int8_t srelen, - const u_char *bp, u_int len) -{ - switch (af) { - case GRESRE_IP: - printf(", (rtaf=ip"); - gre_sre_ip_print(sreoff, srelen, bp, len); - printf(") "); - break; - case GRESRE_ASN: - printf(", (rtaf=asn"); - gre_sre_asn_print(sreoff, srelen, bp, len); - printf(") "); - break; - default: - printf(", (rtaf=0x%x) ", af); - } -} -void -gre_sre_ip_print(u_int8_t sreoff, u_int8_t srelen, const u_char *bp, u_int len) -{ - struct in_addr a; - const u_char *up = bp; - - if (sreoff & 3) { - printf(", badoffset=%u", sreoff); - return; - } - if (srelen & 3) { - printf(", badlength=%u", srelen); - return; - } - if (sreoff >= srelen) { - printf(", badoff/len=%u/%u", sreoff, srelen); - return; - } - - for (;;) { - if (len < 4 || srelen == 0) - return; - - memcpy(&a, bp, sizeof(a)); - printf(" %s%s", - ((bp - up) == sreoff) ? "*" : "", - inet_ntoa(a)); - - bp += 4; - len -= 4; - srelen -= 4; - } -} - -void -gre_sre_asn_print(u_int8_t sreoff, u_int8_t srelen, const u_char *bp, u_int len) -{ - const u_char *up = bp; - - if (sreoff & 1) { - printf(", badoffset=%u", sreoff); - return; - } - if (srelen & 1) { - printf(", badlength=%u", srelen); - return; - } - if (sreoff >= srelen) { - printf(", badoff/len=%u/%u", sreoff, srelen); - return; - } - - for (;;) { - if (len < 2 || srelen == 0) - return; - - printf(" %s%x", - ((bp - up) == sreoff) ? "*" : "", - EXTRACT_16BITS(bp)); - - bp += 2; - len -= 2; - srelen -= 2; - } -} diff --git a/contrib/tcpdump/print-hsrp.c b/contrib/tcpdump/print-hsrp.c deleted file mode 100644 index 1d22247e8e848..0000000000000 --- a/contrib/tcpdump/print-hsrp.c +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (C) 2001 Julian Cowley - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* Cisco Hot Standby Router Protocol (HSRP). */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-hsrp.c,v 1.9.2.1 2005/05/06 07:57:17 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> - -#include "interface.h" -#include "addrtoname.h" - -/* HSRP op code types. */ -static const char *op_code_str[] = { - "hello", - "coup", - "resign" -}; - -/* HSRP states and associated names. */ -static struct tok states[] = { - { 0, "initial" }, - { 1, "learn" }, - { 2, "listen" }, - { 4, "speak" }, - { 8, "standby" }, - { 16, "active" }, - { 0, NULL } -}; - -/* - * RFC 2281: - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Version | Op Code | State | Hellotime | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Holdtime | Priority | Group | Reserved | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Authentication Data | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Authentication Data | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Virtual IP Address | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -#define HSRP_AUTH_SIZE 8 - -/* HSRP protocol header. */ -struct hsrp { - u_int8_t hsrp_version; - u_int8_t hsrp_op_code; - u_int8_t hsrp_state; - u_int8_t hsrp_hellotime; - u_int8_t hsrp_holdtime; - u_int8_t hsrp_priority; - u_int8_t hsrp_group; - u_int8_t hsrp_reserved; - u_int8_t hsrp_authdata[HSRP_AUTH_SIZE]; - struct in_addr hsrp_virtaddr; -}; - -void -hsrp_print(register const u_int8_t *bp, register u_int len) -{ - struct hsrp *hp = (struct hsrp *) bp; - - TCHECK(hp->hsrp_version); - printf("HSRPv%d", hp->hsrp_version); - if (hp->hsrp_version != 0) - return; - TCHECK(hp->hsrp_op_code); - printf("-"); - printf("%s ", tok2strary(op_code_str, "unknown (%d)", hp->hsrp_op_code)); - printf("%d: ", len); - TCHECK(hp->hsrp_state); - printf("state=%s ", tok2str(states, "Unknown (%d)", hp->hsrp_state)); - TCHECK(hp->hsrp_group); - printf("group=%d ", hp->hsrp_group); - TCHECK(hp->hsrp_reserved); - if (hp->hsrp_reserved != 0) { - printf("[reserved=%d!] ", hp->hsrp_reserved); - } - TCHECK(hp->hsrp_virtaddr); - printf("addr=%s", ipaddr_string(&hp->hsrp_virtaddr)); - if (vflag) { - printf(" hellotime="); - relts_print(hp->hsrp_hellotime); - printf(" holdtime="); - relts_print(hp->hsrp_holdtime); - printf(" priority=%d", hp->hsrp_priority); - printf(" auth=\""); - if (fn_printn(hp->hsrp_authdata, sizeof(hp->hsrp_authdata), - snapend)) { - printf("\""); - goto trunc; - } - printf("\""); - } - return; -trunc: - printf("[|hsrp]"); -} diff --git a/contrib/tcpdump/print-icmp.c b/contrib/tcpdump/print-icmp.c deleted file mode 100644 index 191005c3f09df..0000000000000 --- a/contrib/tcpdump/print-icmp.c +++ /dev/null @@ -1,632 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-icmp.c,v 1.81.2.2 2005/07/01 16:13:37 hannes Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" /* must come after interface.h */ - -#include "ip.h" -#include "udp.h" -#include "ipproto.h" -#include "mpls.h" - -/* - * Interface Control Message Protocol Definitions. - * Per RFC 792, September 1981. - */ - -/* - * Structure of an icmp header. - */ -struct icmp { - u_int8_t icmp_type; /* type of message, see below */ - u_int8_t icmp_code; /* type sub code */ - u_int16_t icmp_cksum; /* ones complement cksum of struct */ - union { - u_int8_t ih_pptr; /* ICMP_PARAMPROB */ - struct in_addr ih_gwaddr; /* ICMP_REDIRECT */ - struct ih_idseq { - u_int16_t icd_id; - u_int16_t icd_seq; - } ih_idseq; - u_int32_t ih_void; - - /* ICMP_UNREACH_NEEDFRAG -- Path MTU Discovery (RFC1191) */ - struct ih_pmtu { - u_int16_t ipm_void; - u_int16_t ipm_nextmtu; - } ih_pmtu; - } icmp_hun; -#define icmp_pptr icmp_hun.ih_pptr -#define icmp_gwaddr icmp_hun.ih_gwaddr -#define icmp_id icmp_hun.ih_idseq.icd_id -#define icmp_seq icmp_hun.ih_idseq.icd_seq -#define icmp_void icmp_hun.ih_void -#define icmp_pmvoid icmp_hun.ih_pmtu.ipm_void -#define icmp_nextmtu icmp_hun.ih_pmtu.ipm_nextmtu - union { - struct id_ts { - u_int32_t its_otime; - u_int32_t its_rtime; - u_int32_t its_ttime; - } id_ts; - struct id_ip { - struct ip idi_ip; - /* options and then 64 bits of data */ - } id_ip; - struct mpls_ext { - u_int8_t legacy_header[128]; /* extension header starts 128 bytes after ICMP header */ - u_int8_t version_res[2]; - u_int8_t checksum[2]; - u_int8_t data[1]; - } mpls_ext; - u_int32_t id_mask; - u_int8_t id_data[1]; - } icmp_dun; -#define icmp_otime icmp_dun.id_ts.its_otime -#define icmp_rtime icmp_dun.id_ts.its_rtime -#define icmp_ttime icmp_dun.id_ts.its_ttime -#define icmp_ip icmp_dun.id_ip.idi_ip -#define icmp_mask icmp_dun.id_mask -#define icmp_data icmp_dun.id_data -#define icmp_mpls_ext_version icmp_dun.mpls_ext.version_res -#define icmp_mpls_ext_checksum icmp_dun.mpls_ext.checksum -#define icmp_mpls_ext_data icmp_dun.mpls_ext.data -}; - -#define ICMP_MPLS_EXT_EXTRACT_VERSION(x) (((x)&0xf0)>>4) -#define ICMP_MPLS_EXT_VERSION 2 - -/* - * Lower bounds on packet lengths for various types. - * For the error advice packets must first insure that the - * packet is large enought to contain the returned ip header. - * Only then can we do the check to see if 64 bits of packet - * data have been returned, since we need to check the returned - * ip header length. - */ -#define ICMP_MINLEN 8 /* abs minimum */ -#define ICMP_EXTD_MINLEN (156 - sizeof (struct ip)) /* draft-bonica-icmp-mpls-02 */ -#define ICMP_TSLEN (8 + 3 * sizeof (u_int32_t)) /* timestamp */ -#define ICMP_MASKLEN 12 /* address mask */ -#define ICMP_ADVLENMIN (8 + sizeof (struct ip) + 8) /* min */ -#define ICMP_ADVLEN(p) (8 + (IP_HL(&(p)->icmp_ip) << 2) + 8) - /* N.B.: must separately check that ip_hl >= 5 */ - -/* - * Definition of type and code field values. - */ -#define ICMP_ECHOREPLY 0 /* echo reply */ -#define ICMP_UNREACH 3 /* dest unreachable, codes: */ -#define ICMP_UNREACH_NET 0 /* bad net */ -#define ICMP_UNREACH_HOST 1 /* bad host */ -#define ICMP_UNREACH_PROTOCOL 2 /* bad protocol */ -#define ICMP_UNREACH_PORT 3 /* bad port */ -#define ICMP_UNREACH_NEEDFRAG 4 /* IP_DF caused drop */ -#define ICMP_UNREACH_SRCFAIL 5 /* src route failed */ -#define ICMP_UNREACH_NET_UNKNOWN 6 /* unknown net */ -#define ICMP_UNREACH_HOST_UNKNOWN 7 /* unknown host */ -#define ICMP_UNREACH_ISOLATED 8 /* src host isolated */ -#define ICMP_UNREACH_NET_PROHIB 9 /* prohibited access */ -#define ICMP_UNREACH_HOST_PROHIB 10 /* ditto */ -#define ICMP_UNREACH_TOSNET 11 /* bad tos for net */ -#define ICMP_UNREACH_TOSHOST 12 /* bad tos for host */ -#define ICMP_SOURCEQUENCH 4 /* packet lost, slow down */ -#define ICMP_REDIRECT 5 /* shorter route, codes: */ -#define ICMP_REDIRECT_NET 0 /* for network */ -#define ICMP_REDIRECT_HOST 1 /* for host */ -#define ICMP_REDIRECT_TOSNET 2 /* for tos and net */ -#define ICMP_REDIRECT_TOSHOST 3 /* for tos and host */ -#define ICMP_ECHO 8 /* echo service */ -#define ICMP_ROUTERADVERT 9 /* router advertisement */ -#define ICMP_ROUTERSOLICIT 10 /* router solicitation */ -#define ICMP_TIMXCEED 11 /* time exceeded, code: */ -#define ICMP_TIMXCEED_INTRANS 0 /* ttl==0 in transit */ -#define ICMP_TIMXCEED_REASS 1 /* ttl==0 in reass */ -#define ICMP_PARAMPROB 12 /* ip header bad */ -#define ICMP_PARAMPROB_OPTABSENT 1 /* req. opt. absent */ -#define ICMP_TSTAMP 13 /* timestamp request */ -#define ICMP_TSTAMPREPLY 14 /* timestamp reply */ -#define ICMP_IREQ 15 /* information request */ -#define ICMP_IREQREPLY 16 /* information reply */ -#define ICMP_MASKREQ 17 /* address mask request */ -#define ICMP_MASKREPLY 18 /* address mask reply */ - -#define ICMP_MAXTYPE 18 - -#define ICMP_INFOTYPE(type) \ - ((type) == ICMP_ECHOREPLY || (type) == ICMP_ECHO || \ - (type) == ICMP_ROUTERADVERT || (type) == ICMP_ROUTERSOLICIT || \ - (type) == ICMP_TSTAMP || (type) == ICMP_TSTAMPREPLY || \ - (type) == ICMP_IREQ || (type) == ICMP_IREQREPLY || \ - (type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY) -#define ICMP_MPLS_EXT_TYPE(type) \ - ((type) == ICMP_UNREACH || (type) == ICMP_TIMXCEED) -/* rfc1700 */ -#ifndef ICMP_UNREACH_NET_UNKNOWN -#define ICMP_UNREACH_NET_UNKNOWN 6 /* destination net unknown */ -#endif -#ifndef ICMP_UNREACH_HOST_UNKNOWN -#define ICMP_UNREACH_HOST_UNKNOWN 7 /* destination host unknown */ -#endif -#ifndef ICMP_UNREACH_ISOLATED -#define ICMP_UNREACH_ISOLATED 8 /* source host isolated */ -#endif -#ifndef ICMP_UNREACH_NET_PROHIB -#define ICMP_UNREACH_NET_PROHIB 9 /* admin prohibited net */ -#endif -#ifndef ICMP_UNREACH_HOST_PROHIB -#define ICMP_UNREACH_HOST_PROHIB 10 /* admin prohibited host */ -#endif -#ifndef ICMP_UNREACH_TOSNET -#define ICMP_UNREACH_TOSNET 11 /* tos prohibited net */ -#endif -#ifndef ICMP_UNREACH_TOSHOST -#define ICMP_UNREACH_TOSHOST 12 /* tos prohibited host */ -#endif - -/* rfc1716 */ -#ifndef ICMP_UNREACH_FILTER_PROHIB -#define ICMP_UNREACH_FILTER_PROHIB 13 /* admin prohibited filter */ -#endif -#ifndef ICMP_UNREACH_HOST_PRECEDENCE -#define ICMP_UNREACH_HOST_PRECEDENCE 14 /* host precedence violation */ -#endif -#ifndef ICMP_UNREACH_PRECEDENCE_CUTOFF -#define ICMP_UNREACH_PRECEDENCE_CUTOFF 15 /* precedence cutoff */ -#endif - -/* Most of the icmp types */ -static struct tok icmp2str[] = { - { ICMP_ECHOREPLY, "echo reply" }, - { ICMP_SOURCEQUENCH, "source quench" }, - { ICMP_ECHO, "echo request" }, - { ICMP_ROUTERSOLICIT, "router solicitation" }, - { ICMP_TSTAMP, "time stamp request" }, - { ICMP_TSTAMPREPLY, "time stamp reply" }, - { ICMP_IREQ, "information request" }, - { ICMP_IREQREPLY, "information reply" }, - { ICMP_MASKREQ, "address mask request" }, - { 0, NULL } -}; - -/* Formats for most of the ICMP_UNREACH codes */ -static struct tok unreach2str[] = { - { ICMP_UNREACH_NET, "net %s unreachable" }, - { ICMP_UNREACH_HOST, "host %s unreachable" }, - { ICMP_UNREACH_SRCFAIL, - "%s unreachable - source route failed" }, - { ICMP_UNREACH_NET_UNKNOWN, "net %s unreachable - unknown" }, - { ICMP_UNREACH_HOST_UNKNOWN, "host %s unreachable - unknown" }, - { ICMP_UNREACH_ISOLATED, - "%s unreachable - source host isolated" }, - { ICMP_UNREACH_NET_PROHIB, - "net %s unreachable - admin prohibited" }, - { ICMP_UNREACH_HOST_PROHIB, - "host %s unreachable - admin prohibited" }, - { ICMP_UNREACH_TOSNET, - "net %s unreachable - tos prohibited" }, - { ICMP_UNREACH_TOSHOST, - "host %s unreachable - tos prohibited" }, - { ICMP_UNREACH_FILTER_PROHIB, - "host %s unreachable - admin prohibited filter" }, - { ICMP_UNREACH_HOST_PRECEDENCE, - "host %s unreachable - host precedence violation" }, - { ICMP_UNREACH_PRECEDENCE_CUTOFF, - "host %s unreachable - precedence cutoff" }, - { 0, NULL } -}; - -/* Formats for the ICMP_REDIRECT codes */ -static struct tok type2str[] = { - { ICMP_REDIRECT_NET, "redirect %s to net %s" }, - { ICMP_REDIRECT_HOST, "redirect %s to host %s" }, - { ICMP_REDIRECT_TOSNET, "redirect-tos %s to net %s" }, - { ICMP_REDIRECT_TOSHOST, "redirect-tos %s to host %s" }, - { 0, NULL } -}; - -/* rfc1191 */ -struct mtu_discovery { - u_int16_t unused; - u_int16_t nexthopmtu; -}; - -/* rfc1256 */ -struct ih_rdiscovery { - u_int8_t ird_addrnum; - u_int8_t ird_addrsiz; - u_int16_t ird_lifetime; -}; - -struct id_rdiscovery { - u_int32_t ird_addr; - u_int32_t ird_pref; -}; - -/* draft-bonica-icmp-mpls-02 */ -struct icmp_mpls_ext_object_header_t { - u_int8_t length[2]; - u_int8_t class_num; - u_int8_t ctype; -}; - -static const struct tok icmp_mpls_ext_obj_values[] = { - { 1, "MPLS Stack Entry" }, - { 2, "Extended Payload" }, - { 0, NULL} -}; - -/* prototypes */ -const char *icmp_tstamp_print(u_int); - -/* print the milliseconds since midnight UTC */ -const char * -icmp_tstamp_print(u_int tstamp) { - u_int msec,sec,min,hrs; - - static char buf[64]; - - msec = tstamp % 1000; - sec = tstamp / 1000; - min = sec / 60; sec -= min * 60; - hrs = min / 60; min -= hrs * 60; - snprintf(buf, sizeof(buf), "%02u:%02u:%02u.%03u",hrs,min,sec,msec); - return buf; -} - -void -icmp_print(const u_char *bp, u_int plen, const u_char *bp2, int fragmented) -{ - char *cp; - const struct icmp *dp; - const struct ip *ip; - const char *str, *fmt; - const struct ip *oip; - const struct udphdr *ouh; - const u_int8_t *obj_tptr; - u_int32_t raw_label; - const struct icmp_mpls_ext_object_header_t *icmp_mpls_ext_object_header; - u_int hlen, dport, mtu, obj_tlen, obj_class_num, obj_ctype; - char buf[MAXHOSTNAMELEN + 100]; - - dp = (struct icmp *)bp; - ip = (struct ip *)bp2; - str = buf; - - TCHECK(dp->icmp_code); - switch (dp->icmp_type) { - - case ICMP_ECHO: - case ICMP_ECHOREPLY: - TCHECK(dp->icmp_seq); - (void)snprintf(buf, sizeof(buf), "echo %s, id %u, seq %u", - dp->icmp_type == ICMP_ECHO ? - "request" : "reply", - EXTRACT_16BITS(&dp->icmp_id), - EXTRACT_16BITS(&dp->icmp_seq)); - break; - - case ICMP_UNREACH: - TCHECK(dp->icmp_ip.ip_dst); - switch (dp->icmp_code) { - - case ICMP_UNREACH_PROTOCOL: - TCHECK(dp->icmp_ip.ip_p); - (void)snprintf(buf, sizeof(buf), - "%s protocol %d unreachable", - ipaddr_string(&dp->icmp_ip.ip_dst), - dp->icmp_ip.ip_p); - break; - - case ICMP_UNREACH_PORT: - TCHECK(dp->icmp_ip.ip_p); - oip = &dp->icmp_ip; - hlen = IP_HL(oip) * 4; - ouh = (struct udphdr *)(((u_char *)oip) + hlen); - TCHECK(ouh->uh_dport); - dport = EXTRACT_16BITS(&ouh->uh_dport); - switch (oip->ip_p) { - - case IPPROTO_TCP: - (void)snprintf(buf, sizeof(buf), - "%s tcp port %s unreachable", - ipaddr_string(&oip->ip_dst), - tcpport_string(dport)); - break; - - case IPPROTO_UDP: - (void)snprintf(buf, sizeof(buf), - "%s udp port %s unreachable", - ipaddr_string(&oip->ip_dst), - udpport_string(dport)); - break; - - default: - (void)snprintf(buf, sizeof(buf), - "%s protocol %d port %d unreachable", - ipaddr_string(&oip->ip_dst), - oip->ip_p, dport); - break; - } - break; - - case ICMP_UNREACH_NEEDFRAG: - { - register const struct mtu_discovery *mp; - mp = (struct mtu_discovery *)&dp->icmp_void; - mtu = EXTRACT_16BITS(&mp->nexthopmtu); - if (mtu) { - (void)snprintf(buf, sizeof(buf), - "%s unreachable - need to frag (mtu %d)", - ipaddr_string(&dp->icmp_ip.ip_dst), mtu); - } else { - (void)snprintf(buf, sizeof(buf), - "%s unreachable - need to frag", - ipaddr_string(&dp->icmp_ip.ip_dst)); - } - } - break; - - default: - fmt = tok2str(unreach2str, "#%d %%s unreachable", - dp->icmp_code); - (void)snprintf(buf, sizeof(buf), fmt, - ipaddr_string(&dp->icmp_ip.ip_dst)); - break; - } - break; - - case ICMP_REDIRECT: - TCHECK(dp->icmp_ip.ip_dst); - fmt = tok2str(type2str, "redirect-#%d %%s to net %%s", - dp->icmp_code); - (void)snprintf(buf, sizeof(buf), fmt, - ipaddr_string(&dp->icmp_ip.ip_dst), - ipaddr_string(&dp->icmp_gwaddr)); - break; - - case ICMP_ROUTERADVERT: - { - register const struct ih_rdiscovery *ihp; - register const struct id_rdiscovery *idp; - u_int lifetime, num, size; - - (void)snprintf(buf, sizeof(buf), "router advertisement"); - cp = buf + strlen(buf); - - ihp = (struct ih_rdiscovery *)&dp->icmp_void; - TCHECK(*ihp); - (void)strncpy(cp, " lifetime ", sizeof(buf) - (cp - buf)); - cp = buf + strlen(buf); - lifetime = EXTRACT_16BITS(&ihp->ird_lifetime); - if (lifetime < 60) { - (void)snprintf(cp, sizeof(buf) - (cp - buf), "%u", - lifetime); - } else if (lifetime < 60 * 60) { - (void)snprintf(cp, sizeof(buf) - (cp - buf), "%u:%02u", - lifetime / 60, lifetime % 60); - } else { - (void)snprintf(cp, sizeof(buf) - (cp - buf), - "%u:%02u:%02u", - lifetime / 3600, - (lifetime % 3600) / 60, - lifetime % 60); - } - cp = buf + strlen(buf); - - num = ihp->ird_addrnum; - (void)snprintf(cp, sizeof(buf) - (cp - buf), " %d:", num); - cp = buf + strlen(buf); - - size = ihp->ird_addrsiz; - if (size != 2) { - (void)snprintf(cp, sizeof(buf) - (cp - buf), - " [size %d]", size); - break; - } - idp = (struct id_rdiscovery *)&dp->icmp_data; - while (num-- > 0) { - TCHECK(*idp); - (void)snprintf(cp, sizeof(buf) - (cp - buf), " {%s %u}", - ipaddr_string(&idp->ird_addr), - EXTRACT_32BITS(&idp->ird_pref)); - cp = buf + strlen(buf); - ++idp; - } - } - break; - - case ICMP_TIMXCEED: - TCHECK(dp->icmp_ip.ip_dst); - switch (dp->icmp_code) { - - case ICMP_TIMXCEED_INTRANS: - str = "time exceeded in-transit"; - break; - - case ICMP_TIMXCEED_REASS: - str = "ip reassembly time exceeded"; - break; - - default: - (void)snprintf(buf, sizeof(buf), "time exceeded-#%d", - dp->icmp_code); - break; - } - break; - - case ICMP_PARAMPROB: - if (dp->icmp_code) - (void)snprintf(buf, sizeof(buf), - "parameter problem - code %d", dp->icmp_code); - else { - TCHECK(dp->icmp_pptr); - (void)snprintf(buf, sizeof(buf), - "parameter problem - octet %d", dp->icmp_pptr); - } - break; - - case ICMP_MASKREPLY: - TCHECK(dp->icmp_mask); - (void)snprintf(buf, sizeof(buf), "address mask is 0x%08x", - EXTRACT_32BITS(&dp->icmp_mask)); - break; - - case ICMP_TSTAMP: - TCHECK(dp->icmp_seq); - (void)snprintf(buf, sizeof(buf), - "time stamp query id %u seq %u", - EXTRACT_16BITS(&dp->icmp_id), - EXTRACT_16BITS(&dp->icmp_seq)); - break; - - case ICMP_TSTAMPREPLY: - TCHECK(dp->icmp_ttime); - (void)snprintf(buf, sizeof(buf), - "time stamp reply id %u seq %u: org %s", - EXTRACT_16BITS(&dp->icmp_id), - EXTRACT_16BITS(&dp->icmp_seq), - icmp_tstamp_print(EXTRACT_32BITS(&dp->icmp_otime))); - - (void)snprintf(buf+strlen(buf),sizeof(buf)-strlen(buf),", recv %s", - icmp_tstamp_print(EXTRACT_32BITS(&dp->icmp_rtime))); - (void)snprintf(buf+strlen(buf),sizeof(buf)-strlen(buf),", xmit %s", - icmp_tstamp_print(EXTRACT_32BITS(&dp->icmp_ttime))); - break; - - default: - str = tok2str(icmp2str, "type-#%d", dp->icmp_type); - break; - } - (void)printf("ICMP %s, length %u", str, plen); - if (vflag && !fragmented) { /* don't attempt checksumming if this is a frag */ - u_int16_t sum, icmp_sum; - if (TTEST2(*bp, plen)) { - sum = in_cksum((u_short*)dp, plen, 0); - if (sum != 0) { - icmp_sum = EXTRACT_16BITS(&dp->icmp_cksum); - (void)printf(" (wrong icmp cksum %x (->%x)!)", - icmp_sum, - in_cksum_shouldbe(icmp_sum, sum)); - } - } - } - if (vflag >= 1 && !ICMP_INFOTYPE(dp->icmp_type)) { - bp += 8; - (void)printf("\n\t"); - ip = (struct ip *)bp; - snaplen = snapend - bp; - ip_print(gndo, bp, EXTRACT_16BITS(&ip->ip_len)); - } - - if (vflag >= 1 && plen > ICMP_EXTD_MINLEN && ICMP_MPLS_EXT_TYPE(dp->icmp_type)) { - - TCHECK(*(dp->icmp_mpls_ext_version)); - printf("\n\tMPLS extension v%u",ICMP_MPLS_EXT_EXTRACT_VERSION(*(dp->icmp_mpls_ext_version))); - - /* - * Sanity checking of the header. - */ - if (ICMP_MPLS_EXT_EXTRACT_VERSION(*(dp->icmp_mpls_ext_version)) != ICMP_MPLS_EXT_VERSION) { - printf(" packet not supported"); - return; - } - - hlen = plen - ICMP_EXTD_MINLEN; - TCHECK2(*(dp->icmp_mpls_ext_checksum), 2); - printf(", checksum 0x%04x (unverified), length %u", /* FIXME */ - EXTRACT_16BITS(dp->icmp_mpls_ext_checksum), - hlen); - - hlen -= 4; /* subtract common header size */ - obj_tptr = (u_int8_t *)dp->icmp_mpls_ext_data; - - while (hlen > sizeof(struct icmp_mpls_ext_object_header_t)) { - - icmp_mpls_ext_object_header = (struct icmp_mpls_ext_object_header_t *)obj_tptr; - TCHECK(*icmp_mpls_ext_object_header); - obj_tlen = EXTRACT_16BITS(icmp_mpls_ext_object_header->length); - obj_class_num = icmp_mpls_ext_object_header->class_num; - obj_ctype = icmp_mpls_ext_object_header->ctype; - obj_tptr += sizeof(struct icmp_mpls_ext_object_header_t); - - printf("\n\t %s Object (%u), Class-Type: %u, length %u", - tok2str(icmp_mpls_ext_obj_values,"unknown",obj_class_num), - obj_class_num, - obj_ctype, - obj_tlen); - - hlen-=sizeof(struct icmp_mpls_ext_object_header_t); /* length field includes tlv header */ - if (obj_tlen < sizeof(struct icmp_mpls_ext_object_header_t)) - break; - obj_tlen-=sizeof(struct icmp_mpls_ext_object_header_t); - - switch (obj_class_num) { - case 1: - switch(obj_ctype) { - case 1: - TCHECK2(*obj_tptr, 4); - raw_label = EXTRACT_32BITS(obj_tptr); - printf("\n\t label %u, exp %u", MPLS_LABEL(raw_label), MPLS_EXP(raw_label)); - if (MPLS_STACK(raw_label)) - printf(", [S]"); - printf(", ttl %u", MPLS_TTL(raw_label)); - break; - default: - print_unknown_data(obj_tptr, "\n\t ", obj_tlen); - } - break; - - /* - * FIXME those are the defined objects that lack a decoder - * you are welcome to contribute code ;-) - */ - case 2: - default: - print_unknown_data(obj_tptr, "\n\t ", obj_tlen); - break; - } - if (hlen < obj_tlen) - break; - hlen -= obj_tlen; - obj_tptr += obj_tlen; - } - } - - return; -trunc: - fputs("[|icmp]", stdout); -} diff --git a/contrib/tcpdump/print-icmp6.c b/contrib/tcpdump/print-icmp6.c deleted file mode 100644 index c5039247af115..0000000000000 --- a/contrib/tcpdump/print-icmp6.c +++ /dev/null @@ -1,1287 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1993, 1994 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-icmp6.c,v 1.79.2.6 2005/09/05 09:29:28 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifdef INET6 - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -#include "ip6.h" -#include "icmp6.h" -#include "ipproto.h" - -#include "udp.h" -#include "ah.h" - -static const char *get_rtpref(u_int); -static const char *get_lifetime(u_int32_t); -static void print_lladdr(const u_char *, size_t); -static void icmp6_opt_print(const u_char *, int); -static void mld6_print(const u_char *); -static void mldv2_report_print(const u_char *, u_int); -static void mldv2_query_print(const u_char *, u_int); -static struct udphdr *get_upperlayer(u_char *, u_int *); -static void dnsname_print(const u_char *, const u_char *); -static void icmp6_nodeinfo_print(u_int, const u_char *, const u_char *); -static void icmp6_rrenum_print(const u_char *, const u_char *); - -#ifndef abs -#define abs(a) ((0 < (a)) ? (a) : -(a)) -#endif - -static struct tok icmp6_type_values[] = { - { ICMP6_DST_UNREACH, "destination unreachable"}, - { ICMP6_PACKET_TOO_BIG, "packet too big"}, - { ICMP6_TIME_EXCEEDED, "time exceeded in-transit"}, - { ICMP6_PARAM_PROB, "parameter problem"}, - { ICMP6_ECHO_REQUEST, "echo request"}, - { ICMP6_ECHO_REPLY, "echo reply"}, - { MLD6_LISTENER_QUERY, "multicast listener query"}, - { MLD6_LISTENER_REPORT, "multicast listener report"}, - { MLD6_LISTENER_DONE, "multicast listener done"}, - { ND_ROUTER_SOLICIT, "router solicitation"}, - { ND_ROUTER_ADVERT, "router advertisement"}, - { ND_NEIGHBOR_SOLICIT, "neighbor solicitation"}, - { ND_NEIGHBOR_ADVERT, "neighbor advertisement"}, - { ND_REDIRECT, "redirect"}, - { ICMP6_ROUTER_RENUMBERING, "router renumbering"}, - { IND_SOLICIT, "inverse neighbor solicitation"}, - { IND_ADVERT, "inverse neighbor advertisement"}, - { MLDV2_LISTENER_REPORT, "multicast listener report v2"}, - { ICMP6_HADISCOV_REQUEST, "ha discovery request"}, - { ICMP6_HADISCOV_REPLY, "ha discovery reply"}, - { ICMP6_MOBILEPREFIX_SOLICIT, "mobile router solicitation"}, - { ICMP6_MOBILEPREFIX_ADVERT, "mobile router advertisement"}, - { ICMP6_WRUREQUEST, "who-are-you request"}, - { ICMP6_WRUREPLY, "who-are-you reply"}, - { ICMP6_NI_QUERY, "node information query"}, - { ICMP6_NI_REPLY, "node information reply"}, - { MLD6_MTRACE, "mtrace message"}, - { MLD6_MTRACE_RESP, "mtrace response"}, - { 0, NULL } -}; - -static struct tok icmp6_dst_unreach_code_values[] = { - { ICMP6_DST_UNREACH_NOROUTE, "unreachable route" }, - { ICMP6_DST_UNREACH_ADMIN, " unreachable prohibited"}, - { ICMP6_DST_UNREACH_BEYONDSCOPE, "beyond scope"}, - { ICMP6_DST_UNREACH_ADDR, "unreachable address"}, - { ICMP6_DST_UNREACH_NOPORT, "unreachable port"}, - { 0, NULL } -}; - -static struct tok icmp6_opt_pi_flag_values[] = { - { ND_OPT_PI_FLAG_ONLINK, "onlink" }, - { ND_OPT_PI_FLAG_AUTO, "auto" }, - { ND_OPT_PI_FLAG_ROUTER, "router" }, - { 0, NULL } -}; - -static struct tok icmp6_opt_ra_flag_values[] = { - { ND_RA_FLAG_MANAGED, "managed" }, - { ND_RA_FLAG_OTHER, "other stateful"}, - { ND_RA_FLAG_HOME_AGENT, "home agent"}, - { 0, NULL } -}; - -static struct tok icmp6_nd_na_flag_values[] = { - { ND_NA_FLAG_ROUTER, "router" }, - { ND_NA_FLAG_SOLICITED, "solicited" }, - { ND_NA_FLAG_OVERRIDE, "override" }, - { 0, NULL } -}; - - -static struct tok icmp6_opt_values[] = { - { ND_OPT_SOURCE_LINKADDR, "source link-address"}, - { ND_OPT_TARGET_LINKADDR, "destination link-address"}, - { ND_OPT_PREFIX_INFORMATION, "prefix info"}, - { ND_OPT_REDIRECTED_HEADER, "redirected header"}, - { ND_OPT_MTU, "mtu"}, - { ND_OPT_ADVINTERVAL, "advertisement interval"}, - { ND_OPT_HOMEAGENT_INFO, "homeagent information"}, - { ND_OPT_ROUTE_INFO, "route info"}, - { 0, NULL } -}; - -/* mldv2 report types */ -static struct tok mldv2report2str[] = { - { 1, "is_in" }, - { 2, "is_ex" }, - { 3, "to_in" }, - { 4, "to_ex" }, - { 5, "allow" }, - { 6, "block" }, - { 0, NULL } -}; - -static const char * -get_rtpref(u_int v) -{ - static const char *rtpref_str[] = { - "medium", /* 00 */ - "high", /* 01 */ - "rsv", /* 10 */ - "low" /* 11 */ - }; - - return rtpref_str[((v & ND_RA_FLAG_RTPREF_MASK) >> 3) & 0xff]; -} - -static const char * -get_lifetime(u_int32_t v) -{ - static char buf[20]; - - if (v == (u_int32_t)~0UL) - return "infinity"; - else { - snprintf(buf, sizeof(buf), "%u", v); - return buf; - } -} - -static void -print_lladdr(const u_int8_t *p, size_t l) -{ - const u_int8_t *ep, *q; - - q = p; - ep = p + l; - while (l > 0 && q < ep) { - if (q > p) - printf(":"); - printf("%02x", *q++); - l--; - } -} - -static int icmp6_cksum(const struct ip6_hdr *ip6, const struct icmp6_hdr *icp, - u_int len) -{ - size_t i; - register 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_ICMPV6; - - sum = 0; - for (i = 0; i < sizeof(phu.pa) / sizeof(phu.pa[0]); i++) - sum += phu.pa[i]; - - sp = (const u_int16_t *)icp; - - 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); -} - -void -icmp6_print(const u_char *bp, u_int length, const u_char *bp2, int fragmented) -{ - const struct icmp6_hdr *dp; - const struct ip6_hdr *ip; - const struct ip6_hdr *oip; - const struct udphdr *ouh; - int dport; - const u_char *ep; - u_int prot; - - dp = (struct icmp6_hdr *)bp; - ip = (struct ip6_hdr *)bp2; - oip = (struct ip6_hdr *)(dp + 1); - /* 'ep' points to the end of available data. */ - ep = snapend; - - TCHECK(dp->icmp6_cksum); - - if (vflag && !fragmented) { - int sum = dp->icmp6_cksum; - - if (TTEST2(bp[0], length)) { - sum = icmp6_cksum(ip, dp, length); - if (sum != 0) - (void)printf("[bad icmp6 cksum %x!] ", sum); - else - (void)printf("[icmp6 sum ok] "); - } - } - - printf("ICMP6, %s", tok2str(icmp6_type_values,"unknown icmp6 type (%u)",dp->icmp6_type)); - - /* display cosmetics: print the packet length for printer that use the vflag now */ - if (vflag && (dp->icmp6_type == - ND_ROUTER_SOLICIT || - ND_ROUTER_ADVERT || - ND_NEIGHBOR_ADVERT || - ND_NEIGHBOR_SOLICIT || - ND_REDIRECT || - ICMP6_HADISCOV_REPLY || - ICMP6_MOBILEPREFIX_ADVERT )) - printf(", length %u", length); - - switch (dp->icmp6_type) { - case ICMP6_DST_UNREACH: - TCHECK(oip->ip6_dst); - printf(", %s", tok2str(icmp6_dst_unreach_code_values,"unknown unreach code (%u)",dp->icmp6_code)); - switch (dp->icmp6_code) { - - case ICMP6_DST_UNREACH_NOROUTE: /* fall through */ - case ICMP6_DST_UNREACH_ADMIN: - case ICMP6_DST_UNREACH_ADDR: - printf(" %s",ip6addr_string(&oip->ip6_dst)); - break; - case ICMP6_DST_UNREACH_BEYONDSCOPE: - printf(" %s, source address %s", - ip6addr_string(&oip->ip6_dst), - ip6addr_string(&oip->ip6_src)); - break; - case ICMP6_DST_UNREACH_NOPORT: - if ((ouh = get_upperlayer((u_char *)oip, &prot)) - == NULL) - goto trunc; - - dport = EXTRACT_16BITS(&ouh->uh_dport); - switch (prot) { - case IPPROTO_TCP: - printf(", %s tcp port %s", - ip6addr_string(&oip->ip6_dst), - tcpport_string(dport)); - break; - case IPPROTO_UDP: - printf(", %s udp port %s", - ip6addr_string(&oip->ip6_dst), - udpport_string(dport)); - break; - default: - printf(", %s protocol %d port %d unreachable", - ip6addr_string(&oip->ip6_dst), - oip->ip6_nxt, dport); - break; - } - break; - default: - if (vflag <= 1) { - print_unknown_data(bp,"\n\t",length); - return; - } - break; - } - break; - case ICMP6_PACKET_TOO_BIG: - TCHECK(dp->icmp6_mtu); - printf(", mtu %u", EXTRACT_32BITS(&dp->icmp6_mtu)); - break; - case ICMP6_TIME_EXCEEDED: - TCHECK(oip->ip6_dst); - switch (dp->icmp6_code) { - case ICMP6_TIME_EXCEED_TRANSIT: - printf(" for %s", - ip6addr_string(&oip->ip6_dst)); - break; - case ICMP6_TIME_EXCEED_REASSEMBLY: - printf(" (reassembly)"); - break; - default: - printf(", unknown code (%u)", dp->icmp6_code); - break; - } - break; - case ICMP6_PARAM_PROB: - TCHECK(oip->ip6_dst); - switch (dp->icmp6_code) { - case ICMP6_PARAMPROB_HEADER: - printf(", errorneous - octet %u", EXTRACT_32BITS(&dp->icmp6_pptr)); - break; - case ICMP6_PARAMPROB_NEXTHEADER: - printf(", next header - octet %u", EXTRACT_32BITS(&dp->icmp6_pptr)); - break; - case ICMP6_PARAMPROB_OPTION: - printf(", option - octet %u", EXTRACT_32BITS(&dp->icmp6_pptr)); - break; - default: - printf(", code-#%d", - dp->icmp6_code); - break; - } - break; - case ICMP6_ECHO_REQUEST: - case ICMP6_ECHO_REPLY: - TCHECK(dp->icmp6_seq); - printf(", seq %u", EXTRACT_16BITS(&dp->icmp6_seq)); - break; - case ICMP6_MEMBERSHIP_QUERY: - if (length == MLD_MINLEN) { - mld6_print((const u_char *)dp); - } else if (length >= MLDV2_MINLEN) { - printf("v2 "); - mldv2_query_print((const u_char *)dp, length); - } else { - printf(" unknown-version (len %u) ", length); - } - break; - case ICMP6_MEMBERSHIP_REPORT: - mld6_print((const u_char *)dp); - break; - case ICMP6_MEMBERSHIP_REDUCTION: - mld6_print((const u_char *)dp); - break; - case ND_ROUTER_SOLICIT: -#define RTSOLLEN 8 - if (vflag) { - icmp6_opt_print((const u_char *)dp + RTSOLLEN, - length - RTSOLLEN); - } - break; - case ND_ROUTER_ADVERT: -#define RTADVLEN 16 - if (vflag) { - struct nd_router_advert *p; - - p = (struct nd_router_advert *)dp; - TCHECK(p->nd_ra_retransmit); - printf("\n\thop limit %u, Flags [%s]" \ - ", pref %s, router lifetime %us, reachable time %us, retrans time %us", - (u_int)p->nd_ra_curhoplimit, - bittok2str(icmp6_opt_ra_flag_values,"none",(p->nd_ra_flags_reserved)), - get_rtpref(p->nd_ra_flags_reserved), - EXTRACT_16BITS(&p->nd_ra_router_lifetime), - EXTRACT_32BITS(&p->nd_ra_reachable), - EXTRACT_32BITS(&p->nd_ra_retransmit)); - - icmp6_opt_print((const u_char *)dp + RTADVLEN, - length - RTADVLEN); - } - break; - case ND_NEIGHBOR_SOLICIT: - { - struct nd_neighbor_solicit *p; - p = (struct nd_neighbor_solicit *)dp; - TCHECK(p->nd_ns_target); - printf(", who has %s", ip6addr_string(&p->nd_ns_target)); - if (vflag) { -#define NDSOLLEN 24 - icmp6_opt_print((const u_char *)dp + NDSOLLEN, - length - NDSOLLEN); - } - } - break; - case ND_NEIGHBOR_ADVERT: - { - struct nd_neighbor_advert *p; - - p = (struct nd_neighbor_advert *)dp; - TCHECK(p->nd_na_target); - printf(", tgt is %s", - ip6addr_string(&p->nd_na_target)); - if (vflag) { - printf(", Flags [%s]", - bittok2str(icmp6_nd_na_flag_values, - "none", - EXTRACT_32BITS(&p->nd_na_flags_reserved))); -#define NDADVLEN 24 - icmp6_opt_print((const u_char *)dp + NDADVLEN, - length - NDADVLEN); -#undef NDADVLEN - } - } - break; - case ND_REDIRECT: -#define RDR(i) ((struct nd_redirect *)(i)) - TCHECK(RDR(dp)->nd_rd_dst); - printf(", %s", getname6((const u_char *)&RDR(dp)->nd_rd_dst)); - TCHECK(RDR(dp)->nd_rd_target); - printf(" to %s", - getname6((const u_char*)&RDR(dp)->nd_rd_target)); -#define REDIRECTLEN 40 - if (vflag) { - icmp6_opt_print((const u_char *)dp + REDIRECTLEN, - length - REDIRECTLEN); - } - break; -#undef REDIRECTLEN -#undef RDR - case ICMP6_ROUTER_RENUMBERING: - icmp6_rrenum_print(bp, ep); - break; - case ICMP6_NI_QUERY: - case ICMP6_NI_REPLY: - icmp6_nodeinfo_print(length, bp, ep); - break; - case IND_SOLICIT: - case IND_ADVERT: - break; - case ICMP6_V2_MEMBERSHIP_REPORT: - mldv2_report_print((const u_char *) dp, length); - break; - case ICMP6_MOBILEPREFIX_SOLICIT: /* fall through */ - case ICMP6_HADISCOV_REQUEST: - TCHECK(dp->icmp6_data16[0]); - printf(", id 0x%04x", EXTRACT_16BITS(&dp->icmp6_data16[0])); - break; - case ICMP6_HADISCOV_REPLY: - if (vflag) { - struct in6_addr *in6; - u_char *cp; - - TCHECK(dp->icmp6_data16[0]); - printf(", id 0x%04x", EXTRACT_16BITS(&dp->icmp6_data16[0])); - cp = (u_char *)dp + length; - in6 = (struct in6_addr *)(dp + 1); - for (; (u_char *)in6 < cp; in6++) { - TCHECK(*in6); - printf(", %s", ip6addr_string(in6)); - } - } - break; - case ICMP6_MOBILEPREFIX_ADVERT: - if (vflag) { - TCHECK(dp->icmp6_data16[0]); - printf(", id 0x%04x", EXTRACT_16BITS(&dp->icmp6_data16[0])); - if (dp->icmp6_data16[1] & 0xc0) - printf(" "); - if (dp->icmp6_data16[1] & 0x80) - printf("M"); - if (dp->icmp6_data16[1] & 0x40) - printf("O"); -#define MPADVLEN 8 - icmp6_opt_print((const u_char *)dp + MPADVLEN, - length - MPADVLEN); - } - break; - default: - printf(", length %u", length); - if (vflag <= 1) - print_unknown_data(bp,"\n\t", length); - return; - } - if (!vflag) - printf(", length %u", length); - return; -trunc: - fputs("[|icmp6]", stdout); -} - -static struct udphdr * -get_upperlayer(u_char *bp, u_int *prot) -{ - const u_char *ep; - struct ip6_hdr *ip6 = (struct ip6_hdr *)bp; - struct udphdr *uh; - struct ip6_hbh *hbh; - struct ip6_frag *fragh; - struct ah *ah; - u_int nh; - int hlen; - - /* 'ep' points to the end of available data. */ - ep = snapend; - - if (!TTEST(ip6->ip6_nxt)) - return NULL; - - nh = ip6->ip6_nxt; - hlen = sizeof(struct ip6_hdr); - - while (bp < ep) { - bp += hlen; - - switch(nh) { - case IPPROTO_UDP: - case IPPROTO_TCP: - uh = (struct udphdr *)bp; - if (TTEST(uh->uh_dport)) { - *prot = nh; - return(uh); - } - else - return(NULL); - /* NOTREACHED */ - - case IPPROTO_HOPOPTS: - case IPPROTO_DSTOPTS: - case IPPROTO_ROUTING: - hbh = (struct ip6_hbh *)bp; - if (!TTEST(hbh->ip6h_len)) - return(NULL); - nh = hbh->ip6h_nxt; - hlen = (hbh->ip6h_len + 1) << 3; - break; - - case IPPROTO_FRAGMENT: /* this should be odd, but try anyway */ - fragh = (struct ip6_frag *)bp; - if (!TTEST(fragh->ip6f_offlg)) - return(NULL); - /* fragments with non-zero offset are meaningless */ - if ((EXTRACT_16BITS(&fragh->ip6f_offlg) & IP6F_OFF_MASK) != 0) - return(NULL); - nh = fragh->ip6f_nxt; - hlen = sizeof(struct ip6_frag); - break; - - case IPPROTO_AH: - ah = (struct ah *)bp; - if (!TTEST(ah->ah_len)) - return(NULL); - nh = ah->ah_nxt; - hlen = (ah->ah_len + 2) << 2; - break; - - default: /* unknown or undecodable header */ - *prot = nh; /* meaningless, but set here anyway */ - return(NULL); - } - } - - return(NULL); /* should be notreached, though */ -} - -static void -icmp6_opt_print(const u_char *bp, int resid) -{ - const struct nd_opt_hdr *op; - const struct nd_opt_hdr *opl; /* why there's no struct? */ - const struct nd_opt_prefix_info *opp; - const struct icmp6_opts_redirect *opr; - const struct nd_opt_mtu *opm; - const struct nd_opt_advinterval *opa; - const struct nd_opt_homeagent_info *oph; - const struct nd_opt_route_info *opri; - const u_char *cp, *ep; - struct in6_addr in6, *in6p; - size_t l; - -#define ECHECK(var) if ((u_char *)&(var) > ep - sizeof(var)) return - - cp = bp; - /* 'ep' points to the end of available data. */ - ep = snapend; - - while (cp < ep) { - op = (struct nd_opt_hdr *)cp; - - ECHECK(op->nd_opt_len); - if (resid <= 0) - return; - if (op->nd_opt_len == 0) - goto trunc; - if (cp + (op->nd_opt_len << 3) > ep) - goto trunc; - - printf("\n\t %s option (%u), length %u (%u): ", - tok2str(icmp6_opt_values, "unknown", op->nd_opt_type), - op->nd_opt_type, - op->nd_opt_len << 3, - op->nd_opt_len); - - switch (op->nd_opt_type) { - case ND_OPT_SOURCE_LINKADDR: - opl = (struct nd_opt_hdr *)op; - l = (op->nd_opt_len << 3) - 2; - print_lladdr(cp + 2, l); - break; - case ND_OPT_TARGET_LINKADDR: - opl = (struct nd_opt_hdr *)op; - l = (op->nd_opt_len << 3) - 2; - print_lladdr(cp + 2, l); - break; - case ND_OPT_PREFIX_INFORMATION: - opp = (struct nd_opt_prefix_info *)op; - TCHECK(opp->nd_opt_pi_prefix); - printf("%s/%u%s, Flags [%s], valid time %ss", - ip6addr_string(&opp->nd_opt_pi_prefix), - opp->nd_opt_pi_prefix_len, - (op->nd_opt_len != 4) ? "badlen" : "", - bittok2str(icmp6_opt_pi_flag_values, "none", opp->nd_opt_pi_flags_reserved), - get_lifetime(EXTRACT_32BITS(&opp->nd_opt_pi_valid_time))); - printf(", pref. time %ss", get_lifetime(EXTRACT_32BITS(&opp->nd_opt_pi_preferred_time))); - break; - case ND_OPT_REDIRECTED_HEADER: - opr = (struct icmp6_opts_redirect *)op; - print_unknown_data(bp,"\n\t ",op->nd_opt_len<<3); - /* xxx */ - break; - case ND_OPT_MTU: - opm = (struct nd_opt_mtu *)op; - TCHECK(opm->nd_opt_mtu_mtu); - printf(" %u%s", - EXTRACT_32BITS(&opm->nd_opt_mtu_mtu), - (op->nd_opt_len != 1) ? "bad option length" : "" ); - break; - case ND_OPT_ADVINTERVAL: - opa = (struct nd_opt_advinterval *)op; - TCHECK(opa->nd_opt_adv_interval); - printf(" %us", EXTRACT_32BITS(&opa->nd_opt_adv_interval)); - break; - case ND_OPT_HOMEAGENT_INFO: - oph = (struct nd_opt_homeagent_info *)op; - TCHECK(oph->nd_opt_hai_lifetime); - printf(" preference %u, lifetime %u", - EXTRACT_16BITS(&oph->nd_opt_hai_preference), - EXTRACT_16BITS(&oph->nd_opt_hai_lifetime)); - break; - case ND_OPT_ROUTE_INFO: - opri = (struct nd_opt_route_info *)op; - TCHECK(opri->nd_opt_rti_lifetime); - memset(&in6, 0, sizeof(in6)); - in6p = (struct in6_addr *)(opri + 1); - switch (op->nd_opt_len) { - case 1: - break; - case 2: - TCHECK2(*in6p, 8); - memcpy(&in6, opri + 1, 8); - break; - case 3: - TCHECK(*in6p); - memcpy(&in6, opri + 1, sizeof(in6)); - break; - default: - goto trunc; - } - printf(" %s/%u", ip6addr_string(&in6), - opri->nd_opt_rti_prefixlen); - printf(", pref=%s", get_rtpref(opri->nd_opt_rti_flags)); - printf(", lifetime=%s", - get_lifetime(EXTRACT_32BITS(&opri->nd_opt_rti_lifetime))); - break; - default: - if (vflag <= 1) { - print_unknown_data(cp+2,"\n\t ", (op->nd_opt_len << 3) - 2); /* skip option header */ - return; - } - break; - } - /* do we want to see an additional hexdump ? */ - if (vflag> 1) - print_unknown_data(cp+2,"\n\t ", (op->nd_opt_len << 3) - 2); /* skip option header */ - - cp += op->nd_opt_len << 3; - resid -= op->nd_opt_len << 3; - } - return; - - trunc: - fputs("[ndp opt]", stdout); - return; -#undef ECHECK -} - -static void -mld6_print(const u_char *bp) -{ - struct mld6_hdr *mp = (struct mld6_hdr *)bp; - const u_char *ep; - - /* 'ep' points to the end of available data. */ - ep = snapend; - - if ((u_char *)mp + sizeof(*mp) > ep) - return; - - printf("max resp delay: %d ", EXTRACT_16BITS(&mp->mld6_maxdelay)); - printf("addr: %s", ip6addr_string(&mp->mld6_addr)); -} - -static void -mldv2_report_print(const u_char *bp, u_int len) -{ - struct icmp6_hdr *icp = (struct icmp6_hdr *) bp; - u_int group, nsrcs, ngroups; - u_int i, j; - - /* Minimum len is 8 */ - if (len < 8) { - printf(" [invalid len %d]", len); - return; - } - - TCHECK(icp->icmp6_data16[1]); - ngroups = ntohs(icp->icmp6_data16[1]); - printf(", %d group record(s)", ngroups); - if (vflag > 0) { - /* Print the group records */ - group = 8; - for (i = 0; i < ngroups; i++) { - /* type(1) + auxlen(1) + numsrc(2) + grp(16) */ - if (len < group + 20) { - printf(" [invalid number of groups]"); - return; - } - TCHECK2(bp[group + 4], sizeof(struct in6_addr)); - printf(" [gaddr %s", ip6addr_string(&bp[group + 4])); - printf(" %s", tok2str(mldv2report2str, " [v2-report-#%d]", - bp[group])); - nsrcs = (bp[group + 2] << 8) + bp[group + 3]; - /* Check the number of sources and print them */ - if (len < group + 20 + (nsrcs * sizeof(struct in6_addr))) { - printf(" [invalid number of sources %d]", nsrcs); - return; - } - if (vflag == 1) - printf(", %d source(s)", nsrcs); - else { - /* Print the sources */ - (void)printf(" {"); - for (j = 0; j < nsrcs; j++) { - TCHECK2(bp[group + 20 + j * sizeof(struct in6_addr)], - sizeof(struct in6_addr)); - printf(" %s", ip6addr_string(&bp[group + 20 + j * sizeof(struct in6_addr)])); - } - (void)printf(" }"); - } - /* Next group record */ - group += 20 + nsrcs * sizeof(struct in6_addr); - printf("]"); - } - } - return; -trunc: - (void)printf("[|icmp6]"); - return; -} - -static void -mldv2_query_print(const u_char *bp, u_int len) -{ - struct icmp6_hdr *icp = (struct icmp6_hdr *) bp; - u_int mrc; - int mrt, qqi; - u_int nsrcs; - register u_int i; - - /* Minimum len is 28 */ - if (len < 28) { - printf(" [invalid len %d]", len); - return; - } - TCHECK(icp->icmp6_data16[0]); - mrc = ntohs(icp->icmp6_data16[0]); - if (mrc < 32768) { - mrt = mrc; - } else { - mrt = ((mrc & 0x0fff) | 0x1000) << (((mrc & 0x7000) >> 12) + 3); - } - if (vflag) { - (void)printf(" [max resp delay=%d]", mrt); - } - TCHECK2(bp[8], sizeof(struct in6_addr)); - printf(" [gaddr %s", ip6addr_string(&bp[8])); - - if (vflag) { - TCHECK(bp[25]); - if (bp[24] & 0x08) { - printf(" sflag"); - } - if (bp[24] & 0x07) { - printf(" robustness=%d", bp[24] & 0x07); - } - if (bp[25] < 128) { - qqi = bp[25]; - } else { - qqi = ((bp[25] & 0x0f) | 0x10) << (((bp[25] & 0x70) >> 4) + 3); - } - printf(" qqi=%d", qqi); - } - - TCHECK2(bp[26], 2); - nsrcs = ntohs(*(u_short *)&bp[26]); - if (nsrcs > 0) { - if (len < 28 + nsrcs * sizeof(struct in6_addr)) - printf(" [invalid number of sources]"); - else if (vflag > 1) { - printf(" {"); - for (i = 0; i < nsrcs; i++) { - TCHECK2(bp[28 + i * sizeof(struct in6_addr)], - sizeof(struct in6_addr)); - printf(" %s", ip6addr_string(&bp[28 + i * sizeof(struct in6_addr)])); - } - printf(" }"); - } else - printf(", %d source(s)", nsrcs); - } - printf("]"); - return; -trunc: - (void)printf("[|icmp6]"); - return; -} - -void -dnsname_print(const u_char *cp, const u_char *ep) -{ - int i; - - /* DNS name decoding - no decompression */ - printf(", \""); - while (cp < ep) { - i = *cp++; - if (i) { - if (i > ep - cp) { - printf("???"); - break; - } - while (i-- && cp < ep) { - safeputchar(*cp); - cp++; - } - if (cp + 1 < ep && *cp) - printf("."); - } else { - if (cp == ep) { - /* FQDN */ - printf("."); - } else if (cp + 1 == ep && *cp == '\0') { - /* truncated */ - } else { - /* invalid */ - printf("???"); - } - break; - } - } - printf("\""); -} - -static void -icmp6_nodeinfo_print(u_int icmp6len, const u_char *bp, const u_char *ep) -{ - struct icmp6_nodeinfo *ni6; - struct icmp6_hdr *dp; - const u_char *cp; - size_t siz, i; - int needcomma; - - if (ep < bp) - return; - dp = (struct icmp6_hdr *)bp; - ni6 = (struct icmp6_nodeinfo *)bp; - siz = ep - bp; - - switch (ni6->ni_type) { - case ICMP6_NI_QUERY: - if (siz == sizeof(*dp) + 4) { - /* KAME who-are-you */ - printf(" who-are-you request"); - break; - } - printf(" node information query"); - - TCHECK2(*dp, sizeof(*ni6)); - ni6 = (struct icmp6_nodeinfo *)dp; - printf(" ("); /*)*/ - switch (EXTRACT_16BITS(&ni6->ni_qtype)) { - case NI_QTYPE_NOOP: - printf("noop"); - break; - case NI_QTYPE_SUPTYPES: - printf("supported qtypes"); - i = EXTRACT_16BITS(&ni6->ni_flags); - if (i) - printf(" [%s]", (i & 0x01) ? "C" : ""); - break; - break; - case NI_QTYPE_FQDN: - printf("DNS name"); - break; - case NI_QTYPE_NODEADDR: - printf("node addresses"); - i = ni6->ni_flags; - if (!i) - break; - /* NI_NODEADDR_FLAG_TRUNCATE undefined for query */ - printf(" [%s%s%s%s%s%s]", - (i & NI_NODEADDR_FLAG_ANYCAST) ? "a" : "", - (i & NI_NODEADDR_FLAG_GLOBAL) ? "G" : "", - (i & NI_NODEADDR_FLAG_SITELOCAL) ? "S" : "", - (i & NI_NODEADDR_FLAG_LINKLOCAL) ? "L" : "", - (i & NI_NODEADDR_FLAG_COMPAT) ? "C" : "", - (i & NI_NODEADDR_FLAG_ALL) ? "A" : ""); - break; - default: - printf("unknown"); - break; - } - - if (ni6->ni_qtype == NI_QTYPE_NOOP || - ni6->ni_qtype == NI_QTYPE_SUPTYPES) { - if (siz != sizeof(*ni6)) - if (vflag) - printf(", invalid len"); - /*(*/ - printf(")"); - break; - } - - - /* XXX backward compat, icmp-name-lookup-03 */ - if (siz == sizeof(*ni6)) { - printf(", 03 draft"); - /*(*/ - printf(")"); - break; - } - - switch (ni6->ni_code) { - case ICMP6_NI_SUBJ_IPV6: - if (!TTEST2(*dp, - sizeof(*ni6) + sizeof(struct in6_addr))) - break; - if (siz != sizeof(*ni6) + sizeof(struct in6_addr)) { - if (vflag) - printf(", invalid subject len"); - break; - } - printf(", subject=%s", - getname6((const u_char *)(ni6 + 1))); - break; - case ICMP6_NI_SUBJ_FQDN: - printf(", subject=DNS name"); - cp = (const u_char *)(ni6 + 1); - if (cp[0] == ep - cp - 1) { - /* icmp-name-lookup-03, pascal string */ - if (vflag) - printf(", 03 draft"); - cp++; - printf(", \""); - while (cp < ep) { - safeputchar(*cp); - cp++; - } - printf("\""); - } else - dnsname_print(cp, ep); - break; - case ICMP6_NI_SUBJ_IPV4: - if (!TTEST2(*dp, sizeof(*ni6) + sizeof(struct in_addr))) - break; - if (siz != sizeof(*ni6) + sizeof(struct in_addr)) { - if (vflag) - printf(", invalid subject len"); - break; - } - printf(", subject=%s", - getname((const u_char *)(ni6 + 1))); - break; - default: - printf(", unknown subject"); - break; - } - - /*(*/ - printf(")"); - break; - - case ICMP6_NI_REPLY: - if (icmp6len > siz) { - printf("[|icmp6: node information reply]"); - break; - } - - needcomma = 0; - - ni6 = (struct icmp6_nodeinfo *)dp; - printf(" node information reply"); - printf(" ("); /*)*/ - switch (ni6->ni_code) { - case ICMP6_NI_SUCCESS: - if (vflag) { - printf("success"); - needcomma++; - } - break; - case ICMP6_NI_REFUSED: - printf("refused"); - needcomma++; - if (siz != sizeof(*ni6)) - if (vflag) - printf(", invalid length"); - break; - case ICMP6_NI_UNKNOWN: - printf("unknown"); - needcomma++; - if (siz != sizeof(*ni6)) - if (vflag) - printf(", invalid length"); - break; - } - - if (ni6->ni_code != ICMP6_NI_SUCCESS) { - /*(*/ - printf(")"); - break; - } - - switch (EXTRACT_16BITS(&ni6->ni_qtype)) { - case NI_QTYPE_NOOP: - if (needcomma) - printf(", "); - printf("noop"); - if (siz != sizeof(*ni6)) - if (vflag) - printf(", invalid length"); - break; - case NI_QTYPE_SUPTYPES: - if (needcomma) - printf(", "); - printf("supported qtypes"); - i = EXTRACT_16BITS(&ni6->ni_flags); - if (i) - printf(" [%s]", (i & 0x01) ? "C" : ""); - break; - case NI_QTYPE_FQDN: - if (needcomma) - printf(", "); - printf("DNS name"); - cp = (const u_char *)(ni6 + 1) + 4; - if (cp[0] == ep - cp - 1) { - /* icmp-name-lookup-03, pascal string */ - if (vflag) - printf(", 03 draft"); - cp++; - printf(", \""); - while (cp < ep) { - safeputchar(*cp); - cp++; - } - printf("\""); - } else - dnsname_print(cp, ep); - if ((EXTRACT_16BITS(&ni6->ni_flags) & 0x01) != 0) - printf(" [TTL=%u]", *(u_int32_t *)(ni6 + 1)); - break; - case NI_QTYPE_NODEADDR: - if (needcomma) - printf(", "); - printf("node addresses"); - i = sizeof(*ni6); - while (i < siz) { - if (i + sizeof(struct in6_addr) + sizeof(int32_t) > siz) - break; - printf(" %s", getname6(bp + i)); - i += sizeof(struct in6_addr); - printf("(%d)", (int32_t)EXTRACT_32BITS(bp + i)); - i += sizeof(int32_t); - } - i = ni6->ni_flags; - if (!i) - break; - printf(" [%s%s%s%s%s%s%s]", - (i & NI_NODEADDR_FLAG_ANYCAST) ? "a" : "", - (i & NI_NODEADDR_FLAG_GLOBAL) ? "G" : "", - (i & NI_NODEADDR_FLAG_SITELOCAL) ? "S" : "", - (i & NI_NODEADDR_FLAG_LINKLOCAL) ? "L" : "", - (i & NI_NODEADDR_FLAG_COMPAT) ? "C" : "", - (i & NI_NODEADDR_FLAG_ALL) ? "A" : "", - (i & NI_NODEADDR_FLAG_TRUNCATE) ? "T" : ""); - break; - default: - if (needcomma) - printf(", "); - printf("unknown"); - break; - } - - /*(*/ - printf(")"); - break; - } - return; - -trunc: - fputs("[|icmp6]", stdout); -} - -static void -icmp6_rrenum_print(const u_char *bp, const u_char *ep) -{ - struct icmp6_router_renum *rr6; - const char *cp; - struct rr_pco_match *match; - struct rr_pco_use *use; - char hbuf[NI_MAXHOST]; - int n; - - if (ep < bp) - return; - rr6 = (struct icmp6_router_renum *)bp; - cp = (const char *)(rr6 + 1); - - TCHECK(rr6->rr_reserved); - switch (rr6->rr_code) { - case ICMP6_ROUTER_RENUMBERING_COMMAND: - printf("router renum: command"); - break; - case ICMP6_ROUTER_RENUMBERING_RESULT: - printf("router renum: result"); - break; - case ICMP6_ROUTER_RENUMBERING_SEQNUM_RESET: - printf("router renum: sequence number reset"); - break; - default: - printf("router renum: code-#%d", rr6->rr_code); - break; - } - - printf(", seq=%u", EXTRACT_32BITS(&rr6->rr_seqnum)); - - if (vflag) { -#define F(x, y) ((rr6->rr_flags) & (x) ? (y) : "") - printf("["); /*]*/ - if (rr6->rr_flags) { - printf("%s%s%s%s%s,", F(ICMP6_RR_FLAGS_TEST, "T"), - F(ICMP6_RR_FLAGS_REQRESULT, "R"), - F(ICMP6_RR_FLAGS_FORCEAPPLY, "A"), - F(ICMP6_RR_FLAGS_SPECSITE, "S"), - F(ICMP6_RR_FLAGS_PREVDONE, "P")); - } - printf("seg=%u,", rr6->rr_segnum); - printf("maxdelay=%u", rr6->rr_maxdelay); - if (rr6->rr_reserved) - printf("rsvd=0x%x", EXTRACT_16BITS(&rr6->rr_reserved)); - /*[*/ - printf("]"); -#undef F - } - - if (rr6->rr_code == ICMP6_ROUTER_RENUMBERING_COMMAND) { - match = (struct rr_pco_match *)cp; - cp = (const char *)(match + 1); - - TCHECK(match->rpm_prefix); - - if (vflag > 1) - printf("\n\t"); - else - printf(" "); - printf("match("); /*)*/ - switch (match->rpm_code) { - case RPM_PCO_ADD: printf("add"); break; - case RPM_PCO_CHANGE: printf("change"); break; - case RPM_PCO_SETGLOBAL: printf("setglobal"); break; - default: printf("#%u", match->rpm_code); break; - } - - if (vflag) { - printf(",ord=%u", match->rpm_ordinal); - printf(",min=%u", match->rpm_minlen); - printf(",max=%u", match->rpm_maxlen); - } - if (inet_ntop(AF_INET6, &match->rpm_prefix, hbuf, sizeof(hbuf))) - printf(",%s/%u", hbuf, match->rpm_matchlen); - else - printf(",?/%u", match->rpm_matchlen); - /*(*/ - printf(")"); - - n = match->rpm_len - 3; - if (n % 4) - goto trunc; - n /= 4; - while (n-- > 0) { - use = (struct rr_pco_use *)cp; - cp = (const char *)(use + 1); - - TCHECK(use->rpu_prefix); - - if (vflag > 1) - printf("\n\t"); - else - printf(" "); - printf("use("); /*)*/ - if (use->rpu_flags) { -#define F(x, y) ((use->rpu_flags) & (x) ? (y) : "") - printf("%s%s,", - F(ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME, "V"), - F(ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME, "P")); -#undef F - } - if (vflag) { - printf("mask=0x%x,", use->rpu_ramask); - printf("raflags=0x%x,", use->rpu_raflags); - if (~use->rpu_vltime == 0) - printf("vltime=infty,"); - else - printf("vltime=%u,", - EXTRACT_32BITS(&use->rpu_vltime)); - if (~use->rpu_pltime == 0) - printf("pltime=infty,"); - else - printf("pltime=%u,", - EXTRACT_32BITS(&use->rpu_pltime)); - } - if (inet_ntop(AF_INET6, &use->rpu_prefix, hbuf, - sizeof(hbuf))) - printf("%s/%u/%u", hbuf, use->rpu_uselen, - use->rpu_keeplen); - else - printf("?/%u/%u", use->rpu_uselen, - use->rpu_keeplen); - /*(*/ - printf(")"); - } - } - - return; - -trunc: - fputs("[|icmp6]", stdout); -} - -#endif /* INET6 */ diff --git a/contrib/tcpdump/print-igmp.c b/contrib/tcpdump/print-igmp.c deleted file mode 100644 index c310d55b9dc09..0000000000000 --- a/contrib/tcpdump/print-igmp.c +++ /dev/null @@ -1,336 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-igmp.c,v 1.15 2004/03/24 00:59:16 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" /* must come after interface.h */ - -#ifndef IN_CLASSD -#define IN_CLASSD(i) (((int32_t)(i) & 0xf0000000) == 0xe0000000) -#endif - -/* (following from ipmulti/mrouted/prune.h) */ - -/* - * The packet format for a traceroute request. - */ -struct tr_query { - u_int32_t tr_src; /* traceroute source */ - u_int32_t tr_dst; /* traceroute destination */ - u_int32_t tr_raddr; /* traceroute response address */ - u_int32_t tr_rttlqid; /* response ttl and qid */ -}; - -#define TR_GETTTL(x) (int)(((x) >> 24) & 0xff) -#define TR_GETQID(x) ((x) & 0x00ffffff) - -/* - * Traceroute response format. A traceroute response has a tr_query at the - * beginning, followed by one tr_resp for each hop taken. - */ -struct tr_resp { - u_int32_t tr_qarr; /* query arrival time */ - u_int32_t tr_inaddr; /* incoming interface address */ - u_int32_t tr_outaddr; /* outgoing interface address */ - u_int32_t tr_rmtaddr; /* parent address in source tree */ - u_int32_t tr_vifin; /* input packet count on interface */ - u_int32_t tr_vifout; /* output packet count on interface */ - u_int32_t tr_pktcnt; /* total incoming packets for src-grp */ - u_int8_t tr_rproto; /* routing proto deployed on router */ - u_int8_t tr_fttl; /* ttl required to forward on outvif */ - u_int8_t tr_smask; /* subnet mask for src addr */ - u_int8_t tr_rflags; /* forwarding error codes */ -}; - -/* defs within mtrace */ -#define TR_QUERY 1 -#define TR_RESP 2 - -/* fields for tr_rflags (forwarding error codes) */ -#define TR_NO_ERR 0 -#define TR_WRONG_IF 1 -#define TR_PRUNED 2 -#define TR_OPRUNED 3 -#define TR_SCOPED 4 -#define TR_NO_RTE 5 -#define TR_NO_FWD 7 -#define TR_NO_SPACE 0x81 -#define TR_OLD_ROUTER 0x82 - -/* fields for tr_rproto (routing protocol) */ -#define TR_PROTO_DVMRP 1 -#define TR_PROTO_MOSPF 2 -#define TR_PROTO_PIM 3 -#define TR_PROTO_CBT 4 - -/* igmpv3 report types */ -static struct tok igmpv3report2str[] = { - { 1, "is_in" }, - { 2, "is_ex" }, - { 3, "to_in" }, - { 4, "to_ex" }, - { 5, "allow" }, - { 6, "block" }, - { 0, NULL } -}; - -static void -print_mtrace(register const u_char *bp, register u_int len) -{ - register const struct tr_query *tr = (const struct tr_query *)(bp + 8); - - TCHECK(*tr); - if (len < 8 + sizeof (struct tr_query)) { - (void)printf(" [invalid len %d]", len); - return; - } - printf("mtrace %u: %s to %s reply-to %s", - TR_GETQID(EXTRACT_32BITS(&tr->tr_rttlqid)), - ipaddr_string(&tr->tr_src), ipaddr_string(&tr->tr_dst), - ipaddr_string(&tr->tr_raddr)); - if (IN_CLASSD(EXTRACT_32BITS(&tr->tr_raddr))) - printf(" with-ttl %d", TR_GETTTL(EXTRACT_32BITS(&tr->tr_rttlqid))); - return; -trunc: - (void)printf("[|igmp]"); - return; -} - -static void -print_mresp(register const u_char *bp, register u_int len) -{ - register const struct tr_query *tr = (const struct tr_query *)(bp + 8); - - TCHECK(*tr); - if (len < 8 + sizeof (struct tr_query)) { - (void)printf(" [invalid len %d]", len); - return; - } - printf("mresp %lu: %s to %s reply-to %s", - (u_long)TR_GETQID(EXTRACT_32BITS(&tr->tr_rttlqid)), - ipaddr_string(&tr->tr_src), ipaddr_string(&tr->tr_dst), - ipaddr_string(&tr->tr_raddr)); - if (IN_CLASSD(EXTRACT_32BITS(&tr->tr_raddr))) - printf(" with-ttl %d", TR_GETTTL(EXTRACT_32BITS(&tr->tr_rttlqid))); - return; -trunc: - (void)printf("[|igmp]"); - return; -} - -static void -print_igmpv3_report(register const u_char *bp, register u_int len) -{ - u_int group, nsrcs, ngroups; - register u_int i, j; - - /* Minimum len is 16, and should be a multiple of 4 */ - if (len < 16 || len & 0x03) { - (void)printf(" [invalid len %d]", len); - return; - } - TCHECK2(bp[6], 2); - ngroups = EXTRACT_16BITS(&bp[6]); - (void)printf(", %d group record(s)", ngroups); - if (vflag > 0) { - /* Print the group records */ - group = 8; - for (i=0; i<ngroups; i++) { - if (len < group+8) { - (void)printf(" [invalid number of groups]"); - return; - } - TCHECK2(bp[group+4], 4); - (void)printf(" [gaddr %s", ipaddr_string(&bp[group+4])); - (void)printf(" %s", tok2str(igmpv3report2str, " [v3-report-#%d]", - bp[group])); - nsrcs = EXTRACT_16BITS(&bp[group+2]); - /* Check the number of sources and print them */ - if (len < group+8+(nsrcs<<2)) { - (void)printf(" [invalid number of sources %d]", nsrcs); - return; - } - if (vflag == 1) - (void)printf(", %d source(s)", nsrcs); - else { - /* Print the sources */ - (void)printf(" {"); - for (j=0; j<nsrcs; j++) { - TCHECK2(bp[group+8+(j<<2)], 4); - (void)printf(" %s", ipaddr_string(&bp[group+8+(j<<2)])); - } - (void)printf(" }"); - } - /* Next group record */ - group += 8 + (nsrcs << 2); - (void)printf("]"); - } - } - return; -trunc: - (void)printf("[|igmp]"); - return; -} - -static void -print_igmpv3_query(register const u_char *bp, register u_int len) -{ - u_int mrc; - int mrt; - u_int nsrcs; - register u_int i; - - (void)printf(" v3"); - /* Minimum len is 12, and should be a multiple of 4 */ - if (len < 12 || len & 0x03) { - (void)printf(" [invalid len %d]", len); - return; - } - TCHECK(bp[1]); - mrc = bp[1]; - if (mrc < 128) { - mrt = mrc; - } else { - mrt = ((mrc & 0x0f) | 0x10) << (((mrc & 0x70) >> 4) + 3); - } - if (mrc != 100) { - (void)printf(" [max resp time "); - relts_print(mrt); - (void)printf("]"); - } - TCHECK2(bp[4], 4); - if (EXTRACT_32BITS(&bp[4]) == 0) - return; - (void)printf(" [gaddr %s", ipaddr_string(&bp[4])); - TCHECK2(bp[10], 2); - nsrcs = EXTRACT_16BITS(&bp[10]); - if (nsrcs > 0) { - if (len < 12 + (nsrcs << 2)) - (void)printf(" [invalid number of sources]"); - else if (vflag > 1) { - (void)printf(" {"); - for (i=0; i<nsrcs; i++) { - TCHECK2(bp[12+(i<<2)], 4); - (void)printf(" %s", ipaddr_string(&bp[12+(i<<2)])); - } - (void)printf(" }"); - } else - (void)printf(", %d source(s)", nsrcs); - } - (void)printf("]"); - return; -trunc: - (void)printf("[|igmp]"); - return; -} - -void -igmp_print(register const u_char *bp, register u_int len) -{ - if (qflag) { - (void)printf("igmp"); - return; - } - - TCHECK(bp[0]); - switch (bp[0]) { - case 0x11: - (void)printf("igmp query"); - if (len >= 12) - print_igmpv3_query(bp, len); - else { - TCHECK(bp[1]); - if (bp[1]) { - (void)printf(" v2"); - if (bp[1] != 100) - (void)printf(" [max resp time %d]", bp[1]); - } else - (void)printf(" v1"); - TCHECK2(bp[4], 4); - if (EXTRACT_32BITS(&bp[4])) - (void)printf(" [gaddr %s]", ipaddr_string(&bp[4])); - if (len != 8) - (void)printf(" [len %d]", len); - } - break; - case 0x12: - TCHECK2(bp[4], 4); - (void)printf("igmp v1 report %s", ipaddr_string(&bp[4])); - if (len != 8) - (void)printf(" [len %d]", len); - break; - case 0x16: - TCHECK2(bp[4], 4); - (void)printf("igmp v2 report %s", ipaddr_string(&bp[4])); - break; - case 0x22: - (void)printf("igmp v3 report"); - print_igmpv3_report(bp, len); - break; - case 0x17: - TCHECK2(bp[4], 4); - (void)printf("igmp leave %s", ipaddr_string(&bp[4])); - break; - case 0x13: - (void)printf("igmp dvmrp"); - if (len < 8) - (void)printf(" [len %d]", len); - else - dvmrp_print(bp, len); - break; - case 0x14: - (void)printf("igmp pimv1"); - pimv1_print(bp, len); - break; - case 0x1e: - print_mresp(bp, len); - break; - case 0x1f: - print_mtrace(bp, len); - break; - default: - (void)printf("igmp-%d", bp[0]); - break; - } - - if (vflag && TTEST2(bp[0], len)) { - /* Check the IGMP checksum */ - if (in_cksum((const u_short*)bp, len, 0)) - printf(" bad igmp cksum %x!", EXTRACT_16BITS(&bp[2])); - } - return; -trunc: - fputs("[|igmp]", stdout); -} diff --git a/contrib/tcpdump/print-igrp.c b/contrib/tcpdump/print-igrp.c deleted file mode 100644 index 898471d08f48b..0000000000000 --- a/contrib/tcpdump/print-igrp.c +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright (c) 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * Initial contribution from Francis Dupont (francis.dupont@inria.fr) - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-igrp.c,v 1.20.2.1 2005/04/20 21:02:15 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> - -#include "interface.h" -#include "addrtoname.h" -#include "igrp.h" -#include "ip.h" -#include "extract.h" /* must come after interface.h */ - -static void -igrp_entry_print(register struct igrprte *igr, register int is_interior, - register int is_exterior) -{ - register u_int delay, bandwidth; - u_int metric, mtu; - - if (is_interior) - printf(" *.%d.%d.%d", igr->igr_net[0], - igr->igr_net[1], igr->igr_net[2]); - else if (is_exterior) - printf(" X%d.%d.%d.0", igr->igr_net[0], - igr->igr_net[1], igr->igr_net[2]); - else - printf(" %d.%d.%d.0", igr->igr_net[0], - igr->igr_net[1], igr->igr_net[2]); - - delay = EXTRACT_24BITS(igr->igr_dly); - bandwidth = EXTRACT_24BITS(igr->igr_bw); - metric = bandwidth + delay; - if (metric > 0xffffff) - metric = 0xffffff; - mtu = EXTRACT_16BITS(igr->igr_mtu); - - printf(" d=%d b=%d r=%d l=%d M=%d mtu=%d in %d hops", - 10 * delay, bandwidth == 0 ? 0 : 10000000 / bandwidth, - igr->igr_rel, igr->igr_ld, metric, - mtu, igr->igr_hct); -} - -static struct tok op2str[] = { - { IGRP_UPDATE, "update" }, - { IGRP_REQUEST, "request" }, - { 0, NULL } -}; - -void -igrp_print(register const u_char *bp, u_int length, const u_char *bp2 _U_) -{ - register struct igrphdr *hdr; - register u_char *cp; - u_int nint, nsys, next; - - hdr = (struct igrphdr *)bp; - cp = (u_char *)(hdr + 1); - (void)printf("igrp:"); - - /* Header */ - TCHECK(*hdr); - nint = EXTRACT_16BITS(&hdr->ig_ni); - nsys = EXTRACT_16BITS(&hdr->ig_ns); - next = EXTRACT_16BITS(&hdr->ig_nx); - - (void)printf(" %s V%d edit=%d AS=%d (%d/%d/%d)", - tok2str(op2str, "op-#%d", IGRP_OP(hdr->ig_vop)), - IGRP_V(hdr->ig_vop), - hdr->ig_ed, - EXTRACT_16BITS(&hdr->ig_as), - nint, - nsys, - next); - - length -= sizeof(*hdr); - while (length >= IGRP_RTE_SIZE) { - if (nint > 0) { - TCHECK2(*cp, IGRP_RTE_SIZE); - igrp_entry_print((struct igrprte *)cp, 1, 0); - --nint; - } else if (nsys > 0) { - TCHECK2(*cp, IGRP_RTE_SIZE); - igrp_entry_print((struct igrprte *)cp, 0, 0); - --nsys; - } else if (next > 0) { - TCHECK2(*cp, IGRP_RTE_SIZE); - igrp_entry_print((struct igrprte *)cp, 0, 1); - --next; - } else { - (void)printf(" [extra bytes %d]", length); - break; - } - cp += IGRP_RTE_SIZE; - length -= IGRP_RTE_SIZE; - } - if (nint == 0 && nsys == 0 && next == 0) - return; -trunc: - fputs(" [|igrp]", stdout); -} diff --git a/contrib/tcpdump/print-ip.c b/contrib/tcpdump/print-ip.c deleted file mode 100644 index c5bac0be0437d..0000000000000 --- a/contrib/tcpdump/print-ip.c +++ /dev/null @@ -1,731 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-ip.c,v 1.149.2.2 2005/09/20 06:05:38 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "addrtoname.h" -#include "interface.h" -#include "extract.h" /* must come after interface.h */ - -#include "ip.h" -#include "ipproto.h" - -struct tok ip_option_values[] = { - { IPOPT_EOL, "EOL" }, - { IPOPT_NOP, "NOP" }, - { IPOPT_TS, "timestamp" }, - { IPOPT_SECURITY, "security" }, - { IPOPT_RR, "RR" }, - { IPOPT_SSRR, "SSRR" }, - { IPOPT_LSRR, "LSRR" }, - { IPOPT_RA, "RA" }, - { 0, NULL } -}; - -/* - * print the recorded route in an IP RR, LSRR or SSRR option. - */ -static void -ip_printroute(register const u_char *cp, u_int length) -{ - register u_int ptr; - register u_int len; - - if (length < 3) { - printf(" [bad length %u]", length); - return; - } - if ((length + 1) & 3) - printf(" [bad length %u]", length); - ptr = cp[2] - 1; - if (ptr < 3 || ((ptr + 1) & 3) || ptr > length + 1) - printf(" [bad ptr %u]", cp[2]); - - for (len = 3; len < length; len += 4) { - printf("%s", ipaddr_string(&cp[len])); - if (ptr > len) - printf (", "); - } -} - -/* - * If source-routing is present and valid, return the final destination. - * Otherwise, return IP destination. - * - * This is used for UDP and TCP pseudo-header in the checksum - * calculation. - */ -u_int32_t -ip_finddst(const struct ip *ip) -{ - int length; - int len; - const u_char *cp; - u_int32_t retval; - - cp = (const u_char *)(ip + 1); - length = (IP_HL(ip) << 2) - sizeof(struct ip); - - for (; length > 0; cp += len, length -= len) { - int tt; - - TCHECK(*cp); - tt = *cp; - if (tt == IPOPT_EOL) - break; - else if (tt == IPOPT_NOP) - len = 1; - else { - TCHECK(cp[1]); - len = cp[1]; - if (len < 2) - break; - } - TCHECK2(*cp, len); - switch (tt) { - - case IPOPT_SSRR: - case IPOPT_LSRR: - if (len < 7) - break; - memcpy(&retval, cp + len - 4, 4); - return retval; - } - } -trunc: - memcpy(&retval, &ip->ip_dst.s_addr, sizeof(u_int32_t)); - return retval; -} - -static void -ip_printts(register const u_char *cp, u_int length) -{ - register u_int ptr; - register u_int len; - int hoplen; - const char *type; - - if (length < 4) { - printf("[bad length %d]", length); - return; - } - printf(" TS{"); - hoplen = ((cp[3]&0xF) != IPOPT_TS_TSONLY) ? 8 : 4; - if ((length - 4) & (hoplen-1)) - printf("[bad length %d]", length); - ptr = cp[2] - 1; - len = 0; - if (ptr < 4 || ((ptr - 4) & (hoplen-1)) || ptr > length + 1) - printf("[bad ptr %d]", cp[2]); - switch (cp[3]&0xF) { - case IPOPT_TS_TSONLY: - printf("TSONLY"); - break; - case IPOPT_TS_TSANDADDR: - printf("TS+ADDR"); - break; - /* - * prespecified should really be 3, but some ones might send 2 - * instead, and the IPOPT_TS_PRESPEC constant can apparently - * have both values, so we have to hard-code it here. - */ - - case 2: - printf("PRESPEC2.0"); - break; - case 3: /* IPOPT_TS_PRESPEC */ - printf("PRESPEC"); - break; - default: - printf("[bad ts type %d]", cp[3]&0xF); - goto done; - } - - type = " "; - for (len = 4; len < length; len += hoplen) { - if (ptr == len) - type = " ^ "; - printf("%s%d@%s", type, EXTRACT_32BITS(&cp[len+hoplen-4]), - hoplen!=8 ? "" : ipaddr_string(&cp[len])); - type = " "; - } - -done: - printf("%s", ptr == len ? " ^ " : ""); - - if (cp[3]>>4) - printf(" [%d hops not recorded]} ", cp[3]>>4); - else - printf("}"); -} - -/* - * print IP options. - */ -static void -ip_optprint(register const u_char *cp, u_int length) -{ - register u_int option_len; - - for (; length > 0; cp += option_len, length -= option_len) { - u_int option_code; - - TCHECK(*cp); - option_code = *cp; - - if (option_code == IPOPT_NOP || - option_code == IPOPT_EOL) - option_len = 1; - - else { - TCHECK(cp[1]); - option_len = cp[1]; - } - - printf("%s (%u) len %u", - tok2str(ip_option_values,"unknown",option_code), - option_code, - option_len); - - if (option_len < 2) - return; - - TCHECK2(*cp, option_len); - - switch (option_code) { - case IPOPT_EOL: - return; - - case IPOPT_TS: - ip_printts(cp, option_len); - break; - - case IPOPT_RR: /* fall through */ - case IPOPT_SSRR: - case IPOPT_LSRR: - ip_printroute( cp, option_len); - break; - - case IPOPT_RA: - TCHECK(cp[3]); - if (EXTRACT_16BITS(&cp[2]) != 0) - printf("value %u", EXTRACT_16BITS(&cp[2])); - break; - - case IPOPT_NOP: /* nothing to print - fall through */ - case IPOPT_SECURITY: - default: - break; - } - } - return; - -trunc: - printf("[|ip]"); -} - -/* - * compute an IP header checksum. - * don't modifiy the packet. - */ -u_short -in_cksum(const u_short *addr, register u_int len, int csum) -{ - int nleft = len; - const u_short *w = addr; - u_short answer; - int sum = csum; - - /* - * Our algorithm is simple, using a 32 bit accumulator (sum), - * we add sequential 16 bit words to it, and at the end, fold - * back all the carry bits from the top 16 bits into the lower - * 16 bits. - */ - while (nleft > 1) { - sum += *w++; - nleft -= 2; - } - if (nleft == 1) - sum += htons(*(u_char *)w<<8); - - /* - * add back carry outs from top 16 bits to low 16 bits - */ - sum = (sum >> 16) + (sum & 0xffff); /* add hi 16 to low 16 */ - sum += (sum >> 16); /* add carry */ - answer = ~sum; /* truncate to 16 bits */ - return (answer); -} - -/* - * Given the host-byte-order value of the checksum field in a packet - * header, and the network-byte-order computed checksum of the data - * that the checksum covers (including the checksum itself), compute - * what the checksum field *should* have been. - */ -u_int16_t -in_cksum_shouldbe(u_int16_t sum, u_int16_t computed_sum) -{ - u_int32_t shouldbe; - - /* - * The value that should have gone into the checksum field - * is the negative of the value gotten by summing up everything - * *but* the checksum field. - * - * We can compute that by subtracting the value of the checksum - * field from the sum of all the data in the packet, and then - * computing the negative of that value. - * - * "sum" is the value of the checksum field, and "computed_sum" - * is the negative of the sum of all the data in the packets, - * so that's -(-computed_sum - sum), or (sum + computed_sum). - * - * All the arithmetic in question is one's complement, so the - * addition must include an end-around carry; we do this by - * doing the arithmetic in 32 bits (with no sign-extension), - * and then adding the upper 16 bits of the sum, which contain - * the carry, to the lower 16 bits of the sum, and then do it - * again in case *that* sum produced a carry. - * - * As RFC 1071 notes, the checksum can be computed without - * byte-swapping the 16-bit words; summing 16-bit words - * on a big-endian machine gives a big-endian checksum, which - * can be directly stuffed into the big-endian checksum fields - * in protocol headers, and summing words on a little-endian - * machine gives a little-endian checksum, which must be - * byte-swapped before being stuffed into a big-endian checksum - * field. - * - * "computed_sum" is a network-byte-order value, so we must put - * it in host byte order before subtracting it from the - * host-byte-order value from the header; the adjusted checksum - * will be in host byte order, which is what we'll return. - */ - shouldbe = sum; - shouldbe += ntohs(computed_sum); - shouldbe = (shouldbe & 0xFFFF) + (shouldbe >> 16); - shouldbe = (shouldbe & 0xFFFF) + (shouldbe >> 16); - return shouldbe; -} - -#ifndef IP_MF -#define IP_MF 0x2000 -#endif /* IP_MF */ -#ifndef IP_DF -#define IP_DF 0x4000 -#endif /* IP_DF */ -#define IP_RES 0x8000 - -static struct tok ip_frag_values[] = { - { IP_MF, "+" }, - { IP_DF, "DF" }, - { IP_RES, "rsvd" }, /* The RFC3514 evil ;-) bit */ - { 0, NULL } -}; - -struct ip_print_demux_state { - const struct ip *ip; - const u_char *cp; - u_int len, off; - u_char nh; - int advance; -}; - -static void -ip_print_demux(netdissect_options *ndo, - struct ip_print_demux_state *ipds) -{ - struct protoent *proto; - -again: - switch (ipds->nh) { - - case IPPROTO_AH: - ipds->nh = *ipds->cp; - ipds->advance = ah_print(ipds->cp); - if (ipds->advance <= 0) - break; - ipds->cp += ipds->advance; - ipds->len -= ipds->advance; - goto again; - - case IPPROTO_ESP: - { - int enh, padlen; - ipds->advance = esp_print(ndo, ipds->cp, ipds->len, - (const u_char *)ipds->ip, - &enh, &padlen); - if (ipds->advance <= 0) - break; - ipds->cp += ipds->advance; - ipds->len -= ipds->advance + padlen; - ipds->nh = enh & 0xff; - goto again; - } - - case IPPROTO_IPCOMP: - { - int enh; - ipds->advance = ipcomp_print(ipds->cp, &enh); - if (ipds->advance <= 0) - break; - ipds->cp += ipds->advance; - ipds->len -= ipds->advance; - ipds->nh = enh & 0xff; - goto again; - } - - case IPPROTO_SCTP: - sctp_print(ipds->cp, (const u_char *)ipds->ip, ipds->len); - break; - - case IPPROTO_DCCP: - dccp_print(ipds->cp, (const u_char *)ipds->ip, ipds->len); - break; - - case IPPROTO_TCP: - tcp_print(ipds->cp, ipds->len, (const u_char *)ipds->ip, - (ipds->off &~ 0x6000)); - break; - - case IPPROTO_UDP: - udp_print(ipds->cp, ipds->len, (const u_char *)ipds->ip, - (ipds->off &~ 0x6000)); - break; - - case IPPROTO_ICMP: - /* pass on the MF bit plus the offset to detect fragments */ - icmp_print(ipds->cp, ipds->len, (const u_char *)ipds->ip, - (ipds->off & 0x3fff)); - break; - - case IPPROTO_PIGP: - /* - * XXX - the current IANA protocol number assignments - * page lists 9 as "any private interior gateway - * (used by Cisco for their IGRP)" and 88 as - * "EIGRP" from Cisco. - * - * Recent BSD <netinet/in.h> headers define - * IP_PROTO_PIGP as 9 and IP_PROTO_IGRP as 88. - * We define IP_PROTO_PIGP as 9 and - * IP_PROTO_EIGRP as 88; those names better - * match was the current protocol number - * assignments say. - */ - igrp_print(ipds->cp, ipds->len, (const u_char *)ipds->ip); - break; - - case IPPROTO_EIGRP: - eigrp_print(ipds->cp, ipds->len); - break; - - case IPPROTO_ND: - ND_PRINT((ndo, " nd %d", ipds->len)); - break; - - case IPPROTO_EGP: - egp_print(ipds->cp, ipds->len); - break; - - case IPPROTO_OSPF: - ospf_print(ipds->cp, ipds->len, (const u_char *)ipds->ip); - break; - - case IPPROTO_IGMP: - igmp_print(ipds->cp, ipds->len); - break; - - case IPPROTO_IPV4: - /* DVMRP multicast tunnel (ip-in-ip encapsulation) */ - ip_print(gndo, ipds->cp, ipds->len); - if (! vflag) { - ND_PRINT((ndo, " (ipip-proto-4)")); - return; - } - break; - -#ifdef INET6 - case IPPROTO_IPV6: - /* ip6-in-ip encapsulation */ - ip6_print(ipds->cp, ipds->len); - break; -#endif /*INET6*/ - - case IPPROTO_RSVP: - rsvp_print(ipds->cp, ipds->len); - break; - - case IPPROTO_GRE: - /* do it */ - gre_print(ipds->cp, ipds->len); - break; - - case IPPROTO_MOBILE: - mobile_print(ipds->cp, ipds->len); - break; - - case IPPROTO_PIM: - pim_print(ipds->cp, ipds->len); - break; - - case IPPROTO_VRRP: - vrrp_print(ipds->cp, ipds->len, ipds->ip->ip_ttl); - break; - - case IPPROTO_PGM: - pgm_print(ipds->cp, ipds->len, (const u_char *)ipds->ip); - break; - - default: - if ((proto = getprotobynumber(ipds->nh)) != NULL) - ND_PRINT((ndo, " %s", proto->p_name)); - else - ND_PRINT((ndo, " ip-proto-%d", ipds->nh)); - ND_PRINT((ndo, " %d", ipds->len)); - break; - } -} - -void -ip_print_inner(netdissect_options *ndo, - const u_char *bp, - u_int length, u_int nh, - const u_char *bp2) -{ - struct ip_print_demux_state ipd; - - ipd.ip = (const struct ip *)bp2; - ipd.cp = bp; - ipd.len = length; - ipd.off = 0; - ipd.nh = nh; - ipd.advance = 0; - - ip_print_demux(ndo, &ipd); -} - - -/* - * print an IP datagram. - */ -void -ip_print(netdissect_options *ndo, - const u_char *bp, - u_int length) -{ - struct ip_print_demux_state ipd; - struct ip_print_demux_state *ipds=&ipd; - const u_char *ipend; - u_int hlen; - u_int16_t sum, ip_sum; - struct protoent *proto; - - ipds->ip = (const struct ip *)bp; - if (IP_V(ipds->ip) != 4) { /* print version if != 4 */ - printf("IP%u ", IP_V(ipds->ip)); - if (IP_V(ipds->ip) == 6) - printf(", wrong link-layer encapsulation"); - } - else if (!eflag) - printf("IP "); - - if ((u_char *)(ipds->ip + 1) > snapend) { - printf("[|ip]"); - return; - } - if (length < sizeof (struct ip)) { - (void)printf("truncated-ip %u", length); - return; - } - hlen = IP_HL(ipds->ip) * 4; - if (hlen < sizeof (struct ip)) { - (void)printf("bad-hlen %u", hlen); - return; - } - - ipds->len = EXTRACT_16BITS(&ipds->ip->ip_len); - if (length < ipds->len) - (void)printf("truncated-ip - %u bytes missing! ", - ipds->len - length); - if (ipds->len < hlen) { -#ifdef GUESS_TSO - if (ipds->len) { - (void)printf("bad-len %u", ipds->len); - return; - } - else { - /* we guess that it is a TSO send */ - ipds->len = length; - } -#else - (void)printf("bad-len %u", ipds->len); - return; -#endif /* GUESS_TSO */ - } - - /* - * Cut off the snapshot length to the end of the IP payload. - */ - ipend = bp + ipds->len; - if (ipend < snapend) - snapend = ipend; - - ipds->len -= hlen; - - ipds->off = EXTRACT_16BITS(&ipds->ip->ip_off); - - if (vflag) { - (void)printf("(tos 0x%x", (int)ipds->ip->ip_tos); - /* ECN bits */ - if (ipds->ip->ip_tos & 0x03) { - switch (ipds->ip->ip_tos & 0x03) { - case 1: - (void)printf(",ECT(1)"); - break; - case 2: - (void)printf(",ECT(0)"); - break; - case 3: - (void)printf(",CE"); - } - } - - if (ipds->ip->ip_ttl >= 1) - (void)printf(", ttl %3u", ipds->ip->ip_ttl); - - /* - * for the firewall guys, print id, offset. - * On all but the last stick a "+" in the flags portion. - * For unfragmented datagrams, note the don't fragment flag. - */ - - (void)printf(", id %u, offset %u, flags [%s], proto: %s (%u)", - EXTRACT_16BITS(&ipds->ip->ip_id), - (ipds->off & 0x1fff) * 8, - bittok2str(ip_frag_values, "none", ipds->off&0xe000 ), - tok2str(ipproto_values,"unknown",ipds->ip->ip_p), - ipds->ip->ip_p); - - (void)printf(", length: %u", EXTRACT_16BITS(&ipds->ip->ip_len)); - - if ((hlen - sizeof(struct ip)) > 0) { - printf(", options ( "); - ip_optprint((u_char *)(ipds->ip + 1), hlen - sizeof(struct ip)); - printf(" )"); - } - - if ((u_char *)ipds->ip + hlen <= snapend) { - sum = in_cksum((const u_short *)ipds->ip, hlen, 0); - if (sum != 0) { - ip_sum = EXTRACT_16BITS(&ipds->ip->ip_sum); - (void)printf(", bad cksum %x (->%x)!", ip_sum, - in_cksum_shouldbe(ip_sum, sum)); - } - } - - printf(") "); - } - - /* - * If this is fragment zero, hand it to the next higher - * level protocol. - */ - if ((ipds->off & 0x1fff) == 0) { - ipds->cp = (const u_char *)ipds->ip + hlen; - ipds->nh = ipds->ip->ip_p; - - if (ipds->nh != IPPROTO_TCP && ipds->nh != IPPROTO_UDP && - ipds->nh != IPPROTO_SCTP && ipds->nh != IPPROTO_DCCP) { - (void)printf("%s > %s: ", - ipaddr_string(&ipds->ip->ip_src), - ipaddr_string(&ipds->ip->ip_dst)); - } - ip_print_demux(ndo, ipds); - } else { - /* Ultra quiet now means that all this stuff should be suppressed */ - if (qflag > 1) return; - - /* - * if this isn't the first frag, we're missing the - * next level protocol header. print the ip addr - * and the protocol. - */ - if (ipds->off & 0x1fff) { - (void)printf("%s > %s:", ipaddr_string(&ipds->ip->ip_src), - ipaddr_string(&ipds->ip->ip_dst)); - if ((proto = getprotobynumber(ipds->ip->ip_p)) != NULL) - (void)printf(" %s", proto->p_name); - else - (void)printf(" ip-proto-%d", ipds->ip->ip_p); - } - } -} - -void -ipN_print(register const u_char *bp, register u_int length) -{ - struct ip *ip, hdr; - - ip = (struct ip *)bp; - if (length < 4) { - (void)printf("truncated-ip %d", length); - return; - } - memcpy (&hdr, (char *)ip, 4); - switch (IP_V(&hdr)) { - case 4: - ip_print (gndo, bp, length); - return; -#ifdef INET6 - case 6: - ip6_print (bp, length); - return; -#endif - default: - (void)printf("unknown ip %d", IP_V(&hdr)); - return; - } -} - -/* - * Local Variables: - * c-style: whitesmith - * c-basic-offset: 8 - * End: - */ - - diff --git a/contrib/tcpdump/print-ip6.c b/contrib/tcpdump/print-ip6.c deleted file mode 100644 index 9361f8f091bba..0000000000000 --- a/contrib/tcpdump/print-ip6.c +++ /dev/null @@ -1,238 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-ip6.c,v 1.47.2.3 2005/09/20 06:05:38 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifdef INET6 - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -#include "ip6.h" -#include "ipproto.h" - -/* - * print an IP6 datagram. - */ -void -ip6_print(register const u_char *bp, register u_int length) -{ - register const struct ip6_hdr *ip6; - register int advance; - u_int len; - const u_char *ipend; - register const u_char *cp; - register u_int payload_len; - int nh; - int fragmented = 0; - u_int flow; - - ip6 = (const struct ip6_hdr *)bp; - - TCHECK(*ip6); - if (length < sizeof (struct ip6_hdr)) { - (void)printf("truncated-ip6 %u", length); - return; - } - - if (!eflag) - printf("IP6 "); - - payload_len = EXTRACT_16BITS(&ip6->ip6_plen); - len = payload_len + sizeof(struct ip6_hdr); - if (length < len) - (void)printf("truncated-ip6 - %u bytes missing!", - len - length); - - if (vflag) { - flow = EXTRACT_32BITS(&ip6->ip6_flow); - printf("("); -#if 0 - /* rfc1883 */ - if (flow & 0x0f000000) - (void)printf("pri 0x%02x, ", (flow & 0x0f000000) >> 24); - if (flow & 0x00ffffff) - (void)printf("flowlabel 0x%06x, ", flow & 0x00ffffff); -#else - /* RFC 2460 */ - if (flow & 0x0ff00000) - (void)printf("class 0x%02x, ", (flow & 0x0ff00000) >> 20); - if (flow & 0x000fffff) - (void)printf("flowlabel 0x%05x, ", flow & 0x000fffff); -#endif - - (void)printf("hlim %u, next-header: %s (%u), length: %u) ", - ip6->ip6_hlim, - tok2str(ipproto_values,"unknown",ip6->ip6_nxt), - ip6->ip6_nxt, - payload_len); - } - - /* - * Cut off the snapshot length to the end of the IP payload. - */ - ipend = bp + len; - if (ipend < snapend) - snapend = ipend; - - cp = (const u_char *)ip6; - advance = sizeof(struct ip6_hdr); - nh = ip6->ip6_nxt; - while (cp < snapend && advance > 0) { - cp += advance; - len -= advance; - - if (cp == (const u_char *)(ip6 + 1) && - nh != IPPROTO_TCP && nh != IPPROTO_UDP && - nh != IPPROTO_DCCP && nh != IPPROTO_SCTP) { - (void)printf("%s > %s: ", ip6addr_string(&ip6->ip6_src), - ip6addr_string(&ip6->ip6_dst)); - } - - switch (nh) { - case IPPROTO_HOPOPTS: - advance = hbhopt_print(cp); - nh = *cp; - break; - case IPPROTO_DSTOPTS: - advance = dstopt_print(cp); - nh = *cp; - break; - case IPPROTO_FRAGMENT: - advance = frag6_print(cp, (const u_char *)ip6); - if (snapend <= cp + advance) - return; - nh = *cp; - fragmented = 1; - break; - - case IPPROTO_MOBILITY_OLD: - case IPPROTO_MOBILITY: - /* - * XXX - we don't use "advance"; the current - * "Mobility Support in IPv6" draft - * (draft-ietf-mobileip-ipv6-24) says that - * the next header field in a mobility header - * should be IPPROTO_NONE, but speaks of - * the possiblity of a future extension in - * which payload can be piggybacked atop a - * mobility header. - */ - advance = mobility_print(cp, (const u_char *)ip6); - nh = *cp; - return; - case IPPROTO_ROUTING: - advance = rt6_print(cp, (const u_char *)ip6); - nh = *cp; - break; - case IPPROTO_SCTP: - sctp_print(cp, (const u_char *)ip6, len); - return; - case IPPROTO_DCCP: - dccp_print(cp, (const u_char *)ip6, len); - return; - case IPPROTO_TCP: - tcp_print(cp, len, (const u_char *)ip6, fragmented); - return; - case IPPROTO_UDP: - udp_print(cp, len, (const u_char *)ip6, fragmented); - return; - case IPPROTO_ICMPV6: - icmp6_print(cp, len, (const u_char *)ip6, fragmented); - return; - case IPPROTO_AH: - advance = ah_print(cp); - nh = *cp; - break; - case IPPROTO_ESP: - { - int enh, padlen; - advance = esp_print(gndo, cp, len, (const u_char *)ip6, &enh, &padlen); - nh = enh & 0xff; - len -= padlen; - break; - } - case IPPROTO_IPCOMP: - { - int enh; - advance = ipcomp_print(cp, &enh); - nh = enh & 0xff; - break; - } - - case IPPROTO_PIM: - pim_print(cp, len); - return; - - case IPPROTO_OSPF: - ospf6_print(cp, len); - return; - - case IPPROTO_IPV6: - ip6_print(cp, len); - return; - - case IPPROTO_IPV4: - ip_print(gndo, cp, len); - return; - - case IPPROTO_PGM: - pgm_print(cp, len, (const u_char *)ip6); - return; - - case IPPROTO_GRE: - gre_print(cp, len); - return; - - case IPPROTO_RSVP: - rsvp_print(cp, len); - return; - - case IPPROTO_NONE: - (void)printf("no next header"); - return; - - default: - (void)printf("ip-proto-%d %d", ip6->ip6_nxt, len); - return; - } - } - - return; -trunc: - (void)printf("[|ip6]"); -} - -#endif /* INET6 */ diff --git a/contrib/tcpdump/print-ip6opts.c b/contrib/tcpdump/print-ip6opts.c deleted file mode 100644 index 82163a261e1df..0000000000000 --- a/contrib/tcpdump/print-ip6opts.c +++ /dev/null @@ -1,329 +0,0 @@ -/* - * Copyright (C) 1998 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-ip6opts.c,v 1.17.2.1 2005/04/20 22:19:06 guy Exp $"; -#endif - -#ifdef INET6 -#include <tcpdump-stdinc.h> - -#include <stdio.h> - -#include "ip6.h" - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -/* items outside of rfc2292bis */ -#ifndef IP6OPT_MINLEN -#define IP6OPT_MINLEN 2 -#endif -#ifndef IP6OPT_RTALERT_LEN -#define IP6OPT_RTALERT_LEN 4 -#endif -#ifndef IP6OPT_JUMBO_LEN -#define IP6OPT_JUMBO_LEN 6 -#endif -#define IP6OPT_HOMEADDR_MINLEN 18 -#define IP6OPT_BU_MINLEN 10 -#define IP6OPT_BA_MINLEN 13 -#define IP6OPT_BR_MINLEN 2 -#define IP6SOPT_UI 0x2 -#define IP6SOPT_UI_MINLEN 4 -#define IP6SOPT_ALTCOA 0x3 -#define IP6SOPT_ALTCOA_MINLEN 18 -#define IP6SOPT_AUTH 0x4 -#define IP6SOPT_AUTH_MINLEN 6 - -static void ip6_sopt_print(const u_char *, int); - -static void -ip6_sopt_print(const u_char *bp, int len) -{ - int i; - int optlen; - - for (i = 0; i < len; i += optlen) { - if (bp[i] == IP6OPT_PAD1) - optlen = 1; - else { - if (i + 1 < len) - optlen = bp[i + 1] + 2; - else - goto trunc; - } - if (i + optlen > len) - goto trunc; - - switch (bp[i]) { - case IP6OPT_PAD1: - printf(", pad1"); - break; - case IP6OPT_PADN: - if (len - i < IP6OPT_MINLEN) { - printf(", padn: trunc"); - goto trunc; - } - printf(", padn"); - break; - case IP6SOPT_UI: - if (len - i < IP6SOPT_UI_MINLEN) { - printf(", ui: trunc"); - goto trunc; - } - printf(", ui: 0x%04x ", EXTRACT_16BITS(&bp[i + 2])); - break; - case IP6SOPT_ALTCOA: - if (len - i < IP6SOPT_ALTCOA_MINLEN) { - printf(", altcoa: trunc"); - goto trunc; - } - printf(", alt-CoA: %s", ip6addr_string(&bp[i+2])); - break; - case IP6SOPT_AUTH: - if (len - i < IP6SOPT_AUTH_MINLEN) { - printf(", auth: trunc"); - goto trunc; - } - printf(", auth spi: 0x%08x", EXTRACT_32BITS(&bp[i + 2])); - break; - default: - if (len - i < IP6OPT_MINLEN) { - printf(", sopt_type %d: trunc)", bp[i]); - goto trunc; - } - printf(", sopt_type 0x%02x: len=%d", bp[i], bp[i + 1]); - break; - } - } - return; - -trunc: - printf("[trunc] "); -} - -void -ip6_opt_print(const u_char *bp, int len) -{ - int i; - int optlen = 0; - - for (i = 0; i < len; i += optlen) { - if (bp[i] == IP6OPT_PAD1) - optlen = 1; - else { - if (i + 1 < len) - optlen = bp[i + 1] + 2; - else - goto trunc; - } - if (i + optlen > len) - goto trunc; - - switch (bp[i]) { - case IP6OPT_PAD1: - printf("(pad1)"); - break; - case IP6OPT_PADN: - if (len - i < IP6OPT_MINLEN) { - printf("(padn: trunc)"); - goto trunc; - } - printf("(padn)"); - break; - case IP6OPT_ROUTER_ALERT: - if (len - i < IP6OPT_RTALERT_LEN) { - printf("(rtalert: trunc)"); - goto trunc; - } - if (bp[i + 1] != IP6OPT_RTALERT_LEN - 2) { - printf("(rtalert: invalid len %d)", bp[i + 1]); - goto trunc; - } - printf("(rtalert: 0x%04x) ", EXTRACT_16BITS(&bp[i + 2])); - break; - case IP6OPT_JUMBO: - if (len - i < IP6OPT_JUMBO_LEN) { - printf("(jumbo: trunc)"); - goto trunc; - } - if (bp[i + 1] != IP6OPT_JUMBO_LEN - 2) { - printf("(jumbo: invalid len %d)", bp[i + 1]); - goto trunc; - } - printf("(jumbo: %u) ", EXTRACT_32BITS(&bp[i + 2])); - break; - case IP6OPT_HOME_ADDRESS: - if (len - i < IP6OPT_HOMEADDR_MINLEN) { - printf("(homeaddr: trunc)"); - goto trunc; - } - if (bp[i + 1] < IP6OPT_HOMEADDR_MINLEN - 2) { - printf("(homeaddr: invalid len %d)", bp[i + 1]); - goto trunc; - } - printf("(homeaddr: %s", ip6addr_string(&bp[i + 2])); - if (bp[i + 1] > IP6OPT_HOMEADDR_MINLEN - 2) { - ip6_sopt_print(&bp[i + IP6OPT_HOMEADDR_MINLEN], - (optlen - IP6OPT_HOMEADDR_MINLEN)); - } - printf(")"); - break; - case IP6OPT_BINDING_UPDATE: - if (len - i < IP6OPT_BU_MINLEN) { - printf("(bu: trunc)"); - goto trunc; - } - if (bp[i + 1] < IP6OPT_BU_MINLEN - 2) { - printf("(bu: invalid len %d)", bp[i + 1]); - goto trunc; - } - printf("(bu: "); - if (bp[i + 2] & 0x80) - printf("A"); - if (bp[i + 2] & 0x40) - printf("H"); - if (bp[i + 2] & 0x20) - printf("S"); - if (bp[i + 2] & 0x10) - printf("D"); - if ((bp[i + 2] & 0x0f) || bp[i + 3] || bp[i + 4]) - printf("res"); - printf(", sequence: %u", bp[i + 5]); - printf(", lifetime: %u", EXTRACT_32BITS(&bp[i + 6])); - - if (bp[i + 1] > IP6OPT_BU_MINLEN - 2) { - ip6_sopt_print(&bp[i + IP6OPT_BU_MINLEN], - (optlen - IP6OPT_BU_MINLEN)); - } - printf(")"); - break; - case IP6OPT_BINDING_ACK: - if (len - i < IP6OPT_BA_MINLEN) { - printf("(ba: trunc)"); - goto trunc; - } - if (bp[i + 1] < IP6OPT_BA_MINLEN - 2) { - printf("(ba: invalid len %d)", bp[i + 1]); - goto trunc; - } - printf("(ba: "); - printf("status: %u", bp[i + 2]); - if (bp[i + 3]) - printf("res"); - printf(", sequence: %u", bp[i + 4]); - printf(", lifetime: %u", EXTRACT_32BITS(&bp[i + 5])); - printf(", refresh: %u", EXTRACT_32BITS(&bp[i + 9])); - - if (bp[i + 1] > IP6OPT_BA_MINLEN - 2) { - ip6_sopt_print(&bp[i + IP6OPT_BA_MINLEN], - (optlen - IP6OPT_BA_MINLEN)); - } - printf(")"); - break; - case IP6OPT_BINDING_REQ: - if (len - i < IP6OPT_BR_MINLEN) { - printf("(br: trunc)"); - goto trunc; - } - printf("(br"); - if (bp[i + 1] > IP6OPT_BR_MINLEN - 2) { - ip6_sopt_print(&bp[i + IP6OPT_BR_MINLEN], - (optlen - IP6OPT_BR_MINLEN)); - } - printf(")"); - break; - default: - if (len - i < IP6OPT_MINLEN) { - printf("(type %d: trunc)", bp[i]); - goto trunc; - } - printf("(opt_type 0x%02x: len=%d) ", bp[i], bp[i + 1]); - break; - } - } - -#if 0 -end: -#endif - return; - -trunc: - printf("[trunc] "); -} - -int -hbhopt_print(register const u_char *bp) -{ - const struct ip6_hbh *dp = (struct ip6_hbh *)bp; - int hbhlen = 0; - - TCHECK(dp->ip6h_len); - hbhlen = (int)((dp->ip6h_len + 1) << 3); - TCHECK2(*dp, hbhlen); - printf("HBH "); - if (vflag) - ip6_opt_print((const u_char *)dp + sizeof(*dp), hbhlen - sizeof(*dp)); - - return(hbhlen); - - trunc: - fputs("[|HBH]", stdout); - return(-1); -} - -int -dstopt_print(register const u_char *bp) -{ - const struct ip6_dest *dp = (struct ip6_dest *)bp; - int dstoptlen = 0; - - TCHECK(dp->ip6d_len); - dstoptlen = (int)((dp->ip6d_len + 1) << 3); - TCHECK2(*dp, dstoptlen); - printf("DSTOPT "); - if (vflag) { - ip6_opt_print((const u_char *)dp + sizeof(*dp), - dstoptlen - sizeof(*dp)); - } - - return(dstoptlen); - - trunc: - fputs("[|DSTOPT]", stdout); - return(-1); -} -#endif /* INET6 */ diff --git a/contrib/tcpdump/print-ipcomp.c b/contrib/tcpdump/print-ipcomp.c deleted file mode 100644 index 099e5ad9b69ee..0000000000000 --- a/contrib/tcpdump/print-ipcomp.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1993, 1994 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-ipcomp.c,v 1.20 2003/11/19 00:36:08 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <string.h> -#include <tcpdump-stdinc.h> - -#include <stdio.h> - -struct ipcomp { - u_int8_t comp_nxt; /* Next Header */ - u_int8_t comp_flags; /* Length of data, in 32bit */ - u_int16_t comp_cpi; /* Compression parameter index */ -}; - -#if defined(HAVE_LIBZ) && defined(HAVE_ZLIB_H) -#include <zlib.h> -#endif - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -int -ipcomp_print(register const u_char *bp, int *nhdr _U_) -{ - register const struct ipcomp *ipcomp; - register const u_char *ep; - u_int16_t cpi; -#if defined(HAVE_LIBZ) && defined(HAVE_ZLIB_H) - int advance; -#endif - - ipcomp = (struct ipcomp *)bp; - cpi = EXTRACT_16BITS(&ipcomp->comp_cpi); - - /* 'ep' points to the end of available data. */ - ep = snapend; - - if ((u_char *)(ipcomp + 1) >= ep - sizeof(struct ipcomp)) { - fputs("[|IPCOMP]", stdout); - goto fail; - } - printf("IPComp(cpi=0x%04x)", cpi); - -#if defined(HAVE_LIBZ) && defined(HAVE_ZLIB_H) - if (1) - goto fail; - - /* - * We may want to decompress the packet here. Packet buffer - * management is a headache (if we decompress, packet will become - * larger). - */ - if (nhdr) - *nhdr = ipcomp->comp_nxt; - advance = sizeof(struct ipcomp); - - printf(": "); - return advance; - -#endif -fail: - return -1; -} diff --git a/contrib/tcpdump/print-ipfc.c b/contrib/tcpdump/print-ipfc.c deleted file mode 100644 index d316992851526..0000000000000 --- a/contrib/tcpdump/print-ipfc.c +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-ipfc.c,v 1.7.2.1 2005/07/07 01:24:36 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <pcap.h> -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "ethertype.h" - -#include "ether.h" -#include "ipfc.h" - -/* - * RFC 2625 IP-over-Fibre Channel. - */ - -/* Extract src, dst addresses */ -static inline void -extract_ipfc_addrs(const struct ipfc_header *ipfcp, char *ipfcsrc, - char *ipfcdst) -{ - /* - * We assume that, as per RFC 2625, the lower 48 bits of the - * source and destination addresses are MAC addresses. - */ - memcpy(ipfcdst, (const char *)&ipfcp->ipfc_dhost[2], 6); - memcpy(ipfcsrc, (const char *)&ipfcp->ipfc_shost[2], 6); -} - -/* - * Print the Network_Header - */ -static inline void -ipfc_hdr_print(register const struct ipfc_header *ipfcp _U_, - register u_int length, register const u_char *ipfcsrc, - register const u_char *ipfcdst) -{ - const char *srcname, *dstname; - - srcname = etheraddr_string(ipfcsrc); - dstname = etheraddr_string(ipfcdst); - - /* - * XXX - show the upper 16 bits? Do so only if "vflag" is set? - */ - (void) printf("%s %s %d: ", srcname, dstname, length); -} - -static void -ipfc_print(const u_char *p, u_int length, u_int caplen) -{ - const struct ipfc_header *ipfcp = (const struct ipfc_header *)p; - struct ether_header ehdr; - u_short extracted_ethertype; - - if (caplen < IPFC_HDRLEN) { - printf("[|ipfc]"); - return; - } - /* - * Get the network addresses into a canonical form - */ - extract_ipfc_addrs(ipfcp, (char *)ESRC(&ehdr), (char *)EDST(&ehdr)); - - if (eflag) - ipfc_hdr_print(ipfcp, length, ESRC(&ehdr), EDST(&ehdr)); - - /* Skip over Network_Header */ - length -= IPFC_HDRLEN; - p += IPFC_HDRLEN; - caplen -= IPFC_HDRLEN; - - /* Frame Control field determines interpretation of packet */ - extracted_ethertype = 0; - /* Try to print the LLC-layer header & higher layers */ - if (llc_print(p, length, caplen, ESRC(&ehdr), EDST(&ehdr), - &extracted_ethertype) == 0) { - /* - * Some kinds of LLC packet we cannot - * handle intelligently - */ - if (!eflag) - ipfc_hdr_print(ipfcp, length + IPFC_HDRLEN, - ESRC(&ehdr), EDST(&ehdr)); - if (extracted_ethertype) { - printf("(LLC %s) ", - etherproto_string(htons(extracted_ethertype))); - } - if (!suppress_default_print) - default_print(p, caplen); - } -} - -/* - * This is the top level routine of the printer. 'p' points - * to the Network_Header of the packet, 'h->ts' is the timestamp, - * 'h->len' is the length of the packet off the wire, and 'h->caplen' - * is the number of bytes actually captured. - */ -u_int -ipfc_if_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - ipfc_print(p, h->len, h->caplen); - - return (IPFC_HDRLEN); -} diff --git a/contrib/tcpdump/print-ipx.c b/contrib/tcpdump/print-ipx.c deleted file mode 100644 index 5309aa47d123e..0000000000000 --- a/contrib/tcpdump/print-ipx.c +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Copyright (c) 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * Format and print Novell IPX packets. - * Contributed by Brad Parker (brad@fcr.com). - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-ipx.c,v 1.40.2.2 2005/05/06 08:27:00 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "ipx.h" -#include "extract.h" - - -static const char *ipxaddr_string(u_int32_t, const u_char *); -void ipx_decode(const struct ipxHdr *, const u_char *, u_int); -void ipx_sap_print(const u_short *, u_int); -void ipx_rip_print(const u_short *, u_int); - -/* - * Print IPX datagram packets. - */ -void -ipx_print(const u_char *p, u_int length) -{ - const struct ipxHdr *ipx = (const struct ipxHdr *)p; - - if (!eflag) - printf("IPX "); - - TCHECK(ipx->srcSkt); - (void)printf("%s.%04x > ", - ipxaddr_string(EXTRACT_32BITS(ipx->srcNet), ipx->srcNode), - EXTRACT_16BITS(&ipx->srcSkt)); - - (void)printf("%s.%04x: ", - ipxaddr_string(EXTRACT_32BITS(ipx->dstNet), ipx->dstNode), - EXTRACT_16BITS(&ipx->dstSkt)); - - /* take length from ipx header */ - TCHECK(ipx->length); - length = EXTRACT_16BITS(&ipx->length); - - ipx_decode(ipx, (u_char *)ipx + ipxSize, length - ipxSize); - return; -trunc: - printf("[|ipx %d]", length); -} - -static const char * -ipxaddr_string(u_int32_t net, const u_char *node) -{ - static char line[256]; - - snprintf(line, sizeof(line), "%08x.%02x:%02x:%02x:%02x:%02x:%02x", - net, node[0], node[1], node[2], node[3], node[4], node[5]); - - return line; -} - -void -ipx_decode(const struct ipxHdr *ipx, const u_char *datap, u_int length) -{ - register u_short dstSkt; - - dstSkt = EXTRACT_16BITS(&ipx->dstSkt); - switch (dstSkt) { - case IPX_SKT_NCP: - (void)printf("ipx-ncp %d", length); - break; - case IPX_SKT_SAP: - ipx_sap_print((u_short *)datap, length); - break; - case IPX_SKT_RIP: - ipx_rip_print((u_short *)datap, length); - break; - case IPX_SKT_NETBIOS: - (void)printf("ipx-netbios %d", length); -#ifdef TCPDUMP_DO_SMB - ipx_netbios_print(datap, length); -#endif - break; - case IPX_SKT_DIAGNOSTICS: - (void)printf("ipx-diags %d", length); - break; - case IPX_SKT_NWLINK_DGM: - (void)printf("ipx-nwlink-dgm %d", length); -#ifdef TCPDUMP_DO_SMB - ipx_netbios_print(datap, length); -#endif - break; - case IPX_SKT_EIGRP: - eigrp_print(datap, length); - break; - default: - (void)printf("ipx-#%x %d", dstSkt, length); - break; - } -} - -void -ipx_sap_print(const u_short *ipx, u_int length) -{ - int command, i; - - TCHECK(ipx[0]); - command = EXTRACT_16BITS(ipx); - ipx++; - length -= 2; - - switch (command) { - case 1: - case 3: - if (command == 1) - (void)printf("ipx-sap-req"); - else - (void)printf("ipx-sap-nearest-req"); - - TCHECK(ipx[0]); - (void)printf(" %s", ipxsap_string(htons(EXTRACT_16BITS(&ipx[0])))); - break; - - case 2: - case 4: - if (command == 2) - (void)printf("ipx-sap-resp"); - else - (void)printf("ipx-sap-nearest-resp"); - - for (i = 0; i < 8 && length > 0; i++) { - TCHECK(ipx[0]); - (void)printf(" %s '", ipxsap_string(htons(EXTRACT_16BITS(&ipx[0])))); - if (fn_printzp((u_char *)&ipx[1], 48, snapend)) { - printf("'"); - goto trunc; - } - TCHECK2(ipx[25], 10); - printf("' addr %s", - ipxaddr_string(EXTRACT_32BITS(&ipx[25]), (u_char *)&ipx[27])); - ipx += 32; - length -= 64; - } - break; - default: - (void)printf("ipx-sap-?%x", command); - break; - } - return; -trunc: - printf("[|ipx %d]", length); -} - -void -ipx_rip_print(const u_short *ipx, u_int length) -{ - int command, i; - - TCHECK(ipx[0]); - command = EXTRACT_16BITS(ipx); - ipx++; - length -= 2; - - switch (command) { - case 1: - (void)printf("ipx-rip-req"); - if (length > 0) { - TCHECK(ipx[3]); - (void)printf(" %u/%d.%d", EXTRACT_32BITS(&ipx[0]), - EXTRACT_16BITS(&ipx[2]), EXTRACT_16BITS(&ipx[3])); - } - break; - case 2: - (void)printf("ipx-rip-resp"); - for (i = 0; i < 50 && length > 0; i++) { - TCHECK(ipx[3]); - (void)printf(" %u/%d.%d", EXTRACT_32BITS(&ipx[0]), - EXTRACT_16BITS(&ipx[2]), EXTRACT_16BITS(&ipx[3])); - - ipx += 4; - length -= 8; - } - break; - default: - (void)printf("ipx-rip-?%x", command); - break; - } - return; -trunc: - printf("[|ipx %d]", length); -} diff --git a/contrib/tcpdump/print-isakmp.c b/contrib/tcpdump/print-isakmp.c deleted file mode 100644 index 09972f0292b5d..0000000000000 --- a/contrib/tcpdump/print-isakmp.c +++ /dev/null @@ -1,1449 +0,0 @@ -/* - * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-isakmp.c,v 1.51 2005/04/07 00:28:17 mcr Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <string.h> - -#include <stdio.h> - -#include "isakmp.h" -#include "ipsec_doi.h" -#include "oakley.h" -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" /* must come after interface.h */ - -#include "ip.h" -#ifdef INET6 -#include "ip6.h" -#endif - -#ifndef HAVE_SOCKADDR_STORAGE -#define sockaddr_storage sockaddr -#endif - -static const u_char *isakmp_sa_print(const struct isakmp_gen *, - u_int, const u_char *, u_int32_t, u_int32_t, u_int32_t, int); -static const u_char *isakmp_p_print(const struct isakmp_gen *, - u_int, const u_char *, u_int32_t, u_int32_t, u_int32_t, int); -static const u_char *isakmp_t_print(const struct isakmp_gen *, - u_int, const u_char *, u_int32_t, u_int32_t, u_int32_t, int); -static const u_char *isakmp_ke_print(const struct isakmp_gen *, - u_int, const u_char *, u_int32_t, u_int32_t, u_int32_t, int); -static const u_char *isakmp_id_print(const struct isakmp_gen *, - u_int, const u_char *, u_int32_t, u_int32_t, u_int32_t, int); -static const u_char *isakmp_cert_print(const struct isakmp_gen *, - u_int, const u_char *, u_int32_t, u_int32_t, u_int32_t, int); -static const u_char *isakmp_cr_print(const struct isakmp_gen *, - u_int, const u_char *, u_int32_t, u_int32_t, u_int32_t, int); -static const u_char *isakmp_sig_print(const struct isakmp_gen *, - u_int, const u_char *, u_int32_t, u_int32_t, u_int32_t, int); -static const u_char *isakmp_hash_print(const struct isakmp_gen *, - u_int, const u_char *, u_int32_t, u_int32_t, u_int32_t, int); -static const u_char *isakmp_nonce_print(const struct isakmp_gen *, - u_int, const u_char *, u_int32_t, u_int32_t, u_int32_t, int); -static const u_char *isakmp_n_print(const struct isakmp_gen *, - u_int, const u_char *, u_int32_t, u_int32_t, u_int32_t, int); -static const u_char *isakmp_d_print(const struct isakmp_gen *, - u_int, const u_char *, u_int32_t, u_int32_t, u_int32_t, int); -static const u_char *isakmp_vid_print(const struct isakmp_gen *, - u_int, const u_char *, u_int32_t, u_int32_t, u_int32_t, int); -static const u_char *isakmp_sub0_print(u_char, const struct isakmp_gen *, - const u_char *, u_int32_t, u_int32_t, u_int32_t, int); -static const u_char *isakmp_sub_print(u_char, const struct isakmp_gen *, - const u_char *, u_int32_t, u_int32_t, u_int32_t, int); -static char *numstr(int); -static void safememcpy(void *, const void *, size_t); - -#define MAXINITIATORS 20 -int ninitiator = 0; -struct { - cookie_t initiator; - struct sockaddr_storage iaddr; - struct sockaddr_storage raddr; -} cookiecache[MAXINITIATORS]; - -/* protocol id */ -static const char *protoidstr[] = { - NULL, "isakmp", "ipsec-ah", "ipsec-esp", "ipcomp", -}; - -/* isakmp->np */ -static const char *npstr[] = { - "none", "sa", "p", "t", "ke", "id", "cert", "cr", "hash", - "sig", "nonce", "n", "d", "vid" -}; - -/* isakmp->np */ -static const u_char *(*npfunc[])(const struct isakmp_gen *, u_int, - const u_char *, u_int32_t, u_int32_t, u_int32_t, int) = { - NULL, - isakmp_sa_print, - isakmp_p_print, - isakmp_t_print, - isakmp_ke_print, - isakmp_id_print, - isakmp_cert_print, - isakmp_cr_print, - isakmp_hash_print, - isakmp_sig_print, - isakmp_nonce_print, - isakmp_n_print, - isakmp_d_print, - isakmp_vid_print, -}; - -/* isakmp->etype */ -static const char *etypestr[] = { - "none", "base", "ident", "auth", "agg", "inf", NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - "oakley-quick", "oakley-newgroup", -}; - -#define STR_OR_ID(x, tab) \ - (((x) < sizeof(tab)/sizeof(tab[0]) && tab[(x)]) ? tab[(x)] : numstr(x)) -#define PROTOIDSTR(x) STR_OR_ID(x, protoidstr) -#define NPSTR(x) STR_OR_ID(x, npstr) -#define ETYPESTR(x) STR_OR_ID(x, etypestr) - -#define NPFUNC(x) \ - (((x) < sizeof(npfunc)/sizeof(npfunc[0]) && npfunc[(x)]) \ - ? npfunc[(x)] : NULL) - -static int -iszero(u_char *p, size_t l) -{ - while (l--) { - if (*p++) - return 0; - } - return 1; -} - -/* find cookie from initiator cache */ -static int -cookie_find(cookie_t *in) -{ - int i; - - for (i = 0; i < MAXINITIATORS; i++) { - if (memcmp(in, &cookiecache[i].initiator, sizeof(*in)) == 0) - return i; - } - - return -1; -} - -/* record initiator */ -static void -cookie_record(cookie_t *in, const u_char *bp2) -{ - int i; - struct ip *ip; - struct sockaddr_in *sin; -#ifdef INET6 - struct ip6_hdr *ip6; - struct sockaddr_in6 *sin6; -#endif - - i = cookie_find(in); - if (0 <= i) { - ninitiator = (i + 1) % MAXINITIATORS; - return; - } - - ip = (struct ip *)bp2; - switch (IP_V(ip)) { - case 4: - memset(&cookiecache[ninitiator].iaddr, 0, - sizeof(cookiecache[ninitiator].iaddr)); - memset(&cookiecache[ninitiator].raddr, 0, - sizeof(cookiecache[ninitiator].raddr)); - - sin = (struct sockaddr_in *)&cookiecache[ninitiator].iaddr; -#ifdef HAVE_SOCKADDR_SA_LEN - sin->sin_len = sizeof(struct sockaddr_in); -#endif - sin->sin_family = AF_INET; - memcpy(&sin->sin_addr, &ip->ip_src, sizeof(ip->ip_src)); - sin = (struct sockaddr_in *)&cookiecache[ninitiator].raddr; -#ifdef HAVE_SOCKADDR_SA_LEN - sin->sin_len = sizeof(struct sockaddr_in); -#endif - sin->sin_family = AF_INET; - memcpy(&sin->sin_addr, &ip->ip_dst, sizeof(ip->ip_dst)); - break; -#ifdef INET6 - case 6: - memset(&cookiecache[ninitiator].iaddr, 0, - sizeof(cookiecache[ninitiator].iaddr)); - memset(&cookiecache[ninitiator].raddr, 0, - sizeof(cookiecache[ninitiator].raddr)); - - ip6 = (struct ip6_hdr *)bp2; - sin6 = (struct sockaddr_in6 *)&cookiecache[ninitiator].iaddr; -#ifdef HAVE_SOCKADDR_SA_LEN - sin6->sin6_len = sizeof(struct sockaddr_in6); -#endif - sin6->sin6_family = AF_INET6; - memcpy(&sin6->sin6_addr, &ip6->ip6_src, sizeof(ip6->ip6_src)); - sin6 = (struct sockaddr_in6 *)&cookiecache[ninitiator].raddr; -#ifdef HAVE_SOCKADDR_SA_LEN - sin6->sin6_len = sizeof(struct sockaddr_in6); -#endif - sin6->sin6_family = AF_INET6; - memcpy(&sin6->sin6_addr, &ip6->ip6_dst, sizeof(ip6->ip6_dst)); - break; -#endif - default: - return; - } - memcpy(&cookiecache[ninitiator].initiator, in, sizeof(*in)); - ninitiator = (ninitiator + 1) % MAXINITIATORS; -} - -#define cookie_isinitiator(x, y) cookie_sidecheck((x), (y), 1) -#define cookie_isresponder(x, y) cookie_sidecheck((x), (y), 0) -static int -cookie_sidecheck(int i, const u_char *bp2, int initiator) -{ - struct sockaddr_storage ss; - struct sockaddr *sa; - struct ip *ip; - struct sockaddr_in *sin; -#ifdef INET6 - struct ip6_hdr *ip6; - struct sockaddr_in6 *sin6; -#endif - int salen; - - memset(&ss, 0, sizeof(ss)); - ip = (struct ip *)bp2; - switch (IP_V(ip)) { - case 4: - sin = (struct sockaddr_in *)&ss; -#ifdef HAVE_SOCKADDR_SA_LEN - sin->sin_len = sizeof(struct sockaddr_in); -#endif - sin->sin_family = AF_INET; - memcpy(&sin->sin_addr, &ip->ip_src, sizeof(ip->ip_src)); - break; -#ifdef INET6 - case 6: - ip6 = (struct ip6_hdr *)bp2; - sin6 = (struct sockaddr_in6 *)&ss; -#ifdef HAVE_SOCKADDR_SA_LEN - sin6->sin6_len = sizeof(struct sockaddr_in6); -#endif - sin6->sin6_family = AF_INET6; - memcpy(&sin6->sin6_addr, &ip6->ip6_src, sizeof(ip6->ip6_src)); - break; -#endif - default: - return 0; - } - - sa = (struct sockaddr *)&ss; - if (initiator) { - if (sa->sa_family != ((struct sockaddr *)&cookiecache[i].iaddr)->sa_family) - return 0; -#ifdef HAVE_SOCKADDR_SA_LEN - salen = sa->sa_len; -#else -#ifdef INET6 - if (sa->sa_family == AF_INET6) - salen = sizeof(struct sockaddr_in6); - else - salen = sizeof(struct sockaddr); -#else - salen = sizeof(struct sockaddr); -#endif -#endif - if (memcmp(&ss, &cookiecache[i].iaddr, salen) == 0) - return 1; - } else { - if (sa->sa_family != ((struct sockaddr *)&cookiecache[i].raddr)->sa_family) - return 0; -#ifdef HAVE_SOCKADDR_SA_LEN - salen = sa->sa_len; -#else -#ifdef INET6 - if (sa->sa_family == AF_INET6) - salen = sizeof(struct sockaddr_in6); - else - salen = sizeof(struct sockaddr); -#else - salen = sizeof(struct sockaddr); -#endif -#endif - if (memcmp(&ss, &cookiecache[i].raddr, salen) == 0) - return 1; - } - return 0; -} - -static int -rawprint(caddr_t loc, size_t len) -{ - static u_char *p; - size_t i; - - TCHECK2(*loc, len); - - p = (u_char *)loc; - for (i = 0; i < len; i++) - printf("%02x", p[i] & 0xff); - return 1; -trunc: - return 0; -} - -struct attrmap { - const char *type; - u_int nvalue; - const char *value[30]; /*XXX*/ -}; - -static const u_char * -isakmp_attrmap_print(const u_char *p, const u_char *ep, - const struct attrmap *map, size_t nmap) -{ - u_int16_t *q; - int totlen; - u_int32_t t, v; - - q = (u_int16_t *)p; - if (p[0] & 0x80) - totlen = 4; - else - totlen = 4 + EXTRACT_16BITS(&q[1]); - if (ep < p + totlen) { - printf("[|attr]"); - return ep + 1; - } - - printf("("); - t = EXTRACT_16BITS(&q[0]) & 0x7fff; - if (map && t < nmap && map[t].type) - printf("type=%s ", map[t].type); - else - printf("type=#%d ", t); - if (p[0] & 0x80) { - printf("value="); - v = EXTRACT_16BITS(&q[1]); - if (map && t < nmap && v < map[t].nvalue && map[t].value[v]) - printf("%s", map[t].value[v]); - else - rawprint((caddr_t)&q[1], 2); - } else { - printf("len=%d value=", EXTRACT_16BITS(&q[1])); - rawprint((caddr_t)&p[4], EXTRACT_16BITS(&q[1])); - } - printf(")"); - return p + totlen; -} - -static const u_char * -isakmp_attr_print(const u_char *p, const u_char *ep) -{ - u_int16_t *q; - int totlen; - u_int32_t t; - - q = (u_int16_t *)p; - if (p[0] & 0x80) - totlen = 4; - else - totlen = 4 + EXTRACT_16BITS(&q[1]); - if (ep < p + totlen) { - printf("[|attr]"); - return ep + 1; - } - - printf("("); - t = EXTRACT_16BITS(&q[0]) & 0x7fff; - printf("type=#%d ", t); - if (p[0] & 0x80) { - printf("value="); - t = q[1]; - rawprint((caddr_t)&q[1], 2); - } else { - printf("len=%d value=", EXTRACT_16BITS(&q[1])); - rawprint((caddr_t)&p[2], EXTRACT_16BITS(&q[1])); - } - printf(")"); - return p + totlen; -} - -static const u_char * -isakmp_sa_print(const struct isakmp_gen *ext, - u_int item_len _U_, - const u_char *ep, u_int32_t phase, u_int32_t doi0 _U_, - u_int32_t proto0, int depth) -{ - const struct isakmp_pl_sa *p; - struct isakmp_pl_sa sa; - const u_int32_t *q; - u_int32_t doi, sit, ident; - const u_char *cp, *np; - int t; - - printf("%s:", NPSTR(ISAKMP_NPTYPE_SA)); - - p = (struct isakmp_pl_sa *)ext; - TCHECK(*p); - safememcpy(&sa, ext, sizeof(sa)); - doi = ntohl(sa.doi); - sit = ntohl(sa.sit); - if (doi != 1) { - printf(" doi=%d", doi); - printf(" situation=%u", (u_int32_t)ntohl(sa.sit)); - return (u_char *)(p + 1); - } - - printf(" doi=ipsec"); - q = (u_int32_t *)&sa.sit; - printf(" situation="); - t = 0; - if (sit & 0x01) { - printf("identity"); - t++; - } - if (sit & 0x02) { - printf("%ssecrecy", t ? "+" : ""); - t++; - } - if (sit & 0x04) - printf("%sintegrity", t ? "+" : ""); - - np = (u_char *)ext + sizeof(sa); - if (sit != 0x01) { - TCHECK2(*(ext + 1), sizeof(ident)); - safememcpy(&ident, ext + 1, sizeof(ident)); - printf(" ident=%u", (u_int32_t)ntohl(ident)); - np += sizeof(ident); - } - - ext = (struct isakmp_gen *)np; - TCHECK(*ext); - - cp = isakmp_sub_print(ISAKMP_NPTYPE_P, ext, ep, phase, doi, proto0, - depth); - - return cp; -trunc: - printf(" [|%s]", NPSTR(ISAKMP_NPTYPE_SA)); - return NULL; -} - -static const u_char * -isakmp_p_print(const struct isakmp_gen *ext, u_int item_len _U_, - const u_char *ep, u_int32_t phase, u_int32_t doi0, - u_int32_t proto0 _U_, int depth) -{ - const struct isakmp_pl_p *p; - struct isakmp_pl_p prop; - const u_char *cp; - - printf("%s:", NPSTR(ISAKMP_NPTYPE_P)); - - p = (struct isakmp_pl_p *)ext; - TCHECK(*p); - safememcpy(&prop, ext, sizeof(prop)); - printf(" #%d protoid=%s transform=%d", - prop.p_no, PROTOIDSTR(prop.prot_id), prop.num_t); - if (prop.spi_size) { - printf(" spi="); - if (!rawprint((caddr_t)(p + 1), prop.spi_size)) - goto trunc; - } - - ext = (struct isakmp_gen *)((u_char *)(p + 1) + prop.spi_size); - TCHECK(*ext); - - cp = isakmp_sub_print(ISAKMP_NPTYPE_T, ext, ep, phase, doi0, - prop.prot_id, depth); - - return cp; -trunc: - printf(" [|%s]", NPSTR(ISAKMP_NPTYPE_P)); - return NULL; -} - -static const char *isakmp_p_map[] = { - NULL, "ike", -}; - -static const char *ah_p_map[] = { - NULL, "(reserved)", "md5", "sha", "1des", - "sha2-256", "sha2-384", "sha2-512", -}; - -static const char *esp_p_map[] = { - NULL, "1des-iv64", "1des", "3des", "rc5", "idea", "cast", - "blowfish", "3idea", "1des-iv32", "rc4", "null", "aes" -}; - -static const char *ipcomp_p_map[] = { - NULL, "oui", "deflate", "lzs", -}; - -const struct attrmap ipsec_t_map[] = { - { NULL, 0, { NULL } }, - { "lifetype", 3, { NULL, "sec", "kb", }, }, - { "life", 0, { NULL } }, - { "group desc", 5, { NULL, "modp768", "modp1024", "EC2N 2^155", - "EC2N 2^185", }, }, - { "enc mode", 3, { NULL, "tunnel", "transport", }, }, - { "auth", 5, { NULL, "hmac-md5", "hmac-sha1", "1des-mac", "keyed", }, }, - { "keylen", 0, { NULL } }, - { "rounds", 0, { NULL } }, - { "dictsize", 0, { NULL } }, - { "privalg", 0, { NULL } }, -}; - -const struct attrmap oakley_t_map[] = { - { NULL, 0, { NULL } }, - { "enc", 8, { NULL, "1des", "idea", "blowfish", "rc5", - "3des", "cast", "aes", }, }, - { "hash", 7, { NULL, "md5", "sha1", "tiger", - "sha2-256", "sha2-384", "sha2-512", }, }, - { "auth", 6, { NULL, "preshared", "dss", "rsa sig", "rsa enc", - "rsa enc revised", }, }, - { "group desc", 5, { NULL, "modp768", "modp1024", "EC2N 2^155", - "EC2N 2^185", }, }, - { "group type", 4, { NULL, "MODP", "ECP", "EC2N", }, }, - { "group prime", 0, { NULL } }, - { "group gen1", 0, { NULL } }, - { "group gen2", 0, { NULL } }, - { "group curve A", 0, { NULL } }, - { "group curve B", 0, { NULL } }, - { "lifetype", 3, { NULL, "sec", "kb", }, }, - { "lifeduration", 0, { NULL } }, - { "prf", 0, { NULL } }, - { "keylen", 0, { NULL } }, - { "field", 0, { NULL } }, - { "order", 0, { NULL } }, -}; - -static const u_char * -isakmp_t_print(const struct isakmp_gen *ext, u_int item_len, - const u_char *ep, u_int32_t phase _U_, u_int32_t doi _U_, - u_int32_t proto, int depth _U_) -{ - const struct isakmp_pl_t *p; - struct isakmp_pl_t t; - const u_char *cp; - const char *idstr; - const struct attrmap *map; - size_t nmap; - const u_char *ep2; - - printf("%s:", NPSTR(ISAKMP_NPTYPE_T)); - - p = (struct isakmp_pl_t *)ext; - TCHECK(*p); - safememcpy(&t, ext, sizeof(t)); - - switch (proto) { - case 1: - idstr = STR_OR_ID(t.t_id, isakmp_p_map); - map = oakley_t_map; - nmap = sizeof(oakley_t_map)/sizeof(oakley_t_map[0]); - break; - case 2: - idstr = STR_OR_ID(t.t_id, ah_p_map); - map = ipsec_t_map; - nmap = sizeof(ipsec_t_map)/sizeof(ipsec_t_map[0]); - break; - case 3: - idstr = STR_OR_ID(t.t_id, esp_p_map); - map = ipsec_t_map; - nmap = sizeof(ipsec_t_map)/sizeof(ipsec_t_map[0]); - break; - case 4: - idstr = STR_OR_ID(t.t_id, ipcomp_p_map); - map = ipsec_t_map; - nmap = sizeof(ipsec_t_map)/sizeof(ipsec_t_map[0]); - break; - default: - idstr = NULL; - map = NULL; - nmap = 0; - break; - } - - if (idstr) - printf(" #%d id=%s ", t.t_no, idstr); - else - printf(" #%d id=%d ", t.t_no, t.t_id); - cp = (u_char *)(p + 1); - ep2 = (u_char *)p + item_len; - while (cp < ep && cp < ep2) { - if (map && nmap) { - cp = isakmp_attrmap_print(cp, (ep < ep2) ? ep : ep2, - map, nmap); - } else - cp = isakmp_attr_print(cp, (ep < ep2) ? ep : ep2); - } - if (ep < ep2) - printf("..."); - return cp; -trunc: - printf(" [|%s]", NPSTR(ISAKMP_NPTYPE_T)); - return NULL; -} - -static const u_char * -isakmp_ke_print(const struct isakmp_gen *ext, u_int item_len _U_, - const u_char *ep _U_, u_int32_t phase _U_, u_int32_t doi _U_, - u_int32_t proto _U_, int depth _U_) -{ - struct isakmp_gen e; - - printf("%s:", NPSTR(ISAKMP_NPTYPE_KE)); - - TCHECK(*ext); - safememcpy(&e, ext, sizeof(e)); - printf(" key len=%d", ntohs(e.len) - 4); - if (2 < vflag && 4 < ntohs(e.len)) { - printf(" "); - if (!rawprint((caddr_t)(ext + 1), ntohs(e.len) - 4)) - goto trunc; - } - return (u_char *)ext + ntohs(e.len); -trunc: - printf(" [|%s]", NPSTR(ISAKMP_NPTYPE_KE)); - return NULL; -} - -static const u_char * -isakmp_id_print(const struct isakmp_gen *ext, u_int item_len _U_, - const u_char *ep _U_, u_int32_t phase, u_int32_t doi _U_, - u_int32_t proto _U_, int depth _U_) -{ -#define USE_IPSECDOI_IN_PHASE1 1 - const struct isakmp_pl_id *p; - struct isakmp_pl_id id; - static const char *idtypestr[] = { - "IPv4", "IPv4net", "IPv6", "IPv6net", - }; - static const char *ipsecidtypestr[] = { - NULL, "IPv4", "FQDN", "user FQDN", "IPv4net", "IPv6", - "IPv6net", "IPv4range", "IPv6range", "ASN1 DN", "ASN1 GN", - "keyid", - }; - int len; - const u_char *data; - - printf("%s:", NPSTR(ISAKMP_NPTYPE_ID)); - - p = (struct isakmp_pl_id *)ext; - TCHECK(*p); - safememcpy(&id, ext, sizeof(id)); - if (sizeof(*p) < item_len) { - data = (u_char *)(p + 1); - len = item_len - sizeof(*p); - } else { - data = NULL; - len = 0; - } - -#if 0 /*debug*/ - printf(" [phase=%d doi=%d proto=%d]", phase, doi, proto); -#endif - switch (phase) { -#ifndef USE_IPSECDOI_IN_PHASE1 - case 1: -#endif - default: - printf(" idtype=%s", STR_OR_ID(id.d.id_type, idtypestr)); - printf(" doi_data=%u", - (u_int32_t)(ntohl(id.d.doi_data) & 0xffffff)); - break; - -#ifdef USE_IPSECDOI_IN_PHASE1 - case 1: -#endif - case 2: - { - const struct ipsecdoi_id *p; - struct ipsecdoi_id id; - struct protoent *pe; - - p = (struct ipsecdoi_id *)ext; - TCHECK(*p); - safememcpy(&id, ext, sizeof(id)); - printf(" idtype=%s", STR_OR_ID(id.type, ipsecidtypestr)); - if (id.proto_id) { -#ifndef WIN32 - setprotoent(1); -#endif /* WIN32 */ - pe = getprotobynumber(id.proto_id); - if (pe) - printf(" protoid=%s", pe->p_name); -#ifndef WIN32 - endprotoent(); -#endif /* WIN32 */ - } else { - /* it DOES NOT mean IPPROTO_IP! */ - printf(" protoid=%s", "0"); - } - printf(" port=%d", ntohs(id.port)); - if (!len) - break; - if (data == NULL) - goto trunc; - TCHECK2(*data, len); - switch (id.type) { - case IPSECDOI_ID_IPV4_ADDR: - if (len < 4) - printf(" len=%d [bad: < 4]", len); - else - printf(" len=%d %s", len, ipaddr_string(data)); - len = 0; - break; - case IPSECDOI_ID_FQDN: - case IPSECDOI_ID_USER_FQDN: - { - int i; - printf(" len=%d ", len); - for (i = 0; i < len; i++) - safeputchar(data[i]); - len = 0; - break; - } - case IPSECDOI_ID_IPV4_ADDR_SUBNET: - { - const u_char *mask; - if (len < 8) - printf(" len=%d [bad: < 8]", len); - else { - mask = data + sizeof(struct in_addr); - printf(" len=%d %s/%u.%u.%u.%u", len, - ipaddr_string(data), - mask[0], mask[1], mask[2], mask[3]); - } - len = 0; - break; - } -#ifdef INET6 - case IPSECDOI_ID_IPV6_ADDR: - if (len < 16) - printf(" len=%d [bad: < 16]", len); - else - printf(" len=%d %s", len, ip6addr_string(data)); - len = 0; - break; - case IPSECDOI_ID_IPV6_ADDR_SUBNET: - { - const u_int32_t *mask; - if (len < 20) - printf(" len=%d [bad: < 20]", len); - else { - mask = (u_int32_t *)(data + sizeof(struct in6_addr)); - /*XXX*/ - printf(" len=%d %s/0x%08x%08x%08x%08x", len, - ip6addr_string(data), - mask[0], mask[1], mask[2], mask[3]); - } - len = 0; - break; - } -#endif /*INET6*/ - case IPSECDOI_ID_IPV4_ADDR_RANGE: - if (len < 8) - printf(" len=%d [bad: < 8]", len); - else { - printf(" len=%d %s-%s", len, - ipaddr_string(data), - ipaddr_string(data + sizeof(struct in_addr))); - } - len = 0; - break; -#ifdef INET6 - case IPSECDOI_ID_IPV6_ADDR_RANGE: - if (len < 32) - printf(" len=%d [bad: < 32]", len); - else { - printf(" len=%d %s-%s", len, - ip6addr_string(data), - ip6addr_string(data + sizeof(struct in6_addr))); - } - len = 0; - break; -#endif /*INET6*/ - case IPSECDOI_ID_DER_ASN1_DN: - case IPSECDOI_ID_DER_ASN1_GN: - case IPSECDOI_ID_KEY_ID: - break; - } - break; - } - } - if (data && len) { - printf(" len=%d", len); - if (2 < vflag) { - printf(" "); - if (!rawprint((caddr_t)data, len)) - goto trunc; - } - } - return (u_char *)ext + item_len; -trunc: - printf(" [|%s]", NPSTR(ISAKMP_NPTYPE_ID)); - return NULL; -} - -static const u_char * -isakmp_cert_print(const struct isakmp_gen *ext, u_int item_len _U_, - const u_char *ep _U_, u_int32_t phase _U_, - u_int32_t doi0 _U_, - u_int32_t proto0 _U_, int depth _U_) -{ - const struct isakmp_pl_cert *p; - struct isakmp_pl_cert cert; - static const char *certstr[] = { - "none", "pkcs7", "pgp", "dns", - "x509sign", "x509ke", "kerberos", "crl", - "arl", "spki", "x509attr", - }; - - printf("%s:", NPSTR(ISAKMP_NPTYPE_CERT)); - - p = (struct isakmp_pl_cert *)ext; - TCHECK(*p); - safememcpy(&cert, ext, sizeof(cert)); - printf(" len=%d", item_len - 4); - printf(" type=%s", STR_OR_ID((cert.encode), certstr)); - if (2 < vflag && 4 < item_len) { - printf(" "); - if (!rawprint((caddr_t)(ext + 1), item_len - 4)) - goto trunc; - } - return (u_char *)ext + item_len; -trunc: - printf(" [|%s]", NPSTR(ISAKMP_NPTYPE_CERT)); - return NULL; -} - -static const u_char * -isakmp_cr_print(const struct isakmp_gen *ext, u_int item_len _U_, - const u_char *ep _U_, u_int32_t phase _U_, u_int32_t doi0 _U_, - u_int32_t proto0 _U_, int depth _U_) -{ - const struct isakmp_pl_cert *p; - struct isakmp_pl_cert cert; - static const char *certstr[] = { - "none", "pkcs7", "pgp", "dns", - "x509sign", "x509ke", "kerberos", "crl", - "arl", "spki", "x509attr", - }; - - printf("%s:", NPSTR(ISAKMP_NPTYPE_CR)); - - p = (struct isakmp_pl_cert *)ext; - TCHECK(*p); - safememcpy(&cert, ext, sizeof(cert)); - printf(" len=%d", item_len - 4); - printf(" type=%s", STR_OR_ID((cert.encode), certstr)); - if (2 < vflag && 4 < item_len) { - printf(" "); - if (!rawprint((caddr_t)(ext + 1), item_len - 4)) - goto trunc; - } - return (u_char *)ext + item_len; -trunc: - printf(" [|%s]", NPSTR(ISAKMP_NPTYPE_CR)); - return NULL; -} - -static const u_char * -isakmp_hash_print(const struct isakmp_gen *ext, u_int item_len _U_, - const u_char *ep _U_, u_int32_t phase _U_, u_int32_t doi _U_, - u_int32_t proto _U_, int depth _U_) -{ - struct isakmp_gen e; - - printf("%s:", NPSTR(ISAKMP_NPTYPE_HASH)); - - TCHECK(*ext); - safememcpy(&e, ext, sizeof(e)); - printf(" len=%d", ntohs(e.len) - 4); - if (2 < vflag && 4 < ntohs(e.len)) { - printf(" "); - if (!rawprint((caddr_t)(ext + 1), ntohs(e.len) - 4)) - goto trunc; - } - return (u_char *)ext + ntohs(e.len); -trunc: - printf(" [|%s]", NPSTR(ISAKMP_NPTYPE_HASH)); - return NULL; -} - -static const u_char * -isakmp_sig_print(const struct isakmp_gen *ext, u_int item_len _U_, - const u_char *ep _U_, u_int32_t phase _U_, u_int32_t doi _U_, - u_int32_t proto _U_, int depth _U_) -{ - struct isakmp_gen e; - - printf("%s:", NPSTR(ISAKMP_NPTYPE_SIG)); - - TCHECK(*ext); - safememcpy(&e, ext, sizeof(e)); - printf(" len=%d", ntohs(e.len) - 4); - if (2 < vflag && 4 < ntohs(e.len)) { - printf(" "); - if (!rawprint((caddr_t)(ext + 1), ntohs(e.len) - 4)) - goto trunc; - } - return (u_char *)ext + ntohs(e.len); -trunc: - printf(" [|%s]", NPSTR(ISAKMP_NPTYPE_SIG)); - return NULL; -} - -static const u_char * -isakmp_nonce_print(const struct isakmp_gen *ext, - u_int item_len _U_, - const u_char *ep _U_, - u_int32_t phase _U_, u_int32_t doi _U_, - u_int32_t proto _U_, int depth _U_) -{ - struct isakmp_gen e; - - printf("%s:", NPSTR(ISAKMP_NPTYPE_NONCE)); - - TCHECK(*ext); - safememcpy(&e, ext, sizeof(e)); - printf(" n len=%d", ntohs(e.len) - 4); - if (2 < vflag && 4 < ntohs(e.len)) { - printf(" "); - if (!rawprint((caddr_t)(ext + 1), ntohs(e.len) - 4)) - goto trunc; - } - return (u_char *)ext + ntohs(e.len); -trunc: - printf(" [|%s]", NPSTR(ISAKMP_NPTYPE_NONCE)); - return NULL; -} - -static const u_char * -isakmp_n_print(const struct isakmp_gen *ext, u_int item_len, - const u_char *ep, u_int32_t phase, u_int32_t doi0 _U_, - u_int32_t proto0 _U_, int depth) -{ - struct isakmp_pl_n *p, n; - const u_char *cp; - u_char *ep2; - u_int32_t doi; - u_int32_t proto; - static const char *notify_error_str[] = { - NULL, "INVALID-PAYLOAD-TYPE", - "DOI-NOT-SUPPORTED", "SITUATION-NOT-SUPPORTED", - "INVALID-COOKIE", "INVALID-MAJOR-VERSION", - "INVALID-MINOR-VERSION", "INVALID-EXCHANGE-TYPE", - "INVALID-FLAGS", "INVALID-MESSAGE-ID", - "INVALID-PROTOCOL-ID", "INVALID-SPI", - "INVALID-TRANSFORM-ID", "ATTRIBUTES-NOT-SUPPORTED", - "NO-PROPOSAL-CHOSEN", "BAD-PROPOSAL-SYNTAX", - "PAYLOAD-MALFORMED", "INVALID-KEY-INFORMATION", - "INVALID-ID-INFORMATION", "INVALID-CERT-ENCODING", - "INVALID-CERTIFICATE", "CERT-TYPE-UNSUPPORTED", - "INVALID-CERT-AUTHORITY", "INVALID-HASH-INFORMATION", - "AUTHENTICATION-FAILED", "INVALID-SIGNATURE", - "ADDRESS-NOTIFICATION", "NOTIFY-SA-LIFETIME", - "CERTIFICATE-UNAVAILABLE", "UNSUPPORTED-EXCHANGE-TYPE", - "UNEQUAL-PAYLOAD-LENGTHS", - }; - static const char *ipsec_notify_error_str[] = { - "RESERVED", - }; - static const char *notify_status_str[] = { - "CONNECTED", - }; - static const char *ipsec_notify_status_str[] = { - "RESPONDER-LIFETIME", "REPLAY-STATUS", - "INITIAL-CONTACT", - }; -/* NOTE: these macro must be called with x in proper range */ - -/* 0 - 8191 */ -#define NOTIFY_ERROR_STR(x) \ - STR_OR_ID((x), notify_error_str) - -/* 8192 - 16383 */ -#define IPSEC_NOTIFY_ERROR_STR(x) \ - STR_OR_ID((u_int)((x) - 8192), ipsec_notify_error_str) - -/* 16384 - 24575 */ -#define NOTIFY_STATUS_STR(x) \ - STR_OR_ID((u_int)((x) - 16384), notify_status_str) - -/* 24576 - 32767 */ -#define IPSEC_NOTIFY_STATUS_STR(x) \ - STR_OR_ID((u_int)((x) - 24576), ipsec_notify_status_str) - - printf("%s:", NPSTR(ISAKMP_NPTYPE_N)); - - p = (struct isakmp_pl_n *)ext; - TCHECK(*p); - safememcpy(&n, ext, sizeof(n)); - doi = ntohl(n.doi); - proto = n.prot_id; - if (doi != 1) { - printf(" doi=%d", doi); - printf(" proto=%d", proto); - if (ntohs(n.type) < 8192) - printf(" type=%s", NOTIFY_ERROR_STR(ntohs(n.type))); - else if (ntohs(n.type) < 16384) - printf(" type=%s", numstr(ntohs(n.type))); - else if (ntohs(n.type) < 24576) - printf(" type=%s", NOTIFY_STATUS_STR(ntohs(n.type))); - else - printf(" type=%s", numstr(ntohs(n.type))); - if (n.spi_size) { - printf(" spi="); - if (!rawprint((caddr_t)(p + 1), n.spi_size)) - goto trunc; - } - return (u_char *)(p + 1) + n.spi_size; - } - - printf(" doi=ipsec"); - printf(" proto=%s", PROTOIDSTR(proto)); - if (ntohs(n.type) < 8192) - printf(" type=%s", NOTIFY_ERROR_STR(ntohs(n.type))); - else if (ntohs(n.type) < 16384) - printf(" type=%s", IPSEC_NOTIFY_ERROR_STR(ntohs(n.type))); - else if (ntohs(n.type) < 24576) - printf(" type=%s", NOTIFY_STATUS_STR(ntohs(n.type))); - else if (ntohs(n.type) < 32768) - printf(" type=%s", IPSEC_NOTIFY_STATUS_STR(ntohs(n.type))); - else - printf(" type=%s", numstr(ntohs(n.type))); - if (n.spi_size) { - printf(" spi="); - if (!rawprint((caddr_t)(p + 1), n.spi_size)) - goto trunc; - } - - cp = (u_char *)(p + 1) + n.spi_size; - ep2 = (u_char *)p + item_len; - - if (cp < ep) { - printf(" orig=("); - switch (ntohs(n.type)) { - case IPSECDOI_NTYPE_RESPONDER_LIFETIME: - { - const struct attrmap *map = oakley_t_map; - size_t nmap = sizeof(oakley_t_map)/sizeof(oakley_t_map[0]); - while (cp < ep && cp < ep2) { - cp = isakmp_attrmap_print(cp, - (ep < ep2) ? ep : ep2, map, nmap); - } - break; - } - case IPSECDOI_NTYPE_REPLAY_STATUS: - printf("replay detection %sabled", - (*(u_int32_t *)cp) ? "en" : "dis"); - break; - case ISAKMP_NTYPE_NO_PROPOSAL_CHOSEN: - if (isakmp_sub_print(ISAKMP_NPTYPE_SA, - (struct isakmp_gen *)cp, ep, phase, doi, proto, - depth) == NULL) - return NULL; - break; - default: - /* NULL is dummy */ - isakmp_print(gndo, cp, - item_len - sizeof(*p) - n.spi_size, - NULL); - } - printf(")"); - } - return (u_char *)ext + item_len; -trunc: - printf(" [|%s]", NPSTR(ISAKMP_NPTYPE_N)); - return NULL; -} - -static const u_char * -isakmp_d_print(const struct isakmp_gen *ext, u_int item_len _U_, - const u_char *ep _U_, u_int32_t phase _U_, u_int32_t doi0 _U_, - u_int32_t proto0 _U_, int depth _U_) -{ - const struct isakmp_pl_d *p; - struct isakmp_pl_d d; - const u_int8_t *q; - u_int32_t doi; - u_int32_t proto; - int i; - - printf("%s:", NPSTR(ISAKMP_NPTYPE_D)); - - p = (struct isakmp_pl_d *)ext; - TCHECK(*p); - safememcpy(&d, ext, sizeof(d)); - doi = ntohl(d.doi); - proto = d.prot_id; - if (doi != 1) { - printf(" doi=%u", doi); - printf(" proto=%u", proto); - } else { - printf(" doi=ipsec"); - printf(" proto=%s", PROTOIDSTR(proto)); - } - printf(" spilen=%u", d.spi_size); - printf(" nspi=%u", ntohs(d.num_spi)); - printf(" spi="); - q = (u_int8_t *)(p + 1); - for (i = 0; i < ntohs(d.num_spi); i++) { - if (i != 0) - printf(","); - if (!rawprint((caddr_t)q, d.spi_size)) - goto trunc; - q += d.spi_size; - } - return q; -trunc: - printf(" [|%s]", NPSTR(ISAKMP_NPTYPE_D)); - return NULL; -} - -static const u_char * -isakmp_vid_print(const struct isakmp_gen *ext, - u_int item_len _U_, const u_char *ep _U_, - u_int32_t phase _U_, u_int32_t doi _U_, - u_int32_t proto _U_, int depth _U_) -{ - struct isakmp_gen e; - - printf("%s:", NPSTR(ISAKMP_NPTYPE_VID)); - - TCHECK(*ext); - safememcpy(&e, ext, sizeof(e)); - printf(" len=%d", ntohs(e.len) - 4); - if (2 < vflag && 4 < ntohs(e.len)) { - printf(" "); - if (!rawprint((caddr_t)(ext + 1), ntohs(e.len) - 4)) - goto trunc; - } - return (u_char *)ext + ntohs(e.len); -trunc: - printf(" [|%s]", NPSTR(ISAKMP_NPTYPE_VID)); - return NULL; -} - -static const u_char * -isakmp_sub0_print(u_char np, const struct isakmp_gen *ext, const u_char *ep, - u_int32_t phase, u_int32_t doi, u_int32_t proto, int depth) -{ - const u_char *cp; - struct isakmp_gen e; - u_int item_len; - - cp = (u_char *)ext; - TCHECK(*ext); - safememcpy(&e, ext, sizeof(e)); - - /* - * Since we can't have a payload length of less than 4 bytes, - * we need to bail out here if the generic header is nonsensical - * or truncated, otherwise we could loop forever processing - * zero-length items or otherwise misdissect the packet. - */ - item_len = ntohs(e.len); - if (item_len <= 4) - return NULL; - - if (NPFUNC(np)) { - /* - * XXX - what if item_len is too short, or too long, - * for this payload type? - */ - cp = (*npfunc[np])(ext, item_len, ep, phase, doi, proto, depth); - } else { - printf("%s", NPSTR(np)); - cp += item_len; - } - - return cp; -trunc: - printf(" [|isakmp]"); - return NULL; -} - -static const u_char * -isakmp_sub_print(u_char np, const struct isakmp_gen *ext, const u_char *ep, - u_int32_t phase, u_int32_t doi, u_int32_t proto, int depth) -{ - const u_char *cp; - int i; - struct isakmp_gen e; - - cp = (const u_char *)ext; - - while (np) { - TCHECK(*ext); - - safememcpy(&e, ext, sizeof(e)); - - TCHECK2(*ext, ntohs(e.len)); - - depth++; - printf("\n"); - for (i = 0; i < depth; i++) - printf(" "); - printf("("); - cp = isakmp_sub0_print(np, ext, ep, phase, doi, proto, depth); - printf(")"); - depth--; - - if (cp == NULL) { - /* Zero-length subitem */ - return NULL; - } - - np = e.np; - ext = (struct isakmp_gen *)cp; - } - return cp; -trunc: - printf(" [|%s]", NPSTR(np)); - return NULL; -} - -static char * -numstr(int x) -{ - static char buf[20]; - snprintf(buf, sizeof(buf), "#%d", x); - return buf; -} - -/* - * some compiler tries to optimize memcpy(), using the alignment constraint - * on the argument pointer type. by using this function, we try to avoid the - * optimization. - */ -static void -safememcpy(void *p, const void *q, size_t l) -{ - memcpy(p, q, l); -} - -void -isakmp_print(netdissect_options *ndo, - const u_char *bp, u_int length, - const u_char *bp2) -{ - const struct isakmp *p; - struct isakmp base; - const u_char *ep; - u_char np; - int i; - int phase; - int major, minor; - - p = (const struct isakmp *)bp; - ep = ndo->ndo_snapend; - - if ((struct isakmp *)ep < p + 1) { - printf("[|isakmp]"); - return; - } - - safememcpy(&base, p, sizeof(base)); - - printf("isakmp"); - if (vflag) { - major = (base.vers & ISAKMP_VERS_MAJOR) - >> ISAKMP_VERS_MAJOR_SHIFT; - minor = (base.vers & ISAKMP_VERS_MINOR) - >> ISAKMP_VERS_MINOR_SHIFT; - printf(" %d.%d", major, minor); - } - - if (vflag) { - printf(" msgid "); - rawprint((caddr_t)&base.msgid, sizeof(base.msgid)); - } - - if (1 < vflag) { - printf(" cookie "); - rawprint((caddr_t)&base.i_ck, sizeof(base.i_ck)); - printf("->"); - rawprint((caddr_t)&base.r_ck, sizeof(base.r_ck)); - } - printf(":"); - - phase = (*(u_int32_t *)base.msgid == 0) ? 1 : 2; - if (phase == 1) - printf(" phase %d", phase); - else - printf(" phase %d/others", phase); - - i = cookie_find(&base.i_ck); - if (i < 0) { - if (iszero((u_char *)&base.r_ck, sizeof(base.r_ck))) { - /* the first packet */ - printf(" I"); - if (bp2) - cookie_record(&base.i_ck, bp2); - } else - printf(" ?"); - } else { - if (bp2 && cookie_isinitiator(i, bp2)) - printf(" I"); - else if (bp2 && cookie_isresponder(i, bp2)) - printf(" R"); - else - printf(" ?"); - } - - printf(" %s", ETYPESTR(base.etype)); - if (base.flags) { - printf("[%s%s]", base.flags & ISAKMP_FLAG_E ? "E" : "", - base.flags & ISAKMP_FLAG_C ? "C" : ""); - } - - if (vflag) { - const struct isakmp_gen *ext; - int nparen; - -#define CHECKLEN(p, np) \ - if (ep < (u_char *)(p)) { \ - printf(" [|%s]", NPSTR(np)); \ - goto done; \ - } - - printf(":"); - - /* regardless of phase... */ - if (base.flags & ISAKMP_FLAG_E) { - /* - * encrypted, nothing we can do right now. - * we hope to decrypt the packet in the future... - */ - printf(" [encrypted %s]", NPSTR(base.np)); - goto done; - } - - nparen = 0; - CHECKLEN(p + 1, base.np) - - np = base.np; - ext = (struct isakmp_gen *)(p + 1); - isakmp_sub_print(np, ext, ep, phase, 0, 0, 0); - } - -done: - if (vflag) { - if (ntohl(base.len) != length) { - printf(" (len mismatch: isakmp %u/ip %u)", - (u_int32_t)ntohl(base.len), length); - } - } -} - -void -isakmp_rfc3948_print(netdissect_options *ndo, - const u_char *bp, u_int length, - const u_char *bp2) -{ - const u_char *ep; - ep = ndo->ndo_snapend; - - if(length == 1 && bp[0]==0xff) { - ND_PRINT((ndo, "isakmp-nat-keep-alive")); - return; - } - - if(length < 4) { - goto trunc; - } - - /* - * see if this is an IKE packet - */ - if(bp[0]==0 && bp[1]==0 && bp[2]==0 && bp[3]==0) { - ND_PRINT((ndo, "NONESP-encap: ")); - isakmp_print(ndo, bp+4, length-4, bp2); - return; - } - - /* must be an ESP packet */ - { - int nh, enh, padlen; - int advance; - - ND_PRINT((ndo, "UDP-encap: ")); - - advance = esp_print(ndo, bp, length, bp2, &enh, &padlen); - if(advance <= 0) - return; - - bp += advance; - length -= advance + padlen; - nh = enh & 0xff; - - ip_print_inner(ndo, bp, length, nh, bp2); - return; - } - -trunc: - printf("[|isakmp]"); - return; -} - -/* - * Local Variables: - * c-style: whitesmith - * c-basic-offset: 8 - * End: - */ - - - - diff --git a/contrib/tcpdump/print-isoclns.c b/contrib/tcpdump/print-isoclns.c deleted file mode 100644 index ca2481ffc2683..0000000000000 --- a/contrib/tcpdump/print-isoclns.c +++ /dev/null @@ -1,2691 +0,0 @@ -/* - * Copyright (c) 1992, 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * Original code by Matt Thomas, Digital Equipment Corporation - * - * Extensively modified by Hannes Gredler (hannes@juniper.net) for more - * complete IS-IS & CLNP support. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-isoclns.c,v 1.133.2.19 2005/09/20 10:15:22 hannes Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "ethertype.h" -#include "ether.h" -#include "nlpid.h" -#include "extract.h" -#include "gmpls.h" -#include "oui.h" - -#define IPV4 1 /* AFI value */ -#define IPV6 2 /* AFI value */ - -/* - * IS-IS is defined in ISO 10589. Look there for protocol definitions. - */ - -#define SYSTEM_ID_LEN ETHER_ADDR_LEN -#define NODE_ID_LEN SYSTEM_ID_LEN+1 -#define LSP_ID_LEN SYSTEM_ID_LEN+2 - -#define ISIS_VERSION 1 -#define ESIS_VERSION 1 -#define CLNP_VERSION 1 - -#define ISIS_PDU_TYPE_MASK 0x1F -#define ESIS_PDU_TYPE_MASK 0x1F -#define CLNP_PDU_TYPE_MASK 0x1F -#define CLNP_FLAG_MASK 0xE0 -#define ISIS_LAN_PRIORITY_MASK 0x7F - -#define ISIS_PDU_L1_LAN_IIH 15 -#define ISIS_PDU_L2_LAN_IIH 16 -#define ISIS_PDU_PTP_IIH 17 -#define ISIS_PDU_L1_LSP 18 -#define ISIS_PDU_L2_LSP 20 -#define ISIS_PDU_L1_CSNP 24 -#define ISIS_PDU_L2_CSNP 25 -#define ISIS_PDU_L1_PSNP 26 -#define ISIS_PDU_L2_PSNP 27 - -static struct tok isis_pdu_values[] = { - { ISIS_PDU_L1_LAN_IIH, "L1 Lan IIH"}, - { ISIS_PDU_L2_LAN_IIH, "L2 Lan IIH"}, - { ISIS_PDU_PTP_IIH, "p2p IIH"}, - { ISIS_PDU_L1_LSP, "L1 LSP"}, - { ISIS_PDU_L2_LSP, "L2 LSP"}, - { ISIS_PDU_L1_CSNP, "L1 CSNP"}, - { ISIS_PDU_L2_CSNP, "L2 CSNP"}, - { ISIS_PDU_L1_PSNP, "L1 PSNP"}, - { ISIS_PDU_L2_PSNP, "L2 PSNP"}, - { 0, NULL} -}; - -/* - * A TLV is a tuple of a type, length and a value and is normally used for - * encoding information in all sorts of places. This is an enumeration of - * the well known types. - * - * list taken from rfc3359 plus some memory from veterans ;-) - */ - -#define ISIS_TLV_AREA_ADDR 1 /* iso10589 */ -#define ISIS_TLV_IS_REACH 2 /* iso10589 */ -#define ISIS_TLV_ESNEIGH 3 /* iso10589 */ -#define ISIS_TLV_PART_DIS 4 /* iso10589 */ -#define ISIS_TLV_PREFIX_NEIGH 5 /* iso10589 */ -#define ISIS_TLV_ISNEIGH 6 /* iso10589 */ -#define ISIS_TLV_ISNEIGH_VARLEN 7 /* iso10589 */ -#define ISIS_TLV_PADDING 8 /* iso10589 */ -#define ISIS_TLV_LSP 9 /* iso10589 */ -#define ISIS_TLV_AUTH 10 /* iso10589, rfc3567 */ -#define ISIS_TLV_CHECKSUM 12 /* rfc3358 */ -#define ISIS_TLV_CHECKSUM_MINLEN 2 -#define ISIS_TLV_LSP_BUFFERSIZE 14 /* iso10589 rev2 */ -#define ISIS_TLV_LSP_BUFFERSIZE_MINLEN 2 -#define ISIS_TLV_EXT_IS_REACH 22 /* draft-ietf-isis-traffic-05 */ -#define ISIS_TLV_IS_ALIAS_ID 24 /* draft-ietf-isis-ext-lsp-frags-02 */ -#define ISIS_TLV_DECNET_PHASE4 42 -#define ISIS_TLV_LUCENT_PRIVATE 66 -#define ISIS_TLV_INT_IP_REACH 128 /* rfc1195, rfc2966 */ -#define ISIS_TLV_PROTOCOLS 129 /* rfc1195 */ -#define ISIS_TLV_EXT_IP_REACH 130 /* rfc1195, rfc2966 */ -#define ISIS_TLV_IDRP_INFO 131 /* rfc1195 */ -#define ISIS_TLV_IDRP_INFO_MINLEN 1 -#define ISIS_TLV_IPADDR 132 /* rfc1195 */ -#define ISIS_TLV_IPAUTH 133 /* rfc1195 */ -#define ISIS_TLV_TE_ROUTER_ID 134 /* draft-ietf-isis-traffic-05 */ -#define ISIS_TLV_EXTD_IP_REACH 135 /* draft-ietf-isis-traffic-05 */ -#define ISIS_TLV_HOSTNAME 137 /* rfc2763 */ -#define ISIS_TLV_SHARED_RISK_GROUP 138 /* draft-ietf-isis-gmpls-extensions */ -#define ISIS_TLV_NORTEL_PRIVATE1 176 -#define ISIS_TLV_NORTEL_PRIVATE2 177 -#define ISIS_TLV_RESTART_SIGNALING 211 /* rfc3847 */ -#define ISIS_TLV_RESTART_SIGNALING_FLAGLEN 1 -#define ISIS_TLV_RESTART_SIGNALING_HOLDTIMELEN 2 -#define ISIS_TLV_MT_IS_REACH 222 /* draft-ietf-isis-wg-multi-topology-05 */ -#define ISIS_TLV_MT_SUPPORTED 229 /* draft-ietf-isis-wg-multi-topology-05 */ -#define ISIS_TLV_MT_SUPPORTED_MINLEN 2 -#define ISIS_TLV_IP6ADDR 232 /* draft-ietf-isis-ipv6-02 */ -#define ISIS_TLV_MT_IP_REACH 235 /* draft-ietf-isis-wg-multi-topology-05 */ -#define ISIS_TLV_IP6_REACH 236 /* draft-ietf-isis-ipv6-02 */ -#define ISIS_TLV_MT_IP6_REACH 237 /* draft-ietf-isis-wg-multi-topology-05 */ -#define ISIS_TLV_PTP_ADJ 240 /* rfc3373 */ -#define ISIS_TLV_IIH_SEQNR 241 /* draft-shen-isis-iih-sequence-00 */ -#define ISIS_TLV_IIH_SEQNR_MINLEN 4 -#define ISIS_TLV_VENDOR_PRIVATE 250 /* draft-ietf-isis-experimental-tlv-01 */ -#define ISIS_TLV_VENDOR_PRIVATE_MINLEN 3 - -static struct tok isis_tlv_values[] = { - { ISIS_TLV_AREA_ADDR, "Area address(es)"}, - { ISIS_TLV_IS_REACH, "IS Reachability"}, - { ISIS_TLV_ESNEIGH, "ES Neighbor(s)"}, - { ISIS_TLV_PART_DIS, "Partition DIS"}, - { ISIS_TLV_PREFIX_NEIGH, "Prefix Neighbors"}, - { ISIS_TLV_ISNEIGH, "IS Neighbor(s)"}, - { ISIS_TLV_ISNEIGH_VARLEN, "IS Neighbor(s) (variable length)"}, - { ISIS_TLV_PADDING, "Padding"}, - { ISIS_TLV_LSP, "LSP entries"}, - { ISIS_TLV_AUTH, "Authentication"}, - { ISIS_TLV_CHECKSUM, "Checksum"}, - { ISIS_TLV_LSP_BUFFERSIZE, "LSP Buffersize"}, - { ISIS_TLV_EXT_IS_REACH, "Extended IS Reachability"}, - { ISIS_TLV_IS_ALIAS_ID, "IS Alias ID"}, - { ISIS_TLV_DECNET_PHASE4, "DECnet Phase IV"}, - { ISIS_TLV_LUCENT_PRIVATE, "Lucent Proprietary"}, - { ISIS_TLV_INT_IP_REACH, "IPv4 Internal Reachability"}, - { ISIS_TLV_PROTOCOLS, "Protocols supported"}, - { ISIS_TLV_EXT_IP_REACH, "IPv4 External Reachability"}, - { ISIS_TLV_IDRP_INFO, "Inter-Domain Information Type"}, - { ISIS_TLV_IPADDR, "IPv4 Interface address(es)"}, - { ISIS_TLV_IPAUTH, "IPv4 authentication (deprecated)"}, - { ISIS_TLV_TE_ROUTER_ID, "Traffic Engineering Router ID"}, - { ISIS_TLV_EXTD_IP_REACH, "Extended IPv4 Reachability"}, - { ISIS_TLV_SHARED_RISK_GROUP, "Shared Risk Link Group"}, - { ISIS_TLV_NORTEL_PRIVATE1, "Nortel Proprietary"}, - { ISIS_TLV_NORTEL_PRIVATE2, "Nortel Proprietary"}, - { ISIS_TLV_HOSTNAME, "Hostname"}, - { ISIS_TLV_RESTART_SIGNALING, "Restart Signaling"}, - { ISIS_TLV_MT_IS_REACH, "Multi Topology IS Reachability"}, - { ISIS_TLV_MT_SUPPORTED, "Multi Topology"}, - { ISIS_TLV_IP6ADDR, "IPv6 Interface address(es)"}, - { ISIS_TLV_MT_IP_REACH, "Multi-Topology IPv4 Reachability"}, - { ISIS_TLV_IP6_REACH, "IPv6 reachability"}, - { ISIS_TLV_MT_IP6_REACH, "Multi-Topology IP6 Reachability"}, - { ISIS_TLV_PTP_ADJ, "Point-to-point Adjacency State"}, - { ISIS_TLV_IIH_SEQNR, "Hello PDU Sequence Number"}, - { ISIS_TLV_VENDOR_PRIVATE, "Vendor Private"}, - { 0, NULL } -}; - -#define ESIS_OPTION_PROTOCOLS 129 -#define ESIS_OPTION_QOS_MAINTENANCE 195 /* iso9542 */ -#define ESIS_OPTION_SECURITY 197 /* iso9542 */ -#define ESIS_OPTION_ES_CONF_TIME 198 /* iso9542 */ -#define ESIS_OPTION_PRIORITY 205 /* iso9542 */ -#define ESIS_OPTION_ADDRESS_MASK 225 /* iso9542 */ -#define ESIS_OPTION_SNPA_MASK 226 /* iso9542 */ - -static struct tok esis_option_values[] = { - { ESIS_OPTION_PROTOCOLS, "Protocols supported"}, - { ESIS_OPTION_QOS_MAINTENANCE, "QoS Maintenance" }, - { ESIS_OPTION_SECURITY, "Security" }, - { ESIS_OPTION_ES_CONF_TIME, "ES Configuration Time" }, - { ESIS_OPTION_PRIORITY, "Priority" }, - { ESIS_OPTION_ADDRESS_MASK, "Addressk Mask" }, - { ESIS_OPTION_SNPA_MASK, "SNPA Mask" }, - { 0, NULL } -}; - -#define CLNP_OPTION_DISCARD_REASON 193 -#define CLNP_OPTION_QOS_MAINTENANCE 195 /* iso8473 */ -#define CLNP_OPTION_SECURITY 197 /* iso8473 */ -#define CLNP_OPTION_SOURCE_ROUTING 200 /* iso8473 */ -#define CLNP_OPTION_ROUTE_RECORDING 203 /* iso8473 */ -#define CLNP_OPTION_PADDING 204 /* iso8473 */ -#define CLNP_OPTION_PRIORITY 205 /* iso8473 */ - -static struct tok clnp_option_values[] = { - { CLNP_OPTION_DISCARD_REASON, "Discard Reason"}, - { CLNP_OPTION_PRIORITY, "Priority"}, - { CLNP_OPTION_QOS_MAINTENANCE, "QoS Maintenance"}, - { CLNP_OPTION_SECURITY, "Security"}, - { CLNP_OPTION_SOURCE_ROUTING, "Source Routing"}, - { CLNP_OPTION_ROUTE_RECORDING, "Route Recording"}, - { CLNP_OPTION_PADDING, "Padding"}, - { 0, NULL } -}; - -static struct tok clnp_option_rfd_class_values[] = { - { 0x0, "General"}, - { 0x8, "Address"}, - { 0x9, "Source Routeing"}, - { 0xa, "Lifetime"}, - { 0xb, "PDU Discarded"}, - { 0xc, "Reassembly"}, - { 0, NULL } -}; - -static struct tok clnp_option_rfd_general_values[] = { - { 0x0, "Reason not specified"}, - { 0x1, "Protocol procedure error"}, - { 0x2, "Incorrect checksum"}, - { 0x3, "PDU discarded due to congestion"}, - { 0x4, "Header syntax error (cannot be parsed)"}, - { 0x5, "Segmentation needed but not permitted"}, - { 0x6, "Incomplete PDU received"}, - { 0x7, "Duplicate option"}, - { 0, NULL } -}; - -static struct tok clnp_option_rfd_address_values[] = { - { 0x0, "Destination address unreachable"}, - { 0x1, "Destination address unknown"}, - { 0, NULL } -}; - -static struct tok clnp_option_rfd_source_routeing_values[] = { - { 0x0, "Unspecified source routeing error"}, - { 0x1, "Syntax error in source routeing field"}, - { 0x2, "Unknown address in source routeing field"}, - { 0x3, "Path not acceptable"}, - { 0, NULL } -}; - -static struct tok clnp_option_rfd_lifetime_values[] = { - { 0x0, "Lifetime expired while data unit in transit"}, - { 0x1, "Lifetime expired during reassembly"}, - { 0, NULL } -}; - -static struct tok clnp_option_rfd_pdu_discard_values[] = { - { 0x0, "Unsupported option not specified"}, - { 0x1, "Unsupported protocol version"}, - { 0x2, "Unsupported security option"}, - { 0x3, "Unsupported source routeing option"}, - { 0x4, "Unsupported recording of route option"}, - { 0, NULL } -}; - -static struct tok clnp_option_rfd_reassembly_values[] = { - { 0x0, "Reassembly interference"}, - { 0, NULL } -}; - -/* array of 16 error-classes */ -static struct tok *clnp_option_rfd_error_class[] = { - clnp_option_rfd_general_values, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - clnp_option_rfd_address_values, - clnp_option_rfd_source_routeing_values, - clnp_option_rfd_lifetime_values, - clnp_option_rfd_pdu_discard_values, - clnp_option_rfd_reassembly_values, - NULL, - NULL, - NULL -}; - -#define CLNP_OPTION_OPTION_QOS_MASK 0x3f -#define CLNP_OPTION_SCOPE_MASK 0xc0 -#define CLNP_OPTION_SCOPE_SA_SPEC 0x40 -#define CLNP_OPTION_SCOPE_DA_SPEC 0x80 -#define CLNP_OPTION_SCOPE_GLOBAL 0xc0 - -static struct tok clnp_option_scope_values[] = { - { CLNP_OPTION_SCOPE_SA_SPEC, "Source Address Specific"}, - { CLNP_OPTION_SCOPE_DA_SPEC, "Destination Address Specific"}, - { CLNP_OPTION_SCOPE_GLOBAL, "Globally unique"}, - { 0, NULL } -}; - -static struct tok clnp_option_sr_rr_values[] = { - { 0x0, "partial"}, - { 0x1, "complete"}, - { 0, NULL } -}; - -static struct tok clnp_option_sr_rr_string_values[] = { - { CLNP_OPTION_SOURCE_ROUTING, "source routing"}, - { CLNP_OPTION_ROUTE_RECORDING, "recording of route in progress"}, - { 0, NULL } -}; - -static struct tok clnp_option_qos_global_values[] = { - { 0x20, "reserved"}, - { 0x10, "sequencing vs. delay"}, - { 0x08, "congested"}, - { 0x04, "delay vs. cost"}, - { 0x02, "error vs. delay"}, - { 0x01, "error vs. cost"}, - { 0, NULL } -}; - -#define ISIS_SUBTLV_EXT_IS_REACH_ADMIN_GROUP 3 /* draft-ietf-isis-traffic-05 */ -#define ISIS_SUBTLV_EXT_IS_REACH_LINK_LOCAL_REMOTE_ID 4 /* draft-ietf-isis-gmpls-extensions */ -#define ISIS_SUBTLV_EXT_IS_REACH_LINK_REMOTE_ID 5 /* draft-ietf-isis-traffic-05 */ -#define ISIS_SUBTLV_EXT_IS_REACH_IPV4_INTF_ADDR 6 /* 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_RESERVABLE_BW 10 /* draft-ietf-isis-traffic-05 */ -#define ISIS_SUBTLV_EXT_IS_REACH_UNRESERVED_BW 11 /* rfc4124 */ -#define ISIS_SUBTLV_EXT_IS_REACH_BW_CONSTRAINTS_OLD 12 /* draft-ietf-tewg-diff-te-proto-06 */ -#define ISIS_SUBTLV_EXT_IS_REACH_TE_METRIC 18 /* draft-ietf-isis-traffic-05 */ -#define ISIS_SUBTLV_EXT_IS_REACH_LINK_PROTECTION_TYPE 20 /* draft-ietf-isis-gmpls-extensions */ -#define ISIS_SUBTLV_EXT_IS_REACH_INTF_SW_CAP_DESCR 21 /* draft-ietf-isis-gmpls-extensions */ -#define ISIS_SUBTLV_EXT_IS_REACH_BW_CONSTRAINTS 22 /* rfc4124 */ - -static struct tok isis_ext_is_reach_subtlv_values[] = { - { ISIS_SUBTLV_EXT_IS_REACH_ADMIN_GROUP, "Administrative groups" }, - { ISIS_SUBTLV_EXT_IS_REACH_LINK_LOCAL_REMOTE_ID, "Link Local/Remote Identifier" }, - { ISIS_SUBTLV_EXT_IS_REACH_LINK_REMOTE_ID, "Link Remote Identifier" }, - { ISIS_SUBTLV_EXT_IS_REACH_IPV4_INTF_ADDR, "IPv4 interface address" }, - { ISIS_SUBTLV_EXT_IS_REACH_IPV4_NEIGHBOR_ADDR, "IPv4 neighbor address" }, - { ISIS_SUBTLV_EXT_IS_REACH_MAX_LINK_BW, "Maximum link bandwidth" }, - { ISIS_SUBTLV_EXT_IS_REACH_RESERVABLE_BW, "Reservable link bandwidth" }, - { ISIS_SUBTLV_EXT_IS_REACH_UNRESERVED_BW, "Unreserved bandwidth" }, - { ISIS_SUBTLV_EXT_IS_REACH_TE_METRIC, "Traffic Engineering Metric" }, - { ISIS_SUBTLV_EXT_IS_REACH_LINK_PROTECTION_TYPE, "Link Protection Type" }, - { ISIS_SUBTLV_EXT_IS_REACH_INTF_SW_CAP_DESCR, "Interface Switching Capability" }, - { ISIS_SUBTLV_EXT_IS_REACH_BW_CONSTRAINTS_OLD, "Bandwidth Constraints (old)" }, - { ISIS_SUBTLV_EXT_IS_REACH_BW_CONSTRAINTS, "Bandwidth Constraints" }, - { 250, "Reserved for cisco specific extensions" }, - { 251, "Reserved for cisco specific extensions" }, - { 252, "Reserved for cisco specific extensions" }, - { 253, "Reserved for cisco specific extensions" }, - { 254, "Reserved for cisco specific extensions" }, - { 255, "Reserved for future expansion" }, - { 0, NULL } -}; - -#define ISIS_SUBTLV_EXTD_IP_REACH_ADMIN_TAG32 1 /* draft-ietf-isis-admin-tags-01 */ -#define ISIS_SUBTLV_EXTD_IP_REACH_ADMIN_TAG64 2 /* draft-ietf-isis-admin-tags-01 */ -#define ISIS_SUBTLV_EXTD_IP_REACH_MGMT_PREFIX_COLOR 117 /* draft-ietf-isis-wg-multi-topology-05 */ - -static struct tok isis_ext_ip_reach_subtlv_values[] = { - { ISIS_SUBTLV_EXTD_IP_REACH_ADMIN_TAG32, "32-Bit Administrative tag" }, - { ISIS_SUBTLV_EXTD_IP_REACH_ADMIN_TAG64, "64-Bit Administrative tag" }, - { ISIS_SUBTLV_EXTD_IP_REACH_MGMT_PREFIX_COLOR, "Management Prefix Color" }, - { 0, NULL } -}; - -#define ISIS_SUBTLV_AUTH_SIMPLE 1 -#define ISIS_SUBTLV_AUTH_MD5 54 -#define ISIS_SUBTLV_AUTH_MD5_LEN 16 -#define ISIS_SUBTLV_AUTH_PRIVATE 255 - -static struct tok isis_subtlv_auth_values[] = { - { ISIS_SUBTLV_AUTH_SIMPLE, "simple text password"}, - { ISIS_SUBTLV_AUTH_MD5, "HMAC-MD5 password"}, - { ISIS_SUBTLV_AUTH_PRIVATE, "Routing Domain private password"}, - { 0, NULL } -}; - -#define ISIS_SUBTLV_IDRP_RES 0 -#define ISIS_SUBTLV_IDRP_LOCAL 1 -#define ISIS_SUBTLV_IDRP_ASN 2 - -static struct tok isis_subtlv_idrp_values[] = { - { ISIS_SUBTLV_IDRP_RES, "Reserved"}, - { ISIS_SUBTLV_IDRP_LOCAL, "Routing-Domain Specific"}, - { ISIS_SUBTLV_IDRP_ASN, "AS Number Tag"}, - { 0, NULL} -}; - -#define CLNP_SEGMENT_PART 0x80 -#define CLNP_MORE_SEGMENTS 0x40 -#define CLNP_REQUEST_ER 0x20 - -static struct tok clnp_flag_values[] = { - { CLNP_SEGMENT_PART, "Segmentation permitted"}, - { CLNP_MORE_SEGMENTS, "more Segments"}, - { CLNP_REQUEST_ER, "request Error Report"}, - { 0, NULL} -}; - -#define ISIS_MASK_LSP_OL_BIT(x) ((x)&0x4) -#define ISIS_MASK_LSP_ISTYPE_BITS(x) ((x)&0x3) -#define ISIS_MASK_LSP_PARTITION_BIT(x) ((x)&0x80) -#define ISIS_MASK_LSP_ATT_BITS(x) ((x)&0x78) -#define ISIS_MASK_LSP_ATT_ERROR_BIT(x) ((x)&0x40) -#define ISIS_MASK_LSP_ATT_EXPENSE_BIT(x) ((x)&0x20) -#define ISIS_MASK_LSP_ATT_DELAY_BIT(x) ((x)&0x10) -#define ISIS_MASK_LSP_ATT_DEFAULT_BIT(x) ((x)&0x8) - -#define ISIS_MASK_MTID(x) ((x)&0x0fff) -#define ISIS_MASK_MTFLAGS(x) ((x)&0xf000) - -static struct tok isis_mt_flag_values[] = { - { 0x4000, "sub-TLVs present"}, - { 0x8000, "ATT bit set"}, - { 0, NULL} -}; - -#define ISIS_MASK_TLV_EXTD_IP_UPDOWN(x) ((x)&0x80) -#define ISIS_MASK_TLV_EXTD_IP_SUBTLV(x) ((x)&0x40) - -#define ISIS_MASK_TLV_EXTD_IP6_IE(x) ((x)&0x40) -#define ISIS_MASK_TLV_EXTD_IP6_SUBTLV(x) ((x)&0x20) - -#define ISIS_LSP_TLV_METRIC_SUPPORTED(x) ((x)&0x80) -#define ISIS_LSP_TLV_METRIC_IE(x) ((x)&0x40) -#define ISIS_LSP_TLV_METRIC_UPDOWN(x) ((x)&0x80) -#define ISIS_LSP_TLV_METRIC_VALUE(x) ((x)&0x3f) - -#define ISIS_MASK_TLV_SHARED_RISK_GROUP(x) ((x)&0x1) - -static struct tok isis_mt_values[] = { - { 0, "IPv4 unicast"}, - { 1, "In-Band Management"}, - { 2, "IPv6 unicast"}, - { 3, "Multicast"}, - { 4095, "Development, Experimental or Proprietary"}, - { 0, NULL } -}; - -static struct tok isis_iih_circuit_type_values[] = { - { 1, "Level 1 only"}, - { 2, "Level 2 only"}, - { 3, "Level 1, Level 2"}, - { 0, NULL} -}; - -#define ISIS_LSP_TYPE_UNUSED0 0 -#define ISIS_LSP_TYPE_LEVEL_1 1 -#define ISIS_LSP_TYPE_UNUSED2 2 -#define ISIS_LSP_TYPE_LEVEL_2 3 - -static struct tok isis_lsp_istype_values[] = { - { ISIS_LSP_TYPE_UNUSED0, "Unused 0x0 (invalid)"}, - { ISIS_LSP_TYPE_LEVEL_1, "L1 IS"}, - { ISIS_LSP_TYPE_UNUSED2, "Unused 0x2 (invalid)"}, - { ISIS_LSP_TYPE_LEVEL_2, "L1L2 IS"}, - { 0, NULL } -}; - -/* - * Katz's point to point adjacency TLV uses codes to tell us the state of - * the remote adjacency. Enumerate them. - */ - -#define ISIS_PTP_ADJ_UP 0 -#define ISIS_PTP_ADJ_INIT 1 -#define ISIS_PTP_ADJ_DOWN 2 - -static struct tok isis_ptp_adjancey_values[] = { - { ISIS_PTP_ADJ_UP, "Up" }, - { ISIS_PTP_ADJ_INIT, "Initializing" }, - { ISIS_PTP_ADJ_DOWN, "Down" }, - { 0, NULL} -}; - -struct isis_tlv_ptp_adj { - u_int8_t adjacency_state; - u_int8_t extd_local_circuit_id[4]; - u_int8_t neighbor_sysid[SYSTEM_ID_LEN]; - u_int8_t neighbor_extd_local_circuit_id[4]; -}; - -static int osi_cksum(const u_int8_t *, u_int); -static int clnp_print(const u_int8_t *, u_int); -static void esis_print(const u_int8_t *, u_int); -static int isis_print(const u_int8_t *, u_int); - -struct isis_metric_block { - u_int8_t metric_default; - u_int8_t metric_delay; - u_int8_t metric_expense; - u_int8_t metric_error; -}; - -struct isis_tlv_is_reach { - struct isis_metric_block isis_metric_block; - u_int8_t neighbor_nodeid[NODE_ID_LEN]; -}; - -struct isis_tlv_es_reach { - struct isis_metric_block isis_metric_block; - u_int8_t neighbor_sysid[SYSTEM_ID_LEN]; -}; - -struct isis_tlv_ip_reach { - struct isis_metric_block isis_metric_block; - u_int8_t prefix[4]; - u_int8_t mask[4]; -}; - -static struct tok isis_is_reach_virtual_values[] = { - { 0, "IsNotVirtual"}, - { 1, "IsVirtual"}, - { 0, NULL } -}; - -static struct tok isis_restart_flag_values[] = { - { 0x1, "Restart Request"}, - { 0x2, "Restart Acknowledgement"}, - { 0x4, "Suppress adjacency advertisement"}, - { 0, NULL } -}; - -struct isis_common_header { - u_int8_t nlpid; - u_int8_t fixed_len; - u_int8_t version; /* Protocol version */ - u_int8_t id_length; - u_int8_t pdu_type; /* 3 MSbits are reserved */ - u_int8_t pdu_version; /* Packet format version */ - u_int8_t reserved; - u_int8_t max_area; -}; - -struct isis_iih_lan_header { - u_int8_t circuit_type; - u_int8_t source_id[SYSTEM_ID_LEN]; - u_int8_t holding_time[2]; - u_int8_t pdu_len[2]; - u_int8_t priority; - u_int8_t lan_id[NODE_ID_LEN]; -}; - -struct isis_iih_ptp_header { - u_int8_t circuit_type; - u_int8_t source_id[SYSTEM_ID_LEN]; - u_int8_t holding_time[2]; - u_int8_t pdu_len[2]; - u_int8_t circuit_id; -}; - -struct isis_lsp_header { - u_int8_t pdu_len[2]; - u_int8_t remaining_lifetime[2]; - u_int8_t lsp_id[LSP_ID_LEN]; - u_int8_t sequence_number[4]; - u_int8_t checksum[2]; - u_int8_t typeblock; -}; - -struct isis_csnp_header { - u_int8_t pdu_len[2]; - u_int8_t source_id[NODE_ID_LEN]; - u_int8_t start_lsp_id[LSP_ID_LEN]; - u_int8_t end_lsp_id[LSP_ID_LEN]; -}; - -struct isis_psnp_header { - u_int8_t pdu_len[2]; - u_int8_t source_id[NODE_ID_LEN]; -}; - -struct isis_tlv_lsp { - u_int8_t remaining_lifetime[2]; - u_int8_t lsp_id[LSP_ID_LEN]; - u_int8_t sequence_number[4]; - u_int8_t checksum[2]; -}; - -#define ISIS_COMMON_HEADER_SIZE (sizeof(struct isis_common_header)) -#define ISIS_IIH_LAN_HEADER_SIZE (sizeof(struct isis_iih_lan_header)) -#define ISIS_IIH_PTP_HEADER_SIZE (sizeof(struct isis_iih_ptp_header)) -#define ISIS_LSP_HEADER_SIZE (sizeof(struct isis_lsp_header)) -#define ISIS_CSNP_HEADER_SIZE (sizeof(struct isis_csnp_header)) -#define ISIS_PSNP_HEADER_SIZE (sizeof(struct isis_psnp_header)) - -void isoclns_print(const u_int8_t *p, u_int length, u_int caplen) -{ - const struct isis_common_header *header; - - header = (const struct isis_common_header *)p; - - if (caplen <= 1) { /* enough bytes on the wire ? */ - printf("|OSI"); - return; - } - - if (eflag) - printf("OSI NLPID %s (0x%02x): ", - tok2str(nlpid_values,"Unknown",*p), - *p); - - switch (*p) { - - case NLPID_CLNP: - if (!clnp_print(p, length)) - print_unknown_data(p,"\n\t",caplen); - break; - - case NLPID_ESIS: - esis_print(p, length); - return; - - case NLPID_ISIS: - if (!isis_print(p, length)) - print_unknown_data(p,"\n\t",caplen); - break; - - case NLPID_NULLNS: - (void)printf("%slength: %u", - eflag ? "" : ", ", - length); - break; - - case NLPID_Q933: - q933_print(p+1, length-1); - break; - - case NLPID_IP: - ip_print(gndo, p+1, length-1); - break; - -#ifdef INET6 - case NLPID_IP6: - ip6_print(p+1, length-1); - break; -#endif - - case NLPID_PPP: - ppp_print(p+1, length-1); - break; - - default: - if (!eflag) - printf("OSI NLPID 0x%02x unknown",*p); - (void)printf("%slength: %u", - eflag ? "" : ", ", - length); - if (caplen > 1) - print_unknown_data(p,"\n\t",caplen); - break; - } -} - -#define CLNP_PDU_ER 1 -#define CLNP_PDU_DT 28 -#define CLNP_PDU_MD 29 -#define CLNP_PDU_ERQ 30 -#define CLNP_PDU_ERP 31 - -static struct tok clnp_pdu_values[] = { - { CLNP_PDU_ER, "Error Report"}, - { CLNP_PDU_MD, "MD"}, - { CLNP_PDU_DT, "Data"}, - { CLNP_PDU_ERQ, "Echo Request"}, - { CLNP_PDU_ERP, "Echo Response"}, - { 0, NULL } -}; - -struct clnp_header_t { - u_int8_t nlpid; - u_int8_t length_indicator; - u_int8_t version; - u_int8_t lifetime; /* units of 500ms */ - u_int8_t type; - u_int8_t segment_length[2]; - u_int8_t cksum[2]; -}; - -struct clnp_segment_header_t { - u_int8_t data_unit_id[2]; - u_int8_t segment_offset[2]; - u_int8_t total_length[2]; -}; - -/* - * clnp_print - * Decode CLNP packets. Return 0 on error. - */ - -static int clnp_print (const u_int8_t *pptr, u_int length) -{ - const u_int8_t *optr,*source_address,*dest_address; - u_int li,tlen,nsap_offset,source_address_length,dest_address_length, clnp_pdu_type, clnp_flags; - const struct clnp_header_t *clnp_header; - const struct clnp_segment_header_t *clnp_segment_header; - u_int8_t rfd_error_major,rfd_error_minor; - - clnp_header = (const struct clnp_header_t *) pptr; - TCHECK(*clnp_header); - - li = clnp_header->length_indicator; - optr = pptr; - - if (!eflag) - printf("CLNP"); - - /* - * Sanity checking of the header. - */ - - if (clnp_header->version != CLNP_VERSION) { - printf("version %d packet not supported", clnp_header->version); - return (0); - } - - /* FIXME further header sanity checking */ - - clnp_pdu_type = clnp_header->type & CLNP_PDU_TYPE_MASK; - clnp_flags = clnp_header->type & CLNP_FLAG_MASK; - - pptr += sizeof(struct clnp_header_t); - li -= sizeof(struct clnp_header_t); - dest_address_length = *pptr; - dest_address = pptr + 1; - - pptr += (1 + dest_address_length); - li -= (1 + dest_address_length); - source_address_length = *pptr; - source_address = pptr +1; - - pptr += (1 + source_address_length); - li -= (1 + source_address_length); - - if (vflag < 1) { - printf("%s%s > %s, %s, length %u", - eflag ? "" : ", ", - isonsap_string(source_address, source_address_length), - isonsap_string(dest_address, dest_address_length), - tok2str(clnp_pdu_values,"unknown (%u)",clnp_pdu_type), - length); - return (1); - } - printf("%slength %u",eflag ? "" : ", ",length); - - printf("\n\t%s PDU, hlen: %u, v: %u, lifetime: %u.%us, Segment PDU length: %u, checksum: 0x%04x ", - tok2str(clnp_pdu_values, "unknown (%u)",clnp_pdu_type), - clnp_header->length_indicator, - clnp_header->version, - clnp_header->lifetime/2, - (clnp_header->lifetime%2)*5, - EXTRACT_16BITS(clnp_header->segment_length), - EXTRACT_16BITS(clnp_header->cksum)); - - /* do not attempt to verify the checksum if it is zero */ - if (EXTRACT_16BITS(clnp_header->cksum) == 0) - printf("(unverified)"); - else printf("(%s)", osi_cksum(optr, clnp_header->length_indicator) ? "incorrect" : "correct"); - - printf("\n\tFlags [%s]", - bittok2str(clnp_flag_values,"none",clnp_flags)); - - printf("\n\tsource address (length %u): %s\n\tdest address (length %u): %s", - source_address_length, - isonsap_string(source_address, source_address_length), - dest_address_length, - isonsap_string(dest_address,dest_address_length)); - - if (clnp_flags & CLNP_SEGMENT_PART) { - clnp_segment_header = (const struct clnp_segment_header_t *) pptr; - TCHECK(*clnp_segment_header); - printf("\n\tData Unit ID: 0x%04x, Segment Offset: %u, Total PDU Length: %u", - EXTRACT_16BITS(clnp_segment_header->data_unit_id), - EXTRACT_16BITS(clnp_segment_header->segment_offset), - EXTRACT_16BITS(clnp_segment_header->total_length)); - pptr+=sizeof(const struct clnp_segment_header_t); - li-=sizeof(const struct clnp_segment_header_t); - } - - /* now walk the options */ - while (li >= 2) { - u_int op, opli; - const u_int8_t *tptr; - - TCHECK2(*pptr, 2); - if (li < 2) { - printf(", bad opts/li"); - return (0); - } - op = *pptr++; - opli = *pptr++; - li -= 2; - TCHECK2(*pptr, opli); - if (opli > li) { - printf(", opt (%d) too long", op); - return (0); - } - li -= opli; - tptr = pptr; - tlen = opli; - - printf("\n\t %s Option #%u, length %u, value: ", - tok2str(clnp_option_values,"Unknown",op), - op, - opli); - - switch (op) { - - - case CLNP_OPTION_ROUTE_RECORDING: /* those two options share the format */ - case CLNP_OPTION_SOURCE_ROUTING: - printf("%s %s", - tok2str(clnp_option_sr_rr_values,"Unknown",*tptr), - tok2str(clnp_option_sr_rr_string_values,"Unknown Option %u",op)); - nsap_offset=*(tptr+1); - if (nsap_offset == 0) { - printf(" Bad NSAP offset (0)"); - break; - } - nsap_offset-=1; /* offset to nsap list */ - if (nsap_offset > tlen) { - printf(" Bad NSAP offset (past end of option)"); - break; - } - tptr+=nsap_offset; - tlen-=nsap_offset; - while (tlen > 0) { - source_address_length=*tptr; - if (tlen < source_address_length+1) { - printf("\n\t NSAP address goes past end of option"); - break; - } - if (source_address_length > 0) { - source_address=(tptr+1); - TCHECK2(*source_address, source_address_length); - printf("\n\t NSAP address (length %u): %s", - source_address_length, - isonsap_string(source_address, source_address_length)); - } - tlen-=source_address_length+1; - } - break; - - case CLNP_OPTION_PRIORITY: - printf("0x%1x", *tptr&0x0f); - break; - - case CLNP_OPTION_QOS_MAINTENANCE: - printf("\n\t Format Code: %s", - tok2str(clnp_option_scope_values,"Reserved",*tptr&CLNP_OPTION_SCOPE_MASK)); - - if ((*tptr&CLNP_OPTION_SCOPE_MASK) == CLNP_OPTION_SCOPE_GLOBAL) - printf("\n\t QoS Flags [%s]", - bittok2str(clnp_option_qos_global_values, - "none", - *tptr&CLNP_OPTION_OPTION_QOS_MASK)); - break; - - case CLNP_OPTION_SECURITY: - printf("\n\t Format Code: %s, Security-Level %u", - tok2str(clnp_option_scope_values,"Reserved",*tptr&CLNP_OPTION_SCOPE_MASK), - *(tptr+1)); - break; - - case CLNP_OPTION_DISCARD_REASON: - rfd_error_major = (*tptr&0xf0) >> 4; - rfd_error_minor = *tptr&0x0f; - printf("\n\t Class: %s Error (0x%01x), %s (0x%01x)", - tok2str(clnp_option_rfd_class_values,"Unknown",rfd_error_major), - rfd_error_major, - tok2str(clnp_option_rfd_error_class[rfd_error_major],"Unknown",rfd_error_minor), - rfd_error_minor); - break; - - case CLNP_OPTION_PADDING: - printf("padding data"); - break; - - /* - * FIXME those are the defined Options that lack a decoder - * you are welcome to contribute code ;-) - */ - - default: - print_unknown_data(tptr,"\n\t ",opli); - break; - } - if (vflag > 1) - print_unknown_data(pptr,"\n\t ",opli); - pptr += opli; - } - - switch (clnp_pdu_type) { - - case CLNP_PDU_ER: /* fall through */ - case CLNP_PDU_ERP: - TCHECK(*pptr); - if (*(pptr) == NLPID_CLNP) { - printf("\n\t-----original packet-----\n\t"); - /* FIXME recursion protection */ - clnp_print(pptr, length-clnp_header->length_indicator); - break; - } - - case CLNP_PDU_DT: - case CLNP_PDU_MD: - case CLNP_PDU_ERQ: - - default: - /* dump the PDU specific data */ - if (length-(pptr-optr) > 0) { - printf("\n\t undecoded non-header data, length %u",length-clnp_header->length_indicator); - print_unknown_data(pptr,"\n\t ",length-(pptr-optr)); - } - } - - return (1); - - trunc: - fputs("[|clnp]", stdout); - return (1); - -} - - -#define ESIS_PDU_REDIRECT 6 -#define ESIS_PDU_ESH 2 -#define ESIS_PDU_ISH 4 - -static struct tok esis_pdu_values[] = { - { ESIS_PDU_REDIRECT, "redirect"}, - { ESIS_PDU_ESH, "ESH"}, - { ESIS_PDU_ISH, "ISH"}, - { 0, NULL } -}; - -struct esis_header_t { - u_int8_t nlpid; - u_int8_t length_indicator; - u_int8_t version; - u_int8_t reserved; - u_int8_t type; - u_int8_t holdtime[2]; - u_int8_t cksum[2]; -}; - -static void -esis_print(const u_int8_t *pptr, u_int length) -{ - const u_int8_t *optr; - u_int li,esis_pdu_type,source_address_length, source_address_number; - const struct esis_header_t *esis_header; - - if (!eflag) - printf("ES-IS"); - - if (length <= 2) { - if (qflag) - printf("bad pkt!"); - else - printf("no header at all!"); - return; - } - - esis_header = (const struct esis_header_t *) pptr; - TCHECK(*esis_header); - li = esis_header->length_indicator; - optr = pptr; - - /* - * Sanity checking of the header. - */ - - if (esis_header->nlpid != NLPID_ESIS) { - printf(" nlpid 0x%02x packet not supported", esis_header->nlpid); - return; - } - - if (esis_header->version != ESIS_VERSION) { - printf(" version %d packet not supported", esis_header->version); - return; - } - - if (li > length) { - printf(" length indicator(%d) > PDU size (%d)!", li, length); - return; - } - - if (li < sizeof(struct esis_header_t) + 2) { - printf(" length indicator < min PDU size %d:", li); - while (--length != 0) - printf("%02X", *pptr++); - return; - } - - esis_pdu_type = esis_header->type & ESIS_PDU_TYPE_MASK; - - if (vflag < 1) { - printf("%s%s, length %u", - eflag ? "" : ", ", - tok2str(esis_pdu_values,"unknown type (%u)",esis_pdu_type), - length); - return; - } else - printf("%slength %u\n\t%s (%u)", - eflag ? "" : ", ", - length, - tok2str(esis_pdu_values,"unknown type: %u", esis_pdu_type), - esis_pdu_type); - - printf(", v: %u%s", esis_header->version, esis_header->version == ESIS_VERSION ? "" : "unsupported" ); - printf(", checksum: 0x%04x ", EXTRACT_16BITS(esis_header->cksum)); - /* do not attempt to verify the checksum if it is zero */ - if (EXTRACT_16BITS(esis_header->cksum) == 0) - printf("(unverified)"); - else - printf("(%s)", osi_cksum(pptr, li) ? "incorrect" : "correct"); - - printf(", holding time: %us, length indicator: %u",EXTRACT_16BITS(esis_header->holdtime),li); - - if (vflag > 1) - print_unknown_data(optr,"\n\t",sizeof(struct esis_header_t)); - - pptr += sizeof(struct esis_header_t); - li -= sizeof(struct esis_header_t); - - switch (esis_pdu_type) { - case ESIS_PDU_REDIRECT: { - const u_int8_t *dst, *snpa, *neta; - u_int dstl, snpal, netal; - - TCHECK(*pptr); - if (li < 1) { - printf(", bad redirect/li"); - return; - } - dstl = *pptr; - pptr++; - li--; - TCHECK2(*pptr, dstl); - if (li < dstl) { - printf(", bad redirect/li"); - return; - } - dst = pptr; - pptr += dstl; - li -= dstl; - printf("\n\t %s", isonsap_string(dst,dstl)); - - TCHECK(*pptr); - if (li < 1) { - printf(", bad redirect/li"); - return; - } - snpal = *pptr; - pptr++; - li--; - TCHECK2(*pptr, snpal); - if (li < snpal) { - printf(", bad redirect/li"); - return; - } - snpa = pptr; - pptr += snpal; - li -= snpal; - TCHECK(*pptr); - if (li < 1) { - printf(", bad redirect/li"); - return; - } - netal = *pptr; - pptr++; - TCHECK2(*pptr, netal); - if (li < netal) { - printf(", bad redirect/li"); - return; - } - neta = pptr; - pptr += netal; - li -= netal; - - if (netal == 0) - printf("\n\t %s", etheraddr_string(snpa)); - else - printf("\n\t %s", isonsap_string(neta,netal)); - break; - } - - case ESIS_PDU_ESH: - TCHECK(*pptr); - if (li < 1) { - printf(", bad esh/li"); - return; - } - source_address_number = *pptr; - pptr++; - li--; - - printf("\n\t Number of Source Addresses: %u", source_address_number); - - while (source_address_number > 0) { - TCHECK(*pptr); - if (li < 1) { - printf(", bad esh/li"); - return; - } - source_address_length = *pptr; - pptr++; - li--; - - TCHECK2(*pptr, source_address_length); - if (li < source_address_length) { - printf(", bad esh/li"); - return; - } - printf("\n\t NET (length: %u): %s", - source_address_length, - isonsap_string(pptr,source_address_length)); - pptr += source_address_length; - li -= source_address_length; - source_address_number--; - } - - break; - - case ESIS_PDU_ISH: { - TCHECK(*pptr); - if (li < 1) { - printf(", bad ish/li"); - return; - } - source_address_length = *pptr; - pptr++; - li--; - TCHECK2(*pptr, source_address_length); - if (li < source_address_length) { - printf(", bad ish/li"); - return; - } - printf("\n\t NET (length: %u): %s", source_address_length, isonsap_string(pptr, source_address_length)); - pptr += source_address_length; - li -= source_address_length; - break; - } - - default: - if (vflag <= 1) { - if (pptr < snapend) - print_unknown_data(pptr,"\n\t ",snapend-pptr); - } - return; - } - - /* now walk the options */ - while (li >= 2) { - u_int op, opli; - const u_int8_t *tptr; - - TCHECK2(*pptr, 2); - if (li < 2) { - printf(", bad opts/li"); - return; - } - op = *pptr++; - opli = *pptr++; - li -= 2; - if (opli > li) { - printf(", opt (%d) too long", op); - return; - } - li -= opli; - tptr = pptr; - - printf("\n\t %s Option #%u, length %u, value: ", - tok2str(esis_option_values,"Unknown",op), - op, - opli); - - switch (op) { - - case ESIS_OPTION_ES_CONF_TIME: - TCHECK2(*pptr, 2); - printf("%us", EXTRACT_16BITS(tptr)); - break; - - case ESIS_OPTION_PROTOCOLS: - while (opli>0) { - TCHECK(*pptr); - printf("%s (0x%02x)", - tok2str(nlpid_values, - "unknown", - *tptr), - *tptr); - if (opli>1) /* further NPLIDs ? - put comma */ - printf(", "); - tptr++; - opli--; - } - break; - - /* - * FIXME those are the defined Options that lack a decoder - * you are welcome to contribute code ;-) - */ - - case ESIS_OPTION_QOS_MAINTENANCE: - case ESIS_OPTION_SECURITY: - case ESIS_OPTION_PRIORITY: - case ESIS_OPTION_ADDRESS_MASK: - case ESIS_OPTION_SNPA_MASK: - - default: - print_unknown_data(tptr,"\n\t ",opli); - break; - } - if (vflag > 1) - print_unknown_data(pptr,"\n\t ",opli); - pptr += opli; - } -trunc: - return; -} - -/* shared routine for printing system, node and lsp-ids */ -static char * -isis_print_id(const u_int8_t *cp, int id_len) -{ - int i; - static char id[sizeof("xxxx.xxxx.xxxx.yy-zz")]; - char *pos = id; - - for (i = 1; i <= SYSTEM_ID_LEN; i++) { - snprintf(pos, sizeof(id) - (pos - id), "%02x", *cp++); - pos += strlen(pos); - if (i == 2 || i == 4) - *pos++ = '.'; - } - if (id_len >= NODE_ID_LEN) { - snprintf(pos, sizeof(id) - (pos - id), ".%02x", *cp++); - pos += strlen(pos); - } - if (id_len == LSP_ID_LEN) - snprintf(pos, sizeof(id) - (pos - id), "-%02x", *cp); - return (id); -} - -/* print the 4-byte metric block which is common found in the old-style TLVs */ -static int -isis_print_metric_block (const struct isis_metric_block *isis_metric_block) -{ - printf(", Default Metric: %d, %s", - ISIS_LSP_TLV_METRIC_VALUE(isis_metric_block->metric_default), - ISIS_LSP_TLV_METRIC_IE(isis_metric_block->metric_default) ? "External" : "Internal"); - if (!ISIS_LSP_TLV_METRIC_SUPPORTED(isis_metric_block->metric_delay)) - printf("\n\t\t Delay Metric: %d, %s", - ISIS_LSP_TLV_METRIC_VALUE(isis_metric_block->metric_delay), - ISIS_LSP_TLV_METRIC_IE(isis_metric_block->metric_delay) ? "External" : "Internal"); - if (!ISIS_LSP_TLV_METRIC_SUPPORTED(isis_metric_block->metric_expense)) - printf("\n\t\t Expense Metric: %d, %s", - ISIS_LSP_TLV_METRIC_VALUE(isis_metric_block->metric_expense), - ISIS_LSP_TLV_METRIC_IE(isis_metric_block->metric_expense) ? "External" : "Internal"); - if (!ISIS_LSP_TLV_METRIC_SUPPORTED(isis_metric_block->metric_error)) - printf("\n\t\t Error Metric: %d, %s", - ISIS_LSP_TLV_METRIC_VALUE(isis_metric_block->metric_error), - ISIS_LSP_TLV_METRIC_IE(isis_metric_block->metric_error) ? "External" : "Internal"); - - return(1); /* everything is ok */ -} - -static int -isis_print_tlv_ip_reach (const u_int8_t *cp, const char *ident, int length) -{ - int prefix_len; - const struct isis_tlv_ip_reach *tlv_ip_reach; - - tlv_ip_reach = (const struct isis_tlv_ip_reach *)cp; - - while (length > 0) { - if ((size_t)length < sizeof(*tlv_ip_reach)) { - printf("short IPv4 Reachability (%d vs %lu)", - length, - (unsigned long)sizeof(*tlv_ip_reach)); - return (0); - } - - if (!TTEST(*tlv_ip_reach)) - return (0); - - prefix_len = mask2plen(EXTRACT_32BITS(tlv_ip_reach->mask)); - - if (prefix_len == -1) - printf("%sIPv4 prefix: %s mask %s", - ident, - ipaddr_string((tlv_ip_reach->prefix)), - ipaddr_string((tlv_ip_reach->mask))); - else - printf("%sIPv4 prefix: %15s/%u", - ident, - ipaddr_string((tlv_ip_reach->prefix)), - prefix_len); - - printf(", Distribution: %s, Metric: %u, %s", - ISIS_LSP_TLV_METRIC_UPDOWN(tlv_ip_reach->isis_metric_block.metric_default) ? "down" : "up", - ISIS_LSP_TLV_METRIC_VALUE(tlv_ip_reach->isis_metric_block.metric_default), - ISIS_LSP_TLV_METRIC_IE(tlv_ip_reach->isis_metric_block.metric_default) ? "External" : "Internal"); - - if (!ISIS_LSP_TLV_METRIC_SUPPORTED(tlv_ip_reach->isis_metric_block.metric_delay)) - printf("%s Delay Metric: %u, %s", - ident, - ISIS_LSP_TLV_METRIC_VALUE(tlv_ip_reach->isis_metric_block.metric_delay), - ISIS_LSP_TLV_METRIC_IE(tlv_ip_reach->isis_metric_block.metric_delay) ? "External" : "Internal"); - - if (!ISIS_LSP_TLV_METRIC_SUPPORTED(tlv_ip_reach->isis_metric_block.metric_expense)) - printf("%s Expense Metric: %u, %s", - ident, - ISIS_LSP_TLV_METRIC_VALUE(tlv_ip_reach->isis_metric_block.metric_expense), - ISIS_LSP_TLV_METRIC_IE(tlv_ip_reach->isis_metric_block.metric_expense) ? "External" : "Internal"); - - if (!ISIS_LSP_TLV_METRIC_SUPPORTED(tlv_ip_reach->isis_metric_block.metric_error)) - printf("%s Error Metric: %u, %s", - ident, - ISIS_LSP_TLV_METRIC_VALUE(tlv_ip_reach->isis_metric_block.metric_error), - ISIS_LSP_TLV_METRIC_IE(tlv_ip_reach->isis_metric_block.metric_error) ? "External" : "Internal"); - - length -= sizeof(struct isis_tlv_ip_reach); - tlv_ip_reach++; - } - return (1); -} - -/* - * this is the common IP-REACH subTLV decoder it is called - * from various EXTD-IP REACH TLVs (135,235,236,237) - */ - -static int -isis_print_ip_reach_subtlv (const u_int8_t *tptr,int subt,int subl,const char *ident) { - - /* first lets see if we know the subTLVs name*/ - printf("%s%s subTLV #%u, length: %u", - ident, - tok2str(isis_ext_ip_reach_subtlv_values, - "unknown", - subt), - subt, - subl); - - if (!TTEST2(*tptr,subl)) - goto trunctlv; - - switch(subt) { - case ISIS_SUBTLV_EXTD_IP_REACH_MGMT_PREFIX_COLOR: /* fall through */ - case ISIS_SUBTLV_EXTD_IP_REACH_ADMIN_TAG32: - while (subl >= 4) { - printf(", 0x%08x (=%u)", - EXTRACT_32BITS(tptr), - EXTRACT_32BITS(tptr)); - tptr+=4; - subl-=4; - } - break; - case ISIS_SUBTLV_EXTD_IP_REACH_ADMIN_TAG64: - while (subl >= 8) { - printf(", 0x%08x%08x", - EXTRACT_32BITS(tptr), - EXTRACT_32BITS(tptr+4)); - tptr+=8; - subl-=8; - } - break; - default: - if(!print_unknown_data(tptr,"\n\t\t ", - subl)) - return(0); - break; - } - return(1); - -trunctlv: - printf("%spacket exceeded snapshot",ident); - return(0); -} - -/* - * this is the common IS-REACH subTLV decoder it is called - * from isis_print_ext_is_reach() - */ - -static int -isis_print_is_reach_subtlv (const u_int8_t *tptr,u_int subt,u_int subl,const char *ident) { - - u_int te_class,priority_level; - union { /* int to float conversion buffer for several subTLVs */ - float f; - u_int32_t i; - } bw; - - /* first lets see if we know the subTLVs name*/ - printf("%s%s subTLV #%u, length: %u", - ident, - tok2str(isis_ext_is_reach_subtlv_values, - "unknown", - subt), - subt, - subl); - - if (!TTEST2(*tptr,subl)) - goto trunctlv; - - switch(subt) { - case ISIS_SUBTLV_EXT_IS_REACH_ADMIN_GROUP: - case ISIS_SUBTLV_EXT_IS_REACH_LINK_LOCAL_REMOTE_ID: - case ISIS_SUBTLV_EXT_IS_REACH_LINK_REMOTE_ID: - if (subl >= 4) { - printf(", 0x%08x", EXTRACT_32BITS(tptr)); - if (subl == 8) /* draft-ietf-isis-gmpls-extensions */ - printf(", 0x%08x", EXTRACT_32BITS(tptr+4)); - } - break; - case ISIS_SUBTLV_EXT_IS_REACH_IPV4_INTF_ADDR: - case ISIS_SUBTLV_EXT_IS_REACH_IPV4_NEIGHBOR_ADDR: - if (subl >= sizeof(struct in_addr)) - printf(", %s", ipaddr_string(tptr)); - break; - case ISIS_SUBTLV_EXT_IS_REACH_MAX_LINK_BW : - case ISIS_SUBTLV_EXT_IS_REACH_RESERVABLE_BW: - if (subl >= 4) { - bw.i = EXTRACT_32BITS(tptr); - printf(", %.3f Mbps", bw.f*8/1000000 ); - } - break; - case ISIS_SUBTLV_EXT_IS_REACH_UNRESERVED_BW : - if (subl >= 32) { - for (te_class = 0; te_class < 8; te_class++) { - bw.i = EXTRACT_32BITS(tptr); - printf("%s TE-Class %u: %.3f Mbps", - ident, - te_class, - bw.f*8/1000000 ); - tptr+=4; - } - } - break; - case ISIS_SUBTLV_EXT_IS_REACH_BW_CONSTRAINTS: /* fall through */ - case ISIS_SUBTLV_EXT_IS_REACH_BW_CONSTRAINTS_OLD: - printf("%sBandwidth Constraints Model ID: %s (%u)", - ident, - tok2str(diffserv_te_bc_values, "unknown", *tptr), - *tptr); - tptr++; - /* decode BCs until the subTLV ends */ - for (te_class = 0; te_class < (subl-1)/4; te_class++) { - bw.i = EXTRACT_32BITS(tptr); - printf("%s Bandwidth constraint CT%u: %.3f Mbps", - ident, - te_class, - bw.f*8/1000000 ); - tptr+=4; - } - break; - case ISIS_SUBTLV_EXT_IS_REACH_TE_METRIC: - if (subl >= 3) - printf(", %u", EXTRACT_24BITS(tptr)); - break; - case ISIS_SUBTLV_EXT_IS_REACH_LINK_PROTECTION_TYPE: - if (subl >= 2) { - printf(", %s, Priority %u", - bittok2str(gmpls_link_prot_values, "none", *tptr), - *(tptr+1)); - } - break; - case ISIS_SUBTLV_EXT_IS_REACH_INTF_SW_CAP_DESCR: - if (subl >= 36) { - printf("%s Interface Switching Capability:%s", - ident, - tok2str(gmpls_switch_cap_values, "Unknown", *(tptr))); - printf(", LSP Encoding: %s", - tok2str(gmpls_encoding_values, "Unknown", *(tptr+1))); - tptr+=4; - printf("%s Max LSP Bandwidth:",ident); - for (priority_level = 0; priority_level < 8; priority_level++) { - bw.i = EXTRACT_32BITS(tptr); - printf("%s priority level %d: %.3f Mbps", - ident, - priority_level, - bw.f*8/1000000 ); - tptr+=4; - } - subl-=36; - /* there is some optional stuff left to decode but this is as of yet - not specified so just lets hexdump what is left */ - if(subl>0){ - if(!print_unknown_data(tptr,"\n\t\t ", - subl)) - return(0); - } - } - break; - default: - if(!print_unknown_data(tptr,"\n\t\t ", - subl)) - return(0); - break; - } - return(1); - -trunctlv: - printf("%spacket exceeded snapshot",ident); - return(0); -} - - -/* - * this is the common IS-REACH decoder it is called - * from various EXTD-IS REACH style TLVs (22,24,222) - */ - -static int -isis_print_ext_is_reach (const u_int8_t *tptr,const char *ident, int tlv_type) { - - char ident_buffer[20]; - int subtlv_type,subtlv_len,subtlv_sum_len; - int proc_bytes = 0; /* how many bytes did we process ? */ - - if (!TTEST2(*tptr, NODE_ID_LEN)) - return(0); - - printf("%sIS Neighbor: %s", ident, isis_print_id(tptr, NODE_ID_LEN)); - tptr+=(NODE_ID_LEN); - - if (tlv_type != ISIS_TLV_IS_ALIAS_ID) { /* the Alias TLV Metric field is implicit 0 */ - if (!TTEST2(*tptr, 3)) /* and is therefore skipped */ - return(0); - printf(", Metric: %d",EXTRACT_24BITS(tptr)); - tptr+=3; - } - - if (!TTEST2(*tptr, 1)) - return(0); - subtlv_sum_len=*(tptr++); /* read out subTLV length */ - proc_bytes=NODE_ID_LEN+3+1; - printf(", %ssub-TLVs present",subtlv_sum_len ? "" : "no "); - if (subtlv_sum_len) { - printf(" (%u)",subtlv_sum_len); - while (subtlv_sum_len>0) { - if (!TTEST2(*tptr,2)) - return(0); - subtlv_type=*(tptr++); - subtlv_len=*(tptr++); - /* prepend the ident string */ - snprintf(ident_buffer, sizeof(ident_buffer), "%s ",ident); - if(!isis_print_is_reach_subtlv(tptr,subtlv_type,subtlv_len,ident_buffer)) - return(0); - tptr+=subtlv_len; - subtlv_sum_len-=(subtlv_len+2); - proc_bytes+=(subtlv_len+2); - } - } - return(proc_bytes); -} - -/* - * this is the common Multi Topology ID decoder - * it is called from various MT-TLVs (222,229,235,237) - */ - -static int -isis_print_mtid (const u_int8_t *tptr,const char *ident) { - - if (!TTEST2(*tptr, 2)) - return(0); - - printf("%s%s", - ident, - tok2str(isis_mt_values, - "Reserved for IETF Consensus", - ISIS_MASK_MTID(EXTRACT_16BITS(tptr)))); - - printf(" Topology (0x%03x), Flags: [%s]", - ISIS_MASK_MTID(EXTRACT_16BITS(tptr)), - bittok2str(isis_mt_flag_values, "none",ISIS_MASK_MTFLAGS(EXTRACT_16BITS(tptr)))); - - return(2); -} - -/* - * this is the common extended IP reach decoder - * it is called from TLVs (135,235,236,237) - * we process the TLV and optional subTLVs and return - * the amount of processed bytes - */ - -static int -isis_print_extd_ip_reach (const u_int8_t *tptr, const char *ident, u_int16_t afi) { - - char ident_buffer[20]; - u_int8_t prefix[sizeof(struct in6_addr)]; /* shared copy buffer for IPv4 and IPv6 prefixes */ - u_int metric, status_byte, bit_length, byte_length, sublen, processed, subtlvtype, subtlvlen; - - if (!TTEST2(*tptr, 4)) - return (0); - metric = EXTRACT_32BITS(tptr); - processed=4; - tptr+=4; - - if (afi == IPV4) { - if (!TTEST2(*tptr, 1)) /* fetch status byte */ - return (0); - status_byte=*(tptr++); - bit_length = status_byte&0x3f; - processed++; -#ifdef INET6 - } else if (afi == IPV6) { - if (!TTEST2(*tptr, 1)) /* fetch status & prefix_len byte */ - return (0); - status_byte=*(tptr++); - bit_length=*(tptr++); - processed+=2; -#endif - } else - return (0); /* somebody is fooling us */ - - byte_length = (bit_length + 7) / 8; /* prefix has variable length encoding */ - - if (!TTEST2(*tptr, byte_length)) - return (0); - memset(prefix, 0, sizeof(struct in6_addr)); /* clear the copy buffer */ - memcpy(prefix,tptr,byte_length); /* copy as much as is stored in the TLV */ - tptr+=byte_length; - processed+=byte_length; - - if (afi == IPV4) - printf("%sIPv4 prefix: %15s/%u", - ident, - ipaddr_string(prefix), - bit_length); -#ifdef INET6 - if (afi == IPV6) - printf("%sIPv6 prefix: %s/%u", - ident, - ip6addr_string(prefix), - bit_length); -#endif - - printf(", Distribution: %s, Metric: %u", - ISIS_MASK_TLV_EXTD_IP_UPDOWN(status_byte) ? "down" : "up", - metric); - - if (afi == IPV4 && ISIS_MASK_TLV_EXTD_IP_SUBTLV(status_byte)) - printf(", sub-TLVs present"); -#ifdef INET6 - if (afi == IPV6) - printf(", %s%s", - ISIS_MASK_TLV_EXTD_IP6_IE(status_byte) ? "External" : "Internal", - ISIS_MASK_TLV_EXTD_IP6_SUBTLV(status_byte) ? ", sub-TLVs present" : ""); -#endif - - if ((ISIS_MASK_TLV_EXTD_IP_SUBTLV(status_byte) && afi == IPV4) || - (ISIS_MASK_TLV_EXTD_IP6_SUBTLV(status_byte) && afi == IPV6)) { - /* assume that one prefix can hold more - than one subTLV - therefore the first byte must reflect - the aggregate bytecount of the subTLVs for this prefix - */ - if (!TTEST2(*tptr, 1)) - return (0); - sublen=*(tptr++); - processed+=sublen+1; - printf(" (%u)",sublen); /* print out subTLV length */ - - while (sublen>0) { - if (!TTEST2(*tptr,2)) - return (0); - subtlvtype=*(tptr++); - subtlvlen=*(tptr++); - /* prepend the ident string */ - snprintf(ident_buffer, sizeof(ident_buffer), "%s ",ident); - if(!isis_print_ip_reach_subtlv(tptr,subtlvtype,subtlvlen,ident_buffer)) - return(0); - tptr+=subtlvlen; - sublen-=(subtlvlen+2); - } - } - return (processed); -} - -/* - * isis_print - * Decode IS-IS packets. Return 0 on error. - */ - -static int isis_print (const u_int8_t *p, u_int length) -{ - const struct isis_common_header *isis_header; - - const struct isis_iih_lan_header *header_iih_lan; - const struct isis_iih_ptp_header *header_iih_ptp; - const struct isis_lsp_header *header_lsp; - const struct isis_csnp_header *header_csnp; - const struct isis_psnp_header *header_psnp; - - const struct isis_tlv_lsp *tlv_lsp; - const struct isis_tlv_ptp_adj *tlv_ptp_adj; - const struct isis_tlv_is_reach *tlv_is_reach; - const struct isis_tlv_es_reach *tlv_es_reach; - - u_int8_t pdu_type, max_area, id_length, tlv_type, tlv_len, tmp, alen, lan_alen, prefix_len; - u_int8_t ext_is_len, ext_ip_len, mt_len; - const u_int8_t *optr, *pptr, *tptr; - u_short packet_len,pdu_len; - u_int i,vendor_id; - - packet_len=length; - optr = p; /* initialize the _o_riginal pointer to the packet start - - need it for parsing the checksum TLV */ - isis_header = (const struct isis_common_header *)p; - TCHECK(*isis_header); - pptr = p+(ISIS_COMMON_HEADER_SIZE); - header_iih_lan = (const struct isis_iih_lan_header *)pptr; - header_iih_ptp = (const struct isis_iih_ptp_header *)pptr; - header_lsp = (const struct isis_lsp_header *)pptr; - header_csnp = (const struct isis_csnp_header *)pptr; - header_psnp = (const struct isis_psnp_header *)pptr; - - if (!eflag) - printf("IS-IS"); - - /* - * Sanity checking of the header. - */ - - if (isis_header->version != ISIS_VERSION) { - printf("version %d packet not supported", isis_header->version); - return (0); - } - - if ((isis_header->id_length != SYSTEM_ID_LEN) && (isis_header->id_length != 0)) { - printf("system ID length of %d is not supported", - isis_header->id_length); - return (0); - } - - if (isis_header->pdu_version != ISIS_VERSION) { - printf("version %d packet not supported", isis_header->pdu_version); - return (0); - } - - max_area = isis_header->max_area; - switch(max_area) { - case 0: - max_area = 3; /* silly shit */ - break; - case 255: - printf("bad packet -- 255 areas"); - return (0); - default: - break; - } - - id_length = isis_header->id_length; - switch(id_length) { - case 0: - id_length = 6; /* silly shit again */ - break; - case 1: /* 1-8 are valid sys-ID lenghts */ - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - break; - case 255: - id_length = 0; /* entirely useless */ - break; - default: - break; - } - - /* toss any non 6-byte sys-ID len PDUs */ - if (id_length != 6 ) { - printf("bad packet -- illegal sys-ID length (%u)", id_length); - return (0); - } - - pdu_type=isis_header->pdu_type; - - /* in non-verbose mode print the basic PDU Type plus PDU specific brief information*/ - if (vflag < 1) { - printf("%s%s", - eflag ? "" : ", ", - tok2str(isis_pdu_values,"unknown PDU-Type %u",pdu_type)); - - switch (pdu_type) { - - case ISIS_PDU_L1_LAN_IIH: - case ISIS_PDU_L2_LAN_IIH: - printf(", src-id %s", - isis_print_id(header_iih_lan->source_id,SYSTEM_ID_LEN)); - printf(", lan-id %s, prio %u", - isis_print_id(header_iih_lan->lan_id,NODE_ID_LEN), - header_iih_lan->priority); - break; - case ISIS_PDU_PTP_IIH: - printf(", src-id %s", isis_print_id(header_iih_ptp->source_id,SYSTEM_ID_LEN)); - break; - case ISIS_PDU_L1_LSP: - case ISIS_PDU_L2_LSP: - printf(", lsp-id %s, seq 0x%08x, lifetime %5us", - isis_print_id(header_lsp->lsp_id, LSP_ID_LEN), - EXTRACT_32BITS(header_lsp->sequence_number), - EXTRACT_16BITS(header_lsp->remaining_lifetime)); - break; - case ISIS_PDU_L1_CSNP: - case ISIS_PDU_L2_CSNP: - printf(", src-id %s", isis_print_id(header_csnp->source_id,NODE_ID_LEN)); - break; - case ISIS_PDU_L1_PSNP: - case ISIS_PDU_L2_PSNP: - printf(", src-id %s", isis_print_id(header_psnp->source_id,NODE_ID_LEN)); - break; - - } - printf(", length %u", length); - - return(1); - } - - /* ok they seem to want to know everything - lets fully decode it */ - printf("%slength %u", eflag ? "" : ", ",length); - - printf("\n\t%s, hlen: %u, v: %u, pdu-v: %u, sys-id-len: %u (%u), max-area: %u (%u)", - tok2str(isis_pdu_values, - "unknown, type %u", - pdu_type), - isis_header->fixed_len, - isis_header->version, - isis_header->pdu_version, - id_length, - isis_header->id_length, - max_area, - isis_header->max_area); - - if (vflag > 1) { - if(!print_unknown_data(optr,"\n\t",8)) /* provide the _o_riginal pointer */ - return(0); /* for optionally debugging the common header */ - } - - switch (pdu_type) { - - case ISIS_PDU_L1_LAN_IIH: - case ISIS_PDU_L2_LAN_IIH: - if (isis_header->fixed_len != (ISIS_COMMON_HEADER_SIZE+ISIS_IIH_LAN_HEADER_SIZE)) { - printf(", bogus fixed header length %u should be %lu", - isis_header->fixed_len, (unsigned long)ISIS_IIH_LAN_HEADER_SIZE); - return (0); - } - - pdu_len=EXTRACT_16BITS(header_iih_lan->pdu_len); - if (packet_len>pdu_len) { - packet_len=pdu_len; /* do TLV decoding as long as it makes sense */ - length=pdu_len; - } - - TCHECK(*header_iih_lan); - printf("\n\t source-id: %s, holding time: %us, Flags: [%s]", - isis_print_id(header_iih_lan->source_id,SYSTEM_ID_LEN), - EXTRACT_16BITS(header_iih_lan->holding_time), - tok2str(isis_iih_circuit_type_values, - "unknown circuit type 0x%02x", - header_iih_lan->circuit_type)); - - printf("\n\t lan-id: %s, Priority: %u, PDU length: %u", - isis_print_id(header_iih_lan->lan_id, NODE_ID_LEN), - (header_iih_lan->priority) & ISIS_LAN_PRIORITY_MASK, - pdu_len); - - if (vflag > 1) { - if(!print_unknown_data(pptr,"\n\t ",ISIS_IIH_LAN_HEADER_SIZE)) - return(0); - } - - packet_len -= (ISIS_COMMON_HEADER_SIZE+ISIS_IIH_LAN_HEADER_SIZE); - pptr = p + (ISIS_COMMON_HEADER_SIZE+ISIS_IIH_LAN_HEADER_SIZE); - break; - - case ISIS_PDU_PTP_IIH: - if (isis_header->fixed_len != (ISIS_COMMON_HEADER_SIZE+ISIS_IIH_PTP_HEADER_SIZE)) { - printf(", bogus fixed header length %u should be %lu", - isis_header->fixed_len, (unsigned long)ISIS_IIH_PTP_HEADER_SIZE); - return (0); - } - - pdu_len=EXTRACT_16BITS(header_iih_ptp->pdu_len); - if (packet_len>pdu_len) { - packet_len=pdu_len; /* do TLV decoding as long as it makes sense */ - length=pdu_len; - } - - TCHECK(*header_iih_ptp); - printf("\n\t source-id: %s, holding time: %us, Flags: [%s]", - isis_print_id(header_iih_ptp->source_id,SYSTEM_ID_LEN), - EXTRACT_16BITS(header_iih_ptp->holding_time), - tok2str(isis_iih_circuit_type_values, - "unknown circuit type 0x%02x", - header_iih_ptp->circuit_type)); - - printf("\n\t circuit-id: 0x%02x, PDU length: %u", - header_iih_ptp->circuit_id, - pdu_len); - - if (vflag > 1) { - if(!print_unknown_data(pptr,"\n\t ",ISIS_IIH_PTP_HEADER_SIZE)) - return(0); - } - - packet_len -= (ISIS_COMMON_HEADER_SIZE+ISIS_IIH_PTP_HEADER_SIZE); - pptr = p + (ISIS_COMMON_HEADER_SIZE+ISIS_IIH_PTP_HEADER_SIZE); - break; - - case ISIS_PDU_L1_LSP: - case ISIS_PDU_L2_LSP: - if (isis_header->fixed_len != (ISIS_COMMON_HEADER_SIZE+ISIS_LSP_HEADER_SIZE)) { - printf(", bogus fixed header length %u should be %lu", - isis_header->fixed_len, (unsigned long)ISIS_LSP_HEADER_SIZE); - return (0); - } - - pdu_len=EXTRACT_16BITS(header_lsp->pdu_len); - if (packet_len>pdu_len) { - packet_len=pdu_len; /* do TLV decoding as long as it makes sense */ - length=pdu_len; - } - - TCHECK(*header_lsp); - printf("\n\t lsp-id: %s, seq: 0x%08x, lifetime: %5us\n\t chksum: 0x%04x", - isis_print_id(header_lsp->lsp_id, LSP_ID_LEN), - EXTRACT_32BITS(header_lsp->sequence_number), - EXTRACT_16BITS(header_lsp->remaining_lifetime), - EXTRACT_16BITS(header_lsp->checksum)); - - /* if this is a purge do not attempt to verify the checksum */ - if ( EXTRACT_16BITS(header_lsp->remaining_lifetime) == 0 && - EXTRACT_16BITS(header_lsp->checksum) == 0) - printf(" (purged)"); - else - /* verify the checksum - - * checking starts at the lsp-id field at byte position [12] - * hence the length needs to be reduced by 12 bytes */ - printf(" (%s)", (osi_cksum((u_int8_t *)header_lsp->lsp_id, length-12)) ? "incorrect" : "correct"); - - printf(", PDU length: %u, Flags: [ %s", - pdu_len, - ISIS_MASK_LSP_OL_BIT(header_lsp->typeblock) ? "Overload bit set, " : ""); - - if (ISIS_MASK_LSP_ATT_BITS(header_lsp->typeblock)) { - printf("%s", ISIS_MASK_LSP_ATT_DEFAULT_BIT(header_lsp->typeblock) ? "default " : ""); - printf("%s", ISIS_MASK_LSP_ATT_DELAY_BIT(header_lsp->typeblock) ? "delay " : ""); - printf("%s", ISIS_MASK_LSP_ATT_EXPENSE_BIT(header_lsp->typeblock) ? "expense " : ""); - printf("%s", ISIS_MASK_LSP_ATT_ERROR_BIT(header_lsp->typeblock) ? "error " : ""); - printf("ATT bit set, "); - } - printf("%s", ISIS_MASK_LSP_PARTITION_BIT(header_lsp->typeblock) ? "P bit set, " : ""); - printf("%s ]", tok2str(isis_lsp_istype_values,"Unknown(0x%x)",ISIS_MASK_LSP_ISTYPE_BITS(header_lsp->typeblock))); - - if (vflag > 1) { - if(!print_unknown_data(pptr,"\n\t ",ISIS_LSP_HEADER_SIZE)) - return(0); - } - - packet_len -= (ISIS_COMMON_HEADER_SIZE+ISIS_LSP_HEADER_SIZE); - pptr = p + (ISIS_COMMON_HEADER_SIZE+ISIS_LSP_HEADER_SIZE); - break; - - case ISIS_PDU_L1_CSNP: - case ISIS_PDU_L2_CSNP: - if (isis_header->fixed_len != (ISIS_COMMON_HEADER_SIZE+ISIS_CSNP_HEADER_SIZE)) { - printf(", bogus fixed header length %u should be %lu", - isis_header->fixed_len, (unsigned long)ISIS_CSNP_HEADER_SIZE); - return (0); - } - - pdu_len=EXTRACT_16BITS(header_csnp->pdu_len); - if (packet_len>pdu_len) { - packet_len=pdu_len; /* do TLV decoding as long as it makes sense */ - length=pdu_len; - } - - TCHECK(*header_csnp); - printf("\n\t source-id: %s, PDU length: %u", - isis_print_id(header_csnp->source_id, NODE_ID_LEN), - pdu_len); - printf("\n\t start lsp-id: %s", - isis_print_id(header_csnp->start_lsp_id, LSP_ID_LEN)); - printf("\n\t end lsp-id: %s", - isis_print_id(header_csnp->end_lsp_id, LSP_ID_LEN)); - - if (vflag > 1) { - if(!print_unknown_data(pptr,"\n\t ",ISIS_CSNP_HEADER_SIZE)) - return(0); - } - - packet_len -= (ISIS_COMMON_HEADER_SIZE+ISIS_CSNP_HEADER_SIZE); - pptr = p + (ISIS_COMMON_HEADER_SIZE+ISIS_CSNP_HEADER_SIZE); - break; - - case ISIS_PDU_L1_PSNP: - case ISIS_PDU_L2_PSNP: - if (isis_header->fixed_len != (ISIS_COMMON_HEADER_SIZE+ISIS_PSNP_HEADER_SIZE)) { - printf("- bogus fixed header length %u should be %lu", - isis_header->fixed_len, (unsigned long)ISIS_PSNP_HEADER_SIZE); - return (0); - } - - pdu_len=EXTRACT_16BITS(header_psnp->pdu_len); - if (packet_len>pdu_len) { - packet_len=pdu_len; /* do TLV decoding as long as it makes sense */ - length=pdu_len; - } - - TCHECK(*header_psnp); - printf("\n\t source-id: %s, PDU length: %u", - isis_print_id(header_psnp->source_id, NODE_ID_LEN), - pdu_len); - - if (vflag > 1) { - if(!print_unknown_data(pptr,"\n\t ",ISIS_PSNP_HEADER_SIZE)) - return(0); - } - - packet_len -= (ISIS_COMMON_HEADER_SIZE+ISIS_PSNP_HEADER_SIZE); - pptr = p + (ISIS_COMMON_HEADER_SIZE+ISIS_PSNP_HEADER_SIZE); - break; - - default: - if(!print_unknown_data(pptr,"\n\t ",length)) - return(0); - return (0); - } - - /* - * Now print the TLV's. - */ - - while (packet_len >= 2) { - if (pptr == snapend) { - return (1); - } - - if (!TTEST2(*pptr, 2)) { - printf("\n\t\t packet exceeded snapshot (%ld) bytes", - (long)(pptr-snapend)); - return (1); - } - tlv_type = *pptr++; - tlv_len = *pptr++; - tmp =tlv_len; /* copy temporary len & pointer to packet data */ - tptr = pptr; - packet_len -= 2; - if (tlv_len > packet_len) { - break; - } - - /* first lets see if we know the TLVs name*/ - printf("\n\t %s TLV #%u, length: %u", - tok2str(isis_tlv_values, - "unknown", - tlv_type), - tlv_type, - tlv_len); - - if (tlv_len == 0) /* something is malformed */ - break; - - /* now check if we have a decoder otherwise do a hexdump at the end*/ - switch (tlv_type) { - case ISIS_TLV_AREA_ADDR: - if (!TTEST2(*tptr, 1)) - goto trunctlv; - alen = *tptr++; - while (tmp && alen < tmp) { - printf("\n\t Area address (length: %u): %s", - alen, - isonsap_string(tptr,alen)); - tptr += alen; - tmp -= alen + 1; - if (tmp==0) /* if this is the last area address do not attemt a boundary check */ - break; - if (!TTEST2(*tptr, 1)) - goto trunctlv; - alen = *tptr++; - } - break; - case ISIS_TLV_ISNEIGH: - while (tmp >= ETHER_ADDR_LEN) { - if (!TTEST2(*tptr, ETHER_ADDR_LEN)) - goto trunctlv; - printf("\n\t SNPA: %s",isis_print_id(tptr,ETHER_ADDR_LEN)); - tmp -= ETHER_ADDR_LEN; - tptr += ETHER_ADDR_LEN; - } - break; - - case ISIS_TLV_ISNEIGH_VARLEN: - if (!TTEST2(*tptr, 1) || tmp < 3) /* min. TLV length */ - goto trunctlv; - lan_alen = *tptr++; /* LAN address length */ - if (lan_alen == 0) { - printf("\n\t LAN address length 0 bytes (invalid)"); - break; - } - tmp --; - printf("\n\t LAN address length %u bytes ",lan_alen); - while (tmp >= lan_alen) { - if (!TTEST2(*tptr, lan_alen)) - goto trunctlv; - printf("\n\t\tIS Neighbor: %s",isis_print_id(tptr,lan_alen)); - tmp -= lan_alen; - tptr +=lan_alen; - } - break; - - case ISIS_TLV_PADDING: - break; - - case ISIS_TLV_MT_IS_REACH: - while (tmp >= 2+NODE_ID_LEN+3+1) { - mt_len = isis_print_mtid(tptr, "\n\t "); - if (mt_len == 0) /* did something go wrong ? */ - goto trunctlv; - tptr+=mt_len; - tmp-=mt_len; - - ext_is_len = isis_print_ext_is_reach(tptr,"\n\t ",tlv_type); - if (ext_is_len == 0) /* did something go wrong ? */ - goto trunctlv; - - tmp-=ext_is_len; - tptr+=ext_is_len; - } - break; - - case ISIS_TLV_IS_ALIAS_ID: - while (tmp >= NODE_ID_LEN+1) { /* is it worth attempting a decode ? */ - ext_is_len = isis_print_ext_is_reach(tptr,"\n\t ",tlv_type); - if (ext_is_len == 0) /* did something go wrong ? */ - goto trunctlv; - tmp-=ext_is_len; - tptr+=ext_is_len; - } - break; - - case ISIS_TLV_EXT_IS_REACH: - while (tmp >= NODE_ID_LEN+3+1) { /* is it worth attempting a decode ? */ - ext_is_len = isis_print_ext_is_reach(tptr,"\n\t ",tlv_type); - if (ext_is_len == 0) /* did something go wrong ? */ - goto trunctlv; - tmp-=ext_is_len; - tptr+=ext_is_len; - } - break; - case ISIS_TLV_IS_REACH: - if (!TTEST2(*tptr,1)) /* check if there is one byte left to read out the virtual flag */ - goto trunctlv; - printf("\n\t %s", - tok2str(isis_is_reach_virtual_values, - "bogus virtual flag 0x%02x", - *tptr++)); - tlv_is_reach = (const struct isis_tlv_is_reach *)tptr; - while (tmp >= sizeof(struct isis_tlv_is_reach)) { - if (!TTEST(*tlv_is_reach)) - goto trunctlv; - printf("\n\t IS Neighbor: %s", - isis_print_id(tlv_is_reach->neighbor_nodeid, NODE_ID_LEN)); - isis_print_metric_block(&tlv_is_reach->isis_metric_block); - tmp -= sizeof(struct isis_tlv_is_reach); - tlv_is_reach++; - } - break; - - case ISIS_TLV_ESNEIGH: - tlv_es_reach = (const struct isis_tlv_es_reach *)tptr; - while (tmp >= sizeof(struct isis_tlv_es_reach)) { - if (!TTEST(*tlv_es_reach)) - goto trunctlv; - printf("\n\t ES Neighbor: %s", - isis_print_id(tlv_es_reach->neighbor_sysid,SYSTEM_ID_LEN)); - isis_print_metric_block(&tlv_es_reach->isis_metric_block); - tmp -= sizeof(struct isis_tlv_es_reach); - tlv_es_reach++; - } - break; - - /* those two TLVs share the same format */ - case ISIS_TLV_INT_IP_REACH: - case ISIS_TLV_EXT_IP_REACH: - if (!isis_print_tlv_ip_reach(pptr, "\n\t ", tlv_len)) - return (1); - break; - - case ISIS_TLV_EXTD_IP_REACH: - while (tmp>0) { - ext_ip_len = isis_print_extd_ip_reach(tptr, "\n\t ", IPV4); - if (ext_ip_len == 0) /* did something go wrong ? */ - goto trunctlv; - tptr+=ext_ip_len; - tmp-=ext_ip_len; - } - break; - - case ISIS_TLV_MT_IP_REACH: - while (tmp>0) { - mt_len = isis_print_mtid(tptr, "\n\t "); - if (mt_len == 0) /* did something go wrong ? */ - goto trunctlv; - tptr+=mt_len; - tmp-=mt_len; - - ext_ip_len = isis_print_extd_ip_reach(tptr, "\n\t ", IPV4); - if (ext_ip_len == 0) /* did something go wrong ? */ - goto trunctlv; - tptr+=ext_ip_len; - tmp-=ext_ip_len; - } - break; - -#ifdef INET6 - case ISIS_TLV_IP6_REACH: - while (tmp>0) { - ext_ip_len = isis_print_extd_ip_reach(tptr, "\n\t ", IPV6); - if (ext_ip_len == 0) /* did something go wrong ? */ - goto trunctlv; - tptr+=ext_ip_len; - tmp-=ext_ip_len; - } - break; - - case ISIS_TLV_MT_IP6_REACH: - while (tmp>0) { - mt_len = isis_print_mtid(tptr, "\n\t "); - if (mt_len == 0) /* did something go wrong ? */ - goto trunctlv; - tptr+=mt_len; - tmp-=mt_len; - - ext_ip_len = isis_print_extd_ip_reach(tptr, "\n\t ", IPV6); - if (ext_ip_len == 0) /* did something go wrong ? */ - goto trunctlv; - tptr+=ext_ip_len; - tmp-=ext_ip_len; - } - break; - - case ISIS_TLV_IP6ADDR: - while (tmp>=sizeof(struct in6_addr)) { - if (!TTEST2(*tptr, sizeof(struct in6_addr))) - goto trunctlv; - - printf("\n\t IPv6 interface address: %s", - ip6addr_string(tptr)); - - tptr += sizeof(struct in6_addr); - tmp -= sizeof(struct in6_addr); - } - break; -#endif - case ISIS_TLV_AUTH: - if (!TTEST2(*tptr, 1)) - goto trunctlv; - - printf("\n\t %s: ", - tok2str(isis_subtlv_auth_values, - "unknown Authentication type 0x%02x", - *tptr)); - - switch (*tptr) { - case ISIS_SUBTLV_AUTH_SIMPLE: - for(i=1;i<tlv_len;i++) { - if (!TTEST2(*(tptr+i), 1)) - goto trunctlv; - printf("%c",*(tptr+i)); - } - break; - case ISIS_SUBTLV_AUTH_MD5: - for(i=1;i<tlv_len;i++) { - if (!TTEST2(*(tptr+i), 1)) - goto trunctlv; - printf("%02x",*(tptr+i)); - } - if (tlv_len != ISIS_SUBTLV_AUTH_MD5_LEN+1) - printf(", (malformed subTLV) "); - break; - case ISIS_SUBTLV_AUTH_PRIVATE: - default: - if(!print_unknown_data(tptr+1,"\n\t\t ",tlv_len-1)) - return(0); - break; - } - break; - - case ISIS_TLV_PTP_ADJ: - tlv_ptp_adj = (const struct isis_tlv_ptp_adj *)tptr; - if(tmp>=1) { - if (!TTEST2(*tptr, 1)) - goto trunctlv; - printf("\n\t Adjacency State: %s (%u)", - tok2str(isis_ptp_adjancey_values, "unknown", *tptr), - *tptr); - tmp--; - } - if(tmp>sizeof(tlv_ptp_adj->extd_local_circuit_id)) { - if (!TTEST2(tlv_ptp_adj->extd_local_circuit_id, - sizeof(tlv_ptp_adj->extd_local_circuit_id))) - goto trunctlv; - printf("\n\t Extended Local circuit-ID: 0x%08x", - EXTRACT_32BITS(tlv_ptp_adj->extd_local_circuit_id)); - tmp-=sizeof(tlv_ptp_adj->extd_local_circuit_id); - } - if(tmp>=SYSTEM_ID_LEN) { - if (!TTEST2(tlv_ptp_adj->neighbor_sysid, SYSTEM_ID_LEN)) - goto trunctlv; - printf("\n\t Neighbor System-ID: %s", - isis_print_id(tlv_ptp_adj->neighbor_sysid,SYSTEM_ID_LEN)); - tmp-=SYSTEM_ID_LEN; - } - if(tmp>=sizeof(tlv_ptp_adj->neighbor_extd_local_circuit_id)) { - if (!TTEST2(tlv_ptp_adj->neighbor_extd_local_circuit_id, - sizeof(tlv_ptp_adj->neighbor_extd_local_circuit_id))) - goto trunctlv; - printf("\n\t Neighbor Extended Local circuit-ID: 0x%08x", - EXTRACT_32BITS(tlv_ptp_adj->neighbor_extd_local_circuit_id)); - } - break; - - case ISIS_TLV_PROTOCOLS: - printf("\n\t NLPID(s): "); - while (tmp>0) { - if (!TTEST2(*(tptr), 1)) - goto trunctlv; - printf("%s (0x%02x)", - tok2str(nlpid_values, - "unknown", - *tptr), - *tptr); - if (tmp>1) /* further NPLIDs ? - put comma */ - printf(", "); - tptr++; - tmp--; - } - break; - - case ISIS_TLV_TE_ROUTER_ID: - if (!TTEST2(*pptr, sizeof(struct in_addr))) - goto trunctlv; - printf("\n\t Traffic Engineering Router ID: %s", ipaddr_string(pptr)); - break; - - case ISIS_TLV_IPADDR: - while (tmp>=sizeof(struct in_addr)) { - if (!TTEST2(*tptr, sizeof(struct in_addr))) - goto trunctlv; - printf("\n\t IPv4 interface address: %s", ipaddr_string(tptr)); - tptr += sizeof(struct in_addr); - tmp -= sizeof(struct in_addr); - } - break; - - case ISIS_TLV_HOSTNAME: - printf("\n\t Hostname: "); - while (tmp>0) { - if (!TTEST2(*tptr, 1)) - goto trunctlv; - printf("%c",*tptr++); - tmp--; - } - break; - - case ISIS_TLV_SHARED_RISK_GROUP: - if (tmp < NODE_ID_LEN) - break; - if (!TTEST2(*tptr, NODE_ID_LEN)) - goto trunctlv; - printf("\n\t IS Neighbor: %s", isis_print_id(tptr, NODE_ID_LEN)); - tptr+=(NODE_ID_LEN); - tmp-=(NODE_ID_LEN); - - if (tmp < 1) - break; - if (!TTEST2(*tptr, 1)) - goto trunctlv; - printf(", Flags: [%s]", ISIS_MASK_TLV_SHARED_RISK_GROUP(*tptr++) ? "numbered" : "unnumbered"); - tmp--; - - if (tmp < sizeof(struct in_addr)) - break; - if (!TTEST2(*tptr,sizeof(struct in_addr))) - goto trunctlv; - printf("\n\t IPv4 interface address: %s", ipaddr_string(tptr)); - tptr+=sizeof(struct in_addr); - tmp-=sizeof(struct in_addr); - - if (tmp < sizeof(struct in_addr)) - break; - if (!TTEST2(*tptr,sizeof(struct in_addr))) - goto trunctlv; - printf("\n\t IPv4 neighbor address: %s", ipaddr_string(tptr)); - tptr+=sizeof(struct in_addr); - tmp-=sizeof(struct in_addr); - - while (tmp>=4) { - if (!TTEST2(*tptr, 4)) - goto trunctlv; - printf("\n\t Link-ID: 0x%08x", EXTRACT_32BITS(tptr)); - tptr+=4; - tmp-=4; - } - break; - - case ISIS_TLV_LSP: - tlv_lsp = (const struct isis_tlv_lsp *)tptr; - while(tmp>=sizeof(struct isis_tlv_lsp)) { - if (!TTEST((tlv_lsp->lsp_id)[LSP_ID_LEN-1])) - goto trunctlv; - printf("\n\t lsp-id: %s", - isis_print_id(tlv_lsp->lsp_id, LSP_ID_LEN)); - if (!TTEST2(tlv_lsp->sequence_number, 4)) - goto trunctlv; - printf(", seq: 0x%08x",EXTRACT_32BITS(tlv_lsp->sequence_number)); - if (!TTEST2(tlv_lsp->remaining_lifetime, 2)) - goto trunctlv; - printf(", lifetime: %5ds",EXTRACT_16BITS(tlv_lsp->remaining_lifetime)); - if (!TTEST2(tlv_lsp->checksum, 2)) - goto trunctlv; - printf(", chksum: 0x%04x",EXTRACT_16BITS(tlv_lsp->checksum)); - tmp-=sizeof(struct isis_tlv_lsp); - tlv_lsp++; - } - break; - - case ISIS_TLV_CHECKSUM: - if (tmp < ISIS_TLV_CHECKSUM_MINLEN) - break; - if (!TTEST2(*tptr, ISIS_TLV_CHECKSUM_MINLEN)) - goto trunctlv; - printf("\n\t checksum: 0x%04x ", EXTRACT_16BITS(tptr)); - /* do not attempt to verify the checksum if it is zero - * most likely a HMAC-MD5 TLV is also present and - * to avoid conflicts the checksum TLV is zeroed. - * see rfc3358 for details - */ - if (EXTRACT_16BITS(tptr) == 0) - printf("(unverified)"); - else printf("(%s)", osi_cksum(optr, length) ? "incorrect" : "correct"); - break; - - case ISIS_TLV_MT_SUPPORTED: - if (tmp < ISIS_TLV_MT_SUPPORTED_MINLEN) - break; - while (tmp>1) { - /* length can only be a multiple of 2, otherwise there is - something broken -> so decode down until length is 1 */ - if (tmp!=1) { - mt_len = isis_print_mtid(tptr, "\n\t "); - if (mt_len == 0) /* did something go wrong ? */ - goto trunctlv; - tptr+=mt_len; - tmp-=mt_len; - } else { - printf("\n\t malformed MT-ID"); - break; - } - } - break; - - case ISIS_TLV_RESTART_SIGNALING: - /* first attempt to decode the flags */ - if (tmp < ISIS_TLV_RESTART_SIGNALING_FLAGLEN) - break; - if (!TTEST2(*tptr, ISIS_TLV_RESTART_SIGNALING_FLAGLEN)) - goto trunctlv; - printf("\n\t Flags [%s]", - bittok2str(isis_restart_flag_values, "none", *tptr)); - tptr+=ISIS_TLV_RESTART_SIGNALING_FLAGLEN; - tmp-=ISIS_TLV_RESTART_SIGNALING_FLAGLEN; - - /* is there anything other than the flags field? */ - if (tmp == 0) - break; - - if (tmp < ISIS_TLV_RESTART_SIGNALING_HOLDTIMELEN) - break; - if (!TTEST2(*tptr, ISIS_TLV_RESTART_SIGNALING_HOLDTIMELEN)) - goto trunctlv; - - printf(", Remaining holding time %us", EXTRACT_16BITS(tptr+1)); - tptr+=ISIS_TLV_RESTART_SIGNALING_HOLDTIMELEN; - tmp-=ISIS_TLV_RESTART_SIGNALING_HOLDTIMELEN; - - /* is there an additional sysid field present ?*/ - if (tmp == SYSTEM_ID_LEN) { - if (!TTEST2(*tptr, SYSTEM_ID_LEN)) - goto trunctlv; - printf(", for %s",isis_print_id(tptr,SYSTEM_ID_LEN)); - } - break; - - case ISIS_TLV_IDRP_INFO: - if (tmp < ISIS_TLV_IDRP_INFO_MINLEN) - break; - if (!TTEST2(*tptr, ISIS_TLV_IDRP_INFO_MINLEN)) - goto trunctlv; - printf("\n\t Inter-Domain Information Type: %s", - tok2str(isis_subtlv_idrp_values, - "Unknown (0x%02x)", - *tptr)); - switch (*tptr++) { - case ISIS_SUBTLV_IDRP_ASN: - if (!TTEST2(*tptr, 2)) /* fetch AS number */ - goto trunctlv; - printf("AS Number: %u",EXTRACT_16BITS(tptr)); - break; - case ISIS_SUBTLV_IDRP_LOCAL: - case ISIS_SUBTLV_IDRP_RES: - default: - if(!print_unknown_data(tptr,"\n\t ",tlv_len-1)) - return(0); - break; - } - break; - - case ISIS_TLV_LSP_BUFFERSIZE: - if (tmp < ISIS_TLV_LSP_BUFFERSIZE_MINLEN) - break; - if (!TTEST2(*tptr, ISIS_TLV_LSP_BUFFERSIZE_MINLEN)) - goto trunctlv; - printf("\n\t LSP Buffersize: %u",EXTRACT_16BITS(tptr)); - break; - - case ISIS_TLV_PART_DIS: - while (tmp >= SYSTEM_ID_LEN) { - if (!TTEST2(*tptr, SYSTEM_ID_LEN)) - goto trunctlv; - printf("\n\t %s",isis_print_id(tptr,SYSTEM_ID_LEN)); - tptr+=SYSTEM_ID_LEN; - tmp-=SYSTEM_ID_LEN; - } - break; - - case ISIS_TLV_PREFIX_NEIGH: - if (tmp < sizeof(struct isis_metric_block)) - break; - if (!TTEST2(*tptr, sizeof(struct isis_metric_block))) - goto trunctlv; - printf("\n\t Metric Block"); - isis_print_metric_block((const struct isis_metric_block *)tptr); - tptr+=sizeof(struct isis_metric_block); - tmp-=sizeof(struct isis_metric_block); - - while(tmp>0) { - if (!TTEST2(*tptr, 1)) - goto trunctlv; - prefix_len=*tptr++; /* read out prefix length in semioctets*/ - if (prefix_len < 2) { - printf("\n\t\tAddress: prefix length %u < 2", prefix_len); - break; - } - tmp--; - if (tmp < prefix_len/2) - break; - if (!TTEST2(*tptr, prefix_len/2)) - goto trunctlv; - printf("\n\t\tAddress: %s/%u", - isonsap_string(tptr,prefix_len/2), - prefix_len*4); - tptr+=prefix_len/2; - tmp-=prefix_len/2; - } - break; - - case ISIS_TLV_IIH_SEQNR: - if (tmp < ISIS_TLV_IIH_SEQNR_MINLEN) - break; - if (!TTEST2(*tptr, ISIS_TLV_IIH_SEQNR_MINLEN)) /* check if four bytes are on the wire */ - goto trunctlv; - printf("\n\t Sequence number: %u", EXTRACT_32BITS(tptr) ); - break; - - case ISIS_TLV_VENDOR_PRIVATE: - if (tmp < ISIS_TLV_VENDOR_PRIVATE_MINLEN) - break; - if (!TTEST2(*tptr, ISIS_TLV_VENDOR_PRIVATE_MINLEN)) /* check if enough byte for a full oui */ - goto trunctlv; - vendor_id = EXTRACT_24BITS(tptr); - printf("\n\t Vendor: %s (%u)", - tok2str(oui_values,"Unknown",vendor_id), - vendor_id); - tptr+=3; - tmp-=3; - if (tmp > 0) /* hexdump the rest */ - if(!print_unknown_data(tptr,"\n\t\t",tmp)) - return(0); - break; - /* - * FIXME those are the defined TLVs that lack a decoder - * you are welcome to contribute code ;-) - */ - - case ISIS_TLV_DECNET_PHASE4: - case ISIS_TLV_LUCENT_PRIVATE: - case ISIS_TLV_IPAUTH: - case ISIS_TLV_NORTEL_PRIVATE1: - case ISIS_TLV_NORTEL_PRIVATE2: - - default: - if (vflag <= 1) { - if(!print_unknown_data(pptr,"\n\t\t",tlv_len)) - return(0); - } - break; - } - /* do we want to see an additionally hexdump ? */ - if (vflag> 1) { - if(!print_unknown_data(pptr,"\n\t ",tlv_len)) - return(0); - } - - pptr += tlv_len; - packet_len -= tlv_len; - } - - if (packet_len != 0) { - printf("\n\t %u straggler bytes", packet_len); - } - return (1); - - trunc: - fputs("[|isis]", stdout); - return (1); - - trunctlv: - printf("\n\t\t packet exceeded snapshot"); - return(1); -} - -/* - * Verify the checksum. See 8473-1, Appendix C, section C.4. - */ - -static int -osi_cksum(const u_int8_t *tptr, u_int len) -{ - int32_t c0 = 0, c1 = 0; - - while ((int)--len >= 0) { - c0 += *tptr++; - c0 %= 255; - c1 += c0; - c1 %= 255; - } - return (c0 | c1); -} - - -/* - * Local Variables: - * c-style: whitesmith - * c-basic-offset: 8 - * End: - */ diff --git a/contrib/tcpdump/print-juniper.c b/contrib/tcpdump/print-juniper.c deleted file mode 100644 index 57de6d9f17c3a..0000000000000 --- a/contrib/tcpdump/print-juniper.c +++ /dev/null @@ -1,1008 +0,0 @@ -/* - * 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. - * - * Original code by Hannes Gredler (hannes@juniper.net) - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-juniper.c,v 1.8.2.19 2005/08/23 10:29:42 hannes Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <pcap.h> -#include <stdio.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" -#include "ppp.h" -#include "llc.h" -#include "nlpid.h" -#include "ethertype.h" -#include "atm.h" - -#define JUNIPER_BPF_OUT 0 /* Outgoing packet */ -#define JUNIPER_BPF_IN 1 /* Incoming packet */ -#define JUNIPER_BPF_PKT_IN 0x1 /* Incoming packet */ -#define JUNIPER_BPF_NO_L2 0x2 /* L2 header stripped */ -#define JUNIPER_BPF_EXT 0x80 /* extensions present */ -#define JUNIPER_MGC_NUMBER 0x4d4743 /* = "MGC" */ - -#define JUNIPER_LSQ_COOKIE_RE (1 << 3) -#define JUNIPER_LSQ_COOKIE_DIR (1 << 2) -#define JUNIPER_LSQ_L3_PROTO_SHIFT 4 -#define JUNIPER_LSQ_L3_PROTO_MASK (0x17 << JUNIPER_LSQ_L3_PROTO_SHIFT) -#define JUNIPER_LSQ_L3_PROTO_IPV4 (0 << JUNIPER_LSQ_L3_PROTO_SHIFT) -#define JUNIPER_LSQ_L3_PROTO_IPV6 (1 << JUNIPER_LSQ_L3_PROTO_SHIFT) -#define JUNIPER_LSQ_L3_PROTO_MPLS (2 << JUNIPER_LSQ_L3_PROTO_SHIFT) -#define JUNIPER_LSQ_L3_PROTO_ISO (3 << JUNIPER_LSQ_L3_PROTO_SHIFT) -#define AS_PIC_COOKIE_LEN 8 - -#define JUNIPER_IPSEC_O_ESP_ENCRYPT_ESP_AUTHEN_TYPE 1 -#define JUNIPER_IPSEC_O_ESP_ENCRYPT_AH_AUTHEN_TYPE 2 -#define JUNIPER_IPSEC_O_ESP_AUTHENTICATION_TYPE 3 -#define JUNIPER_IPSEC_O_AH_AUTHENTICATION_TYPE 4 -#define JUNIPER_IPSEC_O_ESP_ENCRYPTION_TYPE 5 - -static struct tok juniper_ipsec_type_values[] = { - { JUNIPER_IPSEC_O_ESP_ENCRYPT_ESP_AUTHEN_TYPE, "ESP ENCR-AUTH" }, - { JUNIPER_IPSEC_O_ESP_ENCRYPT_AH_AUTHEN_TYPE, "ESP ENCR-AH AUTH" }, - { JUNIPER_IPSEC_O_ESP_AUTHENTICATION_TYPE, "ESP AUTH" }, - { JUNIPER_IPSEC_O_AH_AUTHENTICATION_TYPE, "AH AUTH" }, - { JUNIPER_IPSEC_O_ESP_ENCRYPTION_TYPE, "ESP ENCR" }, - { 0, NULL} -}; - -static struct tok juniper_direction_values[] = { - { JUNIPER_BPF_IN, "In"}, - { JUNIPER_BPF_OUT, "Out"}, - { 0, NULL} -}; - -struct juniper_cookie_table_t { - u_int32_t pictype; /* pic type */ - u_int8_t cookie_len; /* cookie len */ - const char *s; /* pic name */ -}; - -static struct juniper_cookie_table_t juniper_cookie_table[] = { -#ifdef DLT_JUNIPER_ATM1 - { DLT_JUNIPER_ATM1, 4, "ATM1"}, -#endif -#ifdef DLT_JUNIPER_ATM2 - { DLT_JUNIPER_ATM2, 8, "ATM2"}, -#endif -#ifdef DLT_JUNIPER_MLPPP - { DLT_JUNIPER_MLPPP, 2, "MLPPP"}, -#endif -#ifdef DLT_JUNIPER_MLFR - { DLT_JUNIPER_MLFR, 2, "MLFR"}, -#endif -#ifdef DLT_JUNIPER_MFR - { DLT_JUNIPER_MFR, 4, "MFR"}, -#endif -#ifdef DLT_JUNIPER_PPPOE - { DLT_JUNIPER_PPPOE, 0, "PPPoE"}, -#endif -#ifdef DLT_JUNIPER_PPPOE_ATM - { DLT_JUNIPER_PPPOE_ATM, 0, "PPPoE ATM"}, -#endif -#ifdef DLT_JUNIPER_GGSN - { DLT_JUNIPER_GGSN, 8, "GGSN"}, -#endif -#ifdef DLT_JUNIPER_MONITOR - { DLT_JUNIPER_MONITOR, 8, "MONITOR"}, -#endif -#ifdef DLT_JUNIPER_SERVICES - { DLT_JUNIPER_SERVICES, 8, "AS"}, -#endif -#ifdef DLT_JUNIPER_ES - { DLT_JUNIPER_ES, 0, "ES"}, -#endif - { 0, 0, NULL } -}; - -struct juniper_l2info_t { - u_int32_t length; - u_int32_t caplen; - u_int32_t pictype; - u_int8_t direction; - u_int8_t header_len; - u_int8_t cookie_len; - u_int8_t cookie_type; - u_int8_t cookie[8]; - u_int8_t bundle; - u_int16_t proto; -}; - -#define LS_COOKIE_ID 0x54 -#define AS_COOKIE_ID 0x47 -#define LS_MLFR_COOKIE_LEN 4 -#define ML_MLFR_COOKIE_LEN 2 -#define LS_MFR_COOKIE_LEN 6 -#define ATM1_COOKIE_LEN 4 -#define ATM2_COOKIE_LEN 8 - -#define ATM2_PKT_TYPE_MASK 0x70 -#define ATM2_GAP_COUNT_MASK 0x3F - -#define JUNIPER_PROTO_NULL 1 -#define JUNIPER_PROTO_IPV4 2 -#define JUNIPER_PROTO_IPV6 6 - -#define MFR_BE_MASK 0xc0 - -static struct tok juniper_protocol_values[] = { - { JUNIPER_PROTO_NULL, "Null" }, - { JUNIPER_PROTO_IPV4, "IPv4" }, - { JUNIPER_PROTO_IPV6, "IPv6" }, - { 0, NULL} -}; - -int ip_heuristic_guess(register const u_char *, u_int); -int juniper_ppp_heuristic_guess(register const u_char *, u_int); -static int juniper_parse_header (const u_char *, const struct pcap_pkthdr *, struct juniper_l2info_t *); - -#ifdef DLT_JUNIPER_GGSN -u_int -juniper_ggsn_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - struct juniper_l2info_t l2info; - struct juniper_ggsn_header { - u_int8_t svc_id; - u_int8_t flags_len; - u_int8_t proto; - u_int8_t flags; - u_int8_t vlan_id[2]; - u_int8_t res[2]; - }; - const struct juniper_ggsn_header *gh; - - l2info.pictype = DLT_JUNIPER_GGSN; - if(juniper_parse_header(p, h, &l2info) == 0) - return l2info.header_len; - - p+=l2info.header_len; - gh = (struct juniper_ggsn_header *)p; - - if (eflag) - printf("proto %s (%u), vlan %u: ", - tok2str(juniper_protocol_values,"Unknown",gh->proto), - gh->proto, - EXTRACT_16BITS(&gh->vlan_id[0])); - - switch (gh->proto) { - case JUNIPER_PROTO_IPV4: - ip_print(gndo, p, l2info.length); - break; -#ifdef INET6 - case JUNIPER_PROTO_IPV6: - ip6_print(p, l2info.length); - break; -#endif /* INET6 */ - default: - if (!eflag) - printf("unknown GGSN proto (%u)", gh->proto); - } - - return l2info.header_len; -} -#endif - -#ifdef DLT_JUNIPER_ES -u_int -juniper_es_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - struct juniper_l2info_t l2info; - struct juniper_ipsec_header { - u_int8_t sa_index[2]; - u_int8_t ttl; - u_int8_t type; - u_int8_t spi[4]; - u_int8_t src_ip[4]; - u_int8_t dst_ip[4]; - }; - u_int rewrite_len,es_type_bundle; - const struct juniper_ipsec_header *ih; - - l2info.pictype = DLT_JUNIPER_ES; - if(juniper_parse_header(p, h, &l2info) == 0) - return l2info.header_len; - - p+=l2info.header_len; - ih = (struct juniper_ipsec_header *)p; - - switch (ih->type) { - case JUNIPER_IPSEC_O_ESP_ENCRYPT_ESP_AUTHEN_TYPE: - case JUNIPER_IPSEC_O_ESP_ENCRYPT_AH_AUTHEN_TYPE: - rewrite_len = 0; - es_type_bundle = 1; - break; - case JUNIPER_IPSEC_O_ESP_AUTHENTICATION_TYPE: - case JUNIPER_IPSEC_O_AH_AUTHENTICATION_TYPE: - case JUNIPER_IPSEC_O_ESP_ENCRYPTION_TYPE: - rewrite_len = 16; - es_type_bundle = 0; - default: - printf("ES Invalid type %u, length %u", - ih->type, - l2info.length); - return l2info.header_len; - } - - l2info.length-=rewrite_len; - p+=rewrite_len; - - if (eflag) { - if (!es_type_bundle) { - printf("ES SA, index %u, ttl %u type %s (%u), spi %u, Tunnel %s > %s, length %u\n", - EXTRACT_16BITS(&ih->sa_index), - ih->ttl, - tok2str(juniper_ipsec_type_values,"Unknown",ih->type), - ih->type, - EXTRACT_32BITS(&ih->spi), - ipaddr_string(EXTRACT_32BITS(&ih->src_ip)), - ipaddr_string(EXTRACT_32BITS(&ih->dst_ip)), - l2info.length); - } else { - printf("ES SA, index %u, ttl %u type %s (%u), length %u\n", - EXTRACT_16BITS(&ih->sa_index), - ih->ttl, - tok2str(juniper_ipsec_type_values,"Unknown",ih->type), - ih->type, - l2info.length); - } - } - - ip_print(gndo, p, l2info.length); - return l2info.header_len; -} -#endif - -#ifdef DLT_JUNIPER_MONITOR -u_int -juniper_monitor_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - struct juniper_l2info_t l2info; - struct juniper_monitor_header { - u_int8_t pkt_type; - u_int8_t padding; - u_int8_t iif[2]; - u_int8_t service_id[4]; - }; - const struct juniper_monitor_header *mh; - - l2info.pictype = DLT_JUNIPER_MONITOR; - if(juniper_parse_header(p, h, &l2info) == 0) - return l2info.header_len; - - p+=l2info.header_len; - mh = (struct juniper_monitor_header *)p; - - if (eflag) - printf("service-id %u, iif %u, pkt-type %u: ", - EXTRACT_32BITS(&mh->service_id), - EXTRACT_16BITS(&mh->iif), - mh->pkt_type); - - /* no proto field - lets guess by first byte of IP header*/ - ip_heuristic_guess(p, l2info.length); - - return l2info.header_len; -} -#endif - -#ifdef DLT_JUNIPER_SERVICES -u_int -juniper_services_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - struct juniper_l2info_t l2info; - struct juniper_services_header { - u_int8_t svc_id; - u_int8_t flags_len; - u_int8_t svc_set_id[2]; - u_int8_t dir_iif[4]; - }; - const struct juniper_services_header *sh; - - l2info.pictype = DLT_JUNIPER_SERVICES; - if(juniper_parse_header(p, h, &l2info) == 0) - return l2info.header_len; - - p+=l2info.header_len; - sh = (struct juniper_services_header *)p; - - if (eflag) - printf("service-id %u flags 0x%02x service-set-id 0x%04x iif %u: ", - sh->svc_id, - sh->flags_len, - EXTRACT_16BITS(&sh->svc_set_id), - EXTRACT_24BITS(&sh->dir_iif[1])); - - /* no proto field - lets guess by first byte of IP header*/ - ip_heuristic_guess(p, l2info.length); - - return l2info.header_len; -} -#endif - -#ifdef DLT_JUNIPER_PPPOE -u_int -juniper_pppoe_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - struct juniper_l2info_t l2info; - - l2info.pictype = DLT_JUNIPER_PPPOE; - 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_ETHER -u_int -juniper_ether_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - struct juniper_l2info_t l2info; - - l2info.pictype = DLT_JUNIPER_ETHER; - if(juniper_parse_header(p, h, &l2info) == 0) - return l2info.header_len; - - p+=l2info.header_len; - /* this DLT contains nothing but raw Ethernet frames */ - ether_print(p, l2info.length, l2info.caplen); - return l2info.header_len; -} -#endif - -#ifdef DLT_JUNIPER_PPP -u_int -juniper_ppp_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - struct juniper_l2info_t l2info; - - l2info.pictype = DLT_JUNIPER_PPP; - if(juniper_parse_header(p, h, &l2info) == 0) - return l2info.header_len; - - p+=l2info.header_len; - /* this DLT contains nothing but raw ppp frames */ - ppp_print(p, l2info.length); - return l2info.header_len; -} -#endif - -#ifdef DLT_JUNIPER_FRELAY -u_int -juniper_frelay_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - struct juniper_l2info_t l2info; - - l2info.pictype = DLT_JUNIPER_FRELAY; - if(juniper_parse_header(p, h, &l2info) == 0) - return l2info.header_len; - - p+=l2info.header_len; - /* this DLT contains nothing but raw frame-relay frames */ - fr_print(p, l2info.length); - return l2info.header_len; -} -#endif - -#ifdef DLT_JUNIPER_CHDLC -u_int -juniper_chdlc_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - struct juniper_l2info_t l2info; - - l2info.pictype = DLT_JUNIPER_CHDLC; - if(juniper_parse_header(p, h, &l2info) == 0) - return l2info.header_len; - - p+=l2info.header_len; - /* this DLT contains nothing but raw c-hdlc frames */ - chdlc_print(p, l2info.length); - return l2info.header_len; -} -#endif - -#ifdef DLT_JUNIPER_PPPOE_ATM -u_int -juniper_pppoe_atm_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - struct juniper_l2info_t l2info; - u_int16_t extracted_ethertype; - - l2info.pictype = DLT_JUNIPER_PPPOE_ATM; - if(juniper_parse_header(p, h, &l2info) == 0) - return l2info.header_len; - - p+=l2info.header_len; - - extracted_ethertype = EXTRACT_16BITS(p); - /* this DLT contains nothing but raw PPPoE frames, - * prepended with a type field*/ - if (ether_encap_print(extracted_ethertype, - p+ETHERTYPE_LEN, - l2info.length-ETHERTYPE_LEN, - l2info.caplen-ETHERTYPE_LEN, - &extracted_ethertype) == 0) - /* ether_type not known, probably it wasn't one */ - printf("unknown ethertype 0x%04x", extracted_ethertype); - - return l2info.header_len; -} -#endif - -#ifdef DLT_JUNIPER_MLPPP -u_int -juniper_mlppp_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - struct juniper_l2info_t l2info; - - l2info.pictype = DLT_JUNIPER_MLPPP; - if(juniper_parse_header(p, h, &l2info) == 0) - return l2info.header_len; - - /* suppress Bundle-ID if frame was captured on a child-link - * best indicator if the cookie looks like a proto */ - if (eflag && - EXTRACT_16BITS(&l2info.cookie) != PPP_OSI && - EXTRACT_16BITS(&l2info.cookie) != (PPP_ADDRESS << 8 | PPP_CONTROL)) - printf("Bundle-ID %u: ",l2info.bundle); - - p+=l2info.header_len; - - /* first try the LSQ protos */ - switch(l2info.proto) { - case JUNIPER_LSQ_L3_PROTO_IPV4: - /* IP traffic going to the RE would not have a cookie - * -> this must be incoming IS-IS over PPP - */ - if (l2info.cookie[4] == (JUNIPER_LSQ_COOKIE_RE|JUNIPER_LSQ_COOKIE_DIR)) - ppp_print(p, l2info.length); - else - ip_print(gndo, p, l2info.length); - return l2info.header_len; -#ifdef INET6 - case JUNIPER_LSQ_L3_PROTO_IPV6: - 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; - } - - /* zero length cookie ? */ - switch (EXTRACT_16BITS(&l2info.cookie)) { - case PPP_OSI: - ppp_print(p-2,l2info.length+2); - break; - case (PPP_ADDRESS << 8 | PPP_CONTROL): /* fall through */ - default: - ppp_print(p,l2info.length); - break; - } - - return l2info.header_len; -} -#endif - - -#ifdef DLT_JUNIPER_MFR -u_int -juniper_mfr_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - struct juniper_l2info_t l2info; - - l2info.pictype = DLT_JUNIPER_MFR; - if(juniper_parse_header(p, h, &l2info) == 0) - return l2info.header_len; - - p+=l2info.header_len; - - /* child-link ? */ - if (l2info.cookie_len == 0) { - mfr_print(p,l2info.length); - return l2info.header_len; - } - - /* first try the LSQ protos */ - if (l2info.cookie_len == AS_PIC_COOKIE_LEN) { - switch(l2info.proto) { - case JUNIPER_LSQ_L3_PROTO_IPV4: - ip_print(gndo, p, l2info.length); - return l2info.header_len; -#ifdef INET6 - case JUNIPER_LSQ_L3_PROTO_IPV6: - ip6_print(p,l2info.length); - return l2info.header_len; -#endif - case JUNIPER_LSQ_L3_PROTO_MPLS: - mpls_print(p,l2info.length); - return l2info.header_len; - case JUNIPER_LSQ_L3_PROTO_ISO: - isoclns_print(p,l2info.length,l2info.caplen); - return l2info.header_len; - default: - break; - } - return l2info.header_len; - } - - /* suppress Bundle-ID if frame was captured on a child-link */ - if (eflag && EXTRACT_32BITS(l2info.cookie) != 1) printf("Bundle-ID %u, ",l2info.bundle); - switch (l2info.proto) { - case (LLCSAP_ISONS<<8 | LLCSAP_ISONS): - isoclns_print(p+1, l2info.length-1, l2info.caplen-1); - break; - case (LLC_UI<<8 | NLPID_Q933): - case (LLC_UI<<8 | NLPID_IP): - case (LLC_UI<<8 | NLPID_IP6): - /* pass IP{4,6} to the OSI layer for proper link-layer printing */ - isoclns_print(p-1, l2info.length+1, l2info.caplen+1); - break; - default: - printf("unknown protocol 0x%04x, length %u",l2info.proto, l2info.length); - } - - return l2info.header_len; -} -#endif - -#ifdef DLT_JUNIPER_MLFR -u_int -juniper_mlfr_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - struct juniper_l2info_t l2info; - - l2info.pictype = DLT_JUNIPER_MLFR; - if(juniper_parse_header(p, h, &l2info) == 0) - return l2info.header_len; - - p+=l2info.header_len; - - /* suppress Bundle-ID if frame was captured on a child-link */ - if (eflag && EXTRACT_32BITS(l2info.cookie) != 1) printf("Bundle-ID %u, ",l2info.bundle); - switch (l2info.proto) { - case (LLC_UI): - case (LLC_UI<<8): - isoclns_print(p, l2info.length, l2info.caplen); - break; - case (LLC_UI<<8 | NLPID_Q933): - case (LLC_UI<<8 | NLPID_IP): - case (LLC_UI<<8 | NLPID_IP6): - /* pass IP{4,6} to the OSI layer for proper link-layer printing */ - isoclns_print(p-1, l2info.length+1, l2info.caplen+1); - break; - default: - printf("unknown protocol 0x%04x, length %u",l2info.proto, l2info.length); - } - - return l2info.header_len; -} -#endif - -/* - * ATM1 PIC cookie format - * - * +-----+-------------------------+-------------------------------+ - * |fmtid| vc index | channel ID | - * +-----+-------------------------+-------------------------------+ - */ - -#ifdef DLT_JUNIPER_ATM1 -u_int -juniper_atm1_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - u_int16_t extracted_ethertype; - - struct juniper_l2info_t l2info; - - l2info.pictype = DLT_JUNIPER_ATM1; - if(juniper_parse_header(p, h, &l2info) == 0) - return l2info.header_len; - - p+=l2info.header_len; - - if (l2info.cookie[0] == 0x80) { /* OAM cell ? */ - oam_print(p,l2info.length,ATM_OAM_NOHEC); - return l2info.header_len; - } - - if (EXTRACT_24BITS(p) == 0xfefe03 || /* NLPID encaps ? */ - EXTRACT_24BITS(p) == 0xaaaa03) { /* SNAP encaps ? */ - - if (llc_print(p, l2info.length, l2info.caplen, NULL, NULL, - &extracted_ethertype) != 0) - return l2info.header_len; - } - - if (p[0] == 0x03) { /* Cisco style NLPID encaps ? */ - isoclns_print(p + 1, l2info.length - 1, l2info.caplen - 1); - /* FIXME check if frame was recognized */ - return l2info.header_len; - } - - if(ip_heuristic_guess(p, l2info.length) != 0) /* last try - vcmux encaps ? */ - return l2info.header_len; - - return l2info.header_len; -} -#endif - -/* - * ATM2 PIC cookie format - * - * +-------------------------------+---------+---+-----+-----------+ - * | channel ID | reserv |AAL| CCRQ| gap cnt | - * +-------------------------------+---------+---+-----+-----------+ - */ - -#ifdef DLT_JUNIPER_ATM2 -u_int -juniper_atm2_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - u_int16_t extracted_ethertype; - u_int32_t control_word; - - struct juniper_l2info_t l2info; - - l2info.pictype = DLT_JUNIPER_ATM2; - if(juniper_parse_header(p, h, &l2info) == 0) - return l2info.header_len; - - p+=l2info.header_len; - - if (l2info.cookie[7] & ATM2_PKT_TYPE_MASK) { /* OAM cell ? */ - control_word = EXTRACT_32BITS(p); - if(control_word == 0 || control_word == 0x08000000) { - l2info.header_len += 4; - l2info.length -= 4; - p += 4; - } - oam_print(p,l2info.length,ATM_OAM_NOHEC); - return l2info.header_len; - } - - if (EXTRACT_24BITS(p) == 0xfefe03 || /* NLPID encaps ? */ - EXTRACT_24BITS(p) == 0xaaaa03) { /* SNAP encaps ? */ - - if (llc_print(p, l2info.length, l2info.caplen, NULL, NULL, - &extracted_ethertype) != 0) - return l2info.header_len; - } - - if (l2info.direction != JUNIPER_BPF_PKT_IN && /* ether-over-1483 encaps ? */ - (EXTRACT_32BITS(l2info.cookie) & ATM2_GAP_COUNT_MASK)) { - ether_print(p, l2info.length, l2info.caplen); - return l2info.header_len; - } - - if (p[0] == 0x03) { /* Cisco style NLPID encaps ? */ - isoclns_print(p + 1, l2info.length - 1, l2info.caplen - 1); - /* FIXME check if frame was recognized */ - return l2info.header_len; - } - - if(juniper_ppp_heuristic_guess(p, l2info.length) != 0) /* PPPoA vcmux encaps ? */ - return l2info.header_len; - - if(ip_heuristic_guess(p, l2info.length) != 0) /* last try - vcmux encaps ? */ - return l2info.header_len; - - return l2info.header_len; -} -#endif - - -/* try to guess, based on all PPP protos that are supported in - * a juniper router if the payload data is encapsulated using PPP */ -int -juniper_ppp_heuristic_guess(register const u_char *p, u_int length) { - - switch(EXTRACT_16BITS(p)) { - case PPP_IP : - case PPP_OSI : - case PPP_MPLS_UCAST : - case PPP_MPLS_MCAST : - case PPP_IPCP : - case PPP_OSICP : - case PPP_MPLSCP : - case PPP_LCP : - case PPP_PAP : - case PPP_CHAP : - case PPP_ML : -#ifdef INET6 - case PPP_IPV6 : - case PPP_IPV6CP : -#endif - ppp_print(p, length); - break; - - default: - return 0; /* did not find a ppp header */ - break; - } - return 1; /* we printed a ppp packet */ -} - -int -ip_heuristic_guess(register const u_char *p, u_int length) { - - switch(p[0]) { - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4a: - case 0x4b: - case 0x4c: - case 0x4d: - case 0x4e: - case 0x4f: - ip_print(gndo, p, length); - break; -#ifdef INET6 - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6a: - case 0x6b: - case 0x6c: - case 0x6d: - case 0x6e: - case 0x6f: - ip6_print(p, length); - break; -#endif - default: - return 0; /* did not find a ip header */ - break; - } - return 1; /* we printed an v4/v6 packet */ -} - -static int -juniper_parse_header (const u_char *p, const struct pcap_pkthdr *h, struct juniper_l2info_t *l2info) { - - struct juniper_cookie_table_t *lp = juniper_cookie_table; - u_int idx, offset; - - l2info->header_len = 0; - l2info->cookie_len = 0; - l2info->proto = 0; - - - l2info->length = h->len; - l2info->caplen = h->caplen; - l2info->direction = p[3]&JUNIPER_BPF_PKT_IN; - - TCHECK2(p[0],4); - if (EXTRACT_24BITS(p) != JUNIPER_MGC_NUMBER) { /* magic number found ? */ - printf("no magic-number found!"); - return 0; - } - - if (eflag) /* print direction */ - printf("%3s ",tok2str(juniper_direction_values,"---",l2info->direction)); - - /* extensions present ? - calculate how much bytes to skip */ - if ((p[3] & JUNIPER_BPF_EXT ) == JUNIPER_BPF_EXT ) { - offset = 6 + EXTRACT_16BITS(p+4); - if (eflag>1) - printf("ext-len %u, ",EXTRACT_16BITS(p+4)); - } else - offset = 4; - - if ((p[3] & JUNIPER_BPF_NO_L2 ) == JUNIPER_BPF_NO_L2 ) { - if (eflag) - printf("no-L2-hdr, "); - - /* there is no link-layer present - - * perform the v4/v6 heuristics - * to figure out what it is - */ - TCHECK2(p[offset+4],1); - if(ip_heuristic_guess(p+offset+4,l2info->length-(offset+4)) == 0) - printf("no IP-hdr found!"); - - l2info->header_len=offset+4; - return 0; /* stop parsing the output further */ - - } - l2info->header_len = offset; - p+=l2info->header_len; - l2info->length -= l2info->header_len; - l2info->caplen -= l2info->header_len; - - /* search through the cookie table and copy values matching for our PIC type */ - while (lp->s != NULL) { - if (lp->pictype == l2info->pictype) { - - l2info->cookie_len += lp->cookie_len; - - switch (p[0]) { - case LS_COOKIE_ID: - l2info->cookie_type = LS_COOKIE_ID; - l2info->cookie_len += 2; - break; - case AS_COOKIE_ID: - l2info->cookie_type = AS_COOKIE_ID; - l2info->cookie_len = 8; - break; - - default: - l2info->bundle = l2info->cookie[0]; - break; - } - - -#ifdef DLT_JUNIPER_MFR - /* MFR child links don't carry cookies */ - if (l2info->pictype == DLT_JUNIPER_MFR && - (p[0] & MFR_BE_MASK) == MFR_BE_MASK) { - l2info->cookie_len = 0; - } -#endif - - l2info->header_len += l2info->cookie_len; - l2info->length -= l2info->cookie_len; - l2info->caplen -= l2info->cookie_len; - - if (eflag) - printf("%s-PIC, cookie-len %u", - lp->s, - l2info->cookie_len); - - if (l2info->cookie_len > 0) { - TCHECK2(p[0],l2info->cookie_len); - if (eflag) - printf(", cookie 0x"); - for (idx = 0; idx < l2info->cookie_len; idx++) { - l2info->cookie[idx] = p[idx]; /* copy cookie data */ - if (eflag) printf("%02x",p[idx]); - } - } - - if (eflag) printf(": "); /* print demarc b/w L2/L3*/ - - - l2info->proto = EXTRACT_16BITS(p+l2info->cookie_len); - break; - } - ++lp; - } - p+=l2info->cookie_len; - - /* DLT_ specific parsing */ - switch(l2info->pictype) { -#ifdef DLT_JUNIPER_MLPPP - case DLT_JUNIPER_MLPPP: - switch (l2info->cookie_type) { - case LS_COOKIE_ID: - l2info->bundle = l2info->cookie[1]; - break; - case AS_COOKIE_ID: - l2info->bundle = (EXTRACT_16BITS(&l2info->cookie[6])>>3)&0xfff; - l2info->proto = (l2info->cookie[5])&JUNIPER_LSQ_L3_PROTO_MASK; - break; - default: - l2info->bundle = l2info->cookie[0]; - break; - } - break; -#endif -#ifdef DLT_JUNIPER_MLFR - case DLT_JUNIPER_MLFR: - switch (l2info->cookie_type) { - case LS_COOKIE_ID: - l2info->bundle = l2info->cookie[1]; - l2info->proto = EXTRACT_16BITS(p); - l2info->header_len += 2; - l2info->length -= 2; - l2info->caplen -= 2; - break; - case AS_COOKIE_ID: - l2info->bundle = (EXTRACT_16BITS(&l2info->cookie[6])>>3)&0xfff; - l2info->proto = (l2info->cookie[5])&JUNIPER_LSQ_L3_PROTO_MASK; - break; - default: - l2info->bundle = l2info->cookie[0]; - l2info->header_len += 2; - l2info->length -= 2; - l2info->caplen -= 2; - break; - } - break; -#endif -#ifdef DLT_JUNIPER_MFR - case DLT_JUNIPER_MFR: - switch (l2info->cookie_type) { - case LS_COOKIE_ID: - l2info->bundle = l2info->cookie[1]; - l2info->proto = EXTRACT_16BITS(p); - l2info->header_len += 2; - l2info->length -= 2; - l2info->caplen -= 2; - break; - case AS_COOKIE_ID: - l2info->bundle = (EXTRACT_16BITS(&l2info->cookie[6])>>3)&0xfff; - l2info->proto = (l2info->cookie[5])&JUNIPER_LSQ_L3_PROTO_MASK; - break; - default: - l2info->bundle = l2info->cookie[0]; - break; - } - break; -#endif -#ifdef DLT_JUNIPER_ATM2 - case DLT_JUNIPER_ATM2: - TCHECK2(p[0],4); - /* ATM cell relay control word present ? */ - if (l2info->cookie[7] & ATM2_PKT_TYPE_MASK && *p & 0x08) { - l2info->header_len += 4; - if (eflag) - printf("control-word 0x%08x ",EXTRACT_32BITS(p)); - } - break; -#endif -#ifdef DLT_JUNIPER_ATM1 - case DLT_JUNIPER_ATM1: - break; -#endif - default: - printf("Unknown Juniper DLT_ type %u: ", l2info->pictype); - break; - } - - if (eflag > 1) - printf("hlen %u, proto 0x%04x, ",l2info->header_len,l2info->proto); - - return 1; /* everything went ok so far. continue parsing */ - trunc: - printf("[|juniper_hdr], length %u",h->len); - return 0; -} - - -/* - * Local Variables: - * c-style: whitesmith - * c-basic-offset: 4 - * End: - */ diff --git a/contrib/tcpdump/print-krb.c b/contrib/tcpdump/print-krb.c deleted file mode 100644 index d6c8e14f4f7fc..0000000000000 --- a/contrib/tcpdump/print-krb.c +++ /dev/null @@ -1,261 +0,0 @@ -/* - * Copyright (c) 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * Initial contribution from John Hawkinson (jhawk@mit.edu). - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-krb.c,v 1.23 2003/11/16 09:36:26 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -static const u_char *c_print(register const u_char *, register const u_char *); -static const u_char *krb4_print_hdr(const u_char *); -static void krb4_print(const u_char *); - -#define AUTH_MSG_KDC_REQUEST 1<<1 -#define AUTH_MSG_KDC_REPLY 2<<1 -#define AUTH_MSG_APPL_REQUEST 3<<1 -#define AUTH_MSG_APPL_REQUEST_MUTUAL 4<<1 -#define AUTH_MSG_ERR_REPLY 5<<1 -#define AUTH_MSG_PRIVATE 6<<1 -#define AUTH_MSG_SAFE 7<<1 -#define AUTH_MSG_APPL_ERR 8<<1 -#define AUTH_MSG_DIE 63<<1 - -#define KERB_ERR_OK 0 -#define KERB_ERR_NAME_EXP 1 -#define KERB_ERR_SERVICE_EXP 2 -#define KERB_ERR_AUTH_EXP 3 -#define KERB_ERR_PKT_VER 4 -#define KERB_ERR_NAME_MAST_KEY_VER 5 -#define KERB_ERR_SERV_MAST_KEY_VER 6 -#define KERB_ERR_BYTE_ORDER 7 -#define KERB_ERR_PRINCIPAL_UNKNOWN 8 -#define KERB_ERR_PRINCIPAL_NOT_UNIQUE 9 -#define KERB_ERR_NULL_KEY 10 - -struct krb { - u_int8_t pvno; /* Protocol Version */ - u_int8_t type; /* Type+B */ -}; - -static char tstr[] = " [|kerberos]"; - -static struct tok type2str[] = { - { AUTH_MSG_KDC_REQUEST, "KDC_REQUEST" }, - { AUTH_MSG_KDC_REPLY, "KDC_REPLY" }, - { AUTH_MSG_APPL_REQUEST, "APPL_REQUEST" }, - { AUTH_MSG_APPL_REQUEST_MUTUAL, "APPL_REQUEST_MUTUAL" }, - { AUTH_MSG_ERR_REPLY, "ERR_REPLY" }, - { AUTH_MSG_PRIVATE, "PRIVATE" }, - { AUTH_MSG_SAFE, "SAFE" }, - { AUTH_MSG_APPL_ERR, "APPL_ERR" }, - { AUTH_MSG_DIE, "DIE" }, - { 0, NULL } -}; - -static struct tok kerr2str[] = { - { KERB_ERR_OK, "OK" }, - { KERB_ERR_NAME_EXP, "NAME_EXP" }, - { KERB_ERR_SERVICE_EXP, "SERVICE_EXP" }, - { KERB_ERR_AUTH_EXP, "AUTH_EXP" }, - { KERB_ERR_PKT_VER, "PKT_VER" }, - { KERB_ERR_NAME_MAST_KEY_VER, "NAME_MAST_KEY_VER" }, - { KERB_ERR_SERV_MAST_KEY_VER, "SERV_MAST_KEY_VER" }, - { KERB_ERR_BYTE_ORDER, "BYTE_ORDER" }, - { KERB_ERR_PRINCIPAL_UNKNOWN, "PRINCIPAL_UNKNOWN" }, - { KERB_ERR_PRINCIPAL_NOT_UNIQUE,"PRINCIPAL_NOT_UNIQUE" }, - { KERB_ERR_NULL_KEY, "NULL_KEY"}, - { 0, NULL} -}; - -static const u_char * -c_print(register const u_char *s, register const u_char *ep) -{ - register u_char c; - register int flag; - - flag = 1; - while (s < ep) { - c = *s++; - if (c == '\0') { - flag = 0; - break; - } - if (!isascii(c)) { - c = toascii(c); - putchar('M'); - putchar('-'); - } - if (!isprint(c)) { - c ^= 0x40; /* DEL to ?, others to alpha */ - putchar('^'); - } - putchar(c); - } - if (flag) - return NULL; - return (s); -} - -static const u_char * -krb4_print_hdr(const u_char *cp) -{ - cp += 2; - -#define PRINT if ((cp = c_print(cp, snapend)) == NULL) goto trunc - - PRINT; - putchar('.'); - PRINT; - putchar('@'); - PRINT; - return (cp); - -trunc: - fputs(tstr, stdout); - return (NULL); - -#undef PRINT -} - -static void -krb4_print(const u_char *cp) -{ - register const struct krb *kp; - u_char type; - u_short len; - -#define PRINT if ((cp = c_print(cp, snapend)) == NULL) goto trunc -/* True if struct krb is little endian */ -#define IS_LENDIAN(kp) (((kp)->type & 0x01) != 0) -#define KTOHSP(kp, cp) (IS_LENDIAN(kp) ? EXTRACT_LE_16BITS(cp) : EXTRACT_16BITS(cp)) - - kp = (struct krb *)cp; - - if ((&kp->type) >= snapend) { - fputs(tstr, stdout); - return; - } - - type = kp->type & (0xFF << 1); - - printf(" %s %s: ", - IS_LENDIAN(kp) ? "le" : "be", tok2str(type2str, NULL, type)); - - switch (type) { - - case AUTH_MSG_KDC_REQUEST: - if ((cp = krb4_print_hdr(cp)) == NULL) - return; - cp += 4; /* ctime */ - TCHECK(*cp); - printf(" %dmin ", *cp++ * 5); - PRINT; - putchar('.'); - PRINT; - break; - - case AUTH_MSG_APPL_REQUEST: - cp += 2; - TCHECK(*cp); - printf("v%d ", *cp++); - PRINT; - TCHECK(*cp); - printf(" (%d)", *cp++); - TCHECK(*cp); - printf(" (%d)", *cp); - break; - - case AUTH_MSG_KDC_REPLY: - if ((cp = krb4_print_hdr(cp)) == NULL) - return; - cp += 10; /* timestamp + n + exp + kvno */ - TCHECK2(*cp, sizeof(short)); - len = KTOHSP(kp, cp); - printf(" (%d)", len); - break; - - case AUTH_MSG_ERR_REPLY: - if ((cp = krb4_print_hdr(cp)) == NULL) - return; - cp += 4; /* timestamp */ - TCHECK2(*cp, sizeof(short)); - printf(" %s ", tok2str(kerr2str, NULL, KTOHSP(kp, cp))); - cp += 4; - PRINT; - break; - - default: - fputs("(unknown)", stdout); - break; - } - - return; -trunc: - fputs(tstr, stdout); -} - -void -krb_print(const u_char *dat) -{ - register const struct krb *kp; - - kp = (struct krb *)dat; - - if (dat >= snapend) { - fputs(tstr, stdout); - return; - } - - switch (kp->pvno) { - - case 1: - case 2: - case 3: - printf(" v%d", kp->pvno); - break; - - case 4: - printf(" v%d", kp->pvno); - krb4_print((const u_char *)kp); - break; - - case 106: - case 107: - fputs(" v5", stdout); - /* Decode ASN.1 here "someday" */ - break; - } - return; -} diff --git a/contrib/tcpdump/print-l2tp.c b/contrib/tcpdump/print-l2tp.c deleted file mode 100644 index 52766b5de48a6..0000000000000 --- a/contrib/tcpdump/print-l2tp.c +++ /dev/null @@ -1,722 +0,0 @@ -/* - * Copyright (c) 1991, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * L2TP support contributed by Motonori Shindo (mshindo@mshindo.net) - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-l2tp.c,v 1.17.2.2 2005/04/20 21:50:16 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> - -#include "l2tp.h" -#include "interface.h" -#include "extract.h" - -static char tstr[] = " [|l2tp]"; - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -#define L2TP_MSGTYPE_SCCRQ 1 /* Start-Control-Connection-Request */ -#define L2TP_MSGTYPE_SCCRP 2 /* Start-Control-Connection-Reply */ -#define L2TP_MSGTYPE_SCCCN 3 /* Start-Control-Connection-Connected */ -#define L2TP_MSGTYPE_STOPCCN 4 /* Stop-Control-Connection-Notification */ -#define L2TP_MSGTYPE_HELLO 6 /* Hello */ -#define L2TP_MSGTYPE_OCRQ 7 /* Outgoing-Call-Request */ -#define L2TP_MSGTYPE_OCRP 8 /* Outgoing-Call-Reply */ -#define L2TP_MSGTYPE_OCCN 9 /* Outgoing-Call-Connected */ -#define L2TP_MSGTYPE_ICRQ 10 /* Incoming-Call-Request */ -#define L2TP_MSGTYPE_ICRP 11 /* Incoming-Call-Reply */ -#define L2TP_MSGTYPE_ICCN 12 /* Incoming-Call-Connected */ -#define L2TP_MSGTYPE_CDN 14 /* Call-Disconnect-Notify */ -#define L2TP_MSGTYPE_WEN 15 /* WAN-Error-Notify */ -#define L2TP_MSGTYPE_SLI 16 /* Set-Link-Info */ - -static struct tok l2tp_msgtype2str[] = { - { L2TP_MSGTYPE_SCCRQ, "SCCRQ" }, - { L2TP_MSGTYPE_SCCRP, "SCCRP" }, - { L2TP_MSGTYPE_SCCCN, "SCCCN" }, - { L2TP_MSGTYPE_STOPCCN, "StopCCN" }, - { L2TP_MSGTYPE_HELLO, "HELLO" }, - { L2TP_MSGTYPE_OCRQ, "OCRQ" }, - { L2TP_MSGTYPE_OCRP, "OCRP" }, - { L2TP_MSGTYPE_OCCN, "OCCN" }, - { L2TP_MSGTYPE_ICRQ, "ICRQ" }, - { L2TP_MSGTYPE_ICRP, "ICRP" }, - { L2TP_MSGTYPE_ICCN, "ICCN" }, - { L2TP_MSGTYPE_CDN, "CDN" }, - { L2TP_MSGTYPE_WEN, "WEN" }, - { L2TP_MSGTYPE_SLI, "SLI" }, - { 0, NULL } -}; - -#define L2TP_AVP_MSGTYPE 0 /* Message Type */ -#define L2TP_AVP_RESULT_CODE 1 /* Result Code */ -#define L2TP_AVP_PROTO_VER 2 /* Protocol Version */ -#define L2TP_AVP_FRAMING_CAP 3 /* Framing Capabilities */ -#define L2TP_AVP_BEARER_CAP 4 /* Bearer Capabilities */ -#define L2TP_AVP_TIE_BREAKER 5 /* Tie Breaker */ -#define L2TP_AVP_FIRM_VER 6 /* Firmware Revision */ -#define L2TP_AVP_HOST_NAME 7 /* Host Name */ -#define L2TP_AVP_VENDOR_NAME 8 /* Vendor Name */ -#define L2TP_AVP_ASSND_TUN_ID 9 /* Assigned Tunnel ID */ -#define L2TP_AVP_RECV_WIN_SIZE 10 /* Receive Window Size */ -#define L2TP_AVP_CHALLENGE 11 /* Challenge */ -#define L2TP_AVP_Q931_CC 12 /* Q.931 Cause Code */ -#define L2TP_AVP_CHALLENGE_RESP 13 /* Challenge Response */ -#define L2TP_AVP_ASSND_SESS_ID 14 /* Assigned Session ID */ -#define L2TP_AVP_CALL_SER_NUM 15 /* Call Serial Number */ -#define L2TP_AVP_MINIMUM_BPS 16 /* Minimum BPS */ -#define L2TP_AVP_MAXIMUM_BPS 17 /* Maximum BPS */ -#define L2TP_AVP_BEARER_TYPE 18 /* Bearer Type */ -#define L2TP_AVP_FRAMING_TYPE 19 /* Framing Type */ -#define L2TP_AVP_PACKET_PROC_DELAY 20 /* Packet Processing Delay (OBSOLETE) */ -#define L2TP_AVP_CALLED_NUMBER 21 /* Called Number */ -#define L2TP_AVP_CALLING_NUMBER 22 /* Calling Number */ -#define L2TP_AVP_SUB_ADDRESS 23 /* Sub-Address */ -#define L2TP_AVP_TX_CONN_SPEED 24 /* (Tx) Connect Speed */ -#define L2TP_AVP_PHY_CHANNEL_ID 25 /* Physical Channel ID */ -#define L2TP_AVP_INI_RECV_LCP 26 /* Initial Received LCP CONFREQ */ -#define L2TP_AVP_LAST_SENT_LCP 27 /* Last Sent LCP CONFREQ */ -#define L2TP_AVP_LAST_RECV_LCP 28 /* Last Received LCP CONFREQ */ -#define L2TP_AVP_PROXY_AUTH_TYPE 29 /* Proxy Authen Type */ -#define L2TP_AVP_PROXY_AUTH_NAME 30 /* Proxy Authen Name */ -#define L2TP_AVP_PROXY_AUTH_CHAL 31 /* Proxy Authen Challenge */ -#define L2TP_AVP_PROXY_AUTH_ID 32 /* Proxy Authen ID */ -#define L2TP_AVP_PROXY_AUTH_RESP 33 /* Proxy Authen Response */ -#define L2TP_AVP_CALL_ERRORS 34 /* Call Errors */ -#define L2TP_AVP_ACCM 35 /* ACCM */ -#define L2TP_AVP_RANDOM_VECTOR 36 /* Random Vector */ -#define L2TP_AVP_PRIVATE_GRP_ID 37 /* Private Group ID */ -#define L2TP_AVP_RX_CONN_SPEED 38 /* (Rx) Connect Speed */ -#define L2TP_AVP_SEQ_REQUIRED 39 /* Sequencing Required */ -#define L2TP_AVP_PPP_DISCON_CC 46 /* PPP Disconnect Cause Code */ - -static struct tok l2tp_avp2str[] = { - { L2TP_AVP_MSGTYPE, "MSGTYPE" }, - { L2TP_AVP_RESULT_CODE, "RESULT_CODE" }, - { L2TP_AVP_PROTO_VER, "PROTO_VER" }, - { L2TP_AVP_FRAMING_CAP, "FRAMING_CAP" }, - { L2TP_AVP_BEARER_CAP, "BEARER_CAP" }, - { L2TP_AVP_TIE_BREAKER, "TIE_BREAKER" }, - { L2TP_AVP_FIRM_VER, "FIRM_VER" }, - { L2TP_AVP_HOST_NAME, "HOST_NAME" }, - { L2TP_AVP_VENDOR_NAME, "VENDOR_NAME" }, - { L2TP_AVP_ASSND_TUN_ID, "ASSND_TUN_ID" }, - { L2TP_AVP_RECV_WIN_SIZE, "RECV_WIN_SIZE" }, - { L2TP_AVP_CHALLENGE, "CHALLENGE" }, - { L2TP_AVP_Q931_CC, "Q931_CC", }, - { L2TP_AVP_CHALLENGE_RESP, "CHALLENGE_RESP" }, - { L2TP_AVP_ASSND_SESS_ID, "ASSND_SESS_ID" }, - { L2TP_AVP_CALL_SER_NUM, "CALL_SER_NUM" }, - { L2TP_AVP_MINIMUM_BPS, "MINIMUM_BPS" }, - { L2TP_AVP_MAXIMUM_BPS, "MAXIMUM_BPS" }, - { L2TP_AVP_BEARER_TYPE, "BEARER_TYPE" }, - { L2TP_AVP_FRAMING_TYPE, "FRAMING_TYPE" }, - { L2TP_AVP_PACKET_PROC_DELAY, "PACKET_PROC_DELAY" }, - { L2TP_AVP_CALLED_NUMBER, "CALLED_NUMBER" }, - { L2TP_AVP_CALLING_NUMBER, "CALLING_NUMBER" }, - { L2TP_AVP_SUB_ADDRESS, "SUB_ADDRESS" }, - { L2TP_AVP_TX_CONN_SPEED, "TX_CONN_SPEED" }, - { L2TP_AVP_PHY_CHANNEL_ID, "PHY_CHANNEL_ID" }, - { L2TP_AVP_INI_RECV_LCP, "INI_RECV_LCP" }, - { L2TP_AVP_LAST_SENT_LCP, "LAST_SENT_LCP" }, - { L2TP_AVP_LAST_RECV_LCP, "LAST_RECV_LCP" }, - { L2TP_AVP_PROXY_AUTH_TYPE, "PROXY_AUTH_TYPE" }, - { L2TP_AVP_PROXY_AUTH_NAME, "PROXY_AUTH_NAME" }, - { L2TP_AVP_PROXY_AUTH_CHAL, "PROXY_AUTH_CHAL" }, - { L2TP_AVP_PROXY_AUTH_ID, "PROXY_AUTH_ID" }, - { L2TP_AVP_PROXY_AUTH_RESP, "PROXY_AUTH_RESP" }, - { L2TP_AVP_CALL_ERRORS, "CALL_ERRORS" }, - { L2TP_AVP_ACCM, "ACCM" }, - { L2TP_AVP_RANDOM_VECTOR, "RANDOM_VECTOR" }, - { L2TP_AVP_PRIVATE_GRP_ID, "PRIVATE_GRP_ID" }, - { L2TP_AVP_RX_CONN_SPEED, "RX_CONN_SPEED" }, - { L2TP_AVP_SEQ_REQUIRED, "SEQ_REQUIRED" }, - { L2TP_AVP_PPP_DISCON_CC, "PPP_DISCON_CC" }, - { 0, NULL } -}; - -static struct tok l2tp_authentype2str[] = { - { L2TP_AUTHEN_TYPE_RESERVED, "Reserved" }, - { L2TP_AUTHEN_TYPE_TEXTUAL, "Textual" }, - { L2TP_AUTHEN_TYPE_CHAP, "CHAP" }, - { L2TP_AUTHEN_TYPE_PAP, "PAP" }, - { L2TP_AUTHEN_TYPE_NO_AUTH, "No Auth" }, - { L2TP_AUTHEN_TYPE_MSCHAPv1, "MS-CHAPv1" }, - { 0, NULL } -}; - -#define L2TP_PPP_DISCON_CC_DIRECTION_GLOBAL 0 -#define L2TP_PPP_DISCON_CC_DIRECTION_AT_PEER 1 -#define L2TP_PPP_DISCON_CC_DIRECTION_AT_LOCAL 2 - -static struct tok l2tp_cc_direction2str[] = { - { L2TP_PPP_DISCON_CC_DIRECTION_GLOBAL, "global error" }, - { L2TP_PPP_DISCON_CC_DIRECTION_AT_PEER, "at peer" }, - { L2TP_PPP_DISCON_CC_DIRECTION_AT_LOCAL,"at local" }, - { 0, NULL } -}; - -#if 0 -static char *l2tp_result_code_StopCCN[] = { - "Reserved", - "General request to clear control connection", - "General error--Error Code indicates the problem", - "Control channel already exists", - "Requester is not authorized to establish a control channel", - "The protocol version of the requester is not supported", - "Requester is being shut down", - "Finite State Machine error" -#define L2TP_MAX_RESULT_CODE_STOPCC_INDEX 8 -}; -#endif - -#if 0 -static char *l2tp_result_code_CDN[] = { - "Reserved", - "Call disconnected due to loss of carrier", - "Call disconnected for the reason indicated in error code", - "Call disconnected for administrative reasons", - "Call failed due to lack of appropriate facilities being " \ - "available (temporary condition)", - "Call failed due to lack of appropriate facilities being " \ - "available (permanent condition)", - "Invalid destination", - "Call failed due to no carrier detected", - "Call failed due to detection of a busy signal", - "Call failed due to lack of a dial tone", - "Call was not established within time allotted by LAC", - "Call was connected but no appropriate framing was detected" -#define L2TP_MAX_RESULT_CODE_CDN_INDEX 12 -}; -#endif - -#if 0 -static char *l2tp_error_code_general[] = { - "No general error", - "No control connection exists yet for this LAC-LNS pair", - "Length is wrong", - "One of the field values was out of range or " \ - "reserved field was non-zero" - "Insufficient resources to handle this operation now", - "The Session ID is invalid in this context", - "A generic vendor-specific error occurred in the LAC", - "Try another" -#define L2TP_MAX_ERROR_CODE_GENERAL_INDEX 8 -}; -#endif - -/******************************/ -/* generic print out routines */ -/******************************/ -static void -print_string(const u_char *dat, u_int length) -{ - u_int i; - for (i=0; i<length; i++) { - printf("%c", *dat++); - } -} - -static void -print_octets(const u_char *dat, u_int length) -{ - u_int i; - for (i=0; i<length; i++) { - printf("%02x", *dat++); - } -} - -static void -print_16bits_val(const u_int16_t *dat) -{ - printf("%u", EXTRACT_16BITS(dat)); -} - -static void -print_32bits_val(const u_int32_t *dat) -{ - printf("%lu", (u_long)EXTRACT_32BITS(dat)); -} - -/***********************************/ -/* AVP-specific print out routines */ -/***********************************/ -static void -l2tp_msgtype_print(const u_char *dat) -{ - u_int16_t *ptr = (u_int16_t*)dat; - - printf("%s", tok2str(l2tp_msgtype2str, "MSGTYPE-#%u", - EXTRACT_16BITS(ptr))); -} - -static void -l2tp_result_code_print(const u_char *dat, u_int length) -{ - u_int16_t *ptr = (u_int16_t *)dat; - - printf("%u", EXTRACT_16BITS(ptr)); ptr++; /* Result Code */ - if (length > 2) { /* Error Code (opt) */ - printf("/%u", EXTRACT_16BITS(ptr)); ptr++; - } - if (length > 4) { /* Error Message (opt) */ - printf(" "); - print_string((u_char *)ptr, length - 4); - } -} - -static void -l2tp_proto_ver_print(const u_int16_t *dat) -{ - printf("%u.%u", (EXTRACT_16BITS(dat) >> 8), - (EXTRACT_16BITS(dat) & 0xff)); -} - -static void -l2tp_framing_cap_print(const u_char *dat) -{ - u_int32_t *ptr = (u_int32_t *)dat; - - if (EXTRACT_32BITS(ptr) & L2TP_FRAMING_CAP_ASYNC_MASK) { - printf("A"); - } - if (EXTRACT_32BITS(ptr) & L2TP_FRAMING_CAP_SYNC_MASK) { - printf("S"); - } -} - -static void -l2tp_bearer_cap_print(const u_char *dat) -{ - u_int32_t *ptr = (u_int32_t *)dat; - - if (EXTRACT_32BITS(ptr) & L2TP_BEARER_CAP_ANALOG_MASK) { - printf("A"); - } - if (EXTRACT_32BITS(ptr) & L2TP_BEARER_CAP_DIGITAL_MASK) { - printf("D"); - } -} - -static void -l2tp_q931_cc_print(const u_char *dat, u_int length) -{ - print_16bits_val((u_int16_t *)dat); - printf(", %02x", dat[2]); - if (length > 3) { - printf(" "); - print_string(dat+3, length-3); - } -} - -static void -l2tp_bearer_type_print(const u_char *dat) -{ - u_int32_t *ptr = (u_int32_t *)dat; - - if (EXTRACT_32BITS(ptr) & L2TP_BEARER_TYPE_ANALOG_MASK) { - printf("A"); - } - if (EXTRACT_32BITS(ptr) & L2TP_BEARER_TYPE_DIGITAL_MASK) { - printf("D"); - } -} - -static void -l2tp_framing_type_print(const u_char *dat) -{ - u_int32_t *ptr = (u_int32_t *)dat; - - if (EXTRACT_32BITS(ptr) & L2TP_FRAMING_TYPE_ASYNC_MASK) { - printf("A"); - } - if (EXTRACT_32BITS(ptr) & L2TP_FRAMING_TYPE_SYNC_MASK) { - printf("S"); - } -} - -static void -l2tp_packet_proc_delay_print(void) -{ - printf("obsolete"); -} - -static void -l2tp_proxy_auth_type_print(const u_char *dat) -{ - u_int16_t *ptr = (u_int16_t *)dat; - - printf("%s", tok2str(l2tp_authentype2str, - "AuthType-#%u", EXTRACT_16BITS(ptr))); -} - -static void -l2tp_proxy_auth_id_print(const u_char *dat) -{ - u_int16_t *ptr = (u_int16_t *)dat; - - printf("%u", EXTRACT_16BITS(ptr) & L2TP_PROXY_AUTH_ID_MASK); -} - -static void -l2tp_call_errors_print(const u_char *dat) -{ - u_int16_t *ptr = (u_int16_t *)dat; - u_int16_t val_h, val_l; - - ptr++; /* skip "Reserved" */ - - val_h = EXTRACT_16BITS(ptr); ptr++; - val_l = EXTRACT_16BITS(ptr); ptr++; - printf("CRCErr=%u ", (val_h<<16) + val_l); - - val_h = EXTRACT_16BITS(ptr); ptr++; - val_l = EXTRACT_16BITS(ptr); ptr++; - printf("FrameErr=%u ", (val_h<<16) + val_l); - - val_h = EXTRACT_16BITS(ptr); ptr++; - val_l = EXTRACT_16BITS(ptr); ptr++; - printf("HardOver=%u ", (val_h<<16) + val_l); - - val_h = EXTRACT_16BITS(ptr); ptr++; - val_l = EXTRACT_16BITS(ptr); ptr++; - printf("BufOver=%u ", (val_h<<16) + val_l); - - val_h = EXTRACT_16BITS(ptr); ptr++; - val_l = EXTRACT_16BITS(ptr); ptr++; - printf("Timeout=%u ", (val_h<<16) + val_l); - - val_h = EXTRACT_16BITS(ptr); ptr++; - val_l = EXTRACT_16BITS(ptr); ptr++; - printf("AlignErr=%u ", (val_h<<16) + val_l); -} - -static void -l2tp_accm_print(const u_char *dat) -{ - u_int16_t *ptr = (u_int16_t *)dat; - u_int16_t val_h, val_l; - - ptr++; /* skip "Reserved" */ - - val_h = EXTRACT_16BITS(ptr); ptr++; - val_l = EXTRACT_16BITS(ptr); ptr++; - printf("send=%08x ", (val_h<<16) + val_l); - - val_h = EXTRACT_16BITS(ptr); ptr++; - val_l = EXTRACT_16BITS(ptr); ptr++; - printf("recv=%08x ", (val_h<<16) + val_l); -} - -static void -l2tp_ppp_discon_cc_print(const u_char *dat, u_int length) -{ - u_int16_t *ptr = (u_int16_t *)dat; - - printf("%04x, ", EXTRACT_16BITS(ptr)); ptr++; /* Disconnect Code */ - printf("%04x ", EXTRACT_16BITS(ptr)); ptr++; /* Control Protocol Number */ - printf("%s", tok2str(l2tp_cc_direction2str, - "Direction-#%u", *((u_char *)ptr++))); - - if (length > 5) { - printf(" "); - print_string((const u_char *)ptr, length-5); - } -} - -static void -l2tp_avp_print(const u_char *dat, int length) -{ - u_int len; - const u_int16_t *ptr = (u_int16_t *)dat; - u_int16_t attr_type; - int hidden = FALSE; - - if (length <= 0) { - return; - } - - printf(" "); - - TCHECK(*ptr); /* Flags & Length */ - len = EXTRACT_16BITS(ptr) & L2TP_AVP_HDR_LEN_MASK; - - /* If it is not long enough to contain the header, we'll give up. */ - if (len < 6) - goto trunc; - - /* If it goes past the end of the remaining length of the packet, - we'll give up. */ - if (len > (u_int)length) - goto trunc; - - /* If it goes past the end of the remaining length of the captured - data, we'll give up. */ - TCHECK2(*ptr, len); - /* After this point, no need to worry about truncation */ - - if (EXTRACT_16BITS(ptr) & L2TP_AVP_HDR_FLAG_MANDATORY) { - printf("*"); - } - if (EXTRACT_16BITS(ptr) & L2TP_AVP_HDR_FLAG_HIDDEN) { - hidden = TRUE; - printf("?"); - } - ptr++; - - if (EXTRACT_16BITS(ptr)) { - /* Vendor Specific Attribute */ - printf("VENDOR%04x:", EXTRACT_16BITS(ptr)); ptr++; - printf("ATTR%04x", EXTRACT_16BITS(ptr)); ptr++; - printf("("); - print_octets((u_char *)ptr, len-6); - printf(")"); - } else { - /* IETF-defined Attributes */ - ptr++; - attr_type = EXTRACT_16BITS(ptr); ptr++; - printf("%s", tok2str(l2tp_avp2str, "AVP-#%u", attr_type)); - printf("("); - if (hidden) { - printf("???"); - } else { - switch (attr_type) { - case L2TP_AVP_MSGTYPE: - l2tp_msgtype_print((u_char *)ptr); - break; - case L2TP_AVP_RESULT_CODE: - l2tp_result_code_print((u_char *)ptr, len-6); - break; - case L2TP_AVP_PROTO_VER: - l2tp_proto_ver_print(ptr); - break; - case L2TP_AVP_FRAMING_CAP: - l2tp_framing_cap_print((u_char *)ptr); - break; - case L2TP_AVP_BEARER_CAP: - l2tp_bearer_cap_print((u_char *)ptr); - break; - case L2TP_AVP_TIE_BREAKER: - print_octets((u_char *)ptr, 8); - break; - case L2TP_AVP_FIRM_VER: - case L2TP_AVP_ASSND_TUN_ID: - case L2TP_AVP_RECV_WIN_SIZE: - case L2TP_AVP_ASSND_SESS_ID: - print_16bits_val(ptr); - break; - case L2TP_AVP_HOST_NAME: - case L2TP_AVP_VENDOR_NAME: - case L2TP_AVP_CALLING_NUMBER: - case L2TP_AVP_CALLED_NUMBER: - case L2TP_AVP_SUB_ADDRESS: - case L2TP_AVP_PROXY_AUTH_NAME: - case L2TP_AVP_PRIVATE_GRP_ID: - print_string((u_char *)ptr, len-6); - break; - case L2TP_AVP_CHALLENGE: - case L2TP_AVP_INI_RECV_LCP: - case L2TP_AVP_LAST_SENT_LCP: - case L2TP_AVP_LAST_RECV_LCP: - case L2TP_AVP_PROXY_AUTH_CHAL: - case L2TP_AVP_PROXY_AUTH_RESP: - case L2TP_AVP_RANDOM_VECTOR: - print_octets((u_char *)ptr, len-6); - break; - case L2TP_AVP_Q931_CC: - l2tp_q931_cc_print((u_char *)ptr, len-6); - break; - case L2TP_AVP_CHALLENGE_RESP: - print_octets((u_char *)ptr, 16); - break; - case L2TP_AVP_CALL_SER_NUM: - case L2TP_AVP_MINIMUM_BPS: - case L2TP_AVP_MAXIMUM_BPS: - case L2TP_AVP_TX_CONN_SPEED: - case L2TP_AVP_PHY_CHANNEL_ID: - case L2TP_AVP_RX_CONN_SPEED: - print_32bits_val((u_int32_t *)ptr); - break; - case L2TP_AVP_BEARER_TYPE: - l2tp_bearer_type_print((u_char *)ptr); - break; - case L2TP_AVP_FRAMING_TYPE: - l2tp_framing_type_print((u_char *)ptr); - break; - case L2TP_AVP_PACKET_PROC_DELAY: - l2tp_packet_proc_delay_print(); - break; - case L2TP_AVP_PROXY_AUTH_TYPE: - l2tp_proxy_auth_type_print((u_char *)ptr); - break; - case L2TP_AVP_PROXY_AUTH_ID: - l2tp_proxy_auth_id_print((u_char *)ptr); - break; - case L2TP_AVP_CALL_ERRORS: - l2tp_call_errors_print((u_char *)ptr); - break; - case L2TP_AVP_ACCM: - l2tp_accm_print((u_char *)ptr); - break; - case L2TP_AVP_SEQ_REQUIRED: - break; /* No Attribute Value */ - case L2TP_AVP_PPP_DISCON_CC: - l2tp_ppp_discon_cc_print((u_char *)ptr, len-6); - break; - default: - break; - } - } - printf(")"); - } - - l2tp_avp_print(dat+len, length-len); - return; - - trunc: - printf("|..."); -} - - -void -l2tp_print(const u_char *dat, u_int length) -{ - const u_int16_t *ptr = (u_int16_t *)dat; - u_int cnt = 0; /* total octets consumed */ - u_int16_t pad; - int flag_t, flag_l, flag_s, flag_o; - u_int16_t l2tp_len; - - flag_t = flag_l = flag_s = flag_o = FALSE; - - TCHECK(*ptr); /* Flags & Version */ - if ((EXTRACT_16BITS(ptr) & L2TP_VERSION_MASK) == L2TP_VERSION_L2TP) { - printf(" l2tp:"); - } else if ((EXTRACT_16BITS(ptr) & L2TP_VERSION_MASK) == L2TP_VERSION_L2F) { - printf(" l2f:"); - return; /* nothing to do */ - } else { - printf(" Unknown Version, neither L2F(1) nor L2TP(2)"); - return; /* nothing we can do */ - } - - printf("["); - if (EXTRACT_16BITS(ptr) & L2TP_FLAG_TYPE) { - flag_t = TRUE; - printf("T"); - } - if (EXTRACT_16BITS(ptr) & L2TP_FLAG_LENGTH) { - flag_l = TRUE; - printf("L"); - } - if (EXTRACT_16BITS(ptr) & L2TP_FLAG_SEQUENCE) { - flag_s = TRUE; - printf("S"); - } - if (EXTRACT_16BITS(ptr) & L2TP_FLAG_OFFSET) { - flag_o = TRUE; - printf("O"); - } - if (EXTRACT_16BITS(ptr) & L2TP_FLAG_PRIORITY) - printf("P"); - printf("]"); - - ptr++; - cnt += 2; - - if (flag_l) { - TCHECK(*ptr); /* Length */ - l2tp_len = EXTRACT_16BITS(ptr); ptr++; - cnt += 2; - } else { - l2tp_len = 0; - } - - TCHECK(*ptr); /* Tunnel ID */ - printf("(%u/", EXTRACT_16BITS(ptr)); ptr++; - cnt += 2; - TCHECK(*ptr); /* Session ID */ - printf("%u)", EXTRACT_16BITS(ptr)); ptr++; - cnt += 2; - - if (flag_s) { - TCHECK(*ptr); /* Ns */ - printf("Ns=%u,", EXTRACT_16BITS(ptr)); ptr++; - cnt += 2; - TCHECK(*ptr); /* Nr */ - printf("Nr=%u", EXTRACT_16BITS(ptr)); ptr++; - cnt += 2; - } - - if (flag_o) { - TCHECK(*ptr); /* Offset Size */ - pad = EXTRACT_16BITS(ptr); ptr++; - ptr += pad / sizeof(*ptr); - cnt += (2 + pad); - } - - if (flag_l) { - if (length < l2tp_len) { - printf(" Length %u larger than packet", l2tp_len); - return; - } - length = l2tp_len; - } - if (length < cnt) { - printf(" Length %u smaller than header length", length); - return; - } - if (flag_t) { - if (!flag_l) { - printf(" No length"); - return; - } - if (length - cnt == 0) { - printf(" ZLB"); - } else { - l2tp_avp_print((u_char *)ptr, length - cnt); - } - } else { - printf(" {"); - ppp_print((u_char *)ptr, length - cnt); - printf("}"); - } - - return; - - trunc: - printf("%s", tstr); -} diff --git a/contrib/tcpdump/print-lane.c b/contrib/tcpdump/print-lane.c deleted file mode 100644 index 25b291d079bcf..0000000000000 --- a/contrib/tcpdump/print-lane.c +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Marko Kiiskila carnil@cs.tut.fi - * - * Tampere University of Technology - Telecommunications Laboratory - * - * Permission to use, copy, modify and distribute this - * software and its documentation is hereby granted, - * provided that both the copyright notice and this - * permission notice appear in all copies of the software, - * derivative works or modified versions, and any portions - * thereof, that both notices appear in supporting - * documentation, and that the use of this software is - * acknowledged in any publications resulting from using - * the software. - * - * TUT ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION AND DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS - * SOFTWARE. - * - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-lane.c,v 1.23.2.1 2005/07/07 01:24:37 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <pcap.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" -#include "ether.h" -#include "lane.h" - -static const struct tok lecop2str[] = { - { 0x0001, "configure request" }, - { 0x0101, "configure response" }, - { 0x0002, "join request" }, - { 0x0102, "join response" }, - { 0x0003, "ready query" }, - { 0x0103, "ready indication" }, - { 0x0004, "register request" }, - { 0x0104, "register response" }, - { 0x0005, "unregister request" }, - { 0x0105, "unregister response" }, - { 0x0006, "ARP request" }, - { 0x0106, "ARP response" }, - { 0x0007, "flush request" }, - { 0x0107, "flush response" }, - { 0x0008, "NARP request" }, - { 0x0009, "topology request" }, - { 0, NULL } -}; - -static inline void -lane_hdr_print(register const u_char *bp, int length) -{ - register const struct lecdatahdr_8023 *ep; - - ep = (const struct lecdatahdr_8023 *)bp; - if (qflag) - (void)printf("lecid:%x %s %s %d: ", - EXTRACT_16BITS(&ep->le_header), - etheraddr_string(ep->h_source), - etheraddr_string(ep->h_dest), - length); - else - (void)printf("lecid:%x %s %s %s %d: ", - EXTRACT_16BITS(&ep->le_header), - etheraddr_string(ep->h_source), - etheraddr_string(ep->h_dest), - etherproto_string(ep->h_type), - length); -} - -/* - * This is the top level routine of the printer. 'p' points - * to the LANE header of the packet, 'h->ts' is the timestamp, - * 'h->len' is the length of the packet off the wire, and 'h->caplen' - * is the number of bytes actually captured. - * - * This assumes 802.3, not 802.5, LAN emulation. - */ -void -lane_print(const u_char *p, u_int length, u_int caplen) -{ - struct lane_controlhdr *lec; - struct lecdatahdr_8023 *ep; - u_short ether_type; - u_short extracted_ethertype; - - if (caplen < sizeof(struct lane_controlhdr)) { - printf("[|lane]"); - return; - } - - lec = (struct lane_controlhdr *)p; - if (EXTRACT_16BITS(&lec->lec_header) == 0xff00) { - /* - * LE Control. - */ - printf("lec: proto %x vers %x %s", - lec->lec_proto, lec->lec_vers, - tok2str(lecop2str, "opcode-#%u", EXTRACT_16BITS(&lec->lec_opcode))); - return; - } - - if (caplen < sizeof(struct lecdatahdr_8023)) { - printf("[|lane]"); - return; - } - - if (eflag) - lane_hdr_print(p, length); - - /* - * Go past the LANE header. - */ - length -= sizeof(struct lecdatahdr_8023); - caplen -= sizeof(struct lecdatahdr_8023); - ep = (struct lecdatahdr_8023 *)p; - p += sizeof(struct lecdatahdr_8023); - - ether_type = EXTRACT_16BITS(&ep->h_type); - - /* - * Is it (gag) an 802.3 encapsulation? - */ - extracted_ethertype = 0; - if (ether_type <= ETHERMTU) { - /* Try to print the LLC-layer header & higher layers */ - if (llc_print(p, length, caplen, ep->h_source, ep->h_dest, - &extracted_ethertype) == 0) { - /* ether_type not known, print raw packet */ - if (!eflag) - lane_hdr_print((u_char *)ep, length + sizeof(*ep)); - if (extracted_ethertype) { - printf("(LLC %s) ", - etherproto_string(htons(extracted_ethertype))); - } - if (!suppress_default_print) - default_print(p, caplen); - } - } else if (ether_encap_print(ether_type, p, length, caplen, - &extracted_ethertype) == 0) { - /* ether_type not known, print raw packet */ - if (!eflag) - lane_hdr_print((u_char *)ep, length + sizeof(*ep)); - if (!suppress_default_print) - default_print(p, caplen); - } -} - -u_int -lane_if_print(const struct pcap_pkthdr *h, const u_char *p) -{ - lane_print(p, h->len, h->caplen); - - return (sizeof(struct lecdatahdr_8023)); -} diff --git a/contrib/tcpdump/print-lcp.c b/contrib/tcpdump/print-lcp.c deleted file mode 100644 index ddea9c6053c74..0000000000000 --- a/contrib/tcpdump/print-lcp.c +++ /dev/null @@ -1,216 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] = -"@(#) $Header: /tcpdump/master/tcpdump/print-lcp.c,v 1.9 2000/10/06 04:23:12 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <sys/param.h> -#include <sys/time.h> -#include <sys/socket.h> - -#include <netinet/in.h> - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" /* must come after interface.h */ -#include "ppp.h" - -/* Codes */ -enum { - LCP_CONFREQ = 1, - LCP_CONFACK = 2, - LCP_CONFNAK = 3, - LCP_CONFREJ = 4, - LCP_TERMREQ = 5, - LCP_TERMACK = 6, - LCP_CODEREJ = 7, - LCP_PROTREJ = 8, - LCP_ECHOREQ = 9, - LCP_ECHOREP = 10, - LCP_DISCARD = 11 -}; - -static struct tok lcpcode2str[] = { - { LCP_CONFREQ, "ConfReq" }, - { LCP_CONFACK, "ConfAck" }, - { LCP_CONFNAK, "ConfNak" }, - { LCP_CONFREJ, "ConfRej" }, - { LCP_TERMREQ, "TermReq" }, - { LCP_TERMACK, "TermAck" }, - { LCP_CODEREJ, "CodeRej" }, - { LCP_PROTREJ, "ProtRej" }, - { LCP_ECHOREQ, "EchoReq" }, - { LCP_ECHOREP, "EchoRep" }, - { LCP_DISCARD, "Discard" }, - { 0, NULL } -}; - - -enum { - LCP_RESERVED = 0, - LCP_MRU = 1, - LCP_ASYNCMAP = 2, - LCP_AUTHPROTO = 3, - LCP_QUALPROTO = 4, - LCP_MAGICNUM = 5, - LCP_PCOMP = 7, - LCP_ACFCOMP = 8, - LCP_CALLBACK = 13 -}; - -static struct tok lcpoption2str[] = { - { LCP_RESERVED, "reserved"}, - { LCP_MRU, "mru"}, - { LCP_ASYNCMAP, "asyncmap"}, - { LCP_AUTHPROTO, "auth"}, - { LCP_QUALPROTO, "qual"}, - { LCP_MAGICNUM, "magic"}, - { LCP_PCOMP, "pcomp"}, - { LCP_ACFCOMP, "acfcomp"}, - { LCP_CALLBACK, "callback"}, - { 0, NULL } -}; - -static struct tok lcpauth2str[] = { - {0xc023, "PAP"}, - {0xc223, "CHAP"}, - { 0, NULL } -}; - -static struct tok lcpqual2str[] = { - {0xc025, "LQR"}, - { 0, NULL } -}; - -static struct tok lcpchap2str[] = { - {0x05, "MD5"}, - {0x80, "MS"}, - { 0, NULL } -}; - -void -lcp_print(register const u_char *bp, u_int length) -{ - u_short lcp_code, lcp_id, lcp_length; - const u_char *lcp_data; - - lcp_data = bp+4; - - if (snapend < lcp_data) { - printf(" [LCP|]"); - return; - } - - lcp_code = bp[0]; - lcp_id = bp[1]; - lcp_length = EXTRACT_16BITS(bp+2); - - printf("LCP %s id=0x%x", tok2str(lcpcode2str, "LCP-#%d", lcp_code), lcp_id); - - switch (lcp_code) { - case LCP_CONFREQ: - case LCP_CONFACK: - case LCP_CONFNAK: - case LCP_CONFREJ: - /* Print Options */ - { - u_char lcpopt_type, lcpopt_length; - const u_char *p=lcp_data; - while (p+2 < lcp_data+lcp_length && p+2 < snapend) { - lcpopt_type = p[0]; - lcpopt_length = p[1]; - p+=2; - printf(" <%s ",tok2str(lcpoption2str, "option-#%d", lcpopt_type)); - if (lcpopt_length) - switch (lcpopt_type) { - case LCP_MRU: - if (snapend < p+2) return; - printf("%d",ntohs(*(u_short*)p)); - if (lcpopt_length != 4) printf(" len=%d!",lcpopt_length); - break; - case LCP_AUTHPROTO: - if (snapend < p+2) return; - printf("%s",tok2str(lcpauth2str, "AUTH-%#x", ntohs(*(u_short*)p))); - if (lcpopt_length < 4) printf(" len=%d!",lcpopt_length); - if (lcpopt_length >= 5 && p < snapend) - printf(" %s",tok2str(lcpchap2str, "%#x", p[0])); - break; - case LCP_QUALPROTO: - if (snapend < p+2) return; - printf("%s",tok2str(lcpqual2str, "QUAL-%#x", ntohs(*(u_short*)p))); - if (lcpopt_length < 4) printf(" len=%d!",lcpopt_length); - /* Print data field of auth? */ - break; - case LCP_ASYNCMAP: - case LCP_MAGICNUM: - if (snapend < p+4) return; - printf("%#x", (unsigned)ntohl(*(u_long*)p)); - if (lcpopt_length != 6) printf(" len=%d!",lcpopt_length); - break; - case LCP_PCOMP: - case LCP_ACFCOMP: - case LCP_RESERVED: - if (lcpopt_length != 2) printf(" len=%d!",lcpopt_length); - break; - default: - if (lcpopt_length != 2) printf(" len=%d",lcpopt_length); - break; - } - printf(">"); - p+=lcpopt_length-2; - } - } - break; - case LCP_ECHOREQ: - case LCP_ECHOREP: - case LCP_DISCARD: - if (snapend < lcp_data+4) return; - printf(" magic=%#x", (unsigned)ntohl(*(u_long *) lcp_data)); - lcp_data +=4; - break; - case LCP_PROTREJ: - if (snapend < lcp_data+2) return; - printf(" prot=%s", tok2str(ppptype2str, "PROT-%#x", ntohs(*(u_short *) lcp_data))); - /* TODO print rejected packet too ? */ - break; - case LCP_CODEREJ: - if (snapend < lcp_data+4) return; - printf(" "); - lcp_print(lcp_data, (lcp_length+lcp_data > snapend ? snapend-lcp_data : lcp_length)); - break; - case LCP_TERMREQ: - case LCP_TERMACK: - break; - default: - break; - } - - return; -} diff --git a/contrib/tcpdump/print-ldp.c b/contrib/tcpdump/print-ldp.c deleted file mode 100644 index fb44923199124..0000000000000 --- a/contrib/tcpdump/print-ldp.c +++ /dev/null @@ -1,615 +0,0 @@ -/* - * 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. - * - * Original code by Hannes Gredler (hannes@juniper.net) - * and Steinar Haug (sthaug@nethelp.no) - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-ldp.c,v 1.8.2.6 2005/07/11 20:24:34 hannes Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "interface.h" -#include "decode_prefix.h" -#include "extract.h" -#include "addrtoname.h" - -#include "l2vpn.h" - -/* - * ldp common header - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Version | PDU Length | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | LDP Identifier | - * + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * - */ - -struct ldp_common_header { - u_int8_t version[2]; - u_int8_t pdu_length[2]; - u_int8_t lsr_id[4]; - u_int8_t label_space[2]; -}; - -#define LDP_VERSION 1 - -/* - * ldp message header - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * |U| Message Type | Message Length | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Message ID | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | | - * + + - * | Mandatory Parameters | - * + + - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | | - * + + - * | Optional Parameters | - * + + - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -struct ldp_msg_header { - u_int8_t type[2]; - u_int8_t length[2]; - u_int8_t id[4]; -}; - -#define LDP_MASK_MSG_TYPE(x) ((x)&0x7fff) -#define LDP_MASK_U_BIT(x) ((x)&0x8000) - -#define LDP_MSG_NOTIF 0x0001 -#define LDP_MSG_HELLO 0x0100 -#define LDP_MSG_INIT 0x0200 -#define LDP_MSG_KEEPALIVE 0x0201 -#define LDP_MSG_ADDRESS 0x0300 -#define LDP_MSG_ADDRESS_WITHDRAW 0x0301 -#define LDP_MSG_LABEL_MAPPING 0x0400 -#define LDP_MSG_LABEL_REQUEST 0x0401 -#define LDP_MSG_LABEL_WITHDRAW 0x0402 -#define LDP_MSG_LABEL_RELEASE 0x0403 -#define LDP_MSG_LABEL_ABORT_REQUEST 0x0404 - -#define LDP_VENDOR_PRIVATE_MIN 0x3e00 -#define LDP_VENDOR_PRIVATE_MAX 0x3eff -#define LDP_EXPERIMENTAL_MIN 0x3f00 -#define LDP_EXPERIMENTAL_MAX 0x3fff - -static const struct tok ldp_msg_values[] = { - { LDP_MSG_NOTIF, "Notification" }, - { LDP_MSG_HELLO, "Hello" }, - { LDP_MSG_INIT, "Initialization" }, - { LDP_MSG_KEEPALIVE, "Keepalive" }, - { LDP_MSG_ADDRESS, "Address" }, - { LDP_MSG_ADDRESS_WITHDRAW, "Address Widthdraw" }, - { LDP_MSG_LABEL_MAPPING, "Label Mapping" }, - { LDP_MSG_LABEL_REQUEST, "Label Request" }, - { LDP_MSG_LABEL_WITHDRAW, "Label Withdraw" }, - { LDP_MSG_LABEL_RELEASE, "Label Release" }, - { LDP_MSG_LABEL_ABORT_REQUEST, "Label Abort Request" }, - { 0, NULL} -}; - -#define LDP_MASK_TLV_TYPE(x) ((x)&0x3fff) -#define LDP_MASK_F_BIT(x) ((x)&0x4000) - -#define LDP_TLV_FEC 0x0100 -#define LDP_TLV_ADDRESS_LIST 0x0101 -#define LDP_TLV_HOP_COUNT 0x0103 -#define LDP_TLV_PATH_VECTOR 0x0104 -#define LDP_TLV_GENERIC_LABEL 0x0200 -#define LDP_TLV_ATM_LABEL 0x0201 -#define LDP_TLV_FR_LABEL 0x0202 -#define LDP_TLV_STATUS 0x0300 -#define LDP_TLV_EXTD_STATUS 0x0301 -#define LDP_TLV_RETURNED_PDU 0x0302 -#define LDP_TLV_RETURNED_MSG 0x0303 -#define LDP_TLV_COMMON_HELLO 0x0400 -#define LDP_TLV_IPV4_TRANSPORT_ADDR 0x0401 -#define LDP_TLV_CONFIG_SEQ_NUMBER 0x0402 -#define LDP_TLV_IPV6_TRANSPORT_ADDR 0x0403 -#define LDP_TLV_COMMON_SESSION 0x0500 -#define LDP_TLV_ATM_SESSION_PARM 0x0501 -#define LDP_TLV_FR_SESSION_PARM 0x0502 -#define LDP_TLV_FT_SESSION 0x0503 -#define LDP_TLV_LABEL_REQUEST_MSG_ID 0x0600 - -static const struct tok ldp_tlv_values[] = { - { LDP_TLV_FEC, "FEC" }, - { LDP_TLV_ADDRESS_LIST, "Address List" }, - { LDP_TLV_HOP_COUNT, "Hop Count" }, - { LDP_TLV_PATH_VECTOR, "Path Vector" }, - { LDP_TLV_GENERIC_LABEL, "Generic Label" }, - { LDP_TLV_ATM_LABEL, "ATM Label" }, - { LDP_TLV_FR_LABEL, "Frame-Relay Label" }, - { LDP_TLV_STATUS, "Status" }, - { LDP_TLV_EXTD_STATUS, "Extended Status" }, - { LDP_TLV_RETURNED_PDU, "Returned PDU" }, - { LDP_TLV_RETURNED_MSG, "Returned Message" }, - { LDP_TLV_COMMON_HELLO, "Common Hello Parameters" }, - { LDP_TLV_IPV4_TRANSPORT_ADDR, "IPv4 Transport Address" }, - { LDP_TLV_CONFIG_SEQ_NUMBER, "Configuration Sequence Number" }, - { LDP_TLV_IPV6_TRANSPORT_ADDR, "IPv6 Transport Address" }, - { LDP_TLV_COMMON_SESSION, "Common Session Parameters" }, - { LDP_TLV_ATM_SESSION_PARM, "ATM Session Parameters" }, - { LDP_TLV_FR_SESSION_PARM, "Frame-Relay Session Parameters" }, - { LDP_TLV_FT_SESSION, "Fault-Tolerant Session Parameters" }, - { LDP_TLV_LABEL_REQUEST_MSG_ID, "Label Request Message ID" }, - { 0, NULL} -}; - -#define LDP_FEC_WILDCARD 0x01 -#define LDP_FEC_PREFIX 0x02 -#define LDP_FEC_HOSTADDRESS 0x03 -/* From draft-martini-l2circuit-trans-mpls-13.txt */ -#define LDP_FEC_MARTINI_VC 0x80 - -static const struct tok ldp_fec_values[] = { - { LDP_FEC_WILDCARD, "Wildcard" }, - { LDP_FEC_PREFIX, "Prefix" }, - { LDP_FEC_HOSTADDRESS, "Host address" }, - { LDP_FEC_MARTINI_VC, "Martini VC" }, - { 0, NULL} -}; - -#define LDP_FEC_MARTINI_IFPARM_MTU 0x01 -#define LDP_FEC_MARTINI_IFPARM_DESC 0x03 -#define LDP_FEC_MARTINI_IFPARM_VCCV 0x0c - -static const struct tok ldp_fec_martini_ifparm_values[] = { - { LDP_FEC_MARTINI_IFPARM_MTU, "MTU" }, - { LDP_FEC_MARTINI_IFPARM_DESC, "Description" }, - { LDP_FEC_MARTINI_IFPARM_VCCV, "VCCV" }, - { 0, NULL} -}; - -/* draft-ietf-pwe3-vccv-04.txt */ -static const struct tok ldp_fec_martini_ifparm_vccv_cc_values[] = { - { 0x01, "PWE3 control word" }, - { 0x02, "MPLS Router Alert Label" }, - { 0x04, "MPLS inner label TTL = 1" }, - { 0, NULL} -}; - -/* draft-ietf-pwe3-vccv-04.txt */ -static const struct tok ldp_fec_martini_ifparm_vccv_cv_values[] = { - { 0x01, "ICMP Ping" }, - { 0x02, "LSP Ping" }, - { 0x04, "BFD" }, - { 0, NULL} -}; - -/* RFC1700 address family numbers, same definition in print-bgp.c */ -#define AFNUM_INET 1 -#define AFNUM_INET6 2 - -#define FALSE 0 -#define TRUE 1 - -int ldp_msg_print(register const u_char *); -int ldp_tlv_print(register const u_char *); - -/* - * ldp tlv header - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * |U|F| Type | Length | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | | - * | Value | - * ~ ~ - * | | - * | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -int -ldp_tlv_print(register const u_char *tptr) { - - struct ldp_tlv_header { - u_int8_t type[2]; - u_int8_t length[2]; - }; - - const struct ldp_tlv_header *ldp_tlv_header; - u_short tlv_type,tlv_len,tlv_tlen,af,ft_flags; - u_char fec_type; - u_int ui,vc_info_len, vc_info_tlv_type, vc_info_tlv_len,idx; - char buf[100]; - int i; - - ldp_tlv_header = (const struct ldp_tlv_header *)tptr; - tlv_len=EXTRACT_16BITS(ldp_tlv_header->length); - tlv_tlen=tlv_len; - tlv_type=LDP_MASK_TLV_TYPE(EXTRACT_16BITS(ldp_tlv_header->type)); - - /* FIXME vendor private / experimental check */ - printf("\n\t %s TLV (0x%04x), length: %u, Flags: [%s and %s forward if unknown]", - tok2str(ldp_tlv_values, - "Unknown", - tlv_type), - tlv_type, - tlv_len, - LDP_MASK_U_BIT(EXTRACT_16BITS(&ldp_tlv_header->type)) ? "continue processing" : "ignore", - LDP_MASK_F_BIT(EXTRACT_16BITS(&ldp_tlv_header->type)) ? "do" : "don't"); - - tptr+=sizeof(struct ldp_tlv_header); - - switch(tlv_type) { - - case LDP_TLV_COMMON_HELLO: - printf("\n\t Hold Time: %us, Flags: [%s Hello%s]", - EXTRACT_16BITS(tptr), - (EXTRACT_16BITS(tptr+2)&0x8000) ? "Targeted" : "Link", - (EXTRACT_16BITS(tptr+2)&0x4000) ? ", Request for targeted Hellos" : ""); - break; - - case LDP_TLV_IPV4_TRANSPORT_ADDR: - printf("\n\t IPv4 Transport Address: %s", ipaddr_string(tptr)); - break; -#ifdef INET6 - case LDP_TLV_IPV6_TRANSPORT_ADDR: - printf("\n\t IPv6 Transport Address: %s", ip6addr_string(tptr)); - break; -#endif - case LDP_TLV_CONFIG_SEQ_NUMBER: - printf("\n\t Sequence Number: %u", EXTRACT_32BITS(tptr)); - break; - - case LDP_TLV_ADDRESS_LIST: - af = EXTRACT_16BITS(tptr); - tptr+=2; - printf("\n\t Adress Family: "); - if (af == AFNUM_INET) { - printf("IPv4, addresses:"); - for (i=0; i<(tlv_tlen-2)/4; i++) { - printf(" %s",ipaddr_string(tptr)); - tptr+=sizeof(struct in_addr); - } - } -#ifdef INET6 - else if (af == AFNUM_INET6) { - printf("IPv6, addresses:"); - for (i=0; i<(tlv_tlen-2)/16; i++) { - printf(" %s",ip6addr_string(tptr)); - tptr+=sizeof(struct in6_addr); - } - } -#endif - break; - - case LDP_TLV_COMMON_SESSION: - printf("\n\t Version: %u, Keepalive: %us, Flags: [Downstream %s, Loop Detection %s]", - EXTRACT_16BITS(tptr), EXTRACT_16BITS(tptr+2), - (EXTRACT_16BITS(tptr+6)&0x8000) ? "On Demand" : "Unsolicited", - (EXTRACT_16BITS(tptr+6)&0x4000) ? "Enabled" : "Disabled" - ); - break; - - case LDP_TLV_FEC: - fec_type = *tptr; - printf("\n\t %s FEC (0x%02x)", - tok2str(ldp_fec_values, "Unknown", fec_type), - fec_type); - - tptr+=1; - switch(fec_type) { - - case LDP_FEC_WILDCARD: - break; - case LDP_FEC_PREFIX: - af = EXTRACT_16BITS(tptr); - tptr+=2; - if (af == AFNUM_INET) { - i=decode_prefix4(tptr,buf,sizeof(buf)); - printf(": IPv4 prefix %s",buf); - } -#ifdef INET6 - else if (af == AFNUM_INET6) { - i=decode_prefix6(tptr,buf,sizeof(buf)); - printf(": IPv6 prefix %s",buf); - } -#endif - break; - case LDP_FEC_HOSTADDRESS: - break; - case LDP_FEC_MARTINI_VC: - if (!TTEST2(*tptr, 11)) - goto trunc; - vc_info_len = *(tptr+2); - - printf(": %s, %scontrol word, group-ID %u, VC-ID %u, VC-info-length: %u", - tok2str(l2vpn_encaps_values, "Unknown", EXTRACT_16BITS(tptr)&0x7fff), - EXTRACT_16BITS(tptr)&0x8000 ? "" : "no ", - EXTRACT_32BITS(tptr+3), - EXTRACT_32BITS(tptr+7), - vc_info_len); - - if (vc_info_len == 0) /* infinite loop protection */ - break; - - tptr+=11; - if (!TTEST2(*tptr, vc_info_len)) - goto trunc; - - while (vc_info_len > 2) { - vc_info_tlv_type = *tptr; - vc_info_tlv_len = *(tptr+1); - if (vc_info_tlv_len < 2) - break; - if (vc_info_len < vc_info_tlv_len) - break; - - printf("\n\t\tInterface Parameter: %s (0x%02x), len %u", - tok2str(ldp_fec_martini_ifparm_values,"Unknown",vc_info_tlv_type), - vc_info_tlv_type, - vc_info_tlv_len); - - switch(vc_info_tlv_type) { - case LDP_FEC_MARTINI_IFPARM_MTU: - printf(": %u",EXTRACT_16BITS(tptr+2)); - break; - - case LDP_FEC_MARTINI_IFPARM_DESC: - printf(": "); - for (idx = 2; idx < vc_info_tlv_len; idx++) - safeputchar(*(tptr+idx)); - break; - - case LDP_FEC_MARTINI_IFPARM_VCCV: - printf("\n\t\t Control Channels (0x%02x) = [%s]", - *(tptr+2), - bittok2str(ldp_fec_martini_ifparm_vccv_cc_values,"none",*(tptr+2))); - printf("\n\t\t CV Types (0x%02x) = [%s]", - *(tptr+3), - bittok2str(ldp_fec_martini_ifparm_vccv_cv_values,"none",*(tptr+3))); - break; - - default: - print_unknown_data(tptr+2,"\n\t\t ",vc_info_tlv_len-2); - break; - } - - vc_info_len -= vc_info_tlv_len; - tptr += vc_info_tlv_len; - } - break; - } - - break; - - case LDP_TLV_GENERIC_LABEL: - printf("\n\t Label: %u", EXTRACT_32BITS(tptr) & 0xfffff); - break; - - case LDP_TLV_STATUS: - ui = EXTRACT_32BITS(tptr); - tptr+=4; - printf("\n\t Status: 0x%02x, Flags: [%s and %s forward]", - ui&0x3fffffff, - ui&0x80000000 ? "Fatal error" : "Advisory Notification", - ui&0x40000000 ? "do" : "don't"); - ui = EXTRACT_32BITS(tptr); - tptr+=4; - if (ui) - printf(", causing Message ID: 0x%08x", ui); - break; - - case LDP_TLV_FT_SESSION: - ft_flags = EXTRACT_16BITS(tptr); - printf("\n\t Flags: [%sReconnect, %sSave State, %sAll-Label Protection, %s Checkpoint, %sRe-Learn State]", - ft_flags&0x8000 ? "" : "No ", - ft_flags&0x8 ? "" : "Don't ", - ft_flags&0x4 ? "" : "No ", - ft_flags&0x2 ? "Sequence Numbered Label" : "All Labels", - ft_flags&0x1 ? "" : "Don't "); - tptr+=4; - ui = EXTRACT_32BITS(tptr); - if (ui) - printf(", Reconnect Timeout: %ums", ui); - tptr+=4; - ui = EXTRACT_32BITS(tptr); - if (ui) - printf(", Recovery Time: %ums", ui); - break; - - - /* - * FIXME those are the defined TLVs that lack a decoder - * you are welcome to contribute code ;-) - */ - - case LDP_TLV_HOP_COUNT: - case LDP_TLV_PATH_VECTOR: - case LDP_TLV_ATM_LABEL: - case LDP_TLV_FR_LABEL: - case LDP_TLV_EXTD_STATUS: - case LDP_TLV_RETURNED_PDU: - case LDP_TLV_RETURNED_MSG: - case LDP_TLV_ATM_SESSION_PARM: - case LDP_TLV_FR_SESSION_PARM: - case LDP_TLV_LABEL_REQUEST_MSG_ID: - - default: - if (vflag <= 1) - print_unknown_data(tptr,"\n\t ",tlv_tlen); - break; - } - return(tlv_len+4); /* Type & Length fields not included */ - -trunc: - printf("\n\t\t packet exceeded snapshot"); - return 0; -} - -void -ldp_print(register const u_char *pptr, register u_int len) { - - int processed; - while (len > (sizeof(struct ldp_common_header) + sizeof(struct ldp_msg_header))) { - processed = ldp_msg_print(pptr); - if (processed == 0) - return; - len -= processed; - pptr += processed; - } -} - - -int -ldp_msg_print(register const u_char *pptr) { - - const struct ldp_common_header *ldp_com_header; - const struct ldp_msg_header *ldp_msg_header; - const u_char *tptr,*msg_tptr; - u_short tlen; - u_short pdu_len,msg_len,msg_type,msg_tlen; - int hexdump,processed; - - tptr=pptr; - ldp_com_header = (const struct ldp_common_header *)pptr; - TCHECK(*ldp_com_header); - - /* - * Sanity checking of the header. - */ - if (EXTRACT_16BITS(&ldp_com_header->version) != LDP_VERSION) { - printf("%sLDP version %u packet not supported", - (vflag < 1) ? "" : "\n\t", - EXTRACT_16BITS(&ldp_com_header->version)); - return 0; - } - - /* print the LSR-ID, label-space & length */ - pdu_len = EXTRACT_16BITS(&ldp_com_header->pdu_length); - printf("%sLDP, Label-Space-ID: %s:%u, pdu-length: %u", - (vflag < 1) ? "" : "\n\t", - ipaddr_string(&ldp_com_header->lsr_id), - EXTRACT_16BITS(&ldp_com_header->label_space), - pdu_len); - - /* bail out if non-verbose */ - if (vflag < 1) - return 0; - - /* ok they seem to want to know everything - lets fully decode it */ - tlen=pdu_len; - - tptr += sizeof(const struct ldp_common_header); - tlen -= sizeof(const struct ldp_common_header)-4; /* Type & Length fields not included */ - - while(tlen>0) { - /* did we capture enough for fully decoding the msg header ? */ - if (!TTEST2(*tptr, sizeof(struct ldp_msg_header))) - goto trunc; - - ldp_msg_header = (const struct ldp_msg_header *)tptr; - msg_len=EXTRACT_16BITS(ldp_msg_header->length); - msg_type=LDP_MASK_MSG_TYPE(EXTRACT_16BITS(ldp_msg_header->type)); - - /* FIXME vendor private / experimental check */ - printf("\n\t %s Message (0x%04x), length: %u, Message ID: 0x%08x, Flags: [%s if unknown]", - tok2str(ldp_msg_values, - "Unknown", - msg_type), - msg_type, - msg_len, - EXTRACT_32BITS(&ldp_msg_header->id), - LDP_MASK_U_BIT(EXTRACT_16BITS(&ldp_msg_header->type)) ? "continue processing" : "ignore"); - - if (msg_len == 0) /* infinite loop protection */ - return 0; - - msg_tptr=tptr+sizeof(struct ldp_msg_header); - msg_tlen=msg_len-sizeof(struct ldp_msg_header)+4; /* Type & Length fields not included */ - - /* did we capture enough for fully decoding the message ? */ - if (!TTEST2(*tptr, msg_len)) - goto trunc; - hexdump=FALSE; - - switch(msg_type) { - - case LDP_MSG_NOTIF: - case LDP_MSG_HELLO: - case LDP_MSG_INIT: - case LDP_MSG_KEEPALIVE: - case LDP_MSG_ADDRESS: - case LDP_MSG_LABEL_MAPPING: - while(msg_tlen >= 4) { - processed = ldp_tlv_print(msg_tptr); - if (processed == 0) - break; - msg_tlen-=processed; - msg_tptr+=processed; - } - break; - - /* - * FIXME those are the defined messages that lack a decoder - * you are welcome to contribute code ;-) - */ - - case LDP_MSG_ADDRESS_WITHDRAW: - case LDP_MSG_LABEL_REQUEST: - case LDP_MSG_LABEL_WITHDRAW: - case LDP_MSG_LABEL_RELEASE: - case LDP_MSG_LABEL_ABORT_REQUEST: - - default: - if (vflag <= 1) - print_unknown_data(msg_tptr,"\n\t ",msg_tlen); - break; - } - /* do we want to see an additionally hexdump ? */ - if (vflag > 1 || hexdump==TRUE) - print_unknown_data(tptr+sizeof(sizeof(struct ldp_msg_header)),"\n\t ", - msg_len); - - tptr += msg_len+4; - tlen -= msg_len+4; - } - return pdu_len+4; -trunc: - printf("\n\t\t packet exceeded snapshot"); - return 0; -} - diff --git a/contrib/tcpdump/print-llc.c b/contrib/tcpdump/print-llc.c deleted file mode 100644 index dcb740ba83211..0000000000000 --- a/contrib/tcpdump/print-llc.c +++ /dev/null @@ -1,514 +0,0 @@ -/* - * Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * Code by Matt Thomas, Digital Equipment Corporation - * with an awful lot of hacking by Jeffrey Mogul, DECWRL - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-llc.c,v 1.61.2.5 2005/09/29 07:40:13 hannes Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" /* must come after interface.h */ - -#include "llc.h" -#include "ethertype.h" -#include "oui.h" - -static struct tok llc_values[] = { - { LLCSAP_NULL, "Null" }, - { LLCSAP_GLOBAL, "Global" }, - { LLCSAP_8021B_I, "802.1B I" }, - { LLCSAP_8021B_G, "802.1B G" }, - { LLCSAP_IP, "IP" }, - { LLCSAP_SNA, "SNA" }, - { LLCSAP_PROWAYNM, "ProWay NM" }, - { LLCSAP_8021D, "STP" }, - { LLCSAP_RS511, "RS511" }, - { LLCSAP_ISO8208, "ISO8208" }, - { LLCSAP_PROWAY, "ProWay" }, - { LLCSAP_SNAP, "SNAP" }, - { LLCSAP_IPX, "IPX" }, - { LLCSAP_NETBEUI, "NetBeui" }, - { LLCSAP_ISONS, "OSI" }, - { 0, NULL }, -}; - -static struct tok llc_cmd_values[] = { - { LLC_UI, "ui" }, - { LLC_TEST, "test" }, - { LLC_XID, "xid" }, - { LLC_UA, "ua" }, - { LLC_DISC, "disc" }, - { LLC_DM, "dm" }, - { LLC_SABME, "sabme" }, - { LLC_FRMR, "frmr" }, - { 0, NULL } -}; - -static const struct tok llc_flag_values[] = { - { 0, "Command" }, - { LLC_GSAP, "Response" }, - { LLC_U_POLL, "Poll" }, - { LLC_GSAP|LLC_U_POLL, "Final" }, - { LLC_GSAP|LLC_IS_POLL, "Final" }, - { 0, NULL } -}; - -static const struct tok llc_supervisory_values[] = { - { 0, "Receiver Ready" }, - { 1, "Reject" }, - { 2, "Receiver not Ready" }, - { 0, NULL } -}; - - -static const struct tok cisco_values[] = { - { PID_CISCO_CDP, "CDP" }, - { 0, NULL } -}; - -static const struct tok bridged_values[] = { - { PID_RFC2684_ETH_FCS, "Ethernet + FCS" }, - { PID_RFC2684_ETH_NOFCS, "Ethernet w/o FCS" }, - { PID_RFC2684_802_4_FCS, "802.4 + FCS" }, - { PID_RFC2684_802_4_NOFCS, "802.4 w/o FCS" }, - { PID_RFC2684_802_5_FCS, "Token Ring + FCS" }, - { PID_RFC2684_802_5_NOFCS, "Token Ring w/o FCS" }, - { PID_RFC2684_FDDI_FCS, "FDDI + FCS" }, - { PID_RFC2684_FDDI_NOFCS, "FDDI w/o FCS" }, - { PID_RFC2684_802_6_FCS, "802.6 + FCS" }, - { PID_RFC2684_802_6_NOFCS, "802.6 w/o FCS" }, - { PID_RFC2684_BPDU, "BPDU" }, - { 0, NULL }, -}; - -struct oui_tok { - u_int32_t oui; - const struct tok *tok; -}; - -static const struct oui_tok oui_to_tok[] = { - { OUI_ENCAP_ETHER, ethertype_values }, - { OUI_CISCO_90, ethertype_values }, /* uses some Ethertype values */ - { OUI_APPLETALK, ethertype_values }, /* uses some Ethertype values */ - { OUI_CISCO, cisco_values }, - { OUI_RFC2684, bridged_values }, /* bridged, RFC 2427 FR or RFC 2864 ATM */ - { 0, NULL } -}; - -/* - * Returns non-zero IFF it succeeds in printing the header - */ -int -llc_print(const u_char *p, u_int length, u_int caplen, - const u_char *esrc, const u_char *edst, u_short *extracted_ethertype) -{ - u_int8_t dsap_field, dsap, ssap_field, ssap; - u_int16_t control; - int is_u; - register int ret; - - if (caplen < 3) { - (void)printf("[|llc]"); - default_print((u_char *)p, caplen); - return(0); - } - - dsap_field = *p; - dsap = dsap_field & ~LLC_IG; - ssap_field = *(p + 1); - ssap = ssap_field & ~LLC_GSAP; - - /* - * OK, what type of LLC frame is this? The length - * of the control field depends on that - I frames - * have a two-byte control field, and U frames have - * a one-byte control field. - */ - control = *(p + 2); - if ((control & LLC_U_FMT) == LLC_U_FMT) { - /* - * U frame. - */ - is_u = 1; - } else { - /* - * The control field in I and S frames is - * 2 bytes... - */ - if (caplen < 4) { - (void)printf("[|llc]"); - default_print((u_char *)p, caplen); - return(0); - } - - /* - * ...and is little-endian. - */ - control = EXTRACT_LE_16BITS(p + 2); - is_u = 0; - } - - if (ssap == LLCSAP_GLOBAL && dsap == LLCSAP_GLOBAL) { - /* - * This is an Ethernet_802.3 IPX frame; it has an - * 802.3 header (i.e., an Ethernet header where the - * type/length field is <= ETHERMTU, i.e. it's a length - * field, not a type field), but has no 802.2 header - - * the IPX packet starts right after the Ethernet header, - * with a signature of two bytes of 0xFF (which is - * LLCSAP_GLOBAL). - * - * (It might also have been an Ethernet_802.3 IPX at - * one time, but got bridged onto another network, - * such as an 802.11 network; this has appeared in at - * least one capture file.) - */ - - if (eflag) - printf("IPX 802.3: "); - - ipx_print(p, length); - return (1); - } - - if (eflag) { - printf("LLC, dsap %s (0x%02x), ssap %s (0x%02x)", - tok2str(llc_values, "Unknown", dsap), - dsap, - tok2str(llc_values, "Unknown", ssap), - ssap); - - if (is_u) { - printf(", cmd 0x%02x: ", control); - } else { - printf(", cmd 0x%04x: ", control); - } - } - - if (ssap == LLCSAP_8021D && dsap == LLCSAP_8021D && - control == LLC_UI) { - stp_print(p+3, length-3); - return (1); - } - - if (ssap == LLCSAP_IP && dsap == LLCSAP_IP && - control == LLC_UI) { - ip_print(gndo, p+4, length-4); - return (1); - } - - if (ssap == LLCSAP_IPX && dsap == LLCSAP_IPX && - control == LLC_UI) { - /* - * This is an Ethernet_802.2 IPX frame, with an 802.3 - * header and an 802.2 LLC header with the source and - * destination SAPs being the IPX SAP. - * - * Skip DSAP, LSAP, and control field. - */ - if (eflag) - printf("IPX 802.2: "); - - ipx_print(p+3, length-3); - return (1); - } - -#ifdef TCPDUMP_DO_SMB - if (ssap == LLCSAP_NETBEUI && dsap == LLCSAP_NETBEUI - && (!(control & LLC_S_FMT) || control == LLC_U_FMT)) { - /* - * we don't actually have a full netbeui parser yet, but the - * smb parser can handle many smb-in-netbeui packets, which - * is very useful, so we call that - * - * We don't call it for S frames, however, just I frames - * (which are frames that don't have the low-order bit, - * LLC_S_FMT, set in the first byte of the control field) - * and UI frames (whose control field is just 3, LLC_U_FMT). - */ - - /* - * Skip the LLC header. - */ - if (is_u) { - p += 3; - length -= 3; - caplen -= 3; - } else { - p += 4; - length -= 4; - caplen -= 4; - } - netbeui_print(control, p, length); - return (1); - } -#endif - if (ssap == LLCSAP_ISONS && dsap == LLCSAP_ISONS - && control == LLC_UI) { - isoclns_print(p + 3, length - 3, caplen - 3); - return (1); - } - - if (ssap == LLCSAP_SNAP && dsap == LLCSAP_SNAP - && control == LLC_UI) { - /* - * XXX - what *is* the right bridge pad value here? - * Does anybody ever bridge one form of LAN traffic - * over a networking type that uses 802.2 LLC? - */ - ret = snap_print(p+3, length-3, caplen-3, extracted_ethertype, - 2); - if (ret) - return (ret); - } - - if (!eflag) { - if (ssap == dsap) { - if (esrc == NULL || edst == NULL) - (void)printf("%s ", tok2str(llc_values, "Unknown DSAP 0x%02x", dsap)); - else - (void)printf("%s > %s %s ", - etheraddr_string(esrc), - etheraddr_string(edst), - tok2str(llc_values, "Unknown DSAP 0x%02x", dsap)); - } else { - if (esrc == NULL || edst == NULL) - (void)printf("%s > %s ", - tok2str(llc_values, "Unknown SSAP 0x%02x", ssap), - tok2str(llc_values, "Unknown DSAP 0x%02x", dsap)); - else - (void)printf("%s %s > %s %s ", - etheraddr_string(esrc), - tok2str(llc_values, "Unknown SSAP 0x%02x", ssap), - etheraddr_string(edst), - tok2str(llc_values, "Unknown DSAP 0x%02x", dsap)); - } - } - - if (is_u) { - printf("Unnumbered, %s, Flags [%s], length %u", - tok2str(llc_cmd_values, "%02x", LLC_U_CMD(control)), - bittok2str(llc_flag_values,"?",(ssap) | (control & LLC_U_POLL)), - length); - - p += 3; - length -= 3; - caplen -= 3; - - if ((control & ~LLC_U_POLL) == LLC_XID) { - if (*p == LLC_XID_FI) { - printf(": %02x %02x", p[1], p[2]); - p += 3; - length -= 3; - caplen -= 3; - } - } - } else { - - if ((control & LLC_S_FMT) == LLC_S_FMT) { - (void)printf("Supervisory, %s, rcv seq %u, Flags [%s], length %u", - tok2str(llc_supervisory_values,"?",LLC_S_CMD(control)), - LLC_IS_NR(control), - bittok2str(llc_flag_values,"?",(ssap) | (control & LLC_IS_POLL)), - length); - } else { - (void)printf("Information, send seq %u, rcv seq %u, Flags [%s], length %u", - LLC_I_NS(control), - LLC_IS_NR(control), - bittok2str(llc_flag_values,"?",(ssap) | (control & LLC_IS_POLL)), - length); - } - p += 4; - length -= 4; - caplen -= 4; - } - return(1); -} - -int -snap_print(const u_char *p, u_int length, u_int caplen, - u_short *extracted_ethertype, u_int bridge_pad) -{ - u_int32_t orgcode; - register u_short et; - register int ret; - - TCHECK2(*p, 5); - orgcode = EXTRACT_24BITS(p); - et = EXTRACT_16BITS(p + 3); - - if (eflag) { - const struct tok *tok = NULL; - const struct oui_tok *otp; - - for (otp = &oui_to_tok[0]; otp->tok != NULL; otp++) { - if (otp->oui == orgcode) { - tok = otp->tok; - break; - } - } - (void)printf("oui %s (0x%06x), %s %s (0x%04x): ", - tok2str(oui_values, "Unknown", orgcode), - orgcode, - (orgcode == 0x000000 ? "ethertype" : "pid"), - tok2str(tok, "Unknown", et), - et); - } - p += 5; - length -= 5; - caplen -= 5; - - switch (orgcode) { - case OUI_ENCAP_ETHER: - case OUI_CISCO_90: - /* - * This is an encapsulated Ethernet packet, - * or a packet bridged by some piece of - * Cisco hardware; the protocol ID is - * an Ethernet protocol type. - */ - ret = ether_encap_print(et, p, length, caplen, - extracted_ethertype); - if (ret) - return (ret); - break; - - case OUI_APPLETALK: - if (et == ETHERTYPE_ATALK) { - /* - * No, I have no idea why Apple used one - * of their own OUIs, rather than - * 0x000000, and an Ethernet packet - * type, for Appletalk data packets, - * but used 0x000000 and an Ethernet - * packet type for AARP packets. - */ - ret = ether_encap_print(et, p, length, caplen, - extracted_ethertype); - if (ret) - return (ret); - } - break; - - case OUI_CISCO: - if (et == PID_CISCO_CDP) { - cdp_print(p, length, caplen); - return (1); - } - break; - - case OUI_RFC2684: - switch (et) { - - case PID_RFC2684_ETH_FCS: - case PID_RFC2684_ETH_NOFCS: - /* - * XXX - remove the last two bytes for - * PID_RFC2684_ETH_FCS? - */ - /* - * Skip the padding. - */ - TCHECK2(*p, bridge_pad); - caplen -= bridge_pad; - length -= bridge_pad; - p += bridge_pad; - - /* - * What remains is an Ethernet packet. - */ - ether_print(p, length, caplen); - return (1); - - case PID_RFC2684_802_5_FCS: - case PID_RFC2684_802_5_NOFCS: - /* - * XXX - remove the last two bytes for - * PID_RFC2684_ETH_FCS? - */ - /* - * Skip the padding, but not the Access - * Control field. - */ - TCHECK2(*p, bridge_pad); - caplen -= bridge_pad; - length -= bridge_pad; - p += bridge_pad; - - /* - * What remains is an 802.5 Token Ring - * packet. - */ - token_print(p, length, caplen); - return (1); - - case PID_RFC2684_FDDI_FCS: - case PID_RFC2684_FDDI_NOFCS: - /* - * XXX - remove the last two bytes for - * PID_RFC2684_ETH_FCS? - */ - /* - * Skip the padding. - */ - TCHECK2(*p, bridge_pad + 1); - caplen -= bridge_pad + 1; - length -= bridge_pad + 1; - p += bridge_pad + 1; - - /* - * What remains is an FDDI packet. - */ - fddi_print(p, length, caplen); - return (1); - - case PID_RFC2684_BPDU: - stp_print(p, length); - return (1); - } - } - return (0); - -trunc: - (void)printf("[|snap]"); - return (1); -} - - -/* - * Local Variables: - * c-style: whitesmith - * c-basic-offset: 8 - * End: - */ diff --git a/contrib/tcpdump/print-lmp.c b/contrib/tcpdump/print-lmp.c deleted file mode 100644 index 14c7cf24ad502..0000000000000 --- a/contrib/tcpdump/print-lmp.c +++ /dev/null @@ -1,884 +0,0 @@ -/* - * 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. - * - * Original code by Hannes Gredler (hannes@juniper.net) - * Support for LMP service discovery extensions (defined by UNI 1.0) added - * by Manu Pathak (mapathak@cisco.com), May 2005 - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-lmp.c,v 1.5.2.1 2005/05/19 06:44:03 guy 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 "gmpls.h" - -/* - * LMP common header - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Vers | (Reserved) | Flags | Msg Type | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | LMP Length | (Reserved) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -struct lmp_common_header { - u_int8_t version_res[2]; - u_int8_t flags; - u_int8_t msg_type; - u_int8_t length[2]; - u_int8_t reserved[2]; -}; - -#define LMP_VERSION 1 -#define LMP_EXTRACT_VERSION(x) (((x)&0xf0)>>4) - -static const struct tok lmp_header_flag_values[] = { - { 0x00, "Control Channel Down"}, - { 0x02, "LMP restart"}, - { 0, NULL} -}; - -static const struct tok lmp_obj_te_link_flag_values[] = { - { 0x01, "Fault Management Supported"}, - { 0x02, "Link Verification Supported"}, - { 0, NULL} -}; - -static const struct tok lmp_obj_data_link_flag_values[] = { - { 0x01, "Data Link Port"}, - { 0x02, "Allocated for user traffic"}, - { 0x04, "Failed link"}, - { 0, NULL} -}; - -static const struct tok lmp_obj_channel_status_values[] = { - { 1, "Signal Okay"}, - { 2, "Signal Degraded"}, - { 3, "Signal Fail"}, - { 0, NULL} -}; - -static const struct tok lmp_obj_begin_verify_flag_values[] = { - { 0x0001, "Verify all links"}, - { 0x0002, "Data link type"}, - { 0, NULL} -}; - -static const struct tok lmp_obj_begin_verify_error_values[] = { - { 0x01, "\n\t\tLink Verification Procedure Not supported"}, - { 0x02, "\n\t\tUnwilling to verify"}, - { 0x04, "\n\t\tUnsupported verification transport mechanism"}, - { 0x08, "\n\t\tLink_Id configuration error"}, - { 0x10, "\n\t\tUnknown object c-type"}, - { 0, NULL} -}; - -static const struct tok lmp_obj_link_summary_error_values[] = { - { 0x01, "\n\t\tUnacceptable non-negotiable LINK_SUMMARY parameters"}, - { 0x02, "\n\t\tRenegotiate LINK_SUMMARY parameters"}, - { 0x04, "\n\t\tInvalid TE-LINK Object"}, - { 0x08, "\n\t\tInvalid DATA-LINK Object"}, - { 0x10, "\n\t\tUnknown TE-LINK Object c-type"}, - { 0x20, "\n\t\tUnknown DATA-LINK Object c-type"}, - { 0, NULL} -}; - -/* Service Config Supported Protocols Flags */ -static const struct tok lmp_obj_service_config_sp_flag_values[] = { - { 0x01, "RSVP Supported"}, - { 0x02, "LDP Supported"}, - { 0, NULL} -}; - -/* Service Config Client Port Service Attribute Transparency Flags */ -static const struct tok lmp_obj_service_config_cpsa_tp_flag_values[] = { - { 0x01, "Path/VC Overhead Transparency Supported"}, - { 0x02, "Line/MS Overhead Transparency Supported"}, - { 0x04, "Section/RS Overhead Transparency Supported"}, - { 0, NULL} -}; - -/* Service Config Client Port Service Attribute Contiguous Concatenation Types Flags */ -static const struct tok lmp_obj_service_config_cpsa_cct_flag_values[] = { - { 0x01, "Contiguous Concatenation Types Supported"}, - { 0, NULL} -}; - -/* Service Config Network Service Attributes Transparency Flags */ -static const struct tok lmp_obj_service_config_nsa_transparency_flag_values[] = { - { 0x01, "Standard SOH/RSOH Transparency Supported"}, - { 0x02, "Standard LOH/MSOH Transparency Supported"}, - { 0, NULL} -}; - -/* Service Config Network Service Attributes TCM Monitoring Flags */ -static const struct tok lmp_obj_service_config_nsa_tcm_flag_values[] = { - { 0x01, "Transparent Tandem Connection Monitoring Supported"}, - { 0, NULL} -}; - -/* Network Service Attributes Network Diversity Flags */ -static const struct tok lmp_obj_service_config_nsa_network_diversity_flag_values[] = { - { 0x01, "Node Diversity Supported"}, - { 0x02, "Link Diversity Supported"}, - { 0x04, "SRLG Diversity Supported"}, - { 0, NULL} -}; - -#define LMP_MSGTYPE_CONFIG 1 -#define LMP_MSGTYPE_CONFIG_ACK 2 -#define LMP_MSGTYPE_CONFIG_NACK 3 -#define LMP_MSGTYPE_HELLO 4 -#define LMP_MSGTYPE_VERIFY_BEGIN 5 -#define LMP_MSGTYPE_VERIFY_BEGIN_ACK 6 -#define LMP_MSGTYPE_VERIFY_BEGIN_NACK 7 -#define LMP_MSGTYPE_VERIFY_END 8 -#define LMP_MSGTYPE_VERIFY_END_ACK 9 -#define LMP_MSGTYPE_TEST 10 -#define LMP_MSGTYPE_TEST_STATUS_SUCCESS 11 -#define LMP_MSGTYPE_TEST_STATUS_FAILURE 12 -#define LMP_MSGTYPE_TEST_STATUS_ACK 13 -#define LMP_MSGTYPE_LINK_SUMMARY 14 -#define LMP_MSGTYPE_LINK_SUMMARY_ACK 15 -#define LMP_MSGTYPE_LINK_SUMMARY_NACK 16 -#define LMP_MSGTYPE_CHANNEL_STATUS 17 -#define LMP_MSGTYPE_CHANNEL_STATUS_ACK 18 -#define LMP_MSGTYPE_CHANNEL_STATUS_REQ 19 -#define LMP_MSGTYPE_CHANNEL_STATUS_RESP 20 -/* LMP Service Discovery message types defined by UNI 1.0 */ -#define LMP_MSGTYPE_SERVICE_CONFIG 50 -#define LMP_MSGTYPE_SERVICE_CONFIG_ACK 51 -#define LMP_MSGTYPE_SERVICE_CONFIG_NACK 52 - -static const struct tok lmp_msg_type_values[] = { - { LMP_MSGTYPE_CONFIG, "Config"}, - { LMP_MSGTYPE_CONFIG_ACK, "Config ACK"}, - { LMP_MSGTYPE_CONFIG_NACK, "Config NACK"}, - { LMP_MSGTYPE_HELLO, "Hello"}, - { LMP_MSGTYPE_VERIFY_BEGIN, "Begin Verify"}, - { LMP_MSGTYPE_VERIFY_BEGIN_ACK, "Begin Verify ACK"}, - { LMP_MSGTYPE_VERIFY_BEGIN_NACK, "Begin Verify NACK"}, - { LMP_MSGTYPE_VERIFY_END, "End Verify"}, - { LMP_MSGTYPE_VERIFY_END_ACK, "End Verify ACK"}, - { LMP_MSGTYPE_TEST, "Test"}, - { LMP_MSGTYPE_TEST_STATUS_SUCCESS, "Test Status Success"}, - { LMP_MSGTYPE_TEST_STATUS_FAILURE, "Test Status Failure"}, - { LMP_MSGTYPE_TEST_STATUS_ACK, "Test Status ACK"}, - { LMP_MSGTYPE_LINK_SUMMARY, "Link Summary"}, - { LMP_MSGTYPE_LINK_SUMMARY_ACK, "Link Summary ACK"}, - { LMP_MSGTYPE_LINK_SUMMARY_NACK, "Link Summary NACK"}, - { LMP_MSGTYPE_CHANNEL_STATUS, "Channel Status"}, - { LMP_MSGTYPE_CHANNEL_STATUS_ACK, "Channel Status ACK"}, - { LMP_MSGTYPE_CHANNEL_STATUS_REQ, "Channel Status Request"}, - { LMP_MSGTYPE_CHANNEL_STATUS_RESP, "Channel Status Response"}, - { LMP_MSGTYPE_SERVICE_CONFIG, "Service Config"}, - { LMP_MSGTYPE_SERVICE_CONFIG_ACK, "Service Config ACK"}, - { LMP_MSGTYPE_SERVICE_CONFIG_NACK, "Service Config NACK"}, - { 0, NULL} -}; - -/* - * LMP object header - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * |N| C-Type | Class | Length | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | | - * // (object contents) // - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -struct lmp_object_header { - u_int8_t ctype; - u_int8_t class_num; - u_int8_t length[2]; -}; - -#define LMP_OBJ_CC_ID 1 -#define LMP_OBJ_NODE_ID 2 -#define LMP_OBJ_LINK_ID 3 -#define LMP_OBJ_INTERFACE_ID 4 -#define LMP_OBJ_MESSAGE_ID 5 -#define LMP_OBJ_CONFIG 6 -#define LMP_OBJ_HELLO 7 -#define LMP_OBJ_VERIFY_BEGIN 8 -#define LMP_OBJ_VERIFY_BEGIN_ACK 9 -#define LMP_OBJ_VERIFY_ID 10 -#define LMP_OBJ_TE_LINK 11 -#define LMP_OBJ_DATA_LINK 12 -#define LMP_OBJ_CHANNEL_STATUS 13 -#define LMP_OBJ_CHANNEL_STATUS_REQ 14 -#define LMP_OBJ_ERROR_CODE 20 - -#define LMP_OBJ_SERVICE_CONFIG 51 /* defined in UNI 1.0 */ - -static const struct tok lmp_obj_values[] = { - { LMP_OBJ_CC_ID, "Control Channel ID" }, - { LMP_OBJ_NODE_ID, "Node ID" }, - { LMP_OBJ_LINK_ID, "Link ID" }, - { LMP_OBJ_INTERFACE_ID, "Interface ID" }, - { LMP_OBJ_MESSAGE_ID, "Message ID" }, - { LMP_OBJ_CONFIG, "Configuration" }, - { LMP_OBJ_HELLO, "Hello" }, - { LMP_OBJ_VERIFY_BEGIN, "Verify Begin" }, - { LMP_OBJ_VERIFY_BEGIN_ACK, "Verify Begin ACK" }, - { LMP_OBJ_VERIFY_ID, "Verify ID" }, - { LMP_OBJ_TE_LINK, "TE Link" }, - { LMP_OBJ_DATA_LINK, "Data Link" }, - { LMP_OBJ_CHANNEL_STATUS, "Channel Status" }, - { LMP_OBJ_CHANNEL_STATUS_REQ, "Channel Status Request" }, - { LMP_OBJ_ERROR_CODE, "Error Code" }, - { LMP_OBJ_SERVICE_CONFIG, "Service Config" }, - - { 0, NULL} -}; - -#define INT_SWITCHING_TYPE_SUBOBJ 1 -#define WAVELENGTH_SUBOBJ 2 - -static const struct tok lmp_data_link_subobj[] = { - { INT_SWITCHING_TYPE_SUBOBJ, "Interface Switching Type" }, - { WAVELENGTH_SUBOBJ , "Wavelength" }, - { 0, NULL} -}; - -#define LMP_CTYPE_IPV4 1 -#define LMP_CTYPE_IPV6 2 - -#define LMP_CTYPE_LOC 1 -#define LMP_CTYPE_RMT 2 -#define LMP_CTYPE_UNMD 3 - -#define LMP_CTYPE_IPV4_LOC 1 -#define LMP_CTYPE_IPV4_RMT 2 -#define LMP_CTYPE_IPV6_LOC 3 -#define LMP_CTYPE_IPV6_RMT 4 -#define LMP_CTYPE_UNMD_LOC 5 -#define LMP_CTYPE_UNMD_RMT 6 - -#define LMP_CTYPE_1 1 -#define LMP_CTYPE_2 2 - -#define LMP_CTYPE_HELLO_CONFIG 1 -#define LMP_CTYPE_HELLO 1 - -#define LMP_CTYPE_BEGIN_VERIFY_ERROR 1 -#define LMP_CTYPE_LINK_SUMMARY_ERROR 2 - -/* C-Types for Service Config Object */ -#define LMP_CTYPE_SERVICE_CONFIG_SP 1 -#define LMP_CTYPE_SERVICE_CONFIG_CPSA 2 -#define LMP_CTYPE_SERVICE_CONFIG_TRANSPARENCY_TCM 3 -#define LMP_CTYPE_SERVICE_CONFIG_NETWORK_DIVERSITY 4 - -/* - * Different link types allowed in the Client Port Service Attributes - * subobject defined for LMP Service Discovery in the UNI 1.0 spec - */ -#define LMP_SD_SERVICE_CONFIG_CPSA_LINK_TYPE_SDH 5 /* UNI 1.0 Sec 9.4.2 */ -#define LMP_SD_SERVICE_CONFIG_CPSA_LINK_TYPE_SONET 6 /* UNI 1.0 Sec 9.4.2 */ - -#define FALSE 0 -#define TRUE 1 - -/* - * the ctypes are not globally unique so for - * translating it to strings we build a table based - * on objects offsetted by the ctype - */ - -static const struct tok lmp_ctype_values[] = { - { 256*LMP_OBJ_CC_ID+LMP_CTYPE_LOC, "Local" }, - { 256*LMP_OBJ_CC_ID+LMP_CTYPE_RMT, "Remote" }, - { 256*LMP_OBJ_NODE_ID+LMP_CTYPE_LOC, "Local" }, - { 256*LMP_OBJ_NODE_ID+LMP_CTYPE_RMT, "Remote" }, - { 256*LMP_OBJ_LINK_ID+LMP_CTYPE_IPV4_LOC, "IPv4 Local" }, - { 256*LMP_OBJ_LINK_ID+LMP_CTYPE_IPV4_RMT, "IPv4 Remote" }, - { 256*LMP_OBJ_LINK_ID+LMP_CTYPE_IPV6_LOC, "IPv6 Local" }, - { 256*LMP_OBJ_LINK_ID+LMP_CTYPE_IPV6_RMT, "IPv6 Remote" }, - { 256*LMP_OBJ_LINK_ID+LMP_CTYPE_UNMD_LOC, "Unnumbered Local" }, - { 256*LMP_OBJ_LINK_ID+LMP_CTYPE_UNMD_RMT, "Unnumbered Remote" }, - { 256*LMP_OBJ_INTERFACE_ID+LMP_CTYPE_IPV4_LOC, "IPv4 Local" }, - { 256*LMP_OBJ_INTERFACE_ID+LMP_CTYPE_IPV4_RMT, "IPv4 Remote" }, - { 256*LMP_OBJ_INTERFACE_ID+LMP_CTYPE_IPV6_LOC, "IPv6 Local" }, - { 256*LMP_OBJ_INTERFACE_ID+LMP_CTYPE_IPV6_RMT, "IPv6 Remote" }, - { 256*LMP_OBJ_INTERFACE_ID+LMP_CTYPE_UNMD_LOC, "Unnumbered Local" }, - { 256*LMP_OBJ_INTERFACE_ID+LMP_CTYPE_UNMD_RMT, "Unnumbered Remote" }, - { 256*LMP_OBJ_MESSAGE_ID+LMP_CTYPE_1, "1" }, - { 256*LMP_OBJ_MESSAGE_ID+LMP_CTYPE_2, "2" }, - { 256*LMP_OBJ_CONFIG+LMP_CTYPE_1, "1" }, - { 256*LMP_OBJ_HELLO+LMP_CTYPE_1, "1" }, - { 256*LMP_OBJ_VERIFY_BEGIN+LMP_CTYPE_1, "1" }, - { 256*LMP_OBJ_VERIFY_BEGIN_ACK+LMP_CTYPE_1, "1" }, - { 256*LMP_OBJ_VERIFY_ID+LMP_CTYPE_1, "1" }, - { 256*LMP_OBJ_TE_LINK+LMP_CTYPE_IPV4, "IPv4" }, - { 256*LMP_OBJ_TE_LINK+LMP_CTYPE_IPV6, "IPv6" }, - { 256*LMP_OBJ_TE_LINK+LMP_CTYPE_UNMD, "Unnumbered" }, - { 256*LMP_OBJ_DATA_LINK+LMP_CTYPE_IPV4, "IPv4" }, - { 256*LMP_OBJ_DATA_LINK+LMP_CTYPE_IPV6, "IPv6" }, - { 256*LMP_OBJ_DATA_LINK+LMP_CTYPE_UNMD, "Unnumbered" }, - { 256*LMP_OBJ_CHANNEL_STATUS+LMP_CTYPE_IPV4, "IPv4" }, - { 256*LMP_OBJ_CHANNEL_STATUS+LMP_CTYPE_IPV6, "IPv6" }, - { 256*LMP_OBJ_CHANNEL_STATUS+LMP_CTYPE_UNMD, "Unnumbered" }, - { 256*LMP_OBJ_CHANNEL_STATUS_REQ+LMP_CTYPE_IPV4, "IPv4" }, - { 256*LMP_OBJ_CHANNEL_STATUS_REQ+LMP_CTYPE_IPV6, "IPv6" }, - { 256*LMP_OBJ_CHANNEL_STATUS_REQ+LMP_CTYPE_UNMD, "Unnumbered" }, - { 256*LMP_OBJ_ERROR_CODE+LMP_CTYPE_1, "1" }, - { 256*LMP_OBJ_ERROR_CODE+LMP_CTYPE_2, "2" }, - { 256*LMP_OBJ_SERVICE_CONFIG+LMP_CTYPE_SERVICE_CONFIG_SP, "1" }, - { 256*LMP_OBJ_SERVICE_CONFIG+LMP_CTYPE_SERVICE_CONFIG_CPSA, "2" }, - { 256*LMP_OBJ_SERVICE_CONFIG+LMP_CTYPE_SERVICE_CONFIG_TRANSPARENCY_TCM, "3" }, - { 256*LMP_OBJ_SERVICE_CONFIG+LMP_CTYPE_SERVICE_CONFIG_NETWORK_DIVERSITY, "4" }, - { 0, NULL} -}; - -void -lmp_print(register const u_char *pptr, register u_int len) { - - const struct lmp_common_header *lmp_com_header; - const struct lmp_object_header *lmp_obj_header; - const u_char *tptr,*obj_tptr; - int tlen,lmp_obj_len,lmp_obj_ctype,obj_tlen; - int hexdump; - int offset,subobj_type,subobj_len,total_subobj_len; - int link_type; - - union { /* int to float conversion buffer */ - float f; - u_int32_t i; - } bw; - - tptr=pptr; - lmp_com_header = (const struct lmp_common_header *)pptr; - TCHECK(*lmp_com_header); - - /* - * Sanity checking of the header. - */ - if (LMP_EXTRACT_VERSION(lmp_com_header->version_res[0]) != LMP_VERSION) { - printf("LMP version %u packet not supported", - LMP_EXTRACT_VERSION(lmp_com_header->version_res[0])); - return; - } - - /* in non-verbose mode just lets print the basic Message Type*/ - if (vflag < 1) { - printf("LMPv%u %s Message, length: %u", - LMP_EXTRACT_VERSION(lmp_com_header->version_res[0]), - tok2str(lmp_msg_type_values, "unknown (%u)",lmp_com_header->msg_type), - len); - return; - } - - /* ok they seem to want to know everything - lets fully decode it */ - - tlen=EXTRACT_16BITS(lmp_com_header->length); - - printf("\n\tLMPv%u, msg-type: %s, Flags: [%s], length: %u", - LMP_EXTRACT_VERSION(lmp_com_header->version_res[0]), - tok2str(lmp_msg_type_values, "unknown, type: %u",lmp_com_header->msg_type), - bittok2str(lmp_header_flag_values,"none",lmp_com_header->flags), - tlen); - - tptr+=sizeof(const struct lmp_common_header); - tlen-=sizeof(const struct lmp_common_header); - - while(tlen>0) { - /* did we capture enough for fully decoding the object header ? */ - if (!TTEST2(*tptr, sizeof(struct lmp_object_header))) - goto trunc; - - lmp_obj_header = (const struct lmp_object_header *)tptr; - lmp_obj_len=EXTRACT_16BITS(lmp_obj_header->length); - lmp_obj_ctype=(lmp_obj_header->ctype)&0x7f; - - if(lmp_obj_len % 4 || lmp_obj_len < 4) - return; - - printf("\n\t %s Object (%u), Class-Type: %s (%u) Flags: [%snegotiable], length: %u", - tok2str(lmp_obj_values, - "Unknown", - lmp_obj_header->class_num), - lmp_obj_header->class_num, - tok2str(lmp_ctype_values, - "Unknown", - ((lmp_obj_header->class_num)<<8)+lmp_obj_ctype), - lmp_obj_ctype, - (lmp_obj_header->ctype)&0x80 ? "" : "non-", - lmp_obj_len); - - obj_tptr=tptr+sizeof(struct lmp_object_header); - obj_tlen=lmp_obj_len-sizeof(struct lmp_object_header); - - /* did we capture enough for fully decoding the object ? */ - if (!TTEST2(*tptr, lmp_obj_len)) - goto trunc; - hexdump=FALSE; - - switch(lmp_obj_header->class_num) { - - case LMP_OBJ_CC_ID: - switch(lmp_obj_ctype) { - case LMP_CTYPE_LOC: - case LMP_CTYPE_RMT: - printf("\n\t Control Channel ID: %u (0x%08x)", - EXTRACT_32BITS(obj_tptr), - EXTRACT_32BITS(obj_tptr)); - break; - - default: - hexdump=TRUE; - } - break; - - case LMP_OBJ_LINK_ID: - case LMP_OBJ_INTERFACE_ID: - switch(lmp_obj_ctype) { - case LMP_CTYPE_IPV4_LOC: - case LMP_CTYPE_IPV4_RMT: - printf("\n\t IPv4 Link ID: %s (0x%08x)", - ipaddr_string(obj_tptr), - EXTRACT_32BITS(obj_tptr)); - break; -#ifdef INET6 - case LMP_CTYPE_IPV6_LOC: - case LMP_CTYPE_IPV6_RMT: - printf("\n\t IPv6 Link ID: %s (0x%08x)", - ip6addr_string(obj_tptr), - EXTRACT_32BITS(obj_tptr)); - break; -#endif - case LMP_CTYPE_UNMD_LOC: - case LMP_CTYPE_UNMD_RMT: - printf("\n\t Link ID: %u (0x%08x)", - EXTRACT_32BITS(obj_tptr), - EXTRACT_32BITS(obj_tptr)); - break; - default: - hexdump=TRUE; - } - break; - - case LMP_OBJ_MESSAGE_ID: - switch(lmp_obj_ctype) { - case LMP_CTYPE_1: - printf("\n\t Message ID: %u (0x%08x)", - EXTRACT_32BITS(obj_tptr), - EXTRACT_32BITS(obj_tptr)); - break; - case LMP_CTYPE_2: - printf("\n\t Message ID Ack: %u (0x%08x)", - EXTRACT_32BITS(obj_tptr), - EXTRACT_32BITS(obj_tptr)); - break; - default: - hexdump=TRUE; - } - break; - - case LMP_OBJ_NODE_ID: - switch(lmp_obj_ctype) { - case LMP_CTYPE_LOC: - case LMP_CTYPE_RMT: - printf("\n\t Node ID: %s (0x%08x)", - ipaddr_string(obj_tptr), - EXTRACT_32BITS(obj_tptr)); - break; - - default: - hexdump=TRUE; - } - break; - - case LMP_OBJ_CONFIG: - switch(lmp_obj_ctype) { - case LMP_CTYPE_HELLO_CONFIG: - printf("\n\t Hello Interval: %u\n\t Hello Dead Interval: %u", - EXTRACT_16BITS(obj_tptr), - EXTRACT_16BITS(obj_tptr+2)); - break; - - default: - hexdump=TRUE; - } - break; - - case LMP_OBJ_HELLO: - switch(lmp_obj_ctype) { - case LMP_CTYPE_HELLO: - printf("\n\t TxSeqNum: %u\n\t RcvSeqNum: %u", - EXTRACT_32BITS(obj_tptr), - EXTRACT_32BITS(obj_tptr+4)); - break; - - default: - hexdump=TRUE; - } - break; - - case LMP_OBJ_TE_LINK: - printf("\n\t Flags: [%s]", - bittok2str(lmp_obj_te_link_flag_values, - "none", - EXTRACT_16BITS(obj_tptr)>>8)); - - switch(lmp_obj_ctype) { - case LMP_CTYPE_IPV4: - printf("\n\t Local Link-ID: %s (0x%08x) \ - \n\t Remote Link-ID: %s (0x%08x)", - ipaddr_string(obj_tptr+4), - EXTRACT_32BITS(obj_tptr+4), - ipaddr_string(obj_tptr+8), - EXTRACT_32BITS(obj_tptr+8)); - break; - -#ifdef INET6 - case LMP_CTYPE_IPV6: -#endif - case LMP_CTYPE_UNMD: - default: - hexdump=TRUE; - } - break; - - case LMP_OBJ_DATA_LINK: - printf("\n\t Flags: [%s]", - bittok2str(lmp_obj_data_link_flag_values, - "none", - EXTRACT_16BITS(obj_tptr)>>8)); - - switch(lmp_obj_ctype) { - case LMP_CTYPE_IPV4: - case LMP_CTYPE_UNMD: - printf("\n\t Local Interface ID: %s (0x%08x) \ - \n\t Remote Interface ID: %s (0x%08x)", - ipaddr_string(obj_tptr+4), - EXTRACT_32BITS(obj_tptr+4), - ipaddr_string(obj_tptr+8), - EXTRACT_32BITS(obj_tptr+8)); - - total_subobj_len = lmp_obj_len - 16; - offset = 12; - while (total_subobj_len > 0 && hexdump == FALSE ) { - subobj_type = EXTRACT_16BITS(obj_tptr+offset)>>8; - subobj_len = EXTRACT_16BITS(obj_tptr+offset)&0x00FF; - printf("\n\t Subobject, Type: %s (%u), Length: %u", - tok2str(lmp_data_link_subobj, - "Unknown", - subobj_type), - subobj_type, - subobj_len); - switch(subobj_type) { - case INT_SWITCHING_TYPE_SUBOBJ: - printf("\n\t\t Switching Type: %s (%u)", - tok2str(gmpls_switch_cap_values, - "Unknown", - EXTRACT_16BITS(obj_tptr+offset+2)>>8), - EXTRACT_16BITS(obj_tptr+offset+2)>>8); - printf("\n\t\t Encoding Type: %s (%u)", - tok2str(gmpls_encoding_values, - "Unknown", - EXTRACT_16BITS(obj_tptr+offset+2)&0x00FF), - EXTRACT_16BITS(obj_tptr+offset+2)&0x00FF); - bw.i = EXTRACT_32BITS(obj_tptr+offset+4); - printf("\n\t\t Min Reservable Bandwidth: %.3f Mbps", - bw.f); - bw.i = EXTRACT_32BITS(obj_tptr+offset+8); - printf("\n\t\t Max Reservable Bandwidth: %.3f Mbps", - bw.f); - break; - case WAVELENGTH_SUBOBJ: - printf("\n\t\t Wavelength: %u", - EXTRACT_32BITS(obj_tptr+offset+4)); - break; - default: - /* Any Unknown Subobject ==> Exit loop */ - hexdump=TRUE; - break; - } - total_subobj_len-=subobj_len; - offset+=subobj_len; - } - - break; -#ifdef INET6 - case LMP_CTYPE_IPV6: -#endif - default: - hexdump=TRUE; - } - break; - - case LMP_OBJ_VERIFY_BEGIN: - switch(lmp_obj_ctype) { - case LMP_CTYPE_1: - printf("\n\t Flags: %s", - bittok2str(lmp_obj_begin_verify_flag_values, - "none", - EXTRACT_16BITS(obj_tptr))); - printf("\n\t Verify Interval: %u", - EXTRACT_16BITS(obj_tptr+2)); - printf("\n\t Data links: %u", - EXTRACT_32BITS(obj_tptr+4)); - printf("\n\t Encoding type: %s", - tok2str(gmpls_encoding_values, "Unknown", *(obj_tptr+8))); - printf("\n\t Verify Tranport Mechanism: %u (0x%x) %s", - EXTRACT_16BITS(obj_tptr+10), - EXTRACT_16BITS(obj_tptr+10), - EXTRACT_16BITS(obj_tptr+10)&8000 ? "(Payload test messages capable)" : ""); - bw.i = EXTRACT_32BITS(obj_tptr+12); - printf("\n\t Transmission Rate: %.3f Mbps",bw.f); - printf("\n\t Wavelength: %u", - EXTRACT_32BITS(obj_tptr+16)); - break; - - default: - hexdump=TRUE; - } - break; - - case LMP_OBJ_VERIFY_BEGIN_ACK: - switch(lmp_obj_ctype) { - case LMP_CTYPE_1: - printf("\n\t Verify Dead Interval: %u \ - \n\t Verify Transport Response: %u", - EXTRACT_16BITS(obj_tptr), - EXTRACT_16BITS(obj_tptr+2)); - break; - - default: - hexdump=TRUE; - } - break; - - case LMP_OBJ_VERIFY_ID: - switch(lmp_obj_ctype) { - case LMP_CTYPE_1: - printf("\n\t Verify ID: %u", - EXTRACT_32BITS(obj_tptr)); - break; - - default: - hexdump=TRUE; - } - break; - - case LMP_OBJ_CHANNEL_STATUS: - switch(lmp_obj_ctype) { - case LMP_CTYPE_IPV4: - case LMP_CTYPE_UNMD: - offset = 0; - /* Decode pairs: <Interface_ID (4 bytes), Channel_status (4 bytes)> */ - while (offset < (lmp_obj_len-(int)sizeof(struct lmp_object_header)) ) { - printf("\n\t Interface ID: %s (0x%08x)", - ipaddr_string(obj_tptr+offset), - EXTRACT_32BITS(obj_tptr+offset)); - - printf("\n\t\t Active: %s (%u)", (EXTRACT_32BITS(obj_tptr+offset+4)>>31) ? - "Allocated" : "Non-allocated", - (EXTRACT_32BITS(obj_tptr+offset+4)>>31)); - - printf("\n\t\t Direction: %s (%u)", (EXTRACT_32BITS(obj_tptr+offset+4)>>30)&0x1 ? - "Transmit" : "Receive", - (EXTRACT_32BITS(obj_tptr+offset+4)>>30)&0x1); - - printf("\n\t\t Channel Status: %s (%u)", - tok2str(lmp_obj_channel_status_values, - "Unknown", - EXTRACT_32BITS(obj_tptr+offset+4)&0x3FFFFFF), - EXTRACT_32BITS(obj_tptr+offset+4)&0x3FFFFFF); - offset+=8; - } - break; -#ifdef INET6 - case LMP_CTYPE_IPV6: -#endif - default: - hexdump=TRUE; - } - break; - - case LMP_OBJ_CHANNEL_STATUS_REQ: - switch(lmp_obj_ctype) { - case LMP_CTYPE_IPV4: - case LMP_CTYPE_UNMD: - offset = 0; - while (offset < (lmp_obj_len-(int)sizeof(struct lmp_object_header)) ) { - printf("\n\t Interface ID: %s (0x%08x)", - ipaddr_string(obj_tptr+offset), - EXTRACT_32BITS(obj_tptr+offset)); - offset+=4; - } - break; -#ifdef INET6 - case LMP_CTYPE_IPV6: -#endif - default: - hexdump=TRUE; - } - break; - - case LMP_OBJ_ERROR_CODE: - switch(lmp_obj_ctype) { - case LMP_CTYPE_BEGIN_VERIFY_ERROR: - printf("\n\t Error Code: %s", - bittok2str(lmp_obj_begin_verify_error_values, - "none", - EXTRACT_32BITS(obj_tptr))); - break; - - case LMP_CTYPE_LINK_SUMMARY_ERROR: - printf("\n\t Error Code: %s", - bittok2str(lmp_obj_link_summary_error_values, - "none", - EXTRACT_32BITS(obj_tptr))); - break; - default: - hexdump=TRUE; - } - break; - - case LMP_OBJ_SERVICE_CONFIG: - switch (lmp_obj_ctype) { - case LMP_CTYPE_SERVICE_CONFIG_SP: - - printf("\n\t Flags: %s", - bittok2str(lmp_obj_service_config_sp_flag_values, - "none", - EXTRACT_16BITS(obj_tptr)>>8)); - - printf("\n\t UNI Version: %u", - EXTRACT_16BITS(obj_tptr) & 0x00FF); - - break; - - case LMP_CTYPE_SERVICE_CONFIG_CPSA: - - link_type = EXTRACT_16BITS(obj_tptr)>>8; - - printf("\n\t Link Type: %s (%u)", - tok2str(lmp_sd_service_config_cpsa_link_type_values, - "Unknown", link_type), - link_type); - - if (link_type == LMP_SD_SERVICE_CONFIG_CPSA_LINK_TYPE_SDH) { - printf("\n\t Signal Type: %s (%u)", - tok2str(lmp_sd_service_config_cpsa_signal_type_sdh_values, - "Unknown", - EXTRACT_16BITS(obj_tptr) & 0x00FF), - EXTRACT_16BITS(obj_tptr) & 0x00FF); - } - - if (link_type == LMP_SD_SERVICE_CONFIG_CPSA_LINK_TYPE_SONET) { - printf("\n\t Signal Type: %s (%u)", - tok2str(lmp_sd_service_config_cpsa_signal_type_sonet_values, - "Unknown", - EXTRACT_16BITS(obj_tptr) & 0x00FF), - EXTRACT_16BITS(obj_tptr) & 0x00FF); - } - - printf("\n\t Transparency: %s", - bittok2str(lmp_obj_service_config_cpsa_tp_flag_values, - "none", - EXTRACT_16BITS(obj_tptr+2)>>8)); - - printf("\n\t Contiguous Concatenation Types: %s", - bittok2str(lmp_obj_service_config_cpsa_cct_flag_values, - "none", - EXTRACT_16BITS(obj_tptr+2)>>8 & 0x00FF)); - - printf("\n\t Minimum NCC: %u", - EXTRACT_16BITS(obj_tptr+4)); - - printf("\n\t Maximum NCC: %u", - EXTRACT_16BITS(obj_tptr+6)); - - printf("\n\t Minimum NVC:%u", - EXTRACT_16BITS(obj_tptr+8)); - - printf("\n\t Maximum NVC:%u", - EXTRACT_16BITS(obj_tptr+10)); - - printf("\n\t Local Interface ID: %s (0x%08x)", - ipaddr_string(obj_tptr+12), - EXTRACT_32BITS(obj_tptr+12)); - - break; - - case LMP_CTYPE_SERVICE_CONFIG_TRANSPARENCY_TCM: - - printf("\n\t Transparency Flags: %s", - bittok2str( - lmp_obj_service_config_nsa_transparency_flag_values, - "none", - EXTRACT_32BITS(obj_tptr))); - - printf("\n\t TCM Monitoring Flags: %s", - bittok2str( - lmp_obj_service_config_nsa_tcm_flag_values, - "none", - EXTRACT_16BITS(obj_tptr+6) & 0x00FF)); - - break; - - case LMP_CTYPE_SERVICE_CONFIG_NETWORK_DIVERSITY: - - printf("\n\t Diversity: Flags: %s", - bittok2str( - lmp_obj_service_config_nsa_network_diversity_flag_values, - "none", - EXTRACT_16BITS(obj_tptr+2) & 0x00FF)); - break; - - default: - hexdump = TRUE; - }; - - break; - - default: - if (vflag <= 1) - print_unknown_data(obj_tptr,"\n\t ",obj_tlen); - break; - } - /* do we want to see an additionally hexdump ? */ - if (vflag > 1 || hexdump==TRUE) - print_unknown_data(tptr+sizeof(sizeof(struct lmp_object_header)),"\n\t ", - lmp_obj_len-sizeof(struct lmp_object_header)); - - tptr+=lmp_obj_len; - tlen-=lmp_obj_len; - } - return; -trunc: - printf("\n\t\t packet exceeded snapshot"); -} diff --git a/contrib/tcpdump/print-lspping.c b/contrib/tcpdump/print-lspping.c deleted file mode 100644 index a851fbefc76c0..0000000000000 --- a/contrib/tcpdump/print-lspping.c +++ /dev/null @@ -1,860 +0,0 @@ -/* - * 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. - * - * Original code by Hannes Gredler (hannes@juniper.net) - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-lspping.c,v 1.12.2.3 2005/05/03 08:12:31 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 "bgp.h" -#include "l2vpn.h" - -/* - * LSPPING common header - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Version Number | Must Be Zero | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Message Type | Reply mode | Return Code | Return Subcode| - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Sender's Handle | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Sequence Number | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | TimeStamp Sent (seconds) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | TimeStamp Sent (microseconds) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | TimeStamp Received (seconds) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | TimeStamp Received (microseconds) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | TLVs ... | - * . . - * . . - * . . - */ - -struct lspping_common_header { - u_int8_t version[2]; - u_int8_t reserved[2]; - u_int8_t msg_type; - u_int8_t reply_mode; - u_int8_t return_code; - u_int8_t return_subcode; - u_int8_t sender_handle[4]; - u_int8_t seq_number[4]; - u_int8_t ts_sent_sec[4]; - u_int8_t ts_sent_usec[4]; - u_int8_t ts_rcvd_sec[4]; - u_int8_t ts_rcvd_usec[4]; -}; - -#define LSPPING_VERSION 1 -#define FALSE 0 -#define TRUE 1 - -static const struct tok lspping_msg_type_values[] = { - { 1, "MPLS Echo Request"}, - { 2, "MPLS Echo Reply"}, - { 0, NULL} -}; - -static const struct tok lspping_reply_mode_values[] = { - { 1, "Do not reply"}, - { 2, "Reply via an IPv4/IPv6 UDP packet"}, - { 3, "Reply via an IPv4/IPv6 UDP packet with Router Alert"}, - { 4, "Reply via application level control channel"}, - { 0, NULL} -}; - -static const struct tok lspping_return_code_values[] = { - { 0, "No return code or return code contained in the Error Code TLV"}, - { 1, "Malformed echo request received"}, - { 2, "One or more of the TLVs was not understood"}, - { 3, "Replying router is an egress for the FEC at stack depth"}, - { 4, "Replying router has no mapping for the FEC at stack depth"}, - { 5, "Reserved"}, - { 6, "Reserved"}, - { 7, "Reserved"}, - { 8, "Label switched at stack-depth"}, - { 9, "Label switched but no MPLS forwarding at stack-depth"}, - { 10, "Mapping for this FEC is not the given label at stack depth"}, - { 11, "No label entry at stack-depth"}, - { 12, "Protocol not associated with interface at FEC stack depth"}, -}; - - -/* - * LSPPING TLV header - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Type | Length | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Value | - * . . - * . . - * . . - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -struct lspping_tlv_header { - u_int8_t type[2]; - u_int8_t length[2]; -}; - -#define LSPPING_TLV_TARGET_FEC_STACK 1 -#define LSPPING_TLV_DOWNSTREAM_MAPPING 2 -#define LSPPING_TLV_PAD 3 -#define LSPPING_TLV_ERROR_CODE 4 -#define LSPPING_TLV_VENDOR_PRIVATE 0xfc00 - -static const struct tok lspping_tlv_values[] = { - { LSPPING_TLV_TARGET_FEC_STACK, "Target FEC Stack" }, - { LSPPING_TLV_DOWNSTREAM_MAPPING, "Downstream Mapping" }, - { LSPPING_TLV_PAD, "Pad" }, - { LSPPING_TLV_ERROR_CODE, "Error Code" }, - { LSPPING_TLV_VENDOR_PRIVATE, "Vendor Enterprise Code" }, - { 0, NULL} -}; - -#define LSPPING_TLV_TARGETFEC_SUBTLV_LDP_IPV4 1 -#define LSPPING_TLV_TARGETFEC_SUBTLV_LDP_IPV6 2 -#define LSPPING_TLV_TARGETFEC_SUBTLV_RSVP_IPV4 3 -#define LSPPING_TLV_TARGETFEC_SUBTLV_RSVP_IPV6 4 -#define LSPPING_TLV_TARGETFEC_SUBTLV_L3VPN_IPV4 6 -#define LSPPING_TLV_TARGETFEC_SUBTLV_L3VPN_IPV6 7 -#define LSPPING_TLV_TARGETFEC_SUBTLV_L2VPN_ENDPT 8 -#define LSPPING_TLV_TARGETFEC_SUBTLV_L2VPN_VCID_OLD 9 -#define LSPPING_TLV_TARGETFEC_SUBTLV_L2VPN_VCID 10 -#define LSPPING_TLV_TARGETFEC_SUBTLV_BGP_IPV4 11 -#define LSPPING_TLV_TARGETFEC_SUBTLV_BGP_IPV6 12 - -static const struct tok lspping_tlvtargetfec_subtlv_values[] = { - { LSPPING_TLV_TARGETFEC_SUBTLV_LDP_IPV4, "LDP IPv4 prefix"}, - { LSPPING_TLV_TARGETFEC_SUBTLV_LDP_IPV6, "LDP IPv6 prefix"}, - { LSPPING_TLV_TARGETFEC_SUBTLV_RSVP_IPV4, "RSVP IPv4 Session Query"}, - { LSPPING_TLV_TARGETFEC_SUBTLV_RSVP_IPV6, "RSVP IPv6 Session Query"}, - { 5, "Reserved"}, - { LSPPING_TLV_TARGETFEC_SUBTLV_L3VPN_IPV4, "VPN IPv4 prefix"}, - { LSPPING_TLV_TARGETFEC_SUBTLV_L3VPN_IPV6, "VPN IPv6 prefix"}, - { LSPPING_TLV_TARGETFEC_SUBTLV_L2VPN_ENDPT, "L2 VPN endpoint"}, - { LSPPING_TLV_TARGETFEC_SUBTLV_L2VPN_VCID_OLD, "L2 circuit ID (old)"}, - { LSPPING_TLV_TARGETFEC_SUBTLV_L2VPN_VCID, "L2 circuit ID"}, - { LSPPING_TLV_TARGETFEC_SUBTLV_BGP_IPV4, "BGP labeled IPv4 prefix"}, - { LSPPING_TLV_TARGETFEC_SUBTLV_BGP_IPV6, "BGP labeled IPv6 prefix"}, - { 0, NULL} -}; - -/* - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | IPv4 prefix | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Prefix Length | Must Be Zero | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ -struct lspping_tlv_targetfec_subtlv_ldp_ipv4_t { - u_int8_t prefix [4]; - u_int8_t prefix_len; -}; - -/* - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | IPv6 prefix | - * | (16 octets) | - * | | - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Prefix Length | Must Be Zero | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ -struct lspping_tlv_targetfec_subtlv_ldp_ipv6_t { - u_int8_t prefix [16]; - u_int8_t prefix_len; -}; - -/* - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Sender identifier | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | IPv4 prefix | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Prefix Length | Must Be Zero | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ -struct lspping_tlv_targetfec_subtlv_bgp_ipv4_t { - u_int8_t sender_id [4]; - u_int8_t prefix [4]; - u_int8_t prefix_len; -}; - -/* - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Sender identifier | - * | (16 octets) | - * | | - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | IPv6 prefix | - * | (16 octets) | - * | | - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Prefix Length | Must Be Zero | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ -struct lspping_tlv_targetfec_subtlv_bgp_ipv6_t { - u_int8_t sender_id [16]; - u_int8_t prefix [16]; - u_int8_t prefix_len; -}; - -/* - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | IPv4 tunnel end point address | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Must Be Zero | Tunnel ID | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Extended Tunnel ID | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | IPv4 tunnel sender address | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Must Be Zero | LSP ID | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ -struct lspping_tlv_targetfec_subtlv_rsvp_ipv4_t { - u_int8_t tunnel_endpoint [4]; - u_int8_t res[2]; - u_int8_t tunnel_id[2]; - u_int8_t extended_tunnel_id[4]; - u_int8_t tunnel_sender [4]; - u_int8_t res2[2]; - u_int8_t lsp_id [2]; -}; - -/* - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | IPv6 tunnel end point address | - * | | - * | | - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Must Be Zero | Tunnel ID | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Extended Tunnel ID | - * | | - * | | - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | IPv6 tunnel sender address | - * | | - * | | - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Must Be Zero | LSP ID | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ -struct lspping_tlv_targetfec_subtlv_rsvp_ipv6_t { - u_int8_t tunnel_endpoint [16]; - u_int8_t res[2]; - u_int8_t tunnel_id[2]; - u_int8_t extended_tunnel_id[16]; - u_int8_t tunnel_sender [16]; - u_int8_t res2[2]; - u_int8_t lsp_id [2]; -}; - -/* - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Route Distinguisher | - * | (8 octets) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | IPv4 prefix | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Prefix Length | Must Be Zero | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ -struct lspping_tlv_targetfec_subtlv_l3vpn_ipv4_t { - u_int8_t rd [8]; - u_int8_t prefix [4]; - u_int8_t prefix_len; -}; - -/* - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Route Distinguisher | - * | (8 octets) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | IPv6 prefix | - * | (16 octets) | - * | | - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Prefix Length | Must Be Zero | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ -struct lspping_tlv_targetfec_subtlv_l3vpn_ipv6_t { - u_int8_t rd [8]; - u_int8_t prefix [16]; - u_int8_t prefix_len; -}; - -/* - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Route Distinguisher | - * | (8 octets) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Sender's CE ID | Receiver's CE ID | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Encapsulation Type | Must Be Zero | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * 0 1 2 3 - */ -struct lspping_tlv_targetfec_subtlv_l2vpn_endpt_t { - u_int8_t rd [8]; - u_int8_t sender_ce_id [2]; - u_int8_t receiver_ce_id [2]; - u_int8_t encapsulation[2]; -}; - -/* - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Remote PE Address | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | VC ID | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Encapsulation Type | Must Be Zero | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ -struct lspping_tlv_targetfec_subtlv_l2vpn_vcid_old_t { - u_int8_t remote_pe_address [4]; - u_int8_t vc_id [4]; - u_int8_t encapsulation[2]; -}; - -/* - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Sender's PE Address | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Remote PE Address | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | VC ID | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Encapsulation Type | Must Be Zero | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ -struct lspping_tlv_targetfec_subtlv_l2vpn_vcid_t { - u_int8_t sender_pe_address [4]; - u_int8_t remote_pe_address [4]; - u_int8_t vc_id [4]; - u_int8_t encapsulation[2]; -}; - -/* - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | MTU | Address Type | Resvd (SBZ) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Downstream IP Address (4 or 16 octets) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Downstream Interface Address (4 or 16 octets) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Hash Key Type | Depth Limit | Multipath Length | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * . . - * . (Multipath Information) . - * . . - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Downstream Label | Protocol | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * . . - * . . - * . . - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Downstream Label | Protocol | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ -struct lspping_tlv_downstream_map_ipv4_t { - u_int8_t mtu [2]; - u_int8_t address_type; - u_int8_t res; - u_int8_t downstream_ip[4]; - u_int8_t downstream_interface[4]; -}; - -struct lspping_tlv_downstream_map_ipv6_t { - u_int8_t mtu [2]; - u_int8_t address_type; - u_int8_t res; - u_int8_t downstream_ip[16]; - u_int8_t downstream_interface[16]; -}; - -struct lspping_tlv_downstream_map_info_t { - u_int8_t hash_key_type; - u_int8_t depth_limit; - u_int8_t multipath_length [2]; -}; - -#define LSPPING_AFI_IPV4 1 -#define LSPPING_AFI_UNMB 2 -#define LSPPING_AFI_IPV6 3 - -static const struct tok lspping_tlv_downstream_addr_values[] = { - { LSPPING_AFI_IPV4, "IPv4"}, - { LSPPING_AFI_IPV6, "IPv6"}, - { LSPPING_AFI_UNMB, "Unnumbered"}, - { 0, NULL} -}; - -void -lspping_print(register const u_char *pptr, register u_int len) { - - const struct lspping_common_header *lspping_com_header; - const struct lspping_tlv_header *lspping_tlv_header; - const struct lspping_tlv_header *lspping_subtlv_header; - const u_char *tptr,*tlv_tptr,*subtlv_tptr; - int tlen,lspping_tlv_len,lspping_tlv_type,tlv_tlen; - int tlv_hexdump,subtlv_hexdump; - int lspping_subtlv_len,lspping_subtlv_type; - struct timeval timestamp; - - union { - const struct lspping_tlv_downstream_map_ipv4_t *lspping_tlv_downstream_map_ipv4; - const struct lspping_tlv_downstream_map_ipv6_t *lspping_tlv_downstream_map_ipv6; - const struct lspping_tlv_downstream_map_info_t *lspping_tlv_downstream_map_info; - } tlv_ptr; - - union { - const struct lspping_tlv_targetfec_subtlv_ldp_ipv4_t *lspping_tlv_targetfec_subtlv_ldp_ipv4; - const struct lspping_tlv_targetfec_subtlv_ldp_ipv6_t *lspping_tlv_targetfec_subtlv_ldp_ipv6; - const struct lspping_tlv_targetfec_subtlv_rsvp_ipv4_t *lspping_tlv_targetfec_subtlv_rsvp_ipv4; - const struct lspping_tlv_targetfec_subtlv_rsvp_ipv6_t *lspping_tlv_targetfec_subtlv_rsvp_ipv6; - const struct lspping_tlv_targetfec_subtlv_l3vpn_ipv4_t *lspping_tlv_targetfec_subtlv_l3vpn_ipv4; - const struct lspping_tlv_targetfec_subtlv_l3vpn_ipv6_t *lspping_tlv_targetfec_subtlv_l3vpn_ipv6; - const struct lspping_tlv_targetfec_subtlv_l2vpn_endpt_t *lspping_tlv_targetfec_subtlv_l2vpn_endpt; - const struct lspping_tlv_targetfec_subtlv_l2vpn_vcid_old_t *lspping_tlv_targetfec_subtlv_l2vpn_vcid_old; - const struct lspping_tlv_targetfec_subtlv_l2vpn_vcid_t *lspping_tlv_targetfec_subtlv_l2vpn_vcid; - const struct lspping_tlv_targetfec_subtlv_bgp_ipv4_t *lspping_tlv_targetfec_subtlv_bgp_ipv4; - const struct lspping_tlv_targetfec_subtlv_bgp_ipv6_t *lspping_tlv_targetfec_subtlv_bgp_ipv6; - } subtlv_ptr; - - tptr=pptr; - lspping_com_header = (const struct lspping_common_header *)pptr; - TCHECK(*lspping_com_header); - - /* - * Sanity checking of the header. - */ - if (EXTRACT_16BITS(&lspping_com_header->version[0]) != LSPPING_VERSION) { - printf("LSP-PING version %u packet not supported", - EXTRACT_16BITS(&lspping_com_header->version[0])); - return; - } - - /* in non-verbose mode just lets print the basic Message Type*/ - if (vflag < 1) { - printf("LSP-PINGv%u, %s, seq %u, length: %u", - EXTRACT_16BITS(&lspping_com_header->version[0]), - tok2str(lspping_msg_type_values, "unknown (%u)",lspping_com_header->msg_type), - EXTRACT_32BITS(lspping_com_header->seq_number), - len); - return; - } - - /* ok they seem to want to know everything - lets fully decode it */ - - tlen=len; - - printf("\n\tLSP-PINGv%u, msg-type: %s (%u), length: %u\n\t reply-mode: %s (%u)", - EXTRACT_16BITS(&lspping_com_header->version[0]), - tok2str(lspping_msg_type_values, "unknown",lspping_com_header->msg_type), - lspping_com_header->msg_type, - len, - tok2str(lspping_reply_mode_values, "unknown",lspping_com_header->reply_mode), - lspping_com_header->reply_mode); - - /* - * the following return codes require that the subcode is attached - * at the end of the translated token output - */ - if (lspping_com_header->return_code == 3 || - lspping_com_header->return_code == 4 || - lspping_com_header->return_code == 8 || - lspping_com_header->return_code == 10 || - lspping_com_header->return_code == 11 || - lspping_com_header->return_code == 12 ) - printf("\n\t Return Code: %s %u (%u)\n\t Return Subcode: (%u)", - tok2str(lspping_return_code_values, "unknown",lspping_com_header->return_code), - lspping_com_header->return_subcode, - lspping_com_header->return_code, - lspping_com_header->return_subcode); - else - printf("\n\t Return Code: %s (%u)\n\t Return Subcode: (%u)", - tok2str(lspping_return_code_values, "unknown",lspping_com_header->return_code), - lspping_com_header->return_code, - lspping_com_header->return_subcode); - - printf("\n\t Sender Handle: 0x%08x, Sequence: %u", - EXTRACT_32BITS(lspping_com_header->sender_handle), - EXTRACT_32BITS(lspping_com_header->seq_number)); - - timestamp.tv_sec=EXTRACT_32BITS(lspping_com_header->ts_sent_sec); - timestamp.tv_usec=EXTRACT_32BITS(lspping_com_header->ts_sent_usec); - printf("\n\t Sender Timestamp: "); - ts_print(×tamp); - - timestamp.tv_sec=EXTRACT_32BITS(lspping_com_header->ts_rcvd_sec); - timestamp.tv_usec=EXTRACT_32BITS(lspping_com_header->ts_rcvd_usec); - printf("Receiver Timestamp: "); - if ((timestamp.tv_sec != 0) && (timestamp.tv_usec != 0)) - ts_print(×tamp); - else - printf("no timestamp"); - - tptr+=sizeof(const struct lspping_common_header); - tlen-=sizeof(const struct lspping_common_header); - - while(tlen>(int)sizeof(struct lspping_tlv_header)) { - /* did we capture enough for fully decoding the tlv header ? */ - if (!TTEST2(*tptr, sizeof(struct lspping_tlv_header))) - goto trunc; - - lspping_tlv_header = (const struct lspping_tlv_header *)tptr; - lspping_tlv_type=EXTRACT_16BITS(lspping_tlv_header->type); - lspping_tlv_len=EXTRACT_16BITS(lspping_tlv_header->length); - - if (lspping_tlv_len == 0) - return; - - if(lspping_tlv_len % 4 || lspping_tlv_len < 4) { /* aligned to four octet boundary */ - printf("\n\t ERROR: TLV %u bogus size %u",lspping_tlv_type,lspping_tlv_len); - return; - } - - printf("\n\t %s TLV (%u), length: %u", - tok2str(lspping_tlv_values, - "Unknown", - lspping_tlv_type), - lspping_tlv_type, - lspping_tlv_len); - - tlv_tptr=tptr+sizeof(struct lspping_tlv_header); - tlv_tlen=lspping_tlv_len; /* header not included -> no adjustment */ - - /* did we capture enough for fully decoding the tlv ? */ - if (!TTEST2(*tptr, lspping_tlv_len)) - goto trunc; - tlv_hexdump=FALSE; - - switch(lspping_tlv_type) { - case LSPPING_TLV_TARGET_FEC_STACK: - while(tlv_tlen>(int)sizeof(struct lspping_tlv_header)) { - - /* did we capture enough for fully decoding the subtlv header ? */ - if (!TTEST2(*tptr, sizeof(struct lspping_tlv_header))) - goto trunc; - subtlv_hexdump=FALSE; - - lspping_subtlv_header = (const struct lspping_tlv_header *)tlv_tptr; - lspping_subtlv_type=EXTRACT_16BITS(lspping_subtlv_header->type); - lspping_subtlv_len=EXTRACT_16BITS(lspping_subtlv_header->length); - subtlv_tptr=tlv_tptr+sizeof(struct lspping_tlv_header); - - if (lspping_subtlv_len == 0) - break; - - printf("\n\t %s subTLV (%u), length: %u", - tok2str(lspping_tlvtargetfec_subtlv_values, - "Unknown", - lspping_subtlv_type), - lspping_subtlv_type, - lspping_subtlv_len); - - switch(lspping_subtlv_type) { - - case LSPPING_TLV_TARGETFEC_SUBTLV_LDP_IPV4: - subtlv_ptr.lspping_tlv_targetfec_subtlv_ldp_ipv4 = \ - (const struct lspping_tlv_targetfec_subtlv_ldp_ipv4_t *)subtlv_tptr; - printf("\n\t %s/%u", - ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_ldp_ipv4->prefix), - subtlv_ptr.lspping_tlv_targetfec_subtlv_ldp_ipv4->prefix_len); - break; - -#ifdef INET6 - case LSPPING_TLV_TARGETFEC_SUBTLV_LDP_IPV6: - subtlv_ptr.lspping_tlv_targetfec_subtlv_ldp_ipv6 = \ - (const struct lspping_tlv_targetfec_subtlv_ldp_ipv6_t *)subtlv_tptr; - printf("\n\t %s/%u", - ip6addr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_ldp_ipv6->prefix), - subtlv_ptr.lspping_tlv_targetfec_subtlv_ldp_ipv6->prefix_len); - break; -#endif - - case LSPPING_TLV_TARGETFEC_SUBTLV_BGP_IPV4: - subtlv_ptr.lspping_tlv_targetfec_subtlv_bgp_ipv4 = \ - (const struct lspping_tlv_targetfec_subtlv_bgp_ipv4_t *)subtlv_tptr; - printf("\n\t %s/%u, sender-id %s", - ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_bgp_ipv4->prefix), - subtlv_ptr.lspping_tlv_targetfec_subtlv_bgp_ipv4->prefix_len, - ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_bgp_ipv4->sender_id)); - break; - -#ifdef INET6 - case LSPPING_TLV_TARGETFEC_SUBTLV_BGP_IPV6: - subtlv_ptr.lspping_tlv_targetfec_subtlv_bgp_ipv6 = \ - (const struct lspping_tlv_targetfec_subtlv_bgp_ipv6_t *)subtlv_tptr; - printf("\n\t %s/%u, sender-id %s", - ip6addr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_bgp_ipv6->prefix), - subtlv_ptr.lspping_tlv_targetfec_subtlv_bgp_ipv6->prefix_len, - ip6addr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_bgp_ipv6->sender_id)); - break; -#endif - - case LSPPING_TLV_TARGETFEC_SUBTLV_RSVP_IPV4: - subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv4 = \ - (const struct lspping_tlv_targetfec_subtlv_rsvp_ipv4_t *)subtlv_tptr; - printf("\n\t tunnel end-point %s, tunnel sender %s, lsp-id 0x%04x" \ - "\n\t tunnel-id 0x%04x, extended tunnel-id %s", - ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv4->tunnel_endpoint), - ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv4->tunnel_sender), - EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv4->lsp_id), - EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv4->tunnel_id), - ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv4->extended_tunnel_id)); - break; - -#ifdef INET6 - case LSPPING_TLV_TARGETFEC_SUBTLV_RSVP_IPV6: - subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv6 = \ - (const struct lspping_tlv_targetfec_subtlv_rsvp_ipv6_t *)subtlv_tptr; - printf("\n\t tunnel end-point %s, tunnel sender %s, lsp-id 0x%04x" \ - "\n\t tunnel-id 0x%04x, extended tunnel-id %s", - ip6addr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv6->tunnel_endpoint), - ip6addr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv6->tunnel_sender), - EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv6->lsp_id), - EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv6->tunnel_id), - ip6addr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_rsvp_ipv6->extended_tunnel_id)); - break; -#endif - - case LSPPING_TLV_TARGETFEC_SUBTLV_L3VPN_IPV4: - subtlv_ptr.lspping_tlv_targetfec_subtlv_l3vpn_ipv4 = \ - (const struct lspping_tlv_targetfec_subtlv_l3vpn_ipv4_t *)subtlv_tptr; - printf("\n\t RD: %s, %s/%u", - bgp_vpn_rd_print(subtlv_ptr.lspping_tlv_targetfec_subtlv_l3vpn_ipv4->rd), - ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_l3vpn_ipv4->prefix), - subtlv_ptr.lspping_tlv_targetfec_subtlv_l3vpn_ipv4->prefix_len); - break; - -#ifdef INET6 - case LSPPING_TLV_TARGETFEC_SUBTLV_L3VPN_IPV6: - subtlv_ptr.lspping_tlv_targetfec_subtlv_l3vpn_ipv6 = \ - (const struct lspping_tlv_targetfec_subtlv_l3vpn_ipv6_t *)subtlv_tptr; - printf("\n\t RD: %s, %s/%u", - bgp_vpn_rd_print(subtlv_ptr.lspping_tlv_targetfec_subtlv_l3vpn_ipv6->rd), - ip6addr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_l3vpn_ipv6->prefix), - subtlv_ptr.lspping_tlv_targetfec_subtlv_l3vpn_ipv6->prefix_len); - break; -#endif - - case LSPPING_TLV_TARGETFEC_SUBTLV_L2VPN_ENDPT: - subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_endpt = \ - (const struct lspping_tlv_targetfec_subtlv_l2vpn_endpt_t *)subtlv_tptr; - printf("\n\t RD: %s, Sender CE-ID: %u, Receiver CE-ID: %u" \ - "\n\t Encapsulation Type: %s (%u)", - bgp_vpn_rd_print(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_endpt->rd), - EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_endpt->sender_ce_id), - EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_endpt->receiver_ce_id), - tok2str(l2vpn_encaps_values, - "unknown", - EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_endpt->encapsulation)), - EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_endpt->encapsulation)); - - break; - - /* the old L2VPN VCID subTLV does not have support for the sender field */ - case LSPPING_TLV_TARGETFEC_SUBTLV_L2VPN_VCID_OLD: - subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid_old = \ - (const struct lspping_tlv_targetfec_subtlv_l2vpn_vcid_old_t *)subtlv_tptr; - printf("\n\t Remote PE: %s" \ - "\n\t VC-ID: 0x%08x, Encapsulation Type: %s (%u)", - ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid_old->remote_pe_address), - EXTRACT_32BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid_old->vc_id), - tok2str(l2vpn_encaps_values, - "unknown", - EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid_old->encapsulation)), - EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid_old->encapsulation)); - - break; - - case LSPPING_TLV_TARGETFEC_SUBTLV_L2VPN_VCID: - subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid = \ - (const struct lspping_tlv_targetfec_subtlv_l2vpn_vcid_t *)subtlv_tptr; - printf("\n\t Sender PE: %s, Remote PE: %s" \ - "\n\t VC-ID: 0x%08x, Encapsulation Type: %s (%u)", - ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid->sender_pe_address), - ipaddr_string(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid->remote_pe_address), - EXTRACT_32BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid->vc_id), - tok2str(l2vpn_encaps_values, - "unknown", - EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid->encapsulation)), - EXTRACT_16BITS(subtlv_ptr.lspping_tlv_targetfec_subtlv_l2vpn_vcid->encapsulation)); - - break; - - default: - subtlv_hexdump=TRUE; /* unknown subTLV just hexdump it */ - break; - } - /* do we want to see an additionally subtlv hexdump ? */ - if (vflag > 1 || subtlv_hexdump==TRUE) - print_unknown_data(tlv_tptr+sizeof(struct lspping_tlv_header), \ - "\n\t ", - lspping_subtlv_len); - - tlv_tptr+=lspping_subtlv_len; - tlv_tlen-=lspping_subtlv_len+sizeof(struct lspping_tlv_header); - } - break; - - case LSPPING_TLV_DOWNSTREAM_MAPPING: - /* that strange thing with the downstream map TLV is that until now - * we do not know if its IPv4 or IPv6 , after we found the adress-type - * lets recast the tlv_tptr and move on */ - - tlv_ptr.lspping_tlv_downstream_map_ipv4= \ - (const struct lspping_tlv_downstream_map_ipv4_t *)tlv_tptr; - tlv_ptr.lspping_tlv_downstream_map_ipv6= \ - (const struct lspping_tlv_downstream_map_ipv6_t *)tlv_tptr; - printf("\n\t MTU: %u, Address-Type: %s (%u)", - EXTRACT_16BITS(tlv_ptr.lspping_tlv_downstream_map_ipv4->mtu), - tok2str(lspping_tlv_downstream_addr_values, - "unknown", - tlv_ptr.lspping_tlv_downstream_map_ipv4->address_type), - tlv_ptr.lspping_tlv_downstream_map_ipv4->address_type); - - switch(tlv_ptr.lspping_tlv_downstream_map_ipv4->address_type) { - - case LSPPING_AFI_IPV4: - printf("\n\t Downstream IP: %s" \ - "\n\t Downstream Interface IP: %s", - ipaddr_string(tlv_ptr.lspping_tlv_downstream_map_ipv4->downstream_ip), - ipaddr_string(tlv_ptr.lspping_tlv_downstream_map_ipv4->downstream_interface)); - tlv_tptr+=sizeof(struct lspping_tlv_downstream_map_ipv4_t); - tlv_tlen-=sizeof(struct lspping_tlv_downstream_map_ipv4_t); - break; -#ifdef INET6 - case LSPPING_AFI_IPV6: - printf("\n\t Downstream IP: %s" \ - "\n\t Downstream Interface IP: %s", - ip6addr_string(tlv_ptr.lspping_tlv_downstream_map_ipv6->downstream_ip), - ip6addr_string(tlv_ptr.lspping_tlv_downstream_map_ipv6->downstream_interface)); - tlv_tptr+=sizeof(struct lspping_tlv_downstream_map_ipv6_t); - tlv_tlen-=sizeof(struct lspping_tlv_downstream_map_ipv6_t); - break; -#endif - case LSPPING_AFI_UNMB: - printf("\n\t Downstream IP: %s" \ - "\n\t Downstream Interface Index: 0x%08x", - ipaddr_string(tlv_ptr.lspping_tlv_downstream_map_ipv4->downstream_ip), - EXTRACT_32BITS(tlv_ptr.lspping_tlv_downstream_map_ipv4->downstream_interface)); - tlv_tptr+=sizeof(struct lspping_tlv_downstream_map_ipv4_t); - tlv_tlen-=sizeof(struct lspping_tlv_downstream_map_ipv4_t); - break; - - default: - /* should not happen ! - no error message - tok2str() has barked already */ - break; - } - - tlv_ptr.lspping_tlv_downstream_map_info= \ - (const struct lspping_tlv_downstream_map_info_t *)tlv_tptr; - - /* FIXME add hash-key type, depth limit, multipath processing */ - - - tlv_tptr+=sizeof(struct lspping_tlv_downstream_map_info_t); - tlv_tlen-=sizeof(struct lspping_tlv_downstream_map_info_t); - - /* FIXME print downstream labels */ - - - tlv_hexdump=TRUE; /* dump the TLV until code complete */ - - break; - - /* - * FIXME those are the defined TLVs that lack a decoder - * you are welcome to contribute code ;-) - */ - - case LSPPING_TLV_PAD: - case LSPPING_TLV_ERROR_CODE: - case LSPPING_TLV_VENDOR_PRIVATE: - - default: - if (vflag <= 1) - print_unknown_data(tlv_tptr,"\n\t ",tlv_tlen); - break; - } - /* do we want to see an additionally tlv hexdump ? */ - if (vflag > 1 || tlv_hexdump==TRUE) - print_unknown_data(tptr+sizeof(sizeof(struct lspping_tlv_header)),"\n\t ", - lspping_tlv_len); - - tptr+=lspping_tlv_len+sizeof(struct lspping_tlv_header); - tlen-=lspping_tlv_len+sizeof(struct lspping_tlv_header); - } - return; -trunc: - printf("\n\t\t packet exceeded snapshot"); -} diff --git a/contrib/tcpdump/print-lwres.c b/contrib/tcpdump/print-lwres.c deleted file mode 100644 index d0d6fe1cddfa1..0000000000000 --- a/contrib/tcpdump/print-lwres.c +++ /dev/null @@ -1,601 +0,0 @@ -/* - * Copyright (C) 2001 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-lwres.c,v 1.13 2004/03/24 01:54:29 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include "nameser.h" - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" /* must come after interface.h */ - -/* BIND9 lib/lwres/include/lwres */ -typedef u_int32_t lwres_uint32_t; -typedef u_int16_t lwres_uint16_t; -typedef u_int8_t lwres_uint8_t; - -struct lwres_lwpacket { - lwres_uint32_t length; - lwres_uint16_t version; - lwres_uint16_t pktflags; - lwres_uint32_t serial; - lwres_uint32_t opcode; - lwres_uint32_t result; - lwres_uint32_t recvlength; - lwres_uint16_t authtype; - lwres_uint16_t authlength; -}; - -#define LWRES_LWPACKETFLAG_RESPONSE 0x0001U /* if set, pkt is a response */ - -#define LWRES_LWPACKETVERSION_0 0 - -#define LWRES_FLAG_TRUSTNOTREQUIRED 0x00000001U -#define LWRES_FLAG_SECUREDATA 0x00000002U - -/* - * no-op - */ -#define LWRES_OPCODE_NOOP 0x00000000U - -typedef struct { - /* public */ - lwres_uint16_t datalength; - /* data follows */ -} lwres_nooprequest_t; - -typedef struct { - /* public */ - lwres_uint16_t datalength; - /* data follows */ -} lwres_noopresponse_t; - -/* - * get addresses by name - */ -#define LWRES_OPCODE_GETADDRSBYNAME 0x00010001U - -typedef struct lwres_addr lwres_addr_t; - -struct lwres_addr { - lwres_uint32_t family; - lwres_uint16_t length; - /* address folows */ -}; - -typedef struct { - /* public */ - lwres_uint32_t flags; - lwres_uint32_t addrtypes; - lwres_uint16_t namelen; - /* name follows */ -} lwres_gabnrequest_t; - -typedef struct { - /* public */ - lwres_uint32_t flags; - lwres_uint16_t naliases; - lwres_uint16_t naddrs; - lwres_uint16_t realnamelen; - /* aliases follows */ - /* addrs follows */ - /* realname follows */ -} lwres_gabnresponse_t; - -/* - * get name by address - */ -#define LWRES_OPCODE_GETNAMEBYADDR 0x00010002U -typedef struct { - /* public */ - lwres_uint32_t flags; - lwres_addr_t addr; - /* addr body follows */ -} lwres_gnbarequest_t; - -typedef struct { - /* public */ - lwres_uint32_t flags; - lwres_uint16_t naliases; - lwres_uint16_t realnamelen; - /* aliases follows */ - /* realname follows */ -} lwres_gnbaresponse_t; - -/* - * get rdata by name - */ -#define LWRES_OPCODE_GETRDATABYNAME 0x00010003U - -typedef struct { - /* public */ - lwres_uint32_t flags; - lwres_uint16_t rdclass; - lwres_uint16_t rdtype; - lwres_uint16_t namelen; - /* name follows */ -} lwres_grbnrequest_t; - -typedef struct { - /* public */ - lwres_uint32_t flags; - lwres_uint16_t rdclass; - lwres_uint16_t rdtype; - lwres_uint32_t ttl; - lwres_uint16_t nrdatas; - lwres_uint16_t nsigs; - /* realname here (len + name) */ - /* rdata here (len + name) */ - /* signatures here (len + name) */ -} lwres_grbnresponse_t; - -#define LWRDATA_VALIDATED 0x00000001 - -#define LWRES_ADDRTYPE_V4 0x00000001U /* ipv4 */ -#define LWRES_ADDRTYPE_V6 0x00000002U /* ipv6 */ - -#define LWRES_MAX_ALIASES 16 /* max # of aliases */ -#define LWRES_MAX_ADDRS 64 /* max # of addrs */ - -struct tok opcode[] = { - { LWRES_OPCODE_NOOP, "noop", }, - { LWRES_OPCODE_GETADDRSBYNAME, "getaddrsbyname", }, - { LWRES_OPCODE_GETNAMEBYADDR, "getnamebyaddr", }, - { LWRES_OPCODE_GETRDATABYNAME, "getrdatabyname", }, - { 0, NULL, }, -}; - -/* print-domain.c */ -extern struct tok ns_type2str[]; -extern struct tok ns_class2str[]; - -static int lwres_printname(size_t, const char *); -static int lwres_printnamelen(const char *); -static int lwres_printbinlen(const char *); -static int lwres_printaddr(lwres_addr_t *); - -static int -lwres_printname(size_t l, const char *p0) -{ - const char *p; - size_t i; - - p = p0; - /* + 1 for terminating \0 */ - if (p + l + 1 > (const char *)snapend) - goto trunc; - - printf(" "); - for (i = 0; i < l; i++) - safeputchar(*p++); - p++; /* skip terminating \0 */ - - return p - p0; - - trunc: - return -1; -} - -static int -lwres_printnamelen(const char *p) -{ - u_int16_t l; - int advance; - - if (p + 2 > (const char *)snapend) - goto trunc; - l = EXTRACT_16BITS(p); - advance = lwres_printname(l, p + 2); - if (advance < 0) - goto trunc; - return 2 + advance; - - trunc: - return -1; -} - -static int -lwres_printbinlen(const char *p0) -{ - const char *p; - u_int16_t l; - int i; - - p = p0; - if (p + 2 > (const char *)snapend) - goto trunc; - l = EXTRACT_16BITS(p); - if (p + 2 + l > (const char *)snapend) - goto trunc; - p += 2; - for (i = 0; i < l; i++) - printf("%02x", *p++); - return p - p0; - - trunc: - return -1; -} - -static int -lwres_printaddr(lwres_addr_t *ap) -{ - u_int16_t l; - const char *p; - int i; - - TCHECK(ap->length); - l = EXTRACT_16BITS(&ap->length); - /* XXX ap points to packed struct */ - p = (const char *)&ap->length + sizeof(ap->length); - TCHECK2(*p, l); - - switch (EXTRACT_32BITS(&ap->family)) { - case 1: /* IPv4 */ - if (l < 4) - return -1; - printf(" %s", ipaddr_string(p)); - p += sizeof(struct in_addr); - break; -#ifdef INET6 - case 2: /* IPv6 */ - if (l < 16) - return -1; - printf(" %s", ip6addr_string(p)); - p += sizeof(struct in6_addr); - break; -#endif - default: - printf(" %u/", EXTRACT_32BITS(&ap->family)); - for (i = 0; i < l; i++) - printf("%02x", *p++); - } - - return p - (const char *)ap; - - trunc: - return -1; -} - -void -lwres_print(register const u_char *bp, u_int length) -{ - const struct lwres_lwpacket *np; - u_int32_t v; - const char *s; - int response; - int advance; - int unsupported = 0; - - np = (const struct lwres_lwpacket *)bp; - TCHECK(np->authlength); - - printf(" lwres"); - v = EXTRACT_16BITS(&np->version); - if (vflag || v != LWRES_LWPACKETVERSION_0) - printf(" v%u", v); - if (v != LWRES_LWPACKETVERSION_0) { - s = (const char *)np + EXTRACT_32BITS(&np->length); - goto tail; - } - - response = EXTRACT_16BITS(&np->pktflags) & LWRES_LWPACKETFLAG_RESPONSE; - - /* opcode and pktflags */ - v = EXTRACT_32BITS(&np->opcode); - s = tok2str(opcode, "#0x%x", v); - printf(" %s%s", s, response ? "" : "?"); - - /* pktflags */ - v = EXTRACT_16BITS(&np->pktflags); - if (v & ~LWRES_LWPACKETFLAG_RESPONSE) - printf("[0x%x]", v); - - if (vflag > 1) { - printf(" ("); /*)*/ - printf("serial:0x%x", EXTRACT_32BITS(&np->serial)); - printf(" result:0x%x", EXTRACT_32BITS(&np->result)); - printf(" recvlen:%u", EXTRACT_32BITS(&np->recvlength)); - /* BIND910: not used */ - if (vflag > 2) { - printf(" authtype:0x%x", EXTRACT_16BITS(&np->authtype)); - printf(" authlen:%u", EXTRACT_16BITS(&np->authlength)); - } - /*(*/ - printf(")"); - } - - /* per-opcode content */ - if (!response) { - /* - * queries - */ - lwres_gabnrequest_t *gabn; - lwres_gnbarequest_t *gnba; - lwres_grbnrequest_t *grbn; - u_int32_t l; - - gabn = NULL; - gnba = NULL; - grbn = NULL; - - switch (EXTRACT_32BITS(&np->opcode)) { - case LWRES_OPCODE_NOOP: - break; - case LWRES_OPCODE_GETADDRSBYNAME: - gabn = (lwres_gabnrequest_t *)(np + 1); - TCHECK(gabn->namelen); - /* XXX gabn points to packed struct */ - s = (const char *)&gabn->namelen + - sizeof(gabn->namelen); - l = EXTRACT_16BITS(&gabn->namelen); - - /* BIND910: not used */ - if (vflag > 2) { - printf(" flags:0x%x", - EXTRACT_32BITS(&gabn->flags)); - } - - v = EXTRACT_32BITS(&gabn->addrtypes); - switch (v & (LWRES_ADDRTYPE_V4 | LWRES_ADDRTYPE_V6)) { - case LWRES_ADDRTYPE_V4: - printf(" IPv4"); - break; - case LWRES_ADDRTYPE_V6: - printf(" IPv6"); - break; - case LWRES_ADDRTYPE_V4 | LWRES_ADDRTYPE_V6: - printf(" IPv4/6"); - break; - } - if (v & ~(LWRES_ADDRTYPE_V4 | LWRES_ADDRTYPE_V6)) - printf("[0x%x]", v); - - advance = lwres_printname(l, s); - if (advance < 0) - goto trunc; - s += advance; - break; - case LWRES_OPCODE_GETNAMEBYADDR: - gnba = (lwres_gnbarequest_t *)(np + 1); - TCHECK(gnba->addr); - - /* BIND910: not used */ - if (vflag > 2) { - printf(" flags:0x%x", - EXTRACT_32BITS(&gnba->flags)); - } - - s = (const char *)&gnba->addr; - - advance = lwres_printaddr(&gnba->addr); - if (advance < 0) - goto trunc; - s += advance; - break; - case LWRES_OPCODE_GETRDATABYNAME: - /* XXX no trace, not tested */ - grbn = (lwres_grbnrequest_t *)(np + 1); - TCHECK(grbn->namelen); - - /* BIND910: not used */ - if (vflag > 2) { - printf(" flags:0x%x", - EXTRACT_32BITS(&grbn->flags)); - } - - printf(" %s", tok2str(ns_type2str, "Type%d", - EXTRACT_16BITS(&grbn->rdtype))); - if (EXTRACT_16BITS(&grbn->rdclass) != C_IN) { - printf(" %s", tok2str(ns_class2str, "Class%d", - EXTRACT_16BITS(&grbn->rdclass))); - } - - /* XXX grbn points to packed struct */ - s = (const char *)&grbn->namelen + - sizeof(grbn->namelen); - l = EXTRACT_16BITS(&grbn->namelen); - - advance = lwres_printname(l, s); - if (advance < 0) - goto trunc; - s += advance; - break; - default: - unsupported++; - break; - } - } else { - /* - * responses - */ - lwres_gabnresponse_t *gabn; - lwres_gnbaresponse_t *gnba; - lwres_grbnresponse_t *grbn; - u_int32_t l, na; - u_int32_t i; - - gabn = NULL; - gnba = NULL; - grbn = NULL; - - switch (EXTRACT_32BITS(&np->opcode)) { - case LWRES_OPCODE_NOOP: - break; - case LWRES_OPCODE_GETADDRSBYNAME: - gabn = (lwres_gabnresponse_t *)(np + 1); - TCHECK(gabn->realnamelen); - /* XXX gabn points to packed struct */ - s = (const char *)&gabn->realnamelen + - sizeof(gabn->realnamelen); - l = EXTRACT_16BITS(&gabn->realnamelen); - - /* BIND910: not used */ - if (vflag > 2) { - printf(" flags:0x%x", - EXTRACT_32BITS(&gabn->flags)); - } - - printf(" %u/%u", EXTRACT_16BITS(&gabn->naliases), - EXTRACT_16BITS(&gabn->naddrs)); - - advance = lwres_printname(l, s); - if (advance < 0) - goto trunc; - s += advance; - - /* aliases */ - na = EXTRACT_16BITS(&gabn->naliases); - for (i = 0; i < na; i++) { - advance = lwres_printnamelen(s); - if (advance < 0) - goto trunc; - s += advance; - } - - /* addrs */ - na = EXTRACT_16BITS(&gabn->naddrs); - for (i = 0; i < na; i++) { - advance = lwres_printaddr((lwres_addr_t *)s); - if (advance < 0) - goto trunc; - s += advance; - } - break; - case LWRES_OPCODE_GETNAMEBYADDR: - gnba = (lwres_gnbaresponse_t *)(np + 1); - TCHECK(gnba->realnamelen); - /* XXX gnba points to packed struct */ - s = (const char *)&gnba->realnamelen + - sizeof(gnba->realnamelen); - l = EXTRACT_16BITS(&gnba->realnamelen); - - /* BIND910: not used */ - if (vflag > 2) { - printf(" flags:0x%x", - EXTRACT_32BITS(&gnba->flags)); - } - - printf(" %u", EXTRACT_16BITS(&gnba->naliases)); - - advance = lwres_printname(l, s); - if (advance < 0) - goto trunc; - s += advance; - - /* aliases */ - na = EXTRACT_16BITS(&gnba->naliases); - for (i = 0; i < na; i++) { - advance = lwres_printnamelen(s); - if (advance < 0) - goto trunc; - s += advance; - } - break; - case LWRES_OPCODE_GETRDATABYNAME: - /* XXX no trace, not tested */ - grbn = (lwres_grbnresponse_t *)(np + 1); - TCHECK(grbn->nsigs); - - /* BIND910: not used */ - if (vflag > 2) { - printf(" flags:0x%x", - EXTRACT_32BITS(&grbn->flags)); - } - - printf(" %s", tok2str(ns_type2str, "Type%d", - EXTRACT_16BITS(&grbn->rdtype))); - if (EXTRACT_16BITS(&grbn->rdclass) != C_IN) { - printf(" %s", tok2str(ns_class2str, "Class%d", - EXTRACT_16BITS(&grbn->rdclass))); - } - printf(" TTL "); - relts_print(EXTRACT_32BITS(&grbn->ttl)); - printf(" %u/%u", EXTRACT_16BITS(&grbn->nrdatas), - EXTRACT_16BITS(&grbn->nsigs)); - - /* XXX grbn points to packed struct */ - s = (const char *)&grbn->nsigs+ sizeof(grbn->nsigs); - - advance = lwres_printnamelen(s); - if (advance < 0) - goto trunc; - s += advance; - - /* rdatas */ - na = EXTRACT_16BITS(&grbn->nrdatas); - for (i = 0; i < na; i++) { - /* XXX should decode resource data */ - advance = lwres_printbinlen(s); - if (advance < 0) - goto trunc; - s += advance; - } - - /* sigs */ - na = EXTRACT_16BITS(&grbn->nsigs); - for (i = 0; i < na; i++) { - /* XXX how should we print it? */ - advance = lwres_printbinlen(s); - if (advance < 0) - goto trunc; - s += advance; - } - break; - default: - unsupported++; - break; - } - } - - tail: - /* length mismatch */ - if (EXTRACT_32BITS(&np->length) != length) { - printf(" [len: %u != %u]", EXTRACT_32BITS(&np->length), - length); - } - if (!unsupported && s < (const char *)np + EXTRACT_32BITS(&np->length)) - printf("[extra]"); - return; - - trunc: - printf("[|lwres]"); - return; -} diff --git a/contrib/tcpdump/print-mobile.c b/contrib/tcpdump/print-mobile.c deleted file mode 100644 index fe6f013fa6904..0000000000000 --- a/contrib/tcpdump/print-mobile.c +++ /dev/null @@ -1,109 +0,0 @@ -/* $NetBSD: print-mobile.c,v 1.2 1998/09/30 08:57:01 hwr Exp $ */ - -/* - * (c) 1998 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Heiko W.Rupp <hwr@pilhuhn.de> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the NetBSD - * Foundation, Inc. and its contributors. - * 4. Neither the name of The NetBSD Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-mobile.c,v 1.15 2004/03/24 01:58:14 guy Exp $"; -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" /* must come after interface.h */ - -#define MOBILE_SIZE (8) - -struct mobile_ip { - u_int16_t proto; - u_int16_t hcheck; - u_int32_t odst; - u_int32_t osrc; -}; - -#define OSRC_PRES 0x0080 /* old source is present */ - -/* - * Deencapsulate and print a mobile-tunneled IP datagram - */ -void -mobile_print(const u_char *bp, u_int length) -{ - const u_char *cp = bp +8 ; - const struct mobile_ip *mob; - u_short proto,crc; - u_char osp =0; /* old source address present */ - - mob = (const struct mobile_ip *)bp; - - if (length < MOBILE_SIZE || !TTEST(*mob)) { - fputs("[|mobile]", stdout); - return; - } - fputs("mobile: ", stdout); - - proto = EXTRACT_16BITS(&mob->proto); - crc = EXTRACT_16BITS(&mob->hcheck); - if (proto & OSRC_PRES) { - osp=1; - cp +=4 ; - } - - if (osp) { - fputs("[S] ",stdout); - if (vflag) - (void)printf("%s ",ipaddr_string(&mob->osrc)); - } else { - fputs("[] ",stdout); - } - if (vflag) { - (void)printf("> %s ",ipaddr_string(&mob->odst)); - (void)printf("(oproto=%d)",proto>>8); - } - if (in_cksum((u_short *)mob, osp ? 12 : 8, 0)!=0) { - (void)printf(" (bad checksum %d)",crc); - } - - return; -} diff --git a/contrib/tcpdump/print-mobility.c b/contrib/tcpdump/print-mobility.c deleted file mode 100644 index 8f9cbee708b9e..0000000000000 --- a/contrib/tcpdump/print-mobility.c +++ /dev/null @@ -1,312 +0,0 @@ -/* - * Copyright (C) 2002 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-mobility.c,v 1.11.2.1 2005/04/20 22:21:16 guy Exp $"; -#endif - -#ifdef INET6 -#include <tcpdump-stdinc.h> - -#include <stdio.h> - -#include "ip6.h" - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" /* must come after interface.h */ - -/* Mobility header */ -struct ip6_mobility { - u_int8_t ip6m_pproto; /* following payload protocol (for PG) */ - u_int8_t ip6m_len; /* length in units of 8 octets */ - u_int8_t ip6m_type; /* message type */ - u_int8_t reserved; /* reserved */ - u_int16_t ip6m_cksum; /* sum of IPv6 pseudo-header and MH */ - union { - u_int16_t ip6m_un_data16[1]; /* type-specific field */ - u_int8_t ip6m_un_data8[2]; /* type-specific fiedl */ - } ip6m_dataun; -}; - -#define ip6m_data16 ip6m_dataun.ip6m_un_data16 -#define ip6m_data8 ip6m_dataun.ip6m_un_data8 - -#define IP6M_MINLEN 8 - -/* message type */ -#define IP6M_BINDING_REQUEST 0 /* Binding Refresh Request */ -#define IP6M_HOME_TEST_INIT 1 /* Home Test Init */ -#define IP6M_CAREOF_TEST_INIT 2 /* Care-of Test Init */ -#define IP6M_HOME_TEST 3 /* Home Test */ -#define IP6M_CAREOF_TEST 4 /* Care-of Test */ -#define IP6M_BINDING_UPDATE 5 /* Binding Update */ -#define IP6M_BINDING_ACK 6 /* Binding Acknowledgement */ -#define IP6M_BINDING_ERROR 7 /* Binding Error */ - -/* Mobility Header Options */ -#define IP6MOPT_MINLEN 2 -#define IP6MOPT_PAD1 0x0 /* Pad1 */ -#define IP6MOPT_PADN 0x1 /* PadN */ -#define IP6MOPT_REFRESH 0x2 /* Binding Refresh Advice */ -#define IP6MOPT_REFRESH_MINLEN 4 -#define IP6MOPT_ALTCOA 0x3 /* Alternate Care-of Address */ -#define IP6MOPT_ALTCOA_MINLEN 18 -#define IP6MOPT_NONCEID 0x4 /* Nonce Indices */ -#define IP6MOPT_NONCEID_MINLEN 6 -#define IP6MOPT_AUTH 0x5 /* Binding Authorization Data */ -#define IP6MOPT_AUTH_MINLEN 12 - -static void -mobility_opt_print(const u_char *bp, int len) -{ - int i; - int optlen; - - for (i = 0; i < len; i += optlen) { - if (bp[i] == IP6MOPT_PAD1) - optlen = 1; - else { - if (i + 1 < len) - optlen = bp[i + 1] + 2; - else - goto trunc; - } - if (i + optlen > len) - goto trunc; - - switch (bp[i]) { - case IP6MOPT_PAD1: - printf("(pad1)"); - break; - case IP6MOPT_PADN: - if (len - i < IP6MOPT_MINLEN) { - printf("(padn: trunc)"); - goto trunc; - } - printf("(padn)"); - break; - case IP6MOPT_REFRESH: - if (len - i < IP6MOPT_REFRESH_MINLEN) { - printf("(refresh: trunc)"); - goto trunc; - } - /* units of 4 secs */ - printf("(refresh: %d)", - EXTRACT_16BITS(&bp[i+2]) << 2); - break; - case IP6MOPT_ALTCOA: - if (len - i < IP6MOPT_ALTCOA_MINLEN) { - printf("(altcoa: trunc)"); - goto trunc; - } - printf("(alt-CoA: %s)", ip6addr_string(&bp[i+2])); - break; - case IP6MOPT_NONCEID: - if (len - i < IP6MOPT_NONCEID_MINLEN) { - printf("(ni: trunc)"); - goto trunc; - } - printf("(ni: ho=0x%04x co=0x%04x)", - EXTRACT_16BITS(&bp[i+2]), - EXTRACT_16BITS(&bp[i+4])); - break; - case IP6MOPT_AUTH: - if (len - i < IP6MOPT_AUTH_MINLEN) { - printf("(auth: trunc)"); - goto trunc; - } - printf("(auth)"); - break; - default: - if (len - i < IP6MOPT_MINLEN) { - printf("(sopt_type %d: trunc)", bp[i]); - goto trunc; - } - printf("(type-0x%02x: len=%d)", bp[i], bp[i + 1]); - break; - } - } - return; - -trunc: - printf("[trunc] "); -} - -/* - * Mobility Header - */ -int -mobility_print(const u_char *bp, const u_char *bp2 _U_) -{ - const struct ip6_mobility *mh; - const u_char *ep; - int mhlen, hlen, type; - - mh = (struct ip6_mobility *)bp; - - /* 'ep' points to the end of available data. */ - ep = snapend; - - if (!TTEST(mh->ip6m_len)) { - /* - * There's not enough captured data to include the - * mobility header length. - * - * Our caller expects us to return the length, however, - * so return a value that will run to the end of the - * captured data. - * - * XXX - "ip6_print()" doesn't do anything with the - * returned length, however, as it breaks out of the - * header-processing loop. - */ - mhlen = ep - bp; - goto trunc; - } - mhlen = (int)((mh->ip6m_len + 1) << 3); - - /* XXX ip6m_cksum */ - - TCHECK(mh->ip6m_type); - type = mh->ip6m_type; - switch (type) { - case IP6M_BINDING_REQUEST: - printf("mobility: BRR"); - hlen = IP6M_MINLEN; - break; - case IP6M_HOME_TEST_INIT: - case IP6M_CAREOF_TEST_INIT: - printf("mobility: %soTI", - type == IP6M_HOME_TEST_INIT ? "H" : "C"); - hlen = IP6M_MINLEN; - if (vflag) { - TCHECK2(*mh, hlen + 8); - printf(" %s Init Cookie=%08x:%08x", - type == IP6M_HOME_TEST_INIT ? "Home" : "Care-of", - EXTRACT_32BITS(&bp[hlen]), - EXTRACT_32BITS(&bp[hlen + 4])); - } - hlen += 8; - break; - case IP6M_HOME_TEST: - case IP6M_CAREOF_TEST: - printf("mobility: %soT", - type == IP6M_HOME_TEST ? "H" : "C"); - TCHECK(mh->ip6m_data16[0]); - printf(" nonce id=0x%x", EXTRACT_16BITS(&mh->ip6m_data16[0])); - hlen = IP6M_MINLEN; - if (vflag) { - TCHECK2(*mh, hlen + 8); - printf(" %s Init Cookie=%08x:%08x", - type == IP6M_HOME_TEST ? "Home" : "Care-of", - EXTRACT_32BITS(&bp[hlen]), - EXTRACT_32BITS(&bp[hlen + 4])); - } - hlen += 8; - if (vflag) { - TCHECK2(*mh, hlen + 8); - printf(" %s Keygen Token=%08x:%08x", - type == IP6M_HOME_TEST ? "Home" : "Care-of", - EXTRACT_32BITS(&bp[hlen]), - EXTRACT_32BITS(&bp[hlen + 4])); - } - hlen += 8; - break; - case IP6M_BINDING_UPDATE: - printf("mobility: BU"); - TCHECK(mh->ip6m_data16[0]); - printf(" seq#=%d", EXTRACT_16BITS(&mh->ip6m_data16[0])); - hlen = IP6M_MINLEN; - TCHECK2(*mh, hlen + 1); - if (bp[hlen] & 0xf0) - printf(" "); - if (bp[hlen] & 0x80) - printf("A"); - if (bp[hlen] & 0x40) - printf("H"); - if (bp[hlen] & 0x20) - printf("L"); - if (bp[hlen] & 0x10) - printf("K"); - /* Reserved (4bits) */ - hlen += 1; - /* Reserved (8bits) */ - hlen += 1; - TCHECK2(*mh, hlen + 2); - /* units of 4 secs */ - printf(" lifetime=%d", EXTRACT_16BITS(&bp[hlen]) << 2); - hlen += 2; - break; - case IP6M_BINDING_ACK: - printf("mobility: BA"); - TCHECK(mh->ip6m_data8[0]); - printf(" status=%d", mh->ip6m_data8[0]); - if (mh->ip6m_data8[1] & 0x80) - printf(" K"); - /* Reserved (7bits) */ - hlen = IP6M_MINLEN; - TCHECK2(*mh, hlen + 2); - printf(" seq#=%d", EXTRACT_16BITS(&bp[hlen])); - hlen += 2; - TCHECK2(*mh, hlen + 2); - /* units of 4 secs */ - printf(" lifetime=%d", EXTRACT_16BITS(&bp[hlen]) << 2); - hlen += 2; - break; - case IP6M_BINDING_ERROR: - printf("mobility: BE"); - TCHECK(mh->ip6m_data8[0]); - printf(" status=%d", mh->ip6m_data8[0]); - /* Reserved */ - hlen = IP6M_MINLEN; - TCHECK2(*mh, hlen + 16); - printf(" homeaddr %s", ip6addr_string(&bp[hlen])); - hlen += 16; - break; - default: - printf("mobility: type-#%d len=%d", type, mh->ip6m_len); - return(mhlen); - break; - } - if (vflag) - mobility_opt_print(&bp[hlen], mhlen - hlen); - - return(mhlen); - - trunc: - fputs("[|MOBILITY]", stdout); - return(mhlen); -} -#endif /* INET6 */ diff --git a/contrib/tcpdump/print-mpls.c b/contrib/tcpdump/print-mpls.c deleted file mode 100644 index 9d545677cc8cd..0000000000000 --- a/contrib/tcpdump/print-mpls.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright (C) 2001 WIDE Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-mpls.c,v 1.13.2.1 2005/07/05 09:39:29 hannes Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "addrtoname.h" -#include "interface.h" -#include "extract.h" /* must come after interface.h */ -#include "mpls.h" - -static const char *mpls_labelname[] = { -/*0*/ "IPv4 explicit NULL", "router alert", "IPv6 explicit NULL", - "implicit NULL", "rsvd", -/*5*/ "rsvd", "rsvd", "rsvd", "rsvd", "rsvd", -/*10*/ "rsvd", "rsvd", "rsvd", "rsvd", "rsvd", -/*15*/ "rsvd", -}; - -/* - * RFC3032: MPLS label stack encoding - */ -void -mpls_print(const u_char *bp, u_int length) -{ - const u_char *p; - u_int32_t label_entry; - u_int16_t label_stack_depth = 0; - - p = bp; - printf("MPLS"); - do { - TCHECK2(*p, sizeof(label_entry)); - label_entry = EXTRACT_32BITS(p); - printf("%s(label %u", - label_stack_depth ? "\n\t" : " ", - MPLS_LABEL(label_entry)); - label_stack_depth++; - if (vflag && - MPLS_LABEL(label_entry) < sizeof(mpls_labelname) / sizeof(mpls_labelname[0])) - printf(" (%s)", mpls_labelname[MPLS_LABEL(label_entry)]); - printf(", exp %u", MPLS_EXP(label_entry)); - if (MPLS_STACK(label_entry)) - printf(", [S]"); - printf(", ttl %u)", MPLS_TTL(label_entry)); - - p += sizeof(label_entry); - } while (!MPLS_STACK(label_entry)); - - switch (MPLS_LABEL(label_entry)) { - case 0: /* IPv4 explicit NULL label */ - case 3: /* IPv4 implicit NULL label */ - if (vflag>0) { - printf("\n\t"); - ip_print(gndo, p, length - (p - bp)); - } - else printf(", IP, length: %u",length); - break; -#ifdef INET6 - case 2: /* IPv6 explicit NULL label */ - if (vflag>0) { - printf("\n\t"); - ip6_print(p, length - (p - bp)); - } - else printf(", IPv6, length: %u",length); - break; -#endif - default: - /* - * Generally there's no indication of protocol in MPLS label - * encoding, however draft-hsmit-isis-aal5mux-00.txt describes - * a technique that looks at the first payload byte if the BOS (bottom of stack) - * bit is set and tries to determine the network layer protocol - * 0x45-0x4f is IPv4 - * 0x60-0x6f is IPv6 - * 0x81-0x83 is OSI (CLNP,ES-IS,IS-IS) - * this technique is sometimes known as NULL encapsulation - * and decoding is particularly useful for control-plane traffic [BGP] - * which cisco by default sends MPLS encapsulated - */ - - if (MPLS_STACK(label_entry)) { /* only do this if the stack bit is set */ - switch(*p) { - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4a: - case 0x4b: - case 0x4c: - case 0x4d: - case 0x4e: - case 0x4f: - if (vflag>0) { - printf("\n\t"); - ip_print(gndo, p, length - (p - bp)); - } - else printf(", IP, length: %u",length); - break; -#ifdef INET6 - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6a: - case 0x6b: - case 0x6c: - case 0x6d: - case 0x6e: - case 0x6f: - if (vflag>0) { - printf("\n\t"); - ip6_print(p, length - (p - bp)); - } - else printf(", IPv6, length: %u",length); - break; -#endif - case 0x81: - case 0x82: - case 0x83: - if (vflag>0) { - printf("\n\t"); - isoclns_print(p, length - (p - bp), length - (p - bp)); - } - else printf(", OSI, length: %u",length); - break; - default: - /* ok bail out - we did not figure out what it is*/ - break; - } - } - return; - } - -trunc: - printf("[|MPLS]"); -} - - -/* - * Local Variables: - * c-style: whitesmith - * c-basic-offset: 8 - * End: - */ diff --git a/contrib/tcpdump/print-msdp.c b/contrib/tcpdump/print-msdp.c deleted file mode 100644 index 3f79b68b1ac06..0000000000000 --- a/contrib/tcpdump/print-msdp.c +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2001 William C. Fenner. - * All rights reserved. - * - * 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. - * The name of William C. Fenner may not be used to endorse or - * promote products derived from this software without specific prior - * written permission. 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. - */ -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-msdp.c,v 1.7 2005/04/06 21:32:41 mcr Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <stdlib.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -#define MSDP_TYPE_MAX 7 - -void -msdp_print(const unsigned char *sp, u_int length) -{ - unsigned int type, len; - - TCHECK2(*sp, 3); - /* See if we think we're at the beginning of a compound packet */ - type = *sp; - len = EXTRACT_16BITS(sp + 1); - if (len > 1500 || len < 3 || type == 0 || type > MSDP_TYPE_MAX) - goto trunc; /* not really truncated, but still not decodable */ - (void)printf(" msdp:"); - while (length > 0) { - TCHECK2(*sp, 3); - type = *sp; - len = EXTRACT_16BITS(sp + 1); - if (len > 1400 || vflag) - printf(" [len %u]", len); - if (len < 3) - goto trunc; - sp += 3; - length -= 3; - switch (type) { - case 1: /* IPv4 Source-Active */ - case 3: /* IPv4 Source-Active Response */ - if (type == 1) - (void)printf(" SA"); - else - (void)printf(" SA-Response"); - TCHECK(*sp); - (void)printf(" %u entries", *sp); - if ((u_int)((*sp * 12) + 8) < len) { - (void)printf(" [w/data]"); - if (vflag > 1) { - (void)printf(" "); - ip_print(gndo, sp + *sp * 12 + 8 - 3, - len - (*sp * 12 + 8)); - } - } - break; - case 2: - (void)printf(" SA-Request"); - TCHECK2(*sp, 5); - (void)printf(" for %s", ipaddr_string(sp + 1)); - break; - case 4: - (void)printf(" Keepalive"); - if (len != 3) - (void)printf("[len=%d] ", len); - break; - case 5: - (void)printf(" Notification"); - break; - default: - (void)printf(" [type=%d len=%d]", type, len); - break; - } - sp += (len - 3); - length -= (len - 3); - } - return; -trunc: - (void)printf(" [|msdp]"); -} - -/* - * Local Variables: - * c-style: whitesmith - * c-basic-offset: 8 - * End: - */ diff --git a/contrib/tcpdump/print-netbios.c b/contrib/tcpdump/print-netbios.c deleted file mode 100644 index 419953cb5c637..0000000000000 --- a/contrib/tcpdump/print-netbios.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * Format and print NETBIOS packets. - * Contributed by Brad Parker (brad@fcr.com). - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-netbios.c,v 1.20 2003/11/16 09:36:29 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "netbios.h" -#include "extract.h" - -/* - * Print NETBIOS packets. - */ -void -netbios_print(struct p8022Hdr *nb, u_int length) -{ - if (length < p8022Size) { - (void)printf(" truncated-netbios %d", length); - return; - } - - if (nb->flags == UI) { - (void)printf("802.1 UI "); - } else { - (void)printf("802.1 CONN "); - } - - if ((u_char *)(nb + 1) > snapend) { - printf(" [|netbios]"); - return; - } - -/* - netbios_decode(nb, (u_char *)nb + p8022Size, length - p8022Size); -*/ -} - -#ifdef never - (void)printf("%s.%d > ", - ipxaddr_string(EXTRACT_32BITS(ipx->srcNet), ipx->srcNode), - EXTRACT_16BITS(ipx->srcSkt)); - - (void)printf("%s.%d:", - ipxaddr_string(EXTRACT_32BITS(ipx->dstNet), ipx->dstNode), - EXTRACT_16BITS(ipx->dstSkt)); - - if ((u_char *)(ipx + 1) > snapend) { - printf(" [|ipx]"); - return; - } - - /* take length from ipx header */ - length = EXTRACT_16BITS(&ipx->length); - - ipx_decode(ipx, (u_char *)ipx + ipxSize, length - ipxSize); -#endif - diff --git a/contrib/tcpdump/print-nfs.c b/contrib/tcpdump/print-nfs.c deleted file mode 100644 index a702170fc7368..0000000000000 --- a/contrib/tcpdump/print-nfs.c +++ /dev/null @@ -1,1730 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-nfs.c,v 1.106.2.2 2005/05/06 07:57:18 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <pcap.h> -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -#include "nfs.h" -#include "nfsfh.h" - -#include "ip.h" -#ifdef INET6 -#include "ip6.h" -#endif -#include "rpc_auth.h" -#include "rpc_msg.h" - -static void nfs_printfh(const u_int32_t *, const u_int); -static void xid_map_enter(const struct sunrpc_msg *, const u_char *); -static int32_t xid_map_find(const struct sunrpc_msg *, const u_char *, - u_int32_t *, u_int32_t *); -static void interp_reply(const struct sunrpc_msg *, u_int32_t, u_int32_t, int); -static const u_int32_t *parse_post_op_attr(const u_int32_t *, int); -static void print_sattr3(const struct nfsv3_sattr *sa3, int verbose); -static void print_nfsaddr(const u_char *, const char *, const char *); - -/* - * Mapping of old NFS Version 2 RPC numbers to generic numbers. - */ -u_int32_t nfsv3_procid[NFS_NPROCS] = { - NFSPROC_NULL, - NFSPROC_GETATTR, - NFSPROC_SETATTR, - NFSPROC_NOOP, - NFSPROC_LOOKUP, - NFSPROC_READLINK, - NFSPROC_READ, - NFSPROC_NOOP, - NFSPROC_WRITE, - NFSPROC_CREATE, - NFSPROC_REMOVE, - NFSPROC_RENAME, - NFSPROC_LINK, - NFSPROC_SYMLINK, - NFSPROC_MKDIR, - NFSPROC_RMDIR, - NFSPROC_READDIR, - NFSPROC_FSSTAT, - NFSPROC_NOOP, - NFSPROC_NOOP, - NFSPROC_NOOP, - NFSPROC_NOOP, - NFSPROC_NOOP, - NFSPROC_NOOP, - NFSPROC_NOOP, - NFSPROC_NOOP -}; - -/* - * NFS V2 and V3 status values. - * - * Some of these come from the RFCs for NFS V2 and V3, with the message - * strings taken from the FreeBSD C library "errlst.c". - * - * Others are errors that are not in the RFC but that I suspect some - * NFS servers could return; the values are FreeBSD errno values, as - * the first NFS server was the SunOS 2.0 one, and until 5.0 SunOS - * was primarily BSD-derived. - */ -static struct tok status2str[] = { - { 1, "Operation not permitted" }, /* EPERM */ - { 2, "No such file or directory" }, /* ENOENT */ - { 5, "Input/output error" }, /* EIO */ - { 6, "Device not configured" }, /* ENXIO */ - { 11, "Resource deadlock avoided" }, /* EDEADLK */ - { 12, "Cannot allocate memory" }, /* ENOMEM */ - { 13, "Permission denied" }, /* EACCES */ - { 17, "File exists" }, /* EEXIST */ - { 18, "Cross-device link" }, /* EXDEV */ - { 19, "Operation not supported by device" }, /* ENODEV */ - { 20, "Not a directory" }, /* ENOTDIR */ - { 21, "Is a directory" }, /* EISDIR */ - { 22, "Invalid argument" }, /* EINVAL */ - { 26, "Text file busy" }, /* ETXTBSY */ - { 27, "File too large" }, /* EFBIG */ - { 28, "No space left on device" }, /* ENOSPC */ - { 30, "Read-only file system" }, /* EROFS */ - { 31, "Too many links" }, /* EMLINK */ - { 45, "Operation not supported" }, /* EOPNOTSUPP */ - { 62, "Too many levels of symbolic links" }, /* ELOOP */ - { 63, "File name too long" }, /* ENAMETOOLONG */ - { 66, "Directory not empty" }, /* ENOTEMPTY */ - { 69, "Disc quota exceeded" }, /* EDQUOT */ - { 70, "Stale NFS file handle" }, /* ESTALE */ - { 71, "Too many levels of remote in path" }, /* EREMOTE */ - { 99, "Write cache flushed to disk" }, /* NFSERR_WFLUSH (not used) */ - { 10001, "Illegal NFS file handle" }, /* NFS3ERR_BADHANDLE */ - { 10002, "Update synchronization mismatch" }, /* NFS3ERR_NOT_SYNC */ - { 10003, "READDIR/READDIRPLUS cookie is stale" }, /* NFS3ERR_BAD_COOKIE */ - { 10004, "Operation not supported" }, /* NFS3ERR_NOTSUPP */ - { 10005, "Buffer or request is too small" }, /* NFS3ERR_TOOSMALL */ - { 10006, "Unspecified error on server" }, /* NFS3ERR_SERVERFAULT */ - { 10007, "Object of that type not supported" }, /* NFS3ERR_BADTYPE */ - { 10008, "Request couldn't be completed in time" }, /* NFS3ERR_JUKEBOX */ - { 0, NULL } -}; - -static struct tok nfsv3_writemodes[] = { - { 0, "unstable" }, - { 1, "datasync" }, - { 2, "filesync" }, - { 0, NULL } -}; - -static struct tok type2str[] = { - { NFNON, "NON" }, - { NFREG, "REG" }, - { NFDIR, "DIR" }, - { NFBLK, "BLK" }, - { NFCHR, "CHR" }, - { NFLNK, "LNK" }, - { NFFIFO, "FIFO" }, - { 0, NULL } -}; - -static void -print_nfsaddr(const u_char *bp, const char *s, const char *d) -{ - struct ip *ip; -#ifdef INET6 - struct ip6_hdr *ip6; - char srcaddr[INET6_ADDRSTRLEN], dstaddr[INET6_ADDRSTRLEN]; -#else -#ifndef INET_ADDRSTRLEN -#define INET_ADDRSTRLEN 16 -#endif - char srcaddr[INET_ADDRSTRLEN], dstaddr[INET_ADDRSTRLEN]; -#endif - - srcaddr[0] = dstaddr[0] = '\0'; - switch (IP_V((struct ip *)bp)) { - case 4: - ip = (struct ip *)bp; - strlcpy(srcaddr, ipaddr_string(&ip->ip_src), sizeof(srcaddr)); - strlcpy(dstaddr, ipaddr_string(&ip->ip_dst), sizeof(dstaddr)); - break; -#ifdef INET6 - case 6: - ip6 = (struct ip6_hdr *)bp; - strlcpy(srcaddr, ip6addr_string(&ip6->ip6_src), - sizeof(srcaddr)); - strlcpy(dstaddr, ip6addr_string(&ip6->ip6_dst), - sizeof(dstaddr)); - break; -#endif - default: - strlcpy(srcaddr, "?", sizeof(srcaddr)); - strlcpy(dstaddr, "?", sizeof(dstaddr)); - break; - } - - (void)printf("%s.%s > %s.%s: ", srcaddr, s, dstaddr, d); -} - -static const u_int32_t * -parse_sattr3(const u_int32_t *dp, struct nfsv3_sattr *sa3) -{ - TCHECK(dp[0]); - sa3->sa_modeset = EXTRACT_32BITS(dp); - dp++; - if (sa3->sa_modeset) { - TCHECK(dp[0]); - sa3->sa_mode = EXTRACT_32BITS(dp); - dp++; - } - - TCHECK(dp[0]); - sa3->sa_uidset = EXTRACT_32BITS(dp); - dp++; - if (sa3->sa_uidset) { - TCHECK(dp[0]); - sa3->sa_uid = EXTRACT_32BITS(dp); - dp++; - } - - TCHECK(dp[0]); - sa3->sa_gidset = EXTRACT_32BITS(dp); - dp++; - if (sa3->sa_gidset) { - TCHECK(dp[0]); - sa3->sa_gid = EXTRACT_32BITS(dp); - dp++; - } - - TCHECK(dp[0]); - sa3->sa_sizeset = EXTRACT_32BITS(dp); - dp++; - if (sa3->sa_sizeset) { - TCHECK(dp[0]); - sa3->sa_size = EXTRACT_32BITS(dp); - dp++; - } - - TCHECK(dp[0]); - sa3->sa_atimetype = EXTRACT_32BITS(dp); - dp++; - if (sa3->sa_atimetype == NFSV3SATTRTIME_TOCLIENT) { - TCHECK(dp[1]); - sa3->sa_atime.nfsv3_sec = EXTRACT_32BITS(dp); - dp++; - sa3->sa_atime.nfsv3_nsec = EXTRACT_32BITS(dp); - dp++; - } - - TCHECK(dp[0]); - sa3->sa_mtimetype = EXTRACT_32BITS(dp); - dp++; - if (sa3->sa_mtimetype == NFSV3SATTRTIME_TOCLIENT) { - TCHECK(dp[1]); - sa3->sa_mtime.nfsv3_sec = EXTRACT_32BITS(dp); - dp++; - sa3->sa_mtime.nfsv3_nsec = EXTRACT_32BITS(dp); - dp++; - } - - return dp; -trunc: - return NULL; -} - -static int nfserr; /* true if we error rather than trunc */ - -static void -print_sattr3(const struct nfsv3_sattr *sa3, int verbose) -{ - if (sa3->sa_modeset) - printf(" mode %o", sa3->sa_mode); - if (sa3->sa_uidset) - printf(" uid %u", sa3->sa_uid); - if (sa3->sa_gidset) - printf(" gid %u", sa3->sa_gid); - if (verbose > 1) { - if (sa3->sa_atimetype == NFSV3SATTRTIME_TOCLIENT) - printf(" atime %u.%06u", sa3->sa_atime.nfsv3_sec, - sa3->sa_atime.nfsv3_nsec); - if (sa3->sa_mtimetype == NFSV3SATTRTIME_TOCLIENT) - printf(" mtime %u.%06u", sa3->sa_mtime.nfsv3_sec, - sa3->sa_mtime.nfsv3_nsec); - } -} - -void -nfsreply_print(register const u_char *bp, u_int length, - register const u_char *bp2) -{ - register const struct sunrpc_msg *rp; - u_int32_t proc, vers; - char srcid[20], dstid[20]; /*fits 32bit*/ - - nfserr = 0; /* assume no error */ - rp = (const struct sunrpc_msg *)bp; - - if (!nflag) { - strlcpy(srcid, "nfs", sizeof(srcid)); - snprintf(dstid, sizeof(dstid), "%u", - EXTRACT_32BITS(&rp->rm_xid)); - } else { - snprintf(srcid, sizeof(srcid), "%u", NFS_PORT); - snprintf(dstid, sizeof(dstid), "%u", - EXTRACT_32BITS(&rp->rm_xid)); - } - print_nfsaddr(bp2, srcid, dstid); - (void)printf("reply %s %d", - EXTRACT_32BITS(&rp->rm_reply.rp_stat) == SUNRPC_MSG_ACCEPTED? - "ok":"ERR", - length); - - if (xid_map_find(rp, bp2, &proc, &vers) >= 0) - interp_reply(rp, proc, vers, length); -} - -/* - * Return a pointer to the first file handle in the packet. - * If the packet was truncated, return 0. - */ -static const u_int32_t * -parsereq(register const struct sunrpc_msg *rp, register u_int length) -{ - register const u_int32_t *dp; - register u_int len; - - /* - * find the start of the req data (if we captured it) - */ - dp = (u_int32_t *)&rp->rm_call.cb_cred; - TCHECK(dp[1]); - len = EXTRACT_32BITS(&dp[1]); - if (len < length) { - dp += (len + (2 * sizeof(*dp) + 3)) / sizeof(*dp); - TCHECK(dp[1]); - len = EXTRACT_32BITS(&dp[1]); - if (len < length) { - dp += (len + (2 * sizeof(*dp) + 3)) / sizeof(*dp); - TCHECK2(dp[0], 0); - return (dp); - } - } -trunc: - return (NULL); -} - -/* - * Print out an NFS file handle and return a pointer to following word. - * If packet was truncated, return 0. - */ -static const u_int32_t * -parsefh(register const u_int32_t *dp, int v3) -{ - u_int len; - - if (v3) { - TCHECK(dp[0]); - len = EXTRACT_32BITS(dp) / 4; - dp++; - } else - len = NFSX_V2FH / 4; - - if (TTEST2(*dp, len * sizeof(*dp))) { - nfs_printfh(dp, len); - return (dp + len); - } -trunc: - return (NULL); -} - -/* - * Print out a file name and return pointer to 32-bit word past it. - * If packet was truncated, return 0. - */ -static const u_int32_t * -parsefn(register const u_int32_t *dp) -{ - register u_int32_t len; - register const u_char *cp; - - /* Bail if we don't have the string length */ - TCHECK(*dp); - - /* Fetch string length; convert to host order */ - len = *dp++; - NTOHL(len); - - TCHECK2(*dp, ((len + 3) & ~3)); - - cp = (u_char *)dp; - /* Update 32-bit pointer (NFS filenames padded to 32-bit boundaries) */ - dp += ((len + 3) & ~3) / sizeof(*dp); - putchar('"'); - if (fn_printn(cp, len, snapend)) { - putchar('"'); - goto trunc; - } - putchar('"'); - - return (dp); -trunc: - return NULL; -} - -/* - * Print out file handle and file name. - * Return pointer to 32-bit word past file name. - * If packet was truncated (or there was some other error), return 0. - */ -static const u_int32_t * -parsefhn(register const u_int32_t *dp, int v3) -{ - dp = parsefh(dp, v3); - if (dp == NULL) - return (NULL); - putchar(' '); - return (parsefn(dp)); -} - -void -nfsreq_print(register const u_char *bp, u_int length, - register const u_char *bp2) -{ - register const struct sunrpc_msg *rp; - register const u_int32_t *dp; - nfs_type type; - int v3; - u_int32_t proc; - struct nfsv3_sattr sa3; - char srcid[20], dstid[20]; /*fits 32bit*/ - - nfserr = 0; /* assume no error */ - rp = (const struct sunrpc_msg *)bp; - if (!nflag) { - snprintf(srcid, sizeof(srcid), "%u", - EXTRACT_32BITS(&rp->rm_xid)); - strlcpy(dstid, "nfs", sizeof(dstid)); - } else { - snprintf(srcid, sizeof(srcid), "%u", - EXTRACT_32BITS(&rp->rm_xid)); - snprintf(dstid, sizeof(dstid), "%u", NFS_PORT); - } - print_nfsaddr(bp2, srcid, dstid); - (void)printf("%d", length); - - xid_map_enter(rp, bp2); /* record proc number for later on */ - - v3 = (EXTRACT_32BITS(&rp->rm_call.cb_vers) == NFS_VER3); - proc = EXTRACT_32BITS(&rp->rm_call.cb_proc); - - if (!v3 && proc < NFS_NPROCS) - proc = nfsv3_procid[proc]; - - switch (proc) { - case NFSPROC_NOOP: - printf(" nop"); - return; - case NFSPROC_NULL: - printf(" null"); - return; - - case NFSPROC_GETATTR: - printf(" getattr"); - if ((dp = parsereq(rp, length)) != NULL && - parsefh(dp, v3) != NULL) - return; - break; - - case NFSPROC_SETATTR: - printf(" setattr"); - if ((dp = parsereq(rp, length)) != NULL && - parsefh(dp, v3) != NULL) - return; - break; - - case NFSPROC_LOOKUP: - printf(" lookup"); - if ((dp = parsereq(rp, length)) != NULL && - parsefhn(dp, v3) != NULL) - return; - break; - - case NFSPROC_ACCESS: - printf(" access"); - if ((dp = parsereq(rp, length)) != NULL && - (dp = parsefh(dp, v3)) != NULL) { - TCHECK(dp[0]); - printf(" %04x", EXTRACT_32BITS(&dp[0])); - return; - } - break; - - case NFSPROC_READLINK: - printf(" readlink"); - if ((dp = parsereq(rp, length)) != NULL && - parsefh(dp, v3) != NULL) - return; - break; - - case NFSPROC_READ: - printf(" read"); - if ((dp = parsereq(rp, length)) != NULL && - (dp = parsefh(dp, v3)) != NULL) { - if (v3) { - TCHECK(dp[2]); - printf(" %u bytes @ %" PRIu64, - EXTRACT_32BITS(&dp[2]), - EXTRACT_64BITS(&dp[0])); - } else { - TCHECK(dp[1]); - printf(" %u bytes @ %u", - EXTRACT_32BITS(&dp[1]), - EXTRACT_32BITS(&dp[0])); - } - return; - } - break; - - case NFSPROC_WRITE: - printf(" write"); - if ((dp = parsereq(rp, length)) != NULL && - (dp = parsefh(dp, v3)) != NULL) { - if (v3) { - TCHECK(dp[2]); - printf(" %u (%u) bytes @ %" PRIu64, - EXTRACT_32BITS(&dp[4]), - EXTRACT_32BITS(&dp[2]), - EXTRACT_64BITS(&dp[0])); - if (vflag) { - dp += 3; - TCHECK(dp[0]); - printf(" <%s>", - tok2str(nfsv3_writemodes, - NULL, EXTRACT_32BITS(dp))); - } - } else { - TCHECK(dp[3]); - printf(" %u (%u) bytes @ %u (%u)", - EXTRACT_32BITS(&dp[3]), - EXTRACT_32BITS(&dp[2]), - EXTRACT_32BITS(&dp[1]), - EXTRACT_32BITS(&dp[0])); - } - return; - } - break; - - case NFSPROC_CREATE: - printf(" create"); - if ((dp = parsereq(rp, length)) != NULL && - parsefhn(dp, v3) != NULL) - return; - break; - - case NFSPROC_MKDIR: - printf(" mkdir"); - if ((dp = parsereq(rp, length)) != 0 && parsefhn(dp, v3) != 0) - return; - break; - - case NFSPROC_SYMLINK: - printf(" symlink"); - if ((dp = parsereq(rp, length)) != 0 && - (dp = parsefhn(dp, v3)) != 0) { - fputs(" ->", stdout); - if (v3 && (dp = parse_sattr3(dp, &sa3)) == 0) - break; - if (parsefn(dp) == 0) - break; - if (v3 && vflag) - print_sattr3(&sa3, vflag); - return; - } - break; - - case NFSPROC_MKNOD: - printf(" mknod"); - if ((dp = parsereq(rp, length)) != 0 && - (dp = parsefhn(dp, v3)) != 0) { - TCHECK(*dp); - type = (nfs_type)EXTRACT_32BITS(dp); - dp++; - if ((dp = parse_sattr3(dp, &sa3)) == 0) - break; - printf(" %s", tok2str(type2str, "unk-ft %d", type)); - if (vflag && (type == NFCHR || type == NFBLK)) { - TCHECK(dp[1]); - printf(" %u/%u", - EXTRACT_32BITS(&dp[0]), - EXTRACT_32BITS(&dp[1])); - dp += 2; - } - if (vflag) - print_sattr3(&sa3, vflag); - return; - } - break; - - case NFSPROC_REMOVE: - printf(" remove"); - if ((dp = parsereq(rp, length)) != NULL && - parsefhn(dp, v3) != NULL) - return; - break; - - case NFSPROC_RMDIR: - printf(" rmdir"); - if ((dp = parsereq(rp, length)) != NULL && - parsefhn(dp, v3) != NULL) - return; - break; - - case NFSPROC_RENAME: - printf(" rename"); - if ((dp = parsereq(rp, length)) != NULL && - (dp = parsefhn(dp, v3)) != NULL) { - fputs(" ->", stdout); - if (parsefhn(dp, v3) != NULL) - return; - } - break; - - case NFSPROC_LINK: - printf(" link"); - if ((dp = parsereq(rp, length)) != NULL && - (dp = parsefh(dp, v3)) != NULL) { - fputs(" ->", stdout); - if (parsefhn(dp, v3) != NULL) - return; - } - break; - - case NFSPROC_READDIR: - printf(" readdir"); - if ((dp = parsereq(rp, length)) != NULL && - (dp = parsefh(dp, v3)) != NULL) { - if (v3) { - TCHECK(dp[4]); - /* - * We shouldn't really try to interpret the - * offset cookie here. - */ - printf(" %u bytes @ %" PRId64, - EXTRACT_32BITS(&dp[4]), - EXTRACT_64BITS(&dp[0])); - if (vflag) - printf(" verf %08x%08x", dp[2], - dp[3]); - } else { - TCHECK(dp[1]); - /* - * Print the offset as signed, since -1 is - * common, but offsets > 2^31 aren't. - */ - printf(" %u bytes @ %d", - EXTRACT_32BITS(&dp[1]), - EXTRACT_32BITS(&dp[0])); - } - return; - } - break; - - case NFSPROC_READDIRPLUS: - printf(" readdirplus"); - if ((dp = parsereq(rp, length)) != NULL && - (dp = parsefh(dp, v3)) != NULL) { - TCHECK(dp[4]); - /* - * We don't try to interpret the offset - * cookie here. - */ - printf(" %u bytes @ %" PRId64, - EXTRACT_32BITS(&dp[4]), - EXTRACT_64BITS(&dp[0])); - if (vflag) { - TCHECK(dp[5]); - printf(" max %u verf %08x%08x", - EXTRACT_32BITS(&dp[5]), dp[2], dp[3]); - } - return; - } - break; - - case NFSPROC_FSSTAT: - printf(" fsstat"); - if ((dp = parsereq(rp, length)) != NULL && - parsefh(dp, v3) != NULL) - return; - break; - - case NFSPROC_FSINFO: - printf(" fsinfo"); - if ((dp = parsereq(rp, length)) != NULL && - parsefh(dp, v3) != NULL) - return; - break; - - case NFSPROC_PATHCONF: - printf(" pathconf"); - if ((dp = parsereq(rp, length)) != NULL && - parsefh(dp, v3) != NULL) - return; - break; - - case NFSPROC_COMMIT: - printf(" commit"); - if ((dp = parsereq(rp, length)) != NULL && - (dp = parsefh(dp, v3)) != NULL) { - TCHECK(dp[2]); - printf(" %u bytes @ %" PRIu64, - EXTRACT_32BITS(&dp[2]), - EXTRACT_64BITS(&dp[0])); - return; - } - break; - - default: - printf(" proc-%u", EXTRACT_32BITS(&rp->rm_call.cb_proc)); - return; - } - -trunc: - if (!nfserr) - fputs(" [|nfs]", stdout); -} - -/* - * Print out an NFS file handle. - * We assume packet was not truncated before the end of the - * file handle pointed to by dp. - * - * Note: new version (using portable file-handle parser) doesn't produce - * generation number. It probably could be made to do that, with some - * additional hacking on the parser code. - */ -static void -nfs_printfh(register const u_int32_t *dp, const u_int len) -{ - my_fsid fsid; - ino_t ino; - const char *sfsname = NULL; - char *spacep; - - if (uflag) { - u_int i; - char const *sep = ""; - - printf(" fh["); - for (i=0; i<len; i++) { - (void)printf("%s%x", sep, dp[i]); - sep = ":"; - } - printf("]"); - return; - } - - Parse_fh((const u_char *)dp, len, &fsid, &ino, NULL, &sfsname, 0); - - if (sfsname) { - /* file system ID is ASCII, not numeric, for this server OS */ - static char temp[NFSX_V3FHMAX+1]; - - /* Make sure string is null-terminated */ - strncpy(temp, sfsname, NFSX_V3FHMAX); - temp[sizeof(temp) - 1] = '\0'; - /* Remove trailing spaces */ - spacep = strchr(temp, ' '); - if (spacep) - *spacep = '\0'; - - (void)printf(" fh %s/", temp); - } else { - (void)printf(" fh %d,%d/", - fsid.Fsid_dev.Major, fsid.Fsid_dev.Minor); - } - - if(fsid.Fsid_dev.Minor == 257) - /* Print the undecoded handle */ - (void)printf("%s", fsid.Opaque_Handle); - else - (void)printf("%ld", (long) ino); -} - -/* - * Maintain a small cache of recent client.XID.server/proc pairs, to allow - * us to match up replies with requests and thus to know how to parse - * the reply. - */ - -struct xid_map_entry { - u_int32_t xid; /* transaction ID (net order) */ - int ipver; /* IP version (4 or 6) */ -#ifdef INET6 - struct in6_addr client; /* client IP address (net order) */ - struct in6_addr server; /* server IP address (net order) */ -#else - struct in_addr client; /* client IP address (net order) */ - struct in_addr server; /* server IP address (net order) */ -#endif - u_int32_t proc; /* call proc number (host order) */ - u_int32_t vers; /* program version (host order) */ -}; - -/* - * Map entries are kept in an array that we manage as a ring; - * new entries are always added at the tail of the ring. Initially, - * all the entries are zero and hence don't match anything. - */ - -#define XIDMAPSIZE 64 - -struct xid_map_entry xid_map[XIDMAPSIZE]; - -int xid_map_next = 0; -int xid_map_hint = 0; - -static void -xid_map_enter(const struct sunrpc_msg *rp, const u_char *bp) -{ - struct ip *ip = NULL; -#ifdef INET6 - struct ip6_hdr *ip6 = NULL; -#endif - struct xid_map_entry *xmep; - - switch (IP_V((struct ip *)bp)) { - case 4: - ip = (struct ip *)bp; - break; -#ifdef INET6 - case 6: - ip6 = (struct ip6_hdr *)bp; - break; -#endif - default: - return; - } - - xmep = &xid_map[xid_map_next]; - - if (++xid_map_next >= XIDMAPSIZE) - xid_map_next = 0; - - xmep->xid = rp->rm_xid; - if (ip) { - xmep->ipver = 4; - memcpy(&xmep->client, &ip->ip_src, sizeof(ip->ip_src)); - memcpy(&xmep->server, &ip->ip_dst, sizeof(ip->ip_dst)); - } -#ifdef INET6 - else if (ip6) { - xmep->ipver = 6; - memcpy(&xmep->client, &ip6->ip6_src, sizeof(ip6->ip6_src)); - memcpy(&xmep->server, &ip6->ip6_dst, sizeof(ip6->ip6_dst)); - } -#endif - xmep->proc = EXTRACT_32BITS(&rp->rm_call.cb_proc); - xmep->vers = EXTRACT_32BITS(&rp->rm_call.cb_vers); -} - -/* - * Returns 0 and puts NFSPROC_xxx in proc return and - * version in vers return, or returns -1 on failure - */ -static int -xid_map_find(const struct sunrpc_msg *rp, const u_char *bp, u_int32_t *proc, - u_int32_t *vers) -{ - int i; - struct xid_map_entry *xmep; - u_int32_t xid = rp->rm_xid; - struct ip *ip = (struct ip *)bp; -#ifdef INET6 - struct ip6_hdr *ip6 = (struct ip6_hdr *)bp; -#endif - int cmp; - - /* Start searching from where we last left off */ - i = xid_map_hint; - do { - xmep = &xid_map[i]; - cmp = 1; - if (xmep->ipver != IP_V(ip) || xmep->xid != xid) - goto nextitem; - switch (xmep->ipver) { - case 4: - if (memcmp(&ip->ip_src, &xmep->server, - sizeof(ip->ip_src)) != 0 || - memcmp(&ip->ip_dst, &xmep->client, - sizeof(ip->ip_dst)) != 0) { - cmp = 0; - } - break; -#ifdef INET6 - case 6: - if (memcmp(&ip6->ip6_src, &xmep->server, - sizeof(ip6->ip6_src)) != 0 || - memcmp(&ip6->ip6_dst, &xmep->client, - sizeof(ip6->ip6_dst)) != 0) { - cmp = 0; - } - break; -#endif - default: - cmp = 0; - break; - } - if (cmp) { - /* match */ - xid_map_hint = i; - *proc = xmep->proc; - *vers = xmep->vers; - return 0; - } - nextitem: - if (++i >= XIDMAPSIZE) - i = 0; - } while (i != xid_map_hint); - - /* search failed */ - return (-1); -} - -/* - * Routines for parsing reply packets - */ - -/* - * Return a pointer to the beginning of the actual results. - * If the packet was truncated, return 0. - */ -static const u_int32_t * -parserep(register const struct sunrpc_msg *rp, register u_int length) -{ - register const u_int32_t *dp; - u_int len; - enum sunrpc_accept_stat astat; - - /* - * Portability note: - * Here we find the address of the ar_verf credentials. - * Originally, this calculation was - * dp = (u_int32_t *)&rp->rm_reply.rp_acpt.ar_verf - * On the wire, the rp_acpt field starts immediately after - * the (32 bit) rp_stat field. However, rp_acpt (which is a - * "struct accepted_reply") contains a "struct opaque_auth", - * whose internal representation contains a pointer, so on a - * 64-bit machine the compiler inserts 32 bits of padding - * before rp->rm_reply.rp_acpt.ar_verf. So, we cannot use - * the internal representation to parse the on-the-wire - * representation. Instead, we skip past the rp_stat field, - * which is an "enum" and so occupies one 32-bit word. - */ - dp = ((const u_int32_t *)&rp->rm_reply) + 1; - TCHECK(dp[1]); - len = EXTRACT_32BITS(&dp[1]); - if (len >= length) - return (NULL); - /* - * skip past the ar_verf credentials. - */ - dp += (len + (2*sizeof(u_int32_t) + 3)) / sizeof(u_int32_t); - TCHECK2(dp[0], 0); - - /* - * now we can check the ar_stat field - */ - astat = (enum sunrpc_accept_stat) EXTRACT_32BITS(dp); - switch (astat) { - - case SUNRPC_SUCCESS: - break; - - case SUNRPC_PROG_UNAVAIL: - printf(" PROG_UNAVAIL"); - nfserr = 1; /* suppress trunc string */ - return (NULL); - - case SUNRPC_PROG_MISMATCH: - printf(" PROG_MISMATCH"); - nfserr = 1; /* suppress trunc string */ - return (NULL); - - case SUNRPC_PROC_UNAVAIL: - printf(" PROC_UNAVAIL"); - nfserr = 1; /* suppress trunc string */ - return (NULL); - - case SUNRPC_GARBAGE_ARGS: - printf(" GARBAGE_ARGS"); - nfserr = 1; /* suppress trunc string */ - return (NULL); - - case SUNRPC_SYSTEM_ERR: - printf(" SYSTEM_ERR"); - nfserr = 1; /* suppress trunc string */ - return (NULL); - - default: - printf(" ar_stat %d", astat); - nfserr = 1; /* suppress trunc string */ - return (NULL); - } - /* successful return */ - TCHECK2(*dp, sizeof(astat)); - return ((u_int32_t *) (sizeof(astat) + ((char *)dp))); -trunc: - return (0); -} - -static const u_int32_t * -parsestatus(const u_int32_t *dp, int *er) -{ - int errnum; - - TCHECK(dp[0]); - - errnum = EXTRACT_32BITS(&dp[0]); - if (er) - *er = errnum; - if (errnum != 0) { - if (!qflag) - printf(" ERROR: %s", - tok2str(status2str, "unk %d", errnum)); - nfserr = 1; - } - return (dp + 1); -trunc: - return NULL; -} - -static const u_int32_t * -parsefattr(const u_int32_t *dp, int verbose, int v3) -{ - const struct nfs_fattr *fap; - - fap = (const struct nfs_fattr *)dp; - TCHECK(fap->fa_gid); - if (verbose) { - printf(" %s %o ids %d/%d", - tok2str(type2str, "unk-ft %d ", - EXTRACT_32BITS(&fap->fa_type)), - EXTRACT_32BITS(&fap->fa_mode), - EXTRACT_32BITS(&fap->fa_uid), - EXTRACT_32BITS(&fap->fa_gid)); - if (v3) { - TCHECK(fap->fa3_size); - printf(" sz %" PRIu64, - EXTRACT_64BITS((u_int32_t *)&fap->fa3_size)); - } else { - TCHECK(fap->fa2_size); - printf(" sz %d", EXTRACT_32BITS(&fap->fa2_size)); - } - } - /* print lots more stuff */ - if (verbose > 1) { - if (v3) { - TCHECK(fap->fa3_ctime); - printf(" nlink %d rdev %d/%d", - EXTRACT_32BITS(&fap->fa_nlink), - EXTRACT_32BITS(&fap->fa3_rdev.specdata1), - EXTRACT_32BITS(&fap->fa3_rdev.specdata2)); - printf(" fsid %" PRIx64, - EXTRACT_64BITS((u_int32_t *)&fap->fa3_fsid)); - printf(" fileid %" PRIx64, - EXTRACT_64BITS((u_int32_t *)&fap->fa3_fileid)); - printf(" a/m/ctime %u.%06u", - EXTRACT_32BITS(&fap->fa3_atime.nfsv3_sec), - EXTRACT_32BITS(&fap->fa3_atime.nfsv3_nsec)); - printf(" %u.%06u", - EXTRACT_32BITS(&fap->fa3_mtime.nfsv3_sec), - EXTRACT_32BITS(&fap->fa3_mtime.nfsv3_nsec)); - printf(" %u.%06u", - EXTRACT_32BITS(&fap->fa3_ctime.nfsv3_sec), - EXTRACT_32BITS(&fap->fa3_ctime.nfsv3_nsec)); - } else { - TCHECK(fap->fa2_ctime); - printf(" nlink %d rdev %x fsid %x nodeid %x a/m/ctime", - EXTRACT_32BITS(&fap->fa_nlink), - EXTRACT_32BITS(&fap->fa2_rdev), - EXTRACT_32BITS(&fap->fa2_fsid), - EXTRACT_32BITS(&fap->fa2_fileid)); - printf(" %u.%06u", - EXTRACT_32BITS(&fap->fa2_atime.nfsv2_sec), - EXTRACT_32BITS(&fap->fa2_atime.nfsv2_usec)); - printf(" %u.%06u", - EXTRACT_32BITS(&fap->fa2_mtime.nfsv2_sec), - EXTRACT_32BITS(&fap->fa2_mtime.nfsv2_usec)); - printf(" %u.%06u", - EXTRACT_32BITS(&fap->fa2_ctime.nfsv2_sec), - EXTRACT_32BITS(&fap->fa2_ctime.nfsv2_usec)); - } - } - return ((const u_int32_t *)((unsigned char *)dp + - (v3 ? NFSX_V3FATTR : NFSX_V2FATTR))); -trunc: - return (NULL); -} - -static int -parseattrstat(const u_int32_t *dp, int verbose, int v3) -{ - int er; - - dp = parsestatus(dp, &er); - if (dp == NULL) - return (0); - if (er) - return (1); - - return (parsefattr(dp, verbose, v3) != NULL); -} - -static int -parsediropres(const u_int32_t *dp) -{ - int er; - - if (!(dp = parsestatus(dp, &er))) - return (0); - if (er) - return (1); - - dp = parsefh(dp, 0); - if (dp == NULL) - return (0); - - return (parsefattr(dp, vflag, 0) != NULL); -} - -static int -parselinkres(const u_int32_t *dp, int v3) -{ - int er; - - dp = parsestatus(dp, &er); - if (dp == NULL) - return(0); - if (er) - return(1); - if (v3 && !(dp = parse_post_op_attr(dp, vflag))) - return (0); - putchar(' '); - return (parsefn(dp) != NULL); -} - -static int -parsestatfs(const u_int32_t *dp, int v3) -{ - const struct nfs_statfs *sfsp; - int er; - - dp = parsestatus(dp, &er); - if (dp == NULL) - return (0); - if (!v3 && er) - return (1); - - if (qflag) - return(1); - - if (v3) { - if (vflag) - printf(" POST:"); - if (!(dp = parse_post_op_attr(dp, vflag))) - return (0); - } - - TCHECK2(*dp, (v3 ? NFSX_V3STATFS : NFSX_V2STATFS)); - - sfsp = (const struct nfs_statfs *)dp; - - if (v3) { - printf(" tbytes %" PRIu64 " fbytes %" PRIu64 " abytes %" PRIu64, - EXTRACT_64BITS((u_int32_t *)&sfsp->sf_tbytes), - EXTRACT_64BITS((u_int32_t *)&sfsp->sf_fbytes), - EXTRACT_64BITS((u_int32_t *)&sfsp->sf_abytes)); - if (vflag) { - printf(" tfiles %" PRIu64 " ffiles %" PRIu64 " afiles %" PRIu64 " invar %u", - EXTRACT_64BITS((u_int32_t *)&sfsp->sf_tfiles), - EXTRACT_64BITS((u_int32_t *)&sfsp->sf_ffiles), - EXTRACT_64BITS((u_int32_t *)&sfsp->sf_afiles), - EXTRACT_32BITS(&sfsp->sf_invarsec)); - } - } else { - printf(" tsize %d bsize %d blocks %d bfree %d bavail %d", - EXTRACT_32BITS(&sfsp->sf_tsize), - EXTRACT_32BITS(&sfsp->sf_bsize), - EXTRACT_32BITS(&sfsp->sf_blocks), - EXTRACT_32BITS(&sfsp->sf_bfree), - EXTRACT_32BITS(&sfsp->sf_bavail)); - } - - return (1); -trunc: - return (0); -} - -static int -parserddires(const u_int32_t *dp) -{ - int er; - - dp = parsestatus(dp, &er); - if (dp == NULL) - return (0); - if (er) - return (1); - if (qflag) - return (1); - - TCHECK(dp[2]); - printf(" offset %x size %d ", - EXTRACT_32BITS(&dp[0]), EXTRACT_32BITS(&dp[1])); - if (dp[2] != 0) - printf(" eof"); - - return (1); -trunc: - return (0); -} - -static const u_int32_t * -parse_wcc_attr(const u_int32_t *dp) -{ - printf(" sz %" PRIu64, EXTRACT_64BITS(&dp[0])); - printf(" mtime %u.%06u ctime %u.%06u", - EXTRACT_32BITS(&dp[2]), EXTRACT_32BITS(&dp[3]), - EXTRACT_32BITS(&dp[4]), EXTRACT_32BITS(&dp[5])); - return (dp + 6); -} - -/* - * Pre operation attributes. Print only if vflag > 1. - */ -static const u_int32_t * -parse_pre_op_attr(const u_int32_t *dp, int verbose) -{ - TCHECK(dp[0]); - if (!EXTRACT_32BITS(&dp[0])) - return (dp + 1); - dp++; - TCHECK2(*dp, 24); - if (verbose > 1) { - return parse_wcc_attr(dp); - } else { - /* If not verbose enough, just skip over wcc_attr */ - return (dp + 6); - } -trunc: - return (NULL); -} - -/* - * Post operation attributes are printed if vflag >= 1 - */ -static const u_int32_t * -parse_post_op_attr(const u_int32_t *dp, int verbose) -{ - TCHECK(dp[0]); - if (!EXTRACT_32BITS(&dp[0])) - return (dp + 1); - dp++; - if (verbose) { - return parsefattr(dp, verbose, 1); - } else - return (dp + (NFSX_V3FATTR / sizeof (u_int32_t))); -trunc: - return (NULL); -} - -static const u_int32_t * -parse_wcc_data(const u_int32_t *dp, int verbose) -{ - if (verbose > 1) - printf(" PRE:"); - if (!(dp = parse_pre_op_attr(dp, verbose))) - return (0); - - if (verbose) - printf(" POST:"); - return parse_post_op_attr(dp, verbose); -} - -static const u_int32_t * -parsecreateopres(const u_int32_t *dp, int verbose) -{ - int er; - - if (!(dp = parsestatus(dp, &er))) - return (0); - if (er) - dp = parse_wcc_data(dp, verbose); - else { - TCHECK(dp[0]); - if (!EXTRACT_32BITS(&dp[0])) - return (dp + 1); - dp++; - if (!(dp = parsefh(dp, 1))) - return (0); - if (verbose) { - if (!(dp = parse_post_op_attr(dp, verbose))) - return (0); - if (vflag > 1) { - printf(" dir attr:"); - dp = parse_wcc_data(dp, verbose); - } - } - } - return (dp); -trunc: - return (NULL); -} - -static int -parsewccres(const u_int32_t *dp, int verbose) -{ - int er; - - if (!(dp = parsestatus(dp, &er))) - return (0); - return parse_wcc_data(dp, verbose) != 0; -} - -static const u_int32_t * -parsev3rddirres(const u_int32_t *dp, int verbose) -{ - int er; - - if (!(dp = parsestatus(dp, &er))) - return (0); - if (vflag) - printf(" POST:"); - if (!(dp = parse_post_op_attr(dp, verbose))) - return (0); - if (er) - return dp; - if (vflag) { - TCHECK(dp[1]); - printf(" verf %08x%08x", dp[0], dp[1]); - dp += 2; - } - return dp; -trunc: - return (NULL); -} - -static int -parsefsinfo(const u_int32_t *dp) -{ - struct nfsv3_fsinfo *sfp; - int er; - - if (!(dp = parsestatus(dp, &er))) - return (0); - if (vflag) - printf(" POST:"); - if (!(dp = parse_post_op_attr(dp, vflag))) - return (0); - if (er) - return (1); - - sfp = (struct nfsv3_fsinfo *)dp; - TCHECK(*sfp); - printf(" rtmax %u rtpref %u wtmax %u wtpref %u dtpref %u", - EXTRACT_32BITS(&sfp->fs_rtmax), - EXTRACT_32BITS(&sfp->fs_rtpref), - EXTRACT_32BITS(&sfp->fs_wtmax), - EXTRACT_32BITS(&sfp->fs_wtpref), - EXTRACT_32BITS(&sfp->fs_dtpref)); - if (vflag) { - printf(" rtmult %u wtmult %u maxfsz %" PRIu64, - EXTRACT_32BITS(&sfp->fs_rtmult), - EXTRACT_32BITS(&sfp->fs_wtmult), - EXTRACT_64BITS((u_int32_t *)&sfp->fs_maxfilesize)); - printf(" delta %u.%06u ", - EXTRACT_32BITS(&sfp->fs_timedelta.nfsv3_sec), - EXTRACT_32BITS(&sfp->fs_timedelta.nfsv3_nsec)); - } - return (1); -trunc: - return (0); -} - -static int -parsepathconf(const u_int32_t *dp) -{ - int er; - struct nfsv3_pathconf *spp; - - if (!(dp = parsestatus(dp, &er))) - return (0); - if (vflag) - printf(" POST:"); - if (!(dp = parse_post_op_attr(dp, vflag))) - return (0); - if (er) - return (1); - - spp = (struct nfsv3_pathconf *)dp; - TCHECK(*spp); - - printf(" linkmax %u namemax %u %s %s %s %s", - EXTRACT_32BITS(&spp->pc_linkmax), - EXTRACT_32BITS(&spp->pc_namemax), - EXTRACT_32BITS(&spp->pc_notrunc) ? "notrunc" : "", - EXTRACT_32BITS(&spp->pc_chownrestricted) ? "chownres" : "", - EXTRACT_32BITS(&spp->pc_caseinsensitive) ? "igncase" : "", - EXTRACT_32BITS(&spp->pc_casepreserving) ? "keepcase" : ""); - return (1); -trunc: - return (0); -} - -static void -interp_reply(const struct sunrpc_msg *rp, u_int32_t proc, u_int32_t vers, int length) -{ - register const u_int32_t *dp; - register int v3; - int er; - - v3 = (vers == NFS_VER3); - - if (!v3 && proc < NFS_NPROCS) - proc = nfsv3_procid[proc]; - - switch (proc) { - - case NFSPROC_NOOP: - printf(" nop"); - return; - - case NFSPROC_NULL: - printf(" null"); - return; - - case NFSPROC_GETATTR: - printf(" getattr"); - dp = parserep(rp, length); - if (dp != NULL && parseattrstat(dp, !qflag, v3) != 0) - return; - break; - - case NFSPROC_SETATTR: - printf(" setattr"); - if (!(dp = parserep(rp, length))) - return; - if (v3) { - if (parsewccres(dp, vflag)) - return; - } else { - if (parseattrstat(dp, !qflag, 0) != 0) - return; - } - break; - - case NFSPROC_LOOKUP: - printf(" lookup"); - if (!(dp = parserep(rp, length))) - break; - if (v3) { - if (!(dp = parsestatus(dp, &er))) - break; - if (er) { - if (vflag > 1) { - printf(" post dattr:"); - dp = parse_post_op_attr(dp, vflag); - } - } else { - if (!(dp = parsefh(dp, v3))) - break; - if ((dp = parse_post_op_attr(dp, vflag)) && - vflag > 1) { - printf(" post dattr:"); - dp = parse_post_op_attr(dp, vflag); - } - } - if (dp) - return; - } else { - if (parsediropres(dp) != 0) - return; - } - break; - - case NFSPROC_ACCESS: - printf(" access"); - if (!(dp = parserep(rp, length))) - break; - if (!(dp = parsestatus(dp, &er))) - break; - if (vflag) - printf(" attr:"); - if (!(dp = parse_post_op_attr(dp, vflag))) - break; - if (!er) - printf(" c %04x", EXTRACT_32BITS(&dp[0])); - return; - - case NFSPROC_READLINK: - printf(" readlink"); - dp = parserep(rp, length); - if (dp != NULL && parselinkres(dp, v3) != 0) - return; - break; - - case NFSPROC_READ: - printf(" read"); - if (!(dp = parserep(rp, length))) - break; - if (v3) { - if (!(dp = parsestatus(dp, &er))) - break; - if (!(dp = parse_post_op_attr(dp, vflag))) - break; - if (er) - return; - if (vflag) { - TCHECK(dp[1]); - printf(" %u bytes", EXTRACT_32BITS(&dp[0])); - if (EXTRACT_32BITS(&dp[1])) - printf(" EOF"); - } - return; - } else { - if (parseattrstat(dp, vflag, 0) != 0) - return; - } - break; - - case NFSPROC_WRITE: - printf(" write"); - if (!(dp = parserep(rp, length))) - break; - if (v3) { - if (!(dp = parsestatus(dp, &er))) - break; - if (!(dp = parse_wcc_data(dp, vflag))) - break; - if (er) - return; - if (vflag) { - TCHECK(dp[0]); - printf(" %u bytes", EXTRACT_32BITS(&dp[0])); - if (vflag > 1) { - TCHECK(dp[1]); - printf(" <%s>", - tok2str(nfsv3_writemodes, - NULL, EXTRACT_32BITS(&dp[1]))); - } - return; - } - } else { - if (parseattrstat(dp, vflag, v3) != 0) - return; - } - break; - - case NFSPROC_CREATE: - printf(" create"); - if (!(dp = parserep(rp, length))) - break; - if (v3) { - if (parsecreateopres(dp, vflag) != 0) - return; - } else { - if (parsediropres(dp) != 0) - return; - } - break; - - case NFSPROC_MKDIR: - printf(" mkdir"); - if (!(dp = parserep(rp, length))) - break; - if (v3) { - if (parsecreateopres(dp, vflag) != 0) - return; - } else { - if (parsediropres(dp) != 0) - return; - } - break; - - case NFSPROC_SYMLINK: - printf(" symlink"); - if (!(dp = parserep(rp, length))) - break; - if (v3) { - if (parsecreateopres(dp, vflag) != 0) - return; - } else { - if (parsestatus(dp, &er) != 0) - return; - } - break; - - case NFSPROC_MKNOD: - printf(" mknod"); - if (!(dp = parserep(rp, length))) - break; - if (parsecreateopres(dp, vflag) != 0) - return; - break; - - case NFSPROC_REMOVE: - printf(" remove"); - if (!(dp = parserep(rp, length))) - break; - if (v3) { - if (parsewccres(dp, vflag)) - return; - } else { - if (parsestatus(dp, &er) != 0) - return; - } - break; - - case NFSPROC_RMDIR: - printf(" rmdir"); - if (!(dp = parserep(rp, length))) - break; - if (v3) { - if (parsewccres(dp, vflag)) - return; - } else { - if (parsestatus(dp, &er) != 0) - return; - } - break; - - case NFSPROC_RENAME: - printf(" rename"); - if (!(dp = parserep(rp, length))) - break; - if (v3) { - if (!(dp = parsestatus(dp, &er))) - break; - if (vflag) { - printf(" from:"); - if (!(dp = parse_wcc_data(dp, vflag))) - break; - printf(" to:"); - if (!(dp = parse_wcc_data(dp, vflag))) - break; - } - return; - } else { - if (parsestatus(dp, &er) != 0) - return; - } - break; - - case NFSPROC_LINK: - printf(" link"); - if (!(dp = parserep(rp, length))) - break; - if (v3) { - if (!(dp = parsestatus(dp, &er))) - break; - if (vflag) { - printf(" file POST:"); - if (!(dp = parse_post_op_attr(dp, vflag))) - break; - printf(" dir:"); - if (!(dp = parse_wcc_data(dp, vflag))) - break; - return; - } - } else { - if (parsestatus(dp, &er) != 0) - return; - } - break; - - case NFSPROC_READDIR: - printf(" readdir"); - if (!(dp = parserep(rp, length))) - break; - if (v3) { - if (parsev3rddirres(dp, vflag)) - return; - } else { - if (parserddires(dp) != 0) - return; - } - break; - - case NFSPROC_READDIRPLUS: - printf(" readdirplus"); - if (!(dp = parserep(rp, length))) - break; - if (parsev3rddirres(dp, vflag)) - return; - break; - - case NFSPROC_FSSTAT: - printf(" fsstat"); - dp = parserep(rp, length); - if (dp != NULL && parsestatfs(dp, v3) != 0) - return; - break; - - case NFSPROC_FSINFO: - printf(" fsinfo"); - dp = parserep(rp, length); - if (dp != NULL && parsefsinfo(dp) != 0) - return; - break; - - case NFSPROC_PATHCONF: - printf(" pathconf"); - dp = parserep(rp, length); - if (dp != NULL && parsepathconf(dp) != 0) - return; - break; - - case NFSPROC_COMMIT: - printf(" commit"); - dp = parserep(rp, length); - if (dp != NULL && parsewccres(dp, vflag) != 0) - return; - break; - - default: - printf(" proc-%u", proc); - return; - } -trunc: - if (!nfserr) - fputs(" [|nfs]", stdout); -} diff --git a/contrib/tcpdump/print-ntp.c b/contrib/tcpdump/print-ntp.c deleted file mode 100644 index 606a654de10ac..0000000000000 --- a/contrib/tcpdump/print-ntp.c +++ /dev/null @@ -1,289 +0,0 @@ -/* - * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * Format and print ntp packets. - * By Jeffrey Mogul/DECWRL - * loosely based on print-bootp.c - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-ntp.c,v 1.41.2.1 2005/05/06 07:57:18 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> -#ifdef HAVE_STRFTIME -#include <time.h> -#endif - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" -#ifdef MODEMASK -#undef MODEMASK /* Solaris sucks */ -#endif -#include "ntp.h" - -static void p_sfix(const struct s_fixedpt *); -static void p_ntp_time(const struct l_fixedpt *); -static void p_ntp_delta(const struct l_fixedpt *, const struct l_fixedpt *); - -static struct tok ntp_mode_values[] = { - { MODE_UNSPEC, "unspecified" }, - { MODE_SYM_ACT, "symmetric active" }, - { MODE_SYM_PAS, "symmetric passive" }, - { MODE_CLIENT, "Client" }, - { MODE_SERVER, "Server" }, - { MODE_BROADCAST, "Broadcast" }, - { MODE_RES1, "Reserved" }, - { MODE_RES2, "Reserved" }, - { 0, NULL } -}; - -static struct tok ntp_leapind_values[] = { - { NO_WARNING, "" }, - { PLUS_SEC, "+1s" }, - { MINUS_SEC, "-1s" }, - { ALARM, "clock unsynchronized" }, - { 0, NULL } -}; - -/* - * Print ntp requests - */ -void -ntp_print(register const u_char *cp, u_int length) -{ - register const struct ntpdata *bp; - int mode, version, leapind; - - bp = (struct ntpdata *)cp; - - TCHECK(bp->status); - - version = (int)(bp->status & VERSIONMASK) >> 3; - printf("NTPv%d", version); - - mode = bp->status & MODEMASK; - if (!vflag) { - printf (", %s, length %u", - tok2str(ntp_mode_values, "Unknown mode", mode), - length); - return; - } - - printf (", length %u\n\t%s", - length, - tok2str(ntp_mode_values, "Unknown mode", mode)); - - leapind = bp->status & LEAPMASK; - printf (", Leap indicator: %s (%u)", - tok2str(ntp_leapind_values, "Unknown", leapind), - leapind); - - TCHECK(bp->stratum); - printf(", Stratum %u", bp->stratum); - - TCHECK(bp->ppoll); - printf(", poll %us", bp->ppoll); - - /* Can't TCHECK bp->precision bitfield so bp->distance + 0 instead */ - TCHECK2(bp->root_delay, 0); - printf(", precision %d", bp->precision); - - TCHECK(bp->root_delay); - fputs("\n\tRoot Delay: ", stdout); - p_sfix(&bp->root_delay); - - TCHECK(bp->root_dispersion); - fputs(", Root dispersion: ", stdout); - p_sfix(&bp->root_dispersion); - - TCHECK(bp->refid); - fputs(", Reference-ID: ", stdout); - /* Interpretation depends on stratum */ - switch (bp->stratum) { - - case UNSPECIFIED: - printf("(unspec)"); - break; - - case PRIM_REF: - if (fn_printn((u_char *)&(bp->refid), 4, snapend)) - goto trunc; - break; - - case INFO_QUERY: - printf("%s INFO_QUERY", ipaddr_string(&(bp->refid))); - /* this doesn't have more content */ - return; - - case INFO_REPLY: - printf("%s INFO_REPLY", ipaddr_string(&(bp->refid))); - /* this is too complex to be worth printing */ - return; - - default: - printf("%s", ipaddr_string(&(bp->refid))); - break; - } - - TCHECK(bp->ref_timestamp); - fputs("\n\t Reference Timestamp: ", stdout); - p_ntp_time(&(bp->ref_timestamp)); - - TCHECK(bp->org_timestamp); - fputs("\n\t Originator Timestamp: ", stdout); - p_ntp_time(&(bp->org_timestamp)); - - TCHECK(bp->rec_timestamp); - fputs("\n\t Receive Timestamp: ", stdout); - p_ntp_time(&(bp->rec_timestamp)); - - TCHECK(bp->xmt_timestamp); - fputs("\n\t Transmit Timestamp: ", stdout); - p_ntp_time(&(bp->xmt_timestamp)); - - fputs("\n\t Originator - Receive Timestamp: ", stdout); - p_ntp_delta(&(bp->org_timestamp), &(bp->rec_timestamp)); - - fputs("\n\t Originator - Transmit Timestamp: ", stdout); - p_ntp_delta(&(bp->org_timestamp), &(bp->xmt_timestamp)); - - /* FIXME key-id, authentication */ - - return; - -trunc: - fputs(" [|ntp]", stdout); -} - -static void -p_sfix(register const struct s_fixedpt *sfp) -{ - register int i; - register int f; - register float ff; - - i = EXTRACT_16BITS(&sfp->int_part); - f = EXTRACT_16BITS(&sfp->fraction); - ff = f / 65536.0; /* shift radix point by 16 bits */ - f = ff * 1000000.0; /* Treat fraction as parts per million */ - printf("%d.%06d", i, f); -} - -#define FMAXINT (4294967296.0) /* floating point rep. of MAXINT */ - -static void -p_ntp_time(register const struct l_fixedpt *lfp) -{ - register int32_t i; - register u_int32_t uf; - register u_int32_t f; - register float ff; - - i = EXTRACT_32BITS(&lfp->int_part); - uf = EXTRACT_32BITS(&lfp->fraction); - ff = uf; - if (ff < 0.0) /* some compilers are buggy */ - ff += FMAXINT; - ff = ff / FMAXINT; /* shift radix point by 32 bits */ - f = ff * 1000000000.0; /* treat fraction as parts per billion */ - printf("%u.%09d", i, f); - -#ifdef HAVE_STRFTIME - /* - * print the time in human-readable format. - */ - if (i) { - time_t seconds = i - JAN_1970; - struct tm *tm; - char time_buf[128]; - - tm = localtime(&seconds); - strftime(time_buf, sizeof (time_buf), "%Y/%m/%d %H:%M:%S", tm); - printf (" (%s)", time_buf); - } -#endif -} - -/* Prints time difference between *lfp and *olfp */ -static void -p_ntp_delta(register const struct l_fixedpt *olfp, - register const struct l_fixedpt *lfp) -{ - register int32_t i; - register u_int32_t u, uf; - register u_int32_t ou, ouf; - register u_int32_t f; - register float ff; - int signbit; - - u = EXTRACT_32BITS(&lfp->int_part); - ou = EXTRACT_32BITS(&olfp->int_part); - uf = EXTRACT_32BITS(&lfp->fraction); - ouf = EXTRACT_32BITS(&olfp->fraction); - if (ou == 0 && ouf == 0) { - p_ntp_time(lfp); - return; - } - - i = u - ou; - - if (i > 0) { /* new is definitely greater than old */ - signbit = 0; - f = uf - ouf; - if (ouf > uf) /* must borrow from high-order bits */ - i -= 1; - } else if (i < 0) { /* new is definitely less than old */ - signbit = 1; - f = ouf - uf; - if (uf > ouf) /* must carry into the high-order bits */ - i += 1; - i = -i; - } else { /* int_part is zero */ - if (uf > ouf) { - signbit = 0; - f = uf - ouf; - } else { - signbit = 1; - f = ouf - uf; - } - } - - ff = f; - if (ff < 0.0) /* some compilers are buggy */ - ff += FMAXINT; - ff = ff / FMAXINT; /* shift radix point by 32 bits */ - f = ff * 1000000000.0; /* treat fraction as parts per billion */ - if (signbit) - putchar('-'); - else - putchar('+'); - printf("%d.%09d", i, f); -} - diff --git a/contrib/tcpdump/print-null.c b/contrib/tcpdump/print-null.c deleted file mode 100644 index 7fd45417c4789..0000000000000 --- a/contrib/tcpdump/print-null.c +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright (c) 1991, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-null.c,v 1.53.2.3 2005/07/07 01:24:38 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <pcap.h> -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" - -#include "ip.h" -#ifdef INET6 -#include "ip6.h" -#endif - -/* - * The DLT_NULL packet header is 4 bytes long. It contains a host-byte-order - * 32-bit integer that specifies the family, e.g. AF_INET. - * - * Note here that "host" refers to the host on which the packets were - * captured; that isn't necessarily *this* host. - * - * The OpenBSD DLT_LOOP packet header is the same, except that the integer - * is in network byte order. - */ -#define NULL_HDRLEN 4 - -/* - * BSD AF_ values. - * - * Unfortunately, the BSDs don't all use the same value for AF_INET6, - * so, because we want to be able to read captures from all of the BSDs, - * we check for all of them. - */ -#define BSD_AF_INET 2 -#define BSD_AF_NS 6 /* XEROX NS protocols */ -#define BSD_AF_ISO 7 -#define BSD_AF_APPLETALK 16 -#define BSD_AF_IPX 23 -#define BSD_AF_INET6_BSD 24 /* OpenBSD (and probably NetBSD), BSD/OS */ -#define BSD_AF_INET6_FREEBSD 28 -#define BSD_AF_INET6_DARWIN 30 - -const struct tok bsd_af_values[] = { - { BSD_AF_INET, "IPv4" }, - { BSD_AF_NS, "NS" }, - { BSD_AF_ISO, "ISO" }, - { BSD_AF_APPLETALK, "Appletalk" }, - { BSD_AF_IPX, "IPX" }, - { BSD_AF_INET6_BSD, "IPv6" }, - { BSD_AF_INET6_FREEBSD, "IPv6" }, - { BSD_AF_INET6_DARWIN, "IPv6" }, - { 0, NULL} -}; - - -/* - * Byte-swap a 32-bit number. - * ("htonl()" or "ntohl()" won't work - we want to byte-swap even on - * big-endian platforms.) - */ -#define SWAPLONG(y) \ -((((y)&0xff)<<24) | (((y)&0xff00)<<8) | (((y)&0xff0000)>>8) | (((y)>>24)&0xff)) - -static inline void -null_hdr_print(u_int family, u_int length) -{ - if (!qflag) { - (void)printf("AF %s (%u)", - tok2str(bsd_af_values,"Unknown",family),family); - } else { - (void)printf("%s", - tok2str(bsd_af_values,"Unknown AF %u",family)); - } - - (void)printf(", length %u: ", length); -} - -/* - * This is the top level routine of the printer. 'p' points - * to the ether header of the packet, 'h->ts' is the timestamp, - * 'h->len' is the length of the packet off the wire, and 'h->caplen' - * is the number of bytes actually captured. - */ -u_int -null_if_print(const struct pcap_pkthdr *h, const u_char *p) -{ - u_int length = h->len; - u_int caplen = h->caplen; - u_int family; - - if (caplen < NULL_HDRLEN) { - printf("[|null]"); - return (NULL_HDRLEN); - } - - memcpy((char *)&family, (char *)p, sizeof(family)); - - /* - * This isn't necessarily in our host byte order; if this is - * a DLT_LOOP capture, it's in network byte order, and if - * this is a DLT_NULL capture from a machine with the opposite - * byte-order, it's in the opposite byte order from ours. - * - * If the upper 16 bits aren't all zero, assume it's byte-swapped. - */ - if ((family & 0xFFFF0000) != 0) - family = SWAPLONG(family); - - if (eflag) - null_hdr_print(family, length); - - length -= NULL_HDRLEN; - caplen -= NULL_HDRLEN; - p += NULL_HDRLEN; - - switch (family) { - - case BSD_AF_INET: - ip_print(gndo, p, length); - break; - -#ifdef INET6 - case BSD_AF_INET6_BSD: - case BSD_AF_INET6_FREEBSD: - case BSD_AF_INET6_DARWIN: - ip6_print(p, length); - break; -#endif - - case BSD_AF_ISO: - isoclns_print(p, length, caplen); - break; - - case BSD_AF_APPLETALK: - atalk_print(p, length); - break; - - case BSD_AF_IPX: - ipx_print(p, length); - break; - - default: - /* unknown AF_ value */ - if (!eflag) - null_hdr_print(family, length + NULL_HDRLEN); - if (!suppress_default_print) - default_print(p, caplen); - } - - return (NULL_HDRLEN); -} - -/* - * Local Variables: - * c-style: whitesmith - * c-basic-offset: 8 - * End: - */ diff --git a/contrib/tcpdump/print-ospf.c b/contrib/tcpdump/print-ospf.c deleted file mode 100644 index 634849b699cca..0000000000000 --- a/contrib/tcpdump/print-ospf.c +++ /dev/null @@ -1,971 +0,0 @@ -/* - * Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * OSPF support contributed by Jeffrey Honig (jch@mitchell.cit.cornell.edu) - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-ospf.c,v 1.56.2.3 2005/08/23 11:16:29 hannes Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" -#include "gmpls.h" - -#include "ospf.h" - -#include "ip.h" - -static struct tok ospf_option_values[] = { - { OSPF_OPTION_T, "TOS" }, - { OSPF_OPTION_E, "External" }, - { OSPF_OPTION_MC, "Multicast" }, - { OSPF_OPTION_NP, "NSSA" }, - { OSPF_OPTION_EA, "Advertise External" }, - { OSPF_OPTION_DC, "Demand Circuit" }, - { OSPF_OPTION_O, "Opaque" }, - { OSPF_OPTION_DN, "Up/Down" }, - { 0, NULL } -}; - -static struct tok ospf_authtype_values[] = { - { OSPF_AUTH_NONE, "none" }, - { OSPF_AUTH_NONE, "simple" }, - { OSPF_AUTH_MD5, "MD5" }, - { 0, NULL } -}; - -static struct tok ospf_rla_flag_values[] = { - { RLA_FLAG_B, "ABR" }, - { RLA_FLAG_E, "ASBR" }, - { RLA_FLAG_W1, "Virtual" }, - { RLA_FLAG_W2, "W2" }, - { 0, NULL } -}; - -static struct tok type2str[] = { - { OSPF_TYPE_UMD, "UMD" }, - { OSPF_TYPE_HELLO, "Hello" }, - { OSPF_TYPE_DD, "Database Description" }, - { OSPF_TYPE_LS_REQ, "LS-Request" }, - { OSPF_TYPE_LS_UPDATE, "LS-Update" }, - { OSPF_TYPE_LS_ACK, "LS-Ack" }, - { 0, NULL } -}; - -static struct tok lsa_values[] = { - { LS_TYPE_ROUTER, "Router" }, - { LS_TYPE_NETWORK, "Network" }, - { LS_TYPE_SUM_IP, "Summary" }, - { LS_TYPE_SUM_ABR, "ASBR Summary" }, - { LS_TYPE_ASE, "External" }, - { LS_TYPE_GROUP, "Multicast Group" }, - { LS_TYPE_NSSA, "NSSA" }, - { LS_TYPE_OPAQUE_LL, "Link Local Opaque" }, - { LS_TYPE_OPAQUE_AL, "Area Local Opaque" }, - { LS_TYPE_OPAQUE_DW, "Domain Wide Opaque" }, - { 0, NULL } -}; - -static struct tok ospf_dd_flag_values[] = { - { OSPF_DB_INIT, "Init" }, - { OSPF_DB_MORE, "More" }, - { OSPF_DB_MASTER, "Master" }, - { 0, NULL } -}; - -static struct tok lsa_opaque_values[] = { - { LS_OPAQUE_TYPE_TE, "Traffic Engineering" }, - { LS_OPAQUE_TYPE_GRACE, "Graceful restart" }, - { LS_OPAQUE_TYPE_RI, "Router Information" }, - { 0, NULL } -}; - -static struct tok lsa_opaque_te_tlv_values[] = { - { LS_OPAQUE_TE_TLV_ROUTER, "Router Address" }, - { LS_OPAQUE_TE_TLV_LINK, "Link" }, - { 0, NULL } -}; - -static struct tok lsa_opaque_te_link_tlv_subtlv_values[] = { - { LS_OPAQUE_TE_LINK_SUBTLV_LINK_TYPE, "Link Type" }, - { LS_OPAQUE_TE_LINK_SUBTLV_LINK_ID, "Link ID" }, - { LS_OPAQUE_TE_LINK_SUBTLV_LOCAL_IP, "Local Interface IP address" }, - { LS_OPAQUE_TE_LINK_SUBTLV_REMOTE_IP, "Remote Interface IP address" }, - { LS_OPAQUE_TE_LINK_SUBTLV_TE_METRIC, "Traffic Engineering Metric" }, - { LS_OPAQUE_TE_LINK_SUBTLV_MAX_BW, "Maximum Bandwidth" }, - { LS_OPAQUE_TE_LINK_SUBTLV_MAX_RES_BW, "Maximum Reservable Bandwidth" }, - { LS_OPAQUE_TE_LINK_SUBTLV_UNRES_BW, "Unreserved Bandwidth" }, - { LS_OPAQUE_TE_LINK_SUBTLV_ADMIN_GROUP, "Administrative Group" }, - { LS_OPAQUE_TE_LINK_SUBTLV_LINK_LOCAL_REMOTE_ID, "Link Local/Remote Identifier" }, - { LS_OPAQUE_TE_LINK_SUBTLV_LINK_PROTECTION_TYPE, "Link Protection Type" }, - { LS_OPAQUE_TE_LINK_SUBTLV_INTF_SW_CAP_DESCR, "Interface Switching Capability" }, - { LS_OPAQUE_TE_LINK_SUBTLV_SHARED_RISK_GROUP, "Shared Risk Link Group" }, - { LS_OPAQUE_TE_LINK_SUBTLV_BW_CONSTRAINTS, "Bandwidth Constraints" }, - { 0, NULL } -}; - -static struct tok lsa_opaque_grace_tlv_values[] = { - { LS_OPAQUE_GRACE_TLV_PERIOD, "Grace Period" }, - { LS_OPAQUE_GRACE_TLV_REASON, "Graceful restart Reason" }, - { LS_OPAQUE_GRACE_TLV_INT_ADDRESS, "IPv4 interface address" }, - { 0, NULL } -}; - -static struct tok lsa_opaque_grace_tlv_reason_values[] = { - { LS_OPAQUE_GRACE_TLV_REASON_UNKNOWN, "Unknown" }, - { LS_OPAQUE_GRACE_TLV_REASON_SW_RESTART, "Software Restart" }, - { LS_OPAQUE_GRACE_TLV_REASON_SW_UPGRADE, "Software Reload/Upgrade" }, - { LS_OPAQUE_GRACE_TLV_REASON_CP_SWITCH, "Control Processor Switch" }, - { 0, NULL } -}; - -static struct tok lsa_opaque_te_tlv_link_type_sub_tlv_values[] = { - { LS_OPAQUE_TE_LINK_SUBTLV_LINK_TYPE_PTP, "Point-to-point" }, - { LS_OPAQUE_TE_LINK_SUBTLV_LINK_TYPE_MA, "Multi-Access" }, - { 0, NULL } -}; - -static struct tok lsa_opaque_ri_tlv_values[] = { - { LS_OPAQUE_RI_TLV_CAP, "Router Capabilities" }, - { 0, NULL } -}; - -static struct tok lsa_opaque_ri_tlv_cap_values[] = { - { 1, "Reserved" }, - { 2, "Reserved" }, - { 4, "Reserved" }, - { 8, "Reserved" }, - { 16, "graceful restart capable" }, - { 32, "graceful restart helper" }, - { 64, "Stub router support" }, - { 128, "Traffic engineering" }, - { 256, "p2p over LAN" }, - { 512, "path computation server" }, - { 0, NULL } -}; - -static char tstr[] = " [|ospf]"; - -#ifdef WIN32 -#define inline __inline -#endif /* WIN32 */ - -static int ospf_print_lshdr(const struct lsa_hdr *); -static const u_char *ospf_print_lsa(const struct lsa *); -static int ospf_decode_v2(const struct ospfhdr *, const u_char *); - -static int -ospf_print_lshdr(register const struct lsa_hdr *lshp) -{ - u_int ls_length; - - TCHECK(lshp->ls_length); - ls_length = EXTRACT_16BITS(&lshp->ls_length); - if (ls_length < sizeof(struct lsa_hdr)) { - printf("\n\t Bogus length %u < %lu", ls_length, - (unsigned long)sizeof(struct lsa_hdr)); - return(-1); - } - - TCHECK(lshp->ls_seq); /* XXX - ls_length check checked this */ - printf("\n\t Advertising Router: %s, seq 0x%08x, age %us, length: %u", - ipaddr_string(&lshp->ls_router), - EXTRACT_32BITS(&lshp->ls_seq), - EXTRACT_16BITS(&lshp->ls_age), - ls_length-(u_int)sizeof(struct lsa_hdr)); - - TCHECK(lshp->ls_type); /* XXX - ls_length check checked this */ - switch (lshp->ls_type) { - /* the LSA header for opaque LSAs was slightly changed */ - case LS_TYPE_OPAQUE_LL: - case LS_TYPE_OPAQUE_AL: - case LS_TYPE_OPAQUE_DW: - printf("\n\t %s LSA (%d), Opaque-Type: %s LSA (%u), Opaque-ID: %u", - tok2str(lsa_values,"unknown",lshp->ls_type), - lshp->ls_type, - - tok2str(lsa_opaque_values, - "unknown", - *(&lshp->un_lsa_id.opaque_field.opaque_type)), - *(&lshp->un_lsa_id.opaque_field.opaque_type), - EXTRACT_24BITS(&lshp->un_lsa_id.opaque_field.opaque_id) - - ); - break; - - /* all other LSA types use regular style LSA headers */ - default: - printf("\n\t %s LSA (%d), LSA-ID: %s", - tok2str(lsa_values,"unknown",lshp->ls_type), - lshp->ls_type, - ipaddr_string(&lshp->un_lsa_id.lsa_id)); - break; - } - - TCHECK(lshp->ls_options); /* XXX - ls_length check checked this */ - printf("\n\t Options: [%s]", bittok2str(ospf_option_values,"none",lshp->ls_options)); - - return (ls_length); -trunc: - return (-1); -} - -/* - * Print a single link state advertisement. If truncated or if LSA length - * field is less than the length of the LSA header, return NULl, else - * return pointer to data past end of LSA. - */ -static const u_int8_t * -ospf_print_lsa(register const struct lsa *lsap) -{ - register const u_int8_t *ls_end; - register const struct rlalink *rlp; - register const struct tos_metric *tosp; - register const struct in_addr *ap; - register const struct aslametric *almp; - register const struct mcla *mcp; - register const u_int32_t *lp; - register int j, k, tlv_type, tlv_length, subtlv_type, subtlv_length, priority_level, te_class; - register int ls_length; - const u_int8_t *tptr; - int count_srlg; - union { /* int to float conversion buffer for several subTLVs */ - float f; - u_int32_t i; - } bw; - - tptr = (u_int8_t *)lsap->lsa_un.un_unknown; /* squelch compiler warnings */ - ls_length = ospf_print_lshdr(&lsap->ls_hdr); - if (ls_length == -1) - return(NULL); - ls_end = (u_int8_t *)lsap + ls_length; - ls_length -= sizeof(struct lsa_hdr); - - switch (lsap->ls_hdr.ls_type) { - - case LS_TYPE_ROUTER: - TCHECK(lsap->lsa_un.un_rla.rla_flags); - printf("\n\t Router LSA Options: [%s]", bittok2str(ospf_rla_flag_values,"none",lsap->lsa_un.un_rla.rla_flags)); - - TCHECK(lsap->lsa_un.un_rla.rla_count); - j = EXTRACT_16BITS(&lsap->lsa_un.un_rla.rla_count); - TCHECK(lsap->lsa_un.un_rla.rla_link); - rlp = lsap->lsa_un.un_rla.rla_link; - while (j--) { - TCHECK(*rlp); - switch (rlp->link_type) { - - case RLA_TYPE_VIRTUAL: - printf("\n\t Virtual Link: Neighbor Router-ID: %s, Interface Address: %s", - ipaddr_string(&rlp->link_id), - ipaddr_string(&rlp->link_data)); - break; - - case RLA_TYPE_ROUTER: - printf("\n\t Neighbor Router-ID: %s, Interface Address: %s", - ipaddr_string(&rlp->link_id), - ipaddr_string(&rlp->link_data)); - break; - - case RLA_TYPE_TRANSIT: - printf("\n\t Neighbor Network-ID: %s, Interface Address: %s", - ipaddr_string(&rlp->link_id), - ipaddr_string(&rlp->link_data)); - break; - - case RLA_TYPE_STUB: - printf("\n\t Stub Network: %s, Mask: %s", - ipaddr_string(&rlp->link_id), - ipaddr_string(&rlp->link_data)); - break; - - default: - printf("\n\t Unknown Router Link Type (%u)", - rlp->link_type); - return (ls_end); - } - printf(", tos 0, metric: %d", EXTRACT_16BITS(&rlp->link_tos0metric)); - tosp = (struct tos_metric *) - ((sizeof rlp->link_tos0metric) + (u_char *) rlp); - for (k = 0; k < (int) rlp->link_toscount; ++k, ++tosp) { - TCHECK(*tosp); - printf(", tos %d, metric: %d", - tosp->tos_type, - EXTRACT_16BITS(&tosp->tos_metric)); - } - rlp = (struct rlalink *)((u_char *)(rlp + 1) + - ((rlp->link_toscount) * sizeof(*tosp))); - } - break; - - case LS_TYPE_NETWORK: - TCHECK(lsap->lsa_un.un_nla.nla_mask); - printf("\n\t Mask %s\n\t Connected Routers:", - ipaddr_string(&lsap->lsa_un.un_nla.nla_mask)); - ap = lsap->lsa_un.un_nla.nla_router; - while ((u_char *)ap < ls_end) { - TCHECK(*ap); - printf("\n\t %s", ipaddr_string(ap)); - ++ap; - } - break; - - case LS_TYPE_SUM_IP: - TCHECK(lsap->lsa_un.un_nla.nla_mask); - printf("\n\t Mask %s", - ipaddr_string(&lsap->lsa_un.un_sla.sla_mask)); - TCHECK(lsap->lsa_un.un_sla.sla_tosmetric); - lp = lsap->lsa_un.un_sla.sla_tosmetric; - /* suppress tos if its not supported */ - if(!((lsap->ls_hdr.ls_options)&OSPF_OPTION_T)) { - printf(", metric: %u", EXTRACT_32BITS(lp)&SLA_MASK_METRIC); - break; - } - while ((u_char *)lp < ls_end) { - register u_int32_t ul; - - TCHECK(*lp); - ul = EXTRACT_32BITS(lp); - printf(", tos %d metric %d", - (ul & SLA_MASK_TOS) >> SLA_SHIFT_TOS, - ul & SLA_MASK_METRIC); - ++lp; - } - break; - - case LS_TYPE_SUM_ABR: - TCHECK(lsap->lsa_un.un_sla.sla_tosmetric); - lp = lsap->lsa_un.un_sla.sla_tosmetric; - /* suppress tos if its not supported */ - if(!((lsap->ls_hdr.ls_options)&OSPF_OPTION_T)) { - printf(", metric: %u", EXTRACT_32BITS(lp)&SLA_MASK_METRIC); - break; - } - while ((u_char *)lp < ls_end) { - register u_int32_t ul; - - TCHECK(*lp); - ul = EXTRACT_32BITS(lp); - printf(", tos %d metric %d", - (ul & SLA_MASK_TOS) >> SLA_SHIFT_TOS, - ul & SLA_MASK_METRIC); - ++lp; - } - break; - - case LS_TYPE_ASE: - case LS_TYPE_NSSA: /* fall through - those LSAs share the same format */ - TCHECK(lsap->lsa_un.un_nla.nla_mask); - printf("\n\t Mask %s", - ipaddr_string(&lsap->lsa_un.un_asla.asla_mask)); - - TCHECK(lsap->lsa_un.un_sla.sla_tosmetric); - almp = lsap->lsa_un.un_asla.asla_metric; - while ((u_char *)almp < ls_end) { - register u_int32_t ul; - - TCHECK(almp->asla_tosmetric); - ul = EXTRACT_32BITS(&almp->asla_tosmetric); - printf(", type %d, tos %d metric:", - (ul & ASLA_FLAG_EXTERNAL) ? 2 : 1, - (ul & ASLA_MASK_TOS) >> ASLA_SHIFT_TOS); - if ((ul & ASLA_MASK_METRIC)==0xffffff) - printf(" infinite"); - else - printf(" %d", (ul & ASLA_MASK_METRIC)); - - TCHECK(almp->asla_forward); - if (almp->asla_forward.s_addr) { - printf(", forward %s", - ipaddr_string(&almp->asla_forward)); - } - TCHECK(almp->asla_tag); - if (almp->asla_tag.s_addr) { - printf(", tag %s", - ipaddr_string(&almp->asla_tag)); - } - ++almp; - } - break; - - case LS_TYPE_GROUP: - /* Multicast extensions as of 23 July 1991 */ - mcp = lsap->lsa_un.un_mcla; - while ((u_char *)mcp < ls_end) { - TCHECK(mcp->mcla_vid); - switch (EXTRACT_32BITS(&mcp->mcla_vtype)) { - - case MCLA_VERTEX_ROUTER: - printf("\n\t Router Router-ID %s", - ipaddr_string(&mcp->mcla_vid)); - break; - - case MCLA_VERTEX_NETWORK: - printf("\n\t Network Designated Router %s", - ipaddr_string(&mcp->mcla_vid)); - break; - - default: - printf("\n\t unknown VertexType (%u)", - EXTRACT_32BITS(&mcp->mcla_vtype)); - break; - } - ++mcp; - } - break; - - case LS_TYPE_OPAQUE_LL: /* fall through */ - case LS_TYPE_OPAQUE_AL: - case LS_TYPE_OPAQUE_DW: - - switch (*(&lsap->ls_hdr.un_lsa_id.opaque_field.opaque_type)) { - case LS_OPAQUE_TYPE_RI: - tptr = (u_int8_t *)(&lsap->lsa_un.un_ri_tlv.type); - - while (ls_length != 0) { - TCHECK2(*tptr, 4); - if (ls_length < 4) { - printf("\n\t Remaining LS length %u < 4", ls_length); - return(ls_end); - } - tlv_type = EXTRACT_16BITS(tptr); - tlv_length = EXTRACT_16BITS(tptr+2); - tptr+=4; - ls_length-=4; - - printf("\n\t %s TLV (%u), length: %u, value: ", - tok2str(lsa_opaque_ri_tlv_values,"unknown",tlv_type), - tlv_type, - tlv_length); - - if (tlv_length > ls_length) { - printf("\n\t Bogus length %u > %u", tlv_length, - ls_length); - return(ls_end); - } - ls_length-=tlv_length; - TCHECK2(*tptr, tlv_length); - switch(tlv_type) { - - case LS_OPAQUE_RI_TLV_CAP: - if (tlv_length != 4) { - printf("\n\t Bogus length %u != 4", tlv_length); - return(ls_end); - } - printf("Capabilities: %s", - bittok2str(lsa_opaque_ri_tlv_cap_values, "Unknown", EXTRACT_32BITS(tptr))); - break; - default: - if (vflag <= 1) { - if(!print_unknown_data(tptr,"\n\t ",tlv_length)) - return(ls_end); - } - break; - - } - tptr+=tlv_length; - } - - break; - case LS_OPAQUE_TYPE_GRACE: - tptr = (u_int8_t *)(&lsap->lsa_un.un_grace_tlv.type); - - while (ls_length != 0) { - TCHECK2(*tptr, 4); - if (ls_length < 4) { - printf("\n\t Remaining LS length %u < 4", ls_length); - return(ls_end); - } - tlv_type = EXTRACT_16BITS(tptr); - tlv_length = EXTRACT_16BITS(tptr+2); - tptr+=4; - ls_length-=4; - - printf("\n\t %s TLV (%u), length: %u, value: ", - tok2str(lsa_opaque_grace_tlv_values,"unknown",tlv_type), - tlv_type, - tlv_length); - - if (tlv_length > ls_length) { - printf("\n\t Bogus length %u > %u", tlv_length, - ls_length); - return(ls_end); - } - ls_length-=tlv_length; - TCHECK2(*tptr, tlv_length); - switch(tlv_type) { - - case LS_OPAQUE_GRACE_TLV_PERIOD: - if (tlv_length != 4) { - printf("\n\t Bogus length %u != 4", tlv_length); - return(ls_end); - } - printf("%us",EXTRACT_32BITS(tptr)); - break; - case LS_OPAQUE_GRACE_TLV_REASON: - if (tlv_length != 1) { - printf("\n\t Bogus length %u != 1", tlv_length); - return(ls_end); - } - printf("%s (%u)", - tok2str(lsa_opaque_grace_tlv_reason_values, "Unknown", *tptr), - *tptr); - break; - case LS_OPAQUE_GRACE_TLV_INT_ADDRESS: - if (tlv_length != 4) { - printf("\n\t Bogus length %u != 4", tlv_length); - return(ls_end); - } - printf("%s", ipaddr_string(tptr)); - break; - default: - if (vflag <= 1) { - if(!print_unknown_data(tptr,"\n\t ",tlv_length)) - return(ls_end); - } - break; - - } - tptr+=tlv_length; - } - - break; - case LS_OPAQUE_TYPE_TE: - tptr = (u_int8_t *)(&lsap->lsa_un.un_te_lsa_tlv.type); - - while (ls_length != 0) { - TCHECK2(*tptr, 4); - if (ls_length < 4) { - printf("\n\t Remaining LS length %u < 4", ls_length); - return(ls_end); - } - tlv_type = EXTRACT_16BITS(tptr); - tlv_length = EXTRACT_16BITS(tptr+2); - tptr+=4; - ls_length-=4; - - printf("\n\t %s TLV (%u), length: %u", - tok2str(lsa_opaque_te_tlv_values,"unknown",tlv_type), - tlv_type, - tlv_length); - - if (tlv_length > ls_length) { - printf("\n\t Bogus length %u > %u", tlv_length, - ls_length); - return(ls_end); - } - ls_length-=tlv_length; - switch(tlv_type) { - case LS_OPAQUE_TE_TLV_LINK: - while (tlv_length != 0) { - if (tlv_length < 4) { - printf("\n\t Remaining TLV length %u < 4", - tlv_length); - return(ls_end); - } - TCHECK2(*tptr, 4); - subtlv_type = EXTRACT_16BITS(tptr); - subtlv_length = EXTRACT_16BITS(tptr+2); - tptr+=4; - tlv_length-=4; - - printf("\n\t %s subTLV (%u), length: %u", - tok2str(lsa_opaque_te_link_tlv_subtlv_values,"unknown",subtlv_type), - subtlv_type, - subtlv_length); - - TCHECK2(*tptr, subtlv_length); - switch(subtlv_type) { - case LS_OPAQUE_TE_LINK_SUBTLV_ADMIN_GROUP: - printf(", 0x%08x", EXTRACT_32BITS(tptr)); - break; - case LS_OPAQUE_TE_LINK_SUBTLV_LINK_ID: - case LS_OPAQUE_TE_LINK_SUBTLV_LINK_LOCAL_REMOTE_ID: - printf(", %s (0x%08x)", - ipaddr_string(tptr), - EXTRACT_32BITS(tptr)); - if (subtlv_length == 8) /* draft-ietf-ccamp-ospf-gmpls-extensions */ - printf(", %s (0x%08x)", - ipaddr_string(tptr+4), - EXTRACT_32BITS(tptr+4)); - break; - case LS_OPAQUE_TE_LINK_SUBTLV_LOCAL_IP: - case LS_OPAQUE_TE_LINK_SUBTLV_REMOTE_IP: - printf(", %s", ipaddr_string(tptr)); - break; - case LS_OPAQUE_TE_LINK_SUBTLV_MAX_BW: - case LS_OPAQUE_TE_LINK_SUBTLV_MAX_RES_BW: - bw.i = EXTRACT_32BITS(tptr); - printf(", %.3f Mbps", bw.f*8/1000000 ); - break; - case LS_OPAQUE_TE_LINK_SUBTLV_UNRES_BW: - for (te_class = 0; te_class < 8; te_class++) { - bw.i = EXTRACT_32BITS(tptr+te_class*4); - printf("\n\t\tTE-Class %u: %.3f Mbps", - te_class, - bw.f*8/1000000 ); - } - break; - case LS_OPAQUE_TE_LINK_SUBTLV_BW_CONSTRAINTS: - printf("\n\t\tBandwidth Constraints Model ID: %s (%u)", - tok2str(diffserv_te_bc_values, "unknown", *tptr), - *tptr); - /* decode BCs until the subTLV ends */ - for (te_class = 0; te_class < (subtlv_length-4)/4; te_class++) { - bw.i = EXTRACT_32BITS(tptr+4+te_class*4); - printf("\n\t\t Bandwidth constraint CT%u: %.3f Mbps", - te_class, - bw.f*8/1000000 ); - } - break; - case LS_OPAQUE_TE_LINK_SUBTLV_TE_METRIC: - printf(", Metric %u", EXTRACT_32BITS(tptr)); - break; - case LS_OPAQUE_TE_LINK_SUBTLV_LINK_PROTECTION_TYPE: - printf(", %s, Priority %u", - bittok2str(gmpls_link_prot_values, "none", *tptr), - *(tptr+1)); - break; - case LS_OPAQUE_TE_LINK_SUBTLV_INTF_SW_CAP_DESCR: - printf("\n\t\tInterface Switching Capability: %s", - tok2str(gmpls_switch_cap_values, "Unknown", *(tptr))); - printf("\n\t\tLSP Encoding: %s\n\t\tMax LSP Bandwidth:", - tok2str(gmpls_encoding_values, "Unknown", *(tptr+1))); - for (priority_level = 0; priority_level < 8; priority_level++) { - bw.i = EXTRACT_32BITS(tptr+4+(priority_level*4)); - printf("\n\t\t priority level %d: %.3f Mbps", - priority_level, - bw.f*8/1000000 ); - } - break; - case LS_OPAQUE_TE_LINK_SUBTLV_LINK_TYPE: - printf(", %s (%u)", - tok2str(lsa_opaque_te_tlv_link_type_sub_tlv_values,"unknown",*tptr), - *tptr); - break; - - case LS_OPAQUE_TE_LINK_SUBTLV_SHARED_RISK_GROUP: - count_srlg = subtlv_length / 4; - if (count_srlg != 0) - printf("\n\t\t Shared risk group: "); - while (count_srlg > 0) { - bw.i = EXTRACT_32BITS(tptr); - printf("%d",bw.i); - tptr+=4; - count_srlg--; - if (count_srlg > 0) - printf(", "); - } - break; - - default: - if (vflag <= 1) { - if(!print_unknown_data(tptr,"\n\t\t",subtlv_length)) - return(ls_end); - } - break; - } - /* in OSPF everything has to be 32-bit aligned, including TLVs */ - if (subtlv_length%4 != 0) - subtlv_length+=4-(subtlv_length%4); - - tlv_length-=subtlv_length; - tptr+=subtlv_length; - - } - break; - - case LS_OPAQUE_TE_TLV_ROUTER: - if (tlv_length < 4) { - printf("\n\t TLV length %u < 4", tlv_length); - return(ls_end); - } - TCHECK2(*tptr, 4); - printf(", %s", ipaddr_string(tptr)); - break; - - default: - if (vflag <= 1) { - if(!print_unknown_data(tptr,"\n\t ",tlv_length)) - return(ls_end); - } - break; - } - tptr+=tlv_length; - } - break; - } - break; - default: - if (vflag <= 1) { - if(!print_unknown_data((u_int8_t *)lsap->lsa_un.un_unknown, - "\n\t ", ls_length)) - return(ls_end); - } - break; - } - - /* do we want to see an additionally hexdump ? */ - if (vflag> 1) - if(!print_unknown_data((u_int8_t *)lsap->lsa_un.un_unknown, - "\n\t ", ls_length)) { - return(ls_end); - } - - return (ls_end); -trunc: - return (NULL); -} - -static int -ospf_decode_v2(register const struct ospfhdr *op, - register const u_char *dataend) -{ - register const struct in_addr *ap; - register const struct lsr *lsrp; - register const struct lsa_hdr *lshp; - register const struct lsa *lsap; - register u_int32_t lsa_count,lsa_count_max; - - switch (op->ospf_type) { - - case OSPF_TYPE_UMD: - /* - * Rob Coltun's special monitoring packets; - * do nothing - */ - break; - - case OSPF_TYPE_HELLO: - printf("\n\tOptions: [%s]", - bittok2str(ospf_option_values,"none",op->ospf_hello.hello_options)); - - TCHECK(op->ospf_hello.hello_deadint); - printf("\n\t Hello Timer: %us, Dead Timer %us, Mask: %s, Priority: %u", - EXTRACT_16BITS(&op->ospf_hello.hello_helloint), - EXTRACT_32BITS(&op->ospf_hello.hello_deadint), - ipaddr_string(&op->ospf_hello.hello_mask), - op->ospf_hello.hello_priority); - - TCHECK(op->ospf_hello.hello_dr); - if (op->ospf_hello.hello_dr.s_addr != 0) - printf("\n\t Designated Router %s", - ipaddr_string(&op->ospf_hello.hello_dr)); - - TCHECK(op->ospf_hello.hello_bdr); - if (op->ospf_hello.hello_bdr.s_addr != 0) - printf(", Backup Designated Router %s", - ipaddr_string(&op->ospf_hello.hello_bdr)); - - ap = op->ospf_hello.hello_neighbor; - if ((u_char *)ap < dataend) - printf("\n\t Neighbor List:"); - while ((u_char *)ap < dataend) { - TCHECK(*ap); - printf("\n\t %s", ipaddr_string(ap)); - ++ap; - } - break; /* HELLO */ - - case OSPF_TYPE_DD: - TCHECK(op->ospf_db.db_options); - printf("\n\tOptions: [%s]", - bittok2str(ospf_option_values,"none",op->ospf_db.db_options)); - TCHECK(op->ospf_db.db_flags); - printf(", DD Flags: [%s]", - bittok2str(ospf_dd_flag_values,"none",op->ospf_db.db_flags)); - - if (vflag) { - /* Print all the LS adv's */ - lshp = op->ospf_db.db_lshdr; - while (ospf_print_lshdr(lshp) != -1) { - ++lshp; - } - } - break; - - case OSPF_TYPE_LS_REQ: - lsrp = op->ospf_lsr; - while ((u_char *)lsrp < dataend) { - TCHECK(*lsrp); - - printf("\n\t Advertising Router: %s, %s LSA (%u)", - ipaddr_string(&lsrp->ls_router), - tok2str(lsa_values,"unknown",EXTRACT_32BITS(lsrp->ls_type)), - EXTRACT_32BITS(&lsrp->ls_type)); - - switch (EXTRACT_32BITS(lsrp->ls_type)) { - /* the LSA header for opaque LSAs was slightly changed */ - case LS_TYPE_OPAQUE_LL: - case LS_TYPE_OPAQUE_AL: - case LS_TYPE_OPAQUE_DW: - printf(", Opaque-Type: %s LSA (%u), Opaque-ID: %u", - tok2str(lsa_opaque_values, "unknown",lsrp->un_ls_stateid.opaque_field.opaque_type), - lsrp->un_ls_stateid.opaque_field.opaque_type, - EXTRACT_24BITS(&lsrp->un_ls_stateid.opaque_field.opaque_id)); - break; - default: - printf(", LSA-ID: %s", - ipaddr_string(&lsrp->un_ls_stateid.ls_stateid)); - break; - } - - ++lsrp; - } - break; - - case OSPF_TYPE_LS_UPDATE: - lsap = op->ospf_lsu.lsu_lsa; - TCHECK(op->ospf_lsu.lsu_count); - lsa_count_max = EXTRACT_32BITS(&op->ospf_lsu.lsu_count); - printf(", %d LSA%s",lsa_count_max, lsa_count_max > 1 ? "s" : ""); - for (lsa_count=1;lsa_count <= lsa_count_max;lsa_count++) { - printf("\n\t LSA #%u",lsa_count); - lsap = (const struct lsa *)ospf_print_lsa(lsap); - if (lsap == NULL) - goto trunc; - } - break; - - case OSPF_TYPE_LS_ACK: - lshp = op->ospf_lsa.lsa_lshdr; - while (ospf_print_lshdr(lshp) != -1) { - ++lshp; - } - break; - - default: - printf("v2 type (%d)", op->ospf_type); - break; - } - return (0); -trunc: - return (1); -} - -void -ospf_print(register const u_char *bp, register u_int length, - const u_char *bp2 _U_) -{ - register const struct ospfhdr *op; - register const u_char *dataend; - register const char *cp; - - op = (struct ospfhdr *)bp; - - /* XXX Before we do anything else, strip off the MD5 trailer */ - TCHECK(op->ospf_authtype); - if (EXTRACT_16BITS(&op->ospf_authtype) == OSPF_AUTH_MD5) { - length -= OSPF_AUTH_MD5_LEN; - snapend -= OSPF_AUTH_MD5_LEN; - } - - /* If the type is valid translate it, or just print the type */ - /* value. If it's not valid, say so and return */ - TCHECK(op->ospf_type); - cp = tok2str(type2str, "unknown LS-type", op->ospf_type); - printf("OSPFv%u, %s, length: %u", - op->ospf_version, - cp, - length); - if (*cp == 'u') - return; - - if(!vflag) /* non verbose - so lets bail out here */ - return; - - TCHECK(op->ospf_len); - if (length != EXTRACT_16BITS(&op->ospf_len)) { - printf(" [len %d]", EXTRACT_16BITS(&op->ospf_len)); - return; - } - dataend = bp + length; - - TCHECK(op->ospf_routerid); - printf("\n\tRouter-ID: %s", ipaddr_string(&op->ospf_routerid)); - - TCHECK(op->ospf_areaid); - if (op->ospf_areaid.s_addr != 0) - printf(", Area %s", ipaddr_string(&op->ospf_areaid)); - else - printf(", Backbone Area"); - - if (vflag) { - /* Print authentication data (should we really do this?) */ - TCHECK2(op->ospf_authdata[0], sizeof(op->ospf_authdata)); - - printf(", Authentication Type: %s (%u)", - tok2str(ospf_authtype_values,"unknown",EXTRACT_16BITS(&op->ospf_authtype)), - EXTRACT_16BITS(&op->ospf_authtype)); - - switch (EXTRACT_16BITS(&op->ospf_authtype)) { - - case OSPF_AUTH_NONE: - break; - - case OSPF_AUTH_SIMPLE: - if (fn_printn(op->ospf_authdata, - sizeof(op->ospf_authdata), snapend)) { - printf("\""); - goto trunc; - } - printf("\""); - break; - - case OSPF_AUTH_MD5: - printf("\n\tKey-ID: %u, Auth-Length: %u, Crypto Sequence Number: 0x%08x", - *((op->ospf_authdata)+2), - *((op->ospf_authdata)+3), - EXTRACT_32BITS((op->ospf_authdata)+4)); - break; - - default: - return; - } - } - /* Do rest according to version. */ - switch (op->ospf_version) { - - case 2: - /* ospf version 2 */ - if (ospf_decode_v2(op, dataend)) - goto trunc; - break; - - default: - printf(" ospf [version %d]", op->ospf_version); - break; - } /* end switch on version */ - - return; -trunc: - fputs(tstr, stdout); -} diff --git a/contrib/tcpdump/print-ospf6.c b/contrib/tcpdump/print-ospf6.c deleted file mode 100644 index 6325a21920254..0000000000000 --- a/contrib/tcpdump/print-ospf6.c +++ /dev/null @@ -1,685 +0,0 @@ -/* - * Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * OSPF support contributed by Jeffrey Honig (jch@mitchell.cit.cornell.edu) - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-ospf6.c,v 1.13 2003/11/16 09:36:31 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -#include "ospf6.h" - -struct bits { - u_int32_t bit; - const char *str; -}; - -static const struct bits ospf6_option_bits[] = { - { OSPF6_OPTION_V6, "V6" }, - { OSPF6_OPTION_E, "E" }, - { OSPF6_OPTION_MC, "MC" }, - { OSPF6_OPTION_N, "N" }, - { OSPF6_OPTION_R, "R" }, - { OSPF6_OPTION_DC, "DC" }, - { 0, NULL } -}; - -static const struct bits ospf6_rla_flag_bits[] = { - { RLA_FLAG_B, "B" }, - { RLA_FLAG_E, "E" }, - { RLA_FLAG_V, "V" }, - { RLA_FLAG_W, "W" }, - { 0, NULL } -}; - -static const struct bits ospf6_asla_flag_bits[] = { - { ASLA_FLAG_EXTERNAL, "E" }, - { ASLA_FLAG_FWDADDR, "F" }, - { ASLA_FLAG_ROUTETAG, "T" }, - { 0, NULL } -}; - -static struct tok type2str[] = { - { OSPF_TYPE_UMD, "umd" }, - { OSPF_TYPE_HELLO, "hello" }, - { OSPF_TYPE_DB, "dd" }, - { OSPF_TYPE_LSR, "ls_req" }, - { OSPF_TYPE_LSU, "ls_upd" }, - { OSPF_TYPE_LSA, "ls_ack" }, - { 0, NULL } -}; - -static char tstr[] = " [|ospf]"; - -#ifdef WIN32 -#define inline __inline -#endif /* WIN32 */ - -/* Forwards */ -static inline void ospf6_print_seqage(u_int32_t, time_t); -static inline void ospf6_print_bits(const struct bits *, u_char); -static void ospf6_print_ls_type(u_int, const rtrid_t *, - const rtrid_t *, const char *); -static int ospf6_print_lshdr(const struct lsa_hdr *); -static int ospf6_print_lsa(const struct lsa *); -static int ospf6_decode_v3(const struct ospf6hdr *, const u_char *); - -static inline void -ospf6_print_seqage(register u_int32_t seq, register time_t us) -{ - register time_t sec = us % 60; - register time_t mins = (us / 60) % 60; - register time_t hour = us / 3600; - - printf(" S %X age ", seq); - if (hour) - printf("%u:%02u:%02u", - (u_int32_t) hour, (u_int32_t) mins, (u_int32_t) sec); - else if (mins) - printf("%u:%02u", (u_int32_t) mins, (u_int32_t) sec); - else - printf("%u", (u_int32_t) sec); -} - - -static inline void -ospf6_print_bits(register const struct bits *bp, register u_char options) -{ - register char sep = ' '; - - do { - if (options & bp->bit) { - printf("%c%s", sep, bp->str); - sep = '/'; - } - } while ((++bp)->bit); -} - -static void -ospf6_print_ls_type(register u_int ls_type, - register const rtrid_t *ls_stateid, - register const rtrid_t *ls_router, register const char *fmt) -{ - const char *scope; - - switch (ls_type & LS_SCOPE_MASK) { - case LS_SCOPE_LINKLOCAL: - scope = "linklocal-"; - break; - case LS_SCOPE_AREA: - scope = "area-"; - break; - case LS_SCOPE_AS: - scope = "AS-"; - break; - default: - scope = ""; - break; - } - - switch (ls_type & LS_TYPE_MASK) { - case LS_TYPE_ROUTER: - printf(" %srtr %s", scope, ipaddr_string(ls_router)); - break; - - case LS_TYPE_NETWORK: - printf(" %snet dr %s if %s", scope, - ipaddr_string(ls_router), - ipaddr_string(ls_stateid)); - break; - - case LS_TYPE_INTER_AP: - printf(" %sinter-area-prefix %s abr %s", scope, - ipaddr_string(ls_stateid), - ipaddr_string(ls_router)); - break; - - case LS_TYPE_INTER_AR: - printf(" %sinter-area-router %s rtr %s", scope, - ipaddr_string(ls_router), - ipaddr_string(ls_stateid)); - break; - - case LS_TYPE_ASE: - printf(" %sase %s asbr %s", scope, - ipaddr_string(ls_stateid), - ipaddr_string(ls_router)); - break; - - case LS_TYPE_GROUP: - printf(" %sgroup %s rtr %s", scope, - ipaddr_string(ls_stateid), - ipaddr_string(ls_router)); - break; - - case LS_TYPE_TYPE7: - printf(" %stype7 %s rtr %s", scope, - ipaddr_string(ls_stateid), - ipaddr_string(ls_router)); - break; - - case LS_TYPE_LINK: - printf(" %slink %s rtr %s", scope, - ipaddr_string(ls_stateid), - ipaddr_string(ls_router)); - break; - - case LS_TYPE_INTRA_AP: - printf(" %sintra-area-prefix %s rtr %s", scope, - ipaddr_string(ls_stateid), - ipaddr_string(ls_router)); - break; - - default: - printf(" %s", scope); - printf(fmt, ls_type); - break; - } - -} - -static int -ospf6_print_lshdr(register const struct lsa_hdr *lshp) -{ - - TCHECK(lshp->ls_type); - printf(" {"); /* } (ctags) */ - - TCHECK(lshp->ls_seq); - ospf6_print_seqage(EXTRACT_32BITS(&lshp->ls_seq), EXTRACT_16BITS(&lshp->ls_age)); - ospf6_print_ls_type(EXTRACT_16BITS(&lshp->ls_type), &lshp->ls_stateid, - &lshp->ls_router, "ls_type %d"); - - return (0); -trunc: - return (1); -} - -static int -ospf6_print_lsaprefix(register const struct lsa_prefix *lsapp) -{ - u_int k; - struct in6_addr prefix; - - TCHECK(*lsapp); - k = (lsapp->lsa_p_len + 31) / 32; - if (k * 4 > sizeof(struct in6_addr)) { - printf("??prefixlen %d??", lsapp->lsa_p_len); - goto trunc; - } - memset(&prefix, 0, sizeof(prefix)); - memcpy(&prefix, lsapp->lsa_p_prefix, k * 4); - printf(" %s/%d", ip6addr_string(&prefix), - lsapp->lsa_p_len); - if (lsapp->lsa_p_opt) - printf("(opt=%x)", lsapp->lsa_p_opt); - if (lsapp->lsa_p_mbz) - printf("(mbz=%x)", EXTRACT_16BITS(&lsapp->lsa_p_mbz)); /* XXX */ - return sizeof(*lsapp) - 4 + k * 4; - -trunc: - return -1; -} - - -/* - * Print a single link state advertisement. If truncated return 1, else 0. - */ -static int -ospf6_print_lsa(register const struct lsa *lsap) -{ - register const u_char *ls_end, *ls_opt; - register const struct rlalink *rlp; -#if 0 - register const struct tos_metric *tosp; -#endif - register const rtrid_t *ap; -#if 0 - register const struct aslametric *almp; - register const struct mcla *mcp; -#endif - register const struct llsa *llsap; - register const struct lsa_prefix *lsapp; -#if 0 - register const u_int32_t *lp; -#endif - register u_int j; - register int k; - u_int32_t flags32; - - if (ospf6_print_lshdr(&lsap->ls_hdr)) - return (1); - TCHECK(lsap->ls_hdr.ls_length); - ls_end = (u_char *)lsap + EXTRACT_16BITS(&lsap->ls_hdr.ls_length); - switch (EXTRACT_16BITS(&lsap->ls_hdr.ls_type)) { - case LS_TYPE_ROUTER | LS_SCOPE_AREA: - TCHECK(lsap->lsa_un.un_rla.rla_flags); - ospf6_print_bits(ospf6_rla_flag_bits, - lsap->lsa_un.un_rla.rla_flags); - TCHECK(lsap->lsa_un.un_rla.rla_options); - ospf6_print_bits(ospf6_option_bits, - EXTRACT_32BITS(&lsap->lsa_un.un_rla.rla_options)); - - TCHECK(lsap->lsa_un.un_rla.rla_link); - rlp = lsap->lsa_un.un_rla.rla_link; - while (rlp + sizeof(*rlp) <= (struct rlalink *)ls_end) { - TCHECK(*rlp); - printf(" {"); /* } (ctags) */ - switch (rlp->link_type) { - - case RLA_TYPE_VIRTUAL: - printf(" virt"); - /* Fall through */ - - case RLA_TYPE_ROUTER: - printf(" nbrid %s nbrif %s if %s", - ipaddr_string(&rlp->link_nrtid), - ipaddr_string(&rlp->link_nifid), - ipaddr_string(&rlp->link_ifid)); - break; - - case RLA_TYPE_TRANSIT: - printf(" dr %s drif %s if %s", - ipaddr_string(&rlp->link_nrtid), - ipaddr_string(&rlp->link_nifid), - ipaddr_string(&rlp->link_ifid)); - break; - - default: - /* { (ctags) */ - printf(" ??RouterLinksType 0x%02x?? }", - rlp->link_type); - return (0); - } - printf(" metric %d", EXTRACT_16BITS(&rlp->link_metric)); - /* { (ctags) */ - printf(" }"); - rlp++; - } - break; - - case LS_TYPE_NETWORK | LS_SCOPE_AREA: - TCHECK(lsap->lsa_un.un_nla.nla_options); - ospf6_print_bits(ospf6_option_bits, - EXTRACT_32BITS(&lsap->lsa_un.un_nla.nla_options)); - printf(" rtrs"); - ap = lsap->lsa_un.un_nla.nla_router; - while ((u_char *)ap < ls_end) { - TCHECK(*ap); - printf(" %s", ipaddr_string(ap)); - ++ap; - } - break; - - case LS_TYPE_INTER_AP | LS_SCOPE_AREA: - TCHECK(lsap->lsa_un.un_inter_ap.inter_ap_metric); - printf(" metric %u", - EXTRACT_32BITS(&lsap->lsa_un.un_inter_ap.inter_ap_metric) & SLA_MASK_METRIC); - lsapp = lsap->lsa_un.un_inter_ap.inter_ap_prefix; - while (lsapp + sizeof(lsapp) <= (struct lsa_prefix *)ls_end) { - k = ospf6_print_lsaprefix(lsapp); - if (k) - goto trunc; - lsapp = (struct lsa_prefix *)(((u_char *)lsapp) + k); - } - break; - case LS_SCOPE_AS | LS_TYPE_ASE: - TCHECK(lsap->lsa_un.un_asla.asla_metric); - flags32 = EXTRACT_32BITS(&lsap->lsa_un.un_asla.asla_metric); - ospf6_print_bits(ospf6_asla_flag_bits, flags32); - printf(" metric %u", - EXTRACT_32BITS(&lsap->lsa_un.un_asla.asla_metric) & - ASLA_MASK_METRIC); - lsapp = lsap->lsa_un.un_asla.asla_prefix; - k = ospf6_print_lsaprefix(lsapp); - if (k < 0) - goto trunc; - if ((ls_opt = (u_char *)(((u_char *)lsapp) + k)) < ls_end) { - struct in6_addr *fwdaddr6; - - if ((flags32 & ASLA_FLAG_FWDADDR) != 0) { - fwdaddr6 = (struct in6_addr *)ls_opt; - TCHECK(*fwdaddr6); - printf(" forward %s", - ip6addr_string(fwdaddr6)); - - ls_opt += sizeof(struct in6_addr); - } - - if ((flags32 & ASLA_FLAG_ROUTETAG) != 0) { - TCHECK(*(u_int32_t *)ls_opt); - printf(" tag %s", - ipaddr_string((u_int32_t *)ls_opt)); - - ls_opt += sizeof(u_int32_t); - } - - if (lsapp->lsa_p_mbz) { - TCHECK(*(u_int32_t *)ls_opt); - printf(" RefLSID: %s", - ipaddr_string((u_int32_t *)ls_opt)); - - ls_opt += sizeof(u_int32_t); - } - } - break; -#if 0 - case LS_TYPE_SUM_ABR: - TCHECK(lsap->lsa_un.un_sla.sla_tosmetric); - lp = lsap->lsa_un.un_sla.sla_tosmetric; - while ((u_char *)lp < ls_end) { - register u_int32_t ul; - - TCHECK(*lp); - ul = EXTRACT_32BITS(lp); - printf(" tos %d metric %d", - (ul & SLA_MASK_TOS) >> SLA_SHIFT_TOS, - ul & SLA_MASK_METRIC); - ++lp; - } - break; - - case LS_TYPE_GROUP: - /* Multicast extensions as of 23 July 1991 */ - mcp = lsap->lsa_un.un_mcla; - while ((u_char *)mcp < ls_end) { - TCHECK(mcp->mcla_vid); - switch (EXTRACT_32BITS(&mcp->mcla_vtype)) { - - case MCLA_VERTEX_ROUTER: - printf(" rtr rtrid %s", - ipaddr_string(&mcp->mcla_vid)); - break; - - case MCLA_VERTEX_NETWORK: - printf(" net dr %s", - ipaddr_string(&mcp->mcla_vid)); - break; - - default: - printf(" ??VertexType %u??", - EXTRACT_32BITS(&mcp->mcla_vtype)); - break; - } - ++mcp; - } -#endif - - case LS_TYPE_LINK: - /* Link LSA */ - llsap = &lsap->lsa_un.un_llsa; - TCHECK(llsap->llsa_options); - ospf6_print_bits(ospf6_option_bits, EXTRACT_32BITS(&llsap->llsa_options)); - TCHECK(llsap->llsa_nprefix); - printf(" pri %d lladdr %s npref %d", llsap->llsa_priority, - ip6addr_string(&llsap->llsa_lladdr), - EXTRACT_32BITS(&llsap->llsa_nprefix)); - lsapp = llsap->llsa_prefix; - for (j = 0; j < EXTRACT_32BITS(&llsap->llsa_nprefix); j++) { - k = ospf6_print_lsaprefix(lsapp); - if (k) - goto trunc; - lsapp = (struct lsa_prefix *)(((u_char *)lsapp) + k); - } - break; - - case LS_TYPE_INTRA_AP | LS_SCOPE_AREA: - /* Intra-Area-Prefix LSA */ - TCHECK(lsap->lsa_un.un_intra_ap.intra_ap_rtid); - ospf6_print_ls_type( - EXTRACT_16BITS(&lsap->lsa_un.un_intra_ap.intra_ap_lstype), - &lsap->lsa_un.un_intra_ap.intra_ap_lsid, - &lsap->lsa_un.un_intra_ap.intra_ap_rtid, - "LinkStateType %d"); - TCHECK(lsap->lsa_un.un_intra_ap.intra_ap_nprefix); - printf(" npref %d", - EXTRACT_16BITS(&lsap->lsa_un.un_intra_ap.intra_ap_nprefix)); - - lsapp = lsap->lsa_un.un_intra_ap.intra_ap_prefix; - for (j = 0; - j < EXTRACT_16BITS(&lsap->lsa_un.un_intra_ap.intra_ap_nprefix); - j++) { - k = ospf6_print_lsaprefix(lsapp); - if (k) - goto trunc; - lsapp = (struct lsa_prefix *)(((u_char *)lsapp) + k); - } - break; - - default: - printf(" ??LinkStateType 0x%04x??", - EXTRACT_16BITS(&lsap->ls_hdr.ls_type)); - } - - /* { (ctags) */ - fputs(" }", stdout); - return (0); -trunc: - fputs(" }", stdout); - return (1); -} - -static int -ospf6_decode_v3(register const struct ospf6hdr *op, - register const u_char *dataend) -{ - register const rtrid_t *ap; - register const struct lsr *lsrp; - register const struct lsa_hdr *lshp; - register const struct lsa *lsap; - register char sep; - register int i; - - switch (op->ospf6_type) { - - case OSPF_TYPE_UMD: - /* - * Rob Coltun's special monitoring packets; - * do nothing - */ - break; - - case OSPF_TYPE_HELLO: - if (vflag) { - TCHECK(op->ospf6_hello.hello_deadint); - ospf6_print_bits(ospf6_option_bits, - EXTRACT_32BITS(&op->ospf6_hello.hello_options)); - printf(" ifid %s pri %d int %d dead %u", - ipaddr_string(&op->ospf6_hello.hello_ifid), - op->ospf6_hello.hello_priority, - EXTRACT_16BITS(&op->ospf6_hello.hello_helloint), - EXTRACT_16BITS(&op->ospf6_hello.hello_deadint)); - } - TCHECK(op->ospf6_hello.hello_dr); - if (op->ospf6_hello.hello_dr != 0) - printf(" dr %s", - ipaddr_string(&op->ospf6_hello.hello_dr)); - TCHECK(op->ospf6_hello.hello_bdr); - if (op->ospf6_hello.hello_bdr != 0) - printf(" bdr %s", - ipaddr_string(&op->ospf6_hello.hello_bdr)); - if (vflag) { - printf(" nbrs"); - ap = op->ospf6_hello.hello_neighbor; - while ((u_char *)ap < dataend) { - TCHECK(*ap); - printf(" %s", ipaddr_string(ap)); - ++ap; - } - } - break; /* HELLO */ - - case OSPF_TYPE_DB: - TCHECK(op->ospf6_db.db_options); - ospf6_print_bits(ospf6_option_bits, - EXTRACT_32BITS(&op->ospf6_db.db_options)); - sep = ' '; - TCHECK(op->ospf6_db.db_flags); - if (op->ospf6_db.db_flags & OSPF6_DB_INIT) { - printf("%cI", sep); - sep = '/'; - } - if (op->ospf6_db.db_flags & OSPF6_DB_MORE) { - printf("%cM", sep); - sep = '/'; - } - if (op->ospf6_db.db_flags & OSPF6_DB_MASTER) { - printf("%cMS", sep); - sep = '/'; - } - TCHECK(op->ospf6_db.db_seq); - printf(" mtu %u S %X", EXTRACT_16BITS(&op->ospf6_db.db_mtu), - EXTRACT_32BITS(&op->ospf6_db.db_seq)); - - if (vflag) { - /* Print all the LS adv's */ - lshp = op->ospf6_db.db_lshdr; - - while (!ospf6_print_lshdr(lshp)) { - /* { (ctags) */ - printf(" }"); - ++lshp; - } - } - break; - - case OSPF_TYPE_LSR: - if (vflag) { - lsrp = op->ospf6_lsr; - while ((u_char *)lsrp < dataend) { - TCHECK(*lsrp); - printf(" {"); /* } (ctags) */ - ospf6_print_ls_type(EXTRACT_16BITS(&lsrp->ls_type), - &lsrp->ls_stateid, - &lsrp->ls_router, - "LinkStateType %d"); - /* { (ctags) */ - printf(" }"); - ++lsrp; - } - } - break; - - case OSPF_TYPE_LSU: - if (vflag) { - lsap = op->ospf6_lsu.lsu_lsa; - TCHECK(op->ospf6_lsu.lsu_count); - i = EXTRACT_32BITS(&op->ospf6_lsu.lsu_count); - while (i--) { - if (ospf6_print_lsa(lsap)) - goto trunc; - lsap = (struct lsa *)((u_char *)lsap + - EXTRACT_16BITS(&lsap->ls_hdr.ls_length)); - } - } - break; - - - case OSPF_TYPE_LSA: - if (vflag) { - lshp = op->ospf6_lsa.lsa_lshdr; - - while (!ospf6_print_lshdr(lshp)) { - /* { (ctags) */ - printf(" }"); - ++lshp; - } - } - break; - - default: - printf("v3 type %d", op->ospf6_type); - break; - } - return (0); -trunc: - return (1); -} - -void -ospf6_print(register const u_char *bp, register u_int length) -{ - register const struct ospf6hdr *op; - register const u_char *dataend; - register const char *cp; - - op = (struct ospf6hdr *)bp; - - /* If the type is valid translate it, or just print the type */ - /* value. If it's not valid, say so and return */ - TCHECK(op->ospf6_type); - cp = tok2str(type2str, "type%d", op->ospf6_type); - printf("OSPFv%d-%s %d:", op->ospf6_version, cp, length); - if (*cp == 't') - return; - - TCHECK(op->ospf6_len); - if (length != EXTRACT_16BITS(&op->ospf6_len)) { - printf(" [len %d]", EXTRACT_16BITS(&op->ospf6_len)); - return; - } - dataend = bp + length; - - /* Print the routerid if it is not the same as the source */ - TCHECK(op->ospf6_routerid); - printf(" rtrid %s", ipaddr_string(&op->ospf6_routerid)); - - TCHECK(op->ospf6_areaid); - if (op->ospf6_areaid != 0) - printf(" area %s", ipaddr_string(&op->ospf6_areaid)); - else - printf(" backbone"); - TCHECK(op->ospf6_instanceid); - if (op->ospf6_instanceid) - printf(" instance %u", op->ospf6_instanceid); - - /* Do rest according to version. */ - switch (op->ospf6_version) { - - case 3: - /* ospf version 3 */ - if (ospf6_decode_v3(op, dataend)) - goto trunc; - break; - - default: - printf(" ospf [version %d]", op->ospf6_version); - break; - } /* end switch on version */ - - return; -trunc: - fputs(tstr, stdout); -} diff --git a/contrib/tcpdump/print-pflog.c b/contrib/tcpdump/print-pflog.c deleted file mode 100644 index 4d70e05482cb9..0000000000000 --- a/contrib/tcpdump/print-pflog.c +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-pflog.c,v 1.13.2.1 2005/07/07 01:24:38 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <pcap.h> - -#include "interface.h" -#include "addrtoname.h" -#include "pf.h" - -static struct tok pf_reasons[] = { - { 0, "0(match)" }, - { 1, "1(bad-offset)" }, - { 2, "2(fragment)" }, - { 3, "3(short)" }, - { 4, "4(normalize)" }, - { 5, "5(memory)" }, - { 0, NULL } -}; - -static struct tok pf_actions[] = { - { PF_PASS, "pass" }, - { PF_DROP, "block" }, - { PF_SCRUB, "scrub" }, - { PF_NAT, "nat" }, - { PF_NONAT, "nat" }, - { PF_BINAT, "binat" }, - { PF_NOBINAT, "binat" }, - { PF_RDR, "rdr" }, - { PF_NORDR, "rdr" }, - { PF_SYNPROXY_DROP, "synproxy-drop" }, - { 0, NULL } -}; - -static struct tok pf_directions[] = { - { PF_INOUT, "in/out" }, - { PF_IN, "in" }, - { PF_OUT, "out" }, - { 0, NULL } -}; - -/* For reading capture files on other systems */ -#define OPENBSD_AF_INET 2 -#define OPENBSD_AF_INET6 24 - -static void -pflog_print(const struct pfloghdr *hdr) -{ - u_int32_t rulenr, subrulenr; - - rulenr = ntohl(hdr->rulenr); - subrulenr = ntohl(hdr->subrulenr); - if (subrulenr == (u_int32_t)-1) - printf("rule %u/", rulenr); - else - printf("rule %u.%s.%u/", rulenr, hdr->ruleset, subrulenr); - - printf("%s: %s %s on %s: ", - tok2str(pf_reasons, "unkn(%u)", hdr->reason), - tok2str(pf_actions, "unkn(%u)", hdr->action), - tok2str(pf_directions, "unkn(%u)", hdr->dir), - hdr->ifname); -} - -u_int -pflog_if_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - u_int length = h->len; - u_int hdrlen; - u_int caplen = h->caplen; - const struct pfloghdr *hdr; - u_int8_t af; - - /* check length */ - if (caplen < sizeof(u_int8_t)) { - printf("[|pflog]"); - return (caplen); - } - -#define MIN_PFLOG_HDRLEN 45 - hdr = (struct pfloghdr *)p; - if (hdr->length < MIN_PFLOG_HDRLEN) { - printf("[pflog: invalid header length!]"); - return (hdr->length); /* XXX: not really */ - } - hdrlen = BPF_WORDALIGN(hdr->length); - - if (caplen < hdrlen) { - printf("[|pflog]"); - return (hdrlen); /* XXX: true? */ - } - - /* print what we know */ - hdr = (struct pfloghdr *)p; - TCHECK(*hdr); - if (eflag) - pflog_print(hdr); - - /* skip to the real packet */ - af = hdr->af; - length -= hdrlen; - caplen -= hdrlen; - p += hdrlen; - switch (af) { - - case AF_INET: -#if OPENBSD_AF_INET != AF_INET - case OPENBSD_AF_INET: /* XXX: read pcap files */ -#endif - ip_print(gndo, p, length); - break; - -#ifdef INET6 - case AF_INET6: -#if OPENBSD_AF_INET6 != AF_INET6 - case OPENBSD_AF_INET6: /* XXX: read pcap files */ -#endif - ip6_print(p, length); - break; -#endif - - default: - /* address family not handled, print raw packet */ - if (!eflag) - pflog_print(hdr); - if (!suppress_default_print) - default_print(p, caplen); - } - - return (hdrlen); -trunc: - printf("[|pflog]"); - return (hdrlen); -} - -/* - * Local Variables: - * c-style: whitesmith - * c-basic-offset: 8 - * End: - */ diff --git a/contrib/tcpdump/print-pgm.c b/contrib/tcpdump/print-pgm.c deleted file mode 100644 index edaf93333e744..0000000000000 --- a/contrib/tcpdump/print-pgm.c +++ /dev/null @@ -1,759 +0,0 @@ -/* - * 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. - * - * Original code by Andy Heffernan (ahh@juniper.net) - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-pgm.c,v 1.1.2.5 2005/06/07 22:06:16 guy 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 "ip.h" -#ifdef INET6 -#include "ip6.h" -#endif -#include "ipproto.h" - -/* - * PGM header (RFC 3208) - */ -struct pgm_header { - u_int16_t pgm_sport; - u_int16_t pgm_dport; - u_int8_t pgm_type; - u_int8_t pgm_options; - u_int16_t pgm_sum; - u_int8_t pgm_gsid[6]; - u_int16_t pgm_length; -}; - -struct pgm_spm { - u_int32_t pgms_seq; - u_int32_t pgms_trailseq; - u_int32_t pgms_leadseq; - u_int16_t pgms_nla_afi; - u_int16_t pgms_reserved; - /* ... u_int8_t pgms_nla[0]; */ - /* ... options */ -}; - -struct pgm_nak { - u_int32_t pgmn_seq; - u_int16_t pgmn_source_afi; - u_int16_t pgmn_reserved; - /* ... u_int8_t pgmn_source[0]; */ - /* ... u_int16_t pgmn_group_afi */ - /* ... u_int16_t pgmn_reserved2; */ - /* ... u_int8_t pgmn_group[0]; */ - /* ... options */ -}; - -struct pgm_poll { - u_int32_t pgmp_seq; - u_int16_t pgmp_round; - u_int16_t pgmp_reserved; - /* ... options */ -}; - -struct pgm_polr { - u_int32_t pgmp_seq; - u_int16_t pgmp_round; - u_int16_t pgmp_subtype; - u_int16_t pgmp_nla_afi; - u_int16_t pgmp_reserved; - /* ... u_int8_t pgmp_nla[0]; */ - /* ... options */ -}; - -struct pgm_data { - u_int32_t pgmd_seq; - u_int32_t pgmd_trailseq; - /* ... options */ -}; - -typedef enum _pgm_type { - PGM_SPM = 0, /* source path message */ - PGM_POLL = 1, /* POLL Request */ - PGM_POLR = 2, /* POLL Response */ - PGM_ODATA = 4, /* original data */ - PGM_RDATA = 5, /* repair data */ - PGM_NAK = 8, /* NAK */ - PGM_NULLNAK = 9, /* Null NAK */ - PGM_NCF = 10, /* NAK Confirmation */ - PGM_ACK = 11, /* ACK for congestion control */ - PGM_SPMR = 12, /* SPM request */ - PGM_MAX = 255 -} pgm_type; - -#define PGM_OPT_BIT_PRESENT 0x01 -#define PGM_OPT_BIT_NETWORK 0x02 -#define PGM_OPT_BIT_VAR_PKTLEN 0x40 -#define PGM_OPT_BIT_PARITY 0x80 - -#define PGM_OPT_LENGTH 0x00 -#define PGM_OPT_FRAGMENT 0x01 -#define PGM_OPT_NAK_LIST 0x02 -#define PGM_OPT_JOIN 0x03 -#define PGM_OPT_NAK_BO_IVL 0x04 -#define PGM_OPT_NAK_BO_RNG 0x05 - -#define PGM_OPT_REDIRECT 0x07 -#define PGM_OPT_PARITY_PRM 0x08 -#define PGM_OPT_PARITY_GRP 0x09 -#define PGM_OPT_CURR_TGSIZE 0x0A -#define PGM_OPT_NBR_UNREACH 0x0B -#define PGM_OPT_PATH_NLA 0x0C - -#define PGM_OPT_SYN 0x0D -#define PGM_OPT_FIN 0x0E -#define PGM_OPT_RST 0x0F -#define PGM_OPT_CR 0x10 -#define PGM_OPT_CRQST 0x11 - -#define PGM_OPT_MASK 0x7f - -#define PGM_OPT_END 0x80 /* end of options marker */ - -#define PGM_MIN_OPT_LEN 4 - -#ifndef AFI_IP -#define AFI_IP 1 -#define AFI_IP6 2 -#endif - -void -pgm_print(register const u_char *bp, register u_int length, - register const u_char *bp2) -{ - register const struct pgm_header *pgm; - register const struct ip *ip; - register char ch; - u_int16_t sport, dport; - int addr_size; - const void *nla; - int nla_af; -#ifdef INET6 - char nla_buf[INET6_ADDRSTRLEN]; - register const struct ip6_hdr *ip6; -#else - char nla_buf[INET_ADDRSTRLEN]; -#endif - u_int8_t opt_type, opt_len, flags1, flags2; - u_int32_t seq, opts_len, len, offset; - - pgm = (struct pgm_header *)bp; - ip = (struct ip *)bp2; -#ifdef INET6 - if (IP_V(ip) == 6) - ip6 = (struct ip6_hdr *)bp2; - else - ip6 = NULL; -#else /* INET6 */ - if (IP_V(ip) == 6) { - (void)printf("Can't handle IPv6"); - return; - } -#endif /* INET6 */ - ch = '\0'; - if (!TTEST(pgm->pgm_dport)) { -#ifdef INET6 - if (ip6) { - (void)printf("%s > %s: [|pgm]", - ip6addr_string(&ip6->ip6_src), - ip6addr_string(&ip6->ip6_dst)); - return; - } else -#endif /* INET6 */ - { - (void)printf("%s > %s: [|pgm]", - ipaddr_string(&ip->ip_src), - ipaddr_string(&ip->ip_dst)); - return; - } - } - - sport = EXTRACT_16BITS(&pgm->pgm_sport); - dport = EXTRACT_16BITS(&pgm->pgm_dport); - -#ifdef INET6 - if (ip6) { - if (ip6->ip6_nxt == IPPROTO_PGM) { - (void)printf("%s.%s > %s.%s: ", - ip6addr_string(&ip6->ip6_src), - tcpport_string(sport), - ip6addr_string(&ip6->ip6_dst), - tcpport_string(dport)); - } else { - (void)printf("%s > %s: ", - tcpport_string(sport), tcpport_string(dport)); - } - } else -#endif /*INET6*/ - { - if (ip->ip_p == IPPROTO_PGM) { - (void)printf("%s.%s > %s.%s: ", - ipaddr_string(&ip->ip_src), - tcpport_string(sport), - ipaddr_string(&ip->ip_dst), - tcpport_string(dport)); - } else { - (void)printf("%s > %s: ", - tcpport_string(sport), tcpport_string(dport)); - } - } - - TCHECK(*pgm); - - (void)printf("PGM, length %u", pgm->pgm_length); - - if (!vflag) - return; - - if (length > pgm->pgm_length) - length = pgm->pgm_length; - - (void)printf(" 0x%02x%02x%02x%02x%02x%02x ", - pgm->pgm_gsid[0], - pgm->pgm_gsid[1], - pgm->pgm_gsid[2], - pgm->pgm_gsid[3], - pgm->pgm_gsid[4], - pgm->pgm_gsid[5]); - switch (pgm->pgm_type) { - case PGM_SPM: { - struct pgm_spm *spm; - - spm = (struct pgm_spm *)(pgm + 1); - TCHECK(*spm); - - switch (EXTRACT_16BITS(&spm->pgms_nla_afi)) { - case AFI_IP: - addr_size = sizeof(struct in_addr); - nla_af = AF_INET; - break; -#ifdef INET6 - case AFI_IP6: - addr_size = sizeof(struct in6_addr); - nla_af = AF_INET6; - break; -#endif - default: - goto trunc; - break; - } - bp = (u_char *) (spm + 1); - TCHECK2(*bp, addr_size); - nla = bp; - bp += addr_size; - - inet_ntop(nla_af, nla, nla_buf, sizeof(nla_buf)); - (void)printf("SPM seq %u trail %u lead %u nla %s", - EXTRACT_32BITS(&spm->pgms_seq), - EXTRACT_32BITS(&spm->pgms_trailseq), - EXTRACT_32BITS(&spm->pgms_leadseq), - nla_buf); - break; - } - - case PGM_POLL: { - struct pgm_poll *poll; - - poll = (struct pgm_poll *)(pgm + 1); - TCHECK(*poll); - (void)printf("POLL seq %u round %u", - EXTRACT_32BITS(&poll->pgmp_seq), - EXTRACT_16BITS(&poll->pgmp_round)); - bp = (u_char *) (poll + 1); - break; - } - case PGM_POLR: { - struct pgm_polr *polr; - u_int32_t ivl, rnd, mask; - - polr = (struct pgm_polr *)(pgm + 1); - TCHECK(*polr); - - switch (EXTRACT_16BITS(&polr->pgmp_nla_afi)) { - case AFI_IP: - addr_size = sizeof(struct in_addr); - nla_af = AF_INET; - break; -#ifdef INET6 - case AFI_IP6: - addr_size = sizeof(struct in6_addr); - nla_af = AF_INET6; - break; -#endif - default: - goto trunc; - break; - } - bp = (u_char *) (polr + 1); - TCHECK2(*bp, addr_size); - nla = bp; - bp += addr_size; - - inet_ntop(nla_af, nla, nla_buf, sizeof(nla_buf)); - - TCHECK2(*bp, sizeof(u_int32_t)); - ivl = EXTRACT_32BITS(bp); - bp += sizeof(u_int32_t); - - TCHECK2(*bp, sizeof(u_int32_t)); - rnd = EXTRACT_32BITS(bp); - bp += sizeof(u_int32_t); - - TCHECK2(*bp, sizeof(u_int32_t)); - mask = EXTRACT_32BITS(bp); - bp += sizeof(u_int32_t); - - (void)printf("POLR seq %u round %u nla %s ivl %u rnd 0x%08x " - "mask 0x%08x", EXTRACT_32BITS(&polr->pgmp_seq), - EXTRACT_16BITS(&polr->pgmp_round), nla_buf, ivl, rnd, mask); - break; - } - case PGM_ODATA: { - struct pgm_data *odata; - - odata = (struct pgm_data *)(pgm + 1); - TCHECK(*odata); - (void)printf("ODATA trail %u seq %u", - EXTRACT_32BITS(&odata->pgmd_trailseq), - EXTRACT_32BITS(&odata->pgmd_seq)); - bp = (u_char *) (odata + 1); - break; - } - - case PGM_RDATA: { - struct pgm_data *rdata; - - rdata = (struct pgm_data *)(pgm + 1); - TCHECK(*rdata); - (void)printf("RDATA trail %u seq %u", - EXTRACT_32BITS(&rdata->pgmd_trailseq), - EXTRACT_32BITS(&rdata->pgmd_seq)); - bp = (u_char *) (rdata + 1); - break; - } - - case PGM_NAK: - case PGM_NULLNAK: - case PGM_NCF: { - struct pgm_nak *nak; - const void *source, *group; - int source_af, group_af; -#ifdef INET6 - char source_buf[INET6_ADDRSTRLEN], group_buf[INET6_ADDRSTRLEN]; -#else - char source_buf[INET_ADDRSTRLEN], group_buf[INET_ADDRSTRLEN]; -#endif - - nak = (struct pgm_nak *)(pgm + 1); - TCHECK(*nak); - - /* - * Skip past the source, saving info along the way - * and stopping if we don't have enough. - */ - switch (EXTRACT_16BITS(&nak->pgmn_source_afi)) { - case AFI_IP: - addr_size = sizeof(struct in_addr); - source_af = AF_INET; - break; -#ifdef INET6 - case AFI_IP6: - addr_size = sizeof(struct in6_addr); - source_af = AF_INET6; - break; -#endif - default: - goto trunc; - break; - } - bp = (u_char *) (nak + 1); - TCHECK2(*bp, addr_size); - source = bp; - bp += addr_size; - - /* - * Skip past the group, saving info along the way - * and stopping if we don't have enough. - */ - switch (EXTRACT_16BITS(bp)) { - case AFI_IP: - addr_size = sizeof(struct in_addr); - group_af = AF_INET; - break; -#ifdef INET6 - case AFI_IP6: - addr_size = sizeof(struct in6_addr); - group_af = AF_INET6; - break; -#endif - default: - goto trunc; - break; - } - bp += (2 * sizeof(u_int16_t)); - TCHECK2(*bp, addr_size); - group = bp; - bp += addr_size; - - /* - * Options decoding can go here. - */ - inet_ntop(source_af, source, source_buf, sizeof(source_buf)); - inet_ntop(group_af, group, group_buf, sizeof(group_buf)); - switch (pgm->pgm_type) { - case PGM_NAK: - (void)printf("NAK "); - break; - case PGM_NULLNAK: - (void)printf("NNAK "); - break; - case PGM_NCF: - (void)printf("NCF "); - break; - default: - break; - } - (void)printf("(%s -> %s), seq %u", - source_buf, group_buf, EXTRACT_32BITS(&nak->pgmn_seq)); - break; - } - - case PGM_SPMR: - (void)printf("SPMR"); - break; - - default: - (void)printf("UNKNOWN type %0x02x", pgm->pgm_type); - break; - - } - if (pgm->pgm_options & PGM_OPT_BIT_PRESENT) { - - /* - * make sure there's enough for the first option header - */ - if (!TTEST2(*bp, PGM_MIN_OPT_LEN)) { - (void)printf("[|OPT]"); - return; - } - - /* - * That option header MUST be an OPT_LENGTH option - * (see the first paragraph of section 9.1 in RFC 3208). - */ - opt_type = *bp++; - if ((opt_type & PGM_OPT_MASK) != PGM_OPT_LENGTH) { - (void)printf("[First option bad, should be PGM_OPT_LENGTH, is %u]", opt_type & PGM_OPT_MASK); - return; - } - opt_len = *bp++; - if (opt_len != 4) { - (void)printf("[Bad OPT_LENGTH option, length %u != 4]", opt_len); - return; - } - opts_len = EXTRACT_16BITS(bp); - if (opts_len < 4) { - (void)printf("[Bad total option length %u < 4]", opts_len); - return; - } - bp += sizeof(u_int16_t); - (void)printf(" OPTS LEN %d", opts_len); - opts_len -= 4; - - while (opts_len) { - if (opts_len < PGM_MIN_OPT_LEN) { - (void)printf("[Total option length leaves no room for final option]"); - return; - } - opt_type = *bp++; - opt_len = *bp++; - if (opt_len < PGM_MIN_OPT_LEN) { - (void)printf("[Bad option, length %u < %u]", opt_len, - PGM_MIN_OPT_LEN); - break; - } - if (opts_len < opt_len) { - (void)printf("[Total option length leaves no room for final option]"); - return; - } - if (!TTEST2(*bp, opt_len - 2)) { - (void)printf(" [|OPT]"); - return; - } - - switch (opt_type & PGM_OPT_MASK) { - case PGM_OPT_LENGTH: - if (opt_len != 4) { - (void)printf("[Bad OPT_LENGTH option, length %u != 4]", opt_len); - return; - } - (void)printf(" OPTS LEN (extra?) %d", EXTRACT_16BITS(bp)); - bp += sizeof(u_int16_t); - opts_len -= 4; - break; - - case PGM_OPT_FRAGMENT: - if (opt_len != 16) { - (void)printf("[Bad OPT_FRAGMENT option, length %u != 16]", opt_len); - return; - } - flags1 = *bp++; - flags2 = *bp++; - seq = EXTRACT_32BITS(bp); - bp += sizeof(u_int32_t); - offset = EXTRACT_32BITS(bp); - bp += sizeof(u_int32_t); - len = EXTRACT_32BITS(bp); - bp += sizeof(u_int32_t); - (void)printf(" FRAG seq %u off %u len %u", seq, offset, len); - opts_len -= 16; - break; - - case PGM_OPT_NAK_LIST: - flags1 = *bp++; - flags2 = *bp++; - opt_len -= sizeof(u_int32_t); /* option header */ - (void)printf(" NAK LIST"); - while (opt_len) { - if (opt_len < sizeof(u_int32_t)) { - (void)printf("[Option length not a multiple of 4]"); - return; - } - TCHECK2(*bp, sizeof(u_int32_t)); - (void)printf(" %u", EXTRACT_32BITS(bp)); - bp += sizeof(u_int32_t); - opt_len -= sizeof(u_int32_t); - opts_len -= sizeof(u_int32_t); - } - break; - - case PGM_OPT_JOIN: - if (opt_len != 8) { - (void)printf("[Bad OPT_JOIN option, length %u != 8]", opt_len); - return; - } - flags1 = *bp++; - flags2 = *bp++; - seq = EXTRACT_32BITS(bp); - bp += sizeof(u_int32_t); - (void)printf(" JOIN %u", seq); - opts_len -= 8; - break; - - case PGM_OPT_NAK_BO_IVL: - if (opt_len != 12) { - (void)printf("[Bad OPT_NAK_BO_IVL option, length %u != 12]", opt_len); - return; - } - flags1 = *bp++; - flags2 = *bp++; - offset = EXTRACT_32BITS(bp); - bp += sizeof(u_int32_t); - seq = EXTRACT_32BITS(bp); - bp += sizeof(u_int32_t); - (void)printf(" BACKOFF ivl %u ivlseq %u", offset, seq); - opts_len -= 12; - break; - - case PGM_OPT_NAK_BO_RNG: - if (opt_len != 12) { - (void)printf("[Bad OPT_NAK_BO_RNG option, length %u != 12]", opt_len); - return; - } - flags1 = *bp++; - flags2 = *bp++; - offset = EXTRACT_32BITS(bp); - bp += sizeof(u_int32_t); - seq = EXTRACT_32BITS(bp); - bp += sizeof(u_int32_t); - (void)printf(" BACKOFF max %u min %u", offset, seq); - opts_len -= 12; - break; - - case PGM_OPT_REDIRECT: - flags1 = *bp++; - flags2 = *bp++; - switch (EXTRACT_16BITS(bp)) { - case AFI_IP: - addr_size = sizeof(struct in_addr); - nla_af = AF_INET; - break; -#ifdef INET6 - case AFI_IP6: - addr_size = sizeof(struct in6_addr); - nla_af = AF_INET6; - break; -#endif - default: - goto trunc; - break; - } - bp += (2 * sizeof(u_int16_t)); - if (opt_len != 4 + addr_size) { - (void)printf("[Bad OPT_REDIRECT option, length %u != 4 + address size]", opt_len); - return; - } - TCHECK2(*bp, addr_size); - nla = bp; - bp += addr_size; - - inet_ntop(nla_af, nla, nla_buf, sizeof(nla_buf)); - (void)printf(" REDIRECT %s", (char *)nla); - opts_len -= 4 + addr_size; - break; - - case PGM_OPT_PARITY_PRM: - if (opt_len != 8) { - (void)printf("[Bad OPT_PARITY_PRM option, length %u != 8]", opt_len); - return; - } - flags1 = *bp++; - flags2 = *bp++; - len = EXTRACT_32BITS(bp); - bp += sizeof(u_int32_t); - (void)printf(" PARITY MAXTGS %u", len); - opts_len -= 8; - break; - - case PGM_OPT_PARITY_GRP: - if (opt_len != 8) { - (void)printf("[Bad OPT_PARITY_GRP option, length %u != 8]", opt_len); - return; - } - flags1 = *bp++; - flags2 = *bp++; - seq = EXTRACT_32BITS(bp); - bp += sizeof(u_int32_t); - (void)printf(" PARITY GROUP %u", seq); - opts_len -= 8; - break; - - case PGM_OPT_CURR_TGSIZE: - if (opt_len != 8) { - (void)printf("[Bad OPT_CURR_TGSIZE option, length %u != 8]", opt_len); - return; - } - flags1 = *bp++; - flags2 = *bp++; - len = EXTRACT_32BITS(bp); - bp += sizeof(u_int32_t); - (void)printf(" PARITY ATGS %u", len); - opts_len -= 8; - break; - - case PGM_OPT_NBR_UNREACH: - if (opt_len != 4) { - (void)printf("[Bad OPT_NBR_UNREACH option, length %u != 4]", opt_len); - return; - } - flags1 = *bp++; - flags2 = *bp++; - (void)printf(" NBR_UNREACH"); - opts_len -= 4; - break; - - case PGM_OPT_PATH_NLA: - (void)printf(" PATH_NLA [%d]", opt_len); - bp += opt_len; - opts_len -= opt_len; - break; - - case PGM_OPT_SYN: - if (opt_len != 4) { - (void)printf("[Bad OPT_SYN option, length %u != 4]", opt_len); - return; - } - flags1 = *bp++; - flags2 = *bp++; - (void)printf(" SYN"); - opts_len -= 4; - break; - - case PGM_OPT_FIN: - if (opt_len != 4) { - (void)printf("[Bad OPT_FIN option, length %u != 4]", opt_len); - return; - } - flags1 = *bp++; - flags2 = *bp++; - (void)printf(" FIN"); - opts_len -= 4; - break; - - case PGM_OPT_RST: - if (opt_len != 4) { - (void)printf("[Bad OPT_RST option, length %u != 4]", opt_len); - return; - } - flags1 = *bp++; - flags2 = *bp++; - (void)printf(" RST"); - opts_len -= 4; - break; - - case PGM_OPT_CR: - (void)printf(" CR"); - bp += opt_len; - opts_len -= opt_len; - break; - - case PGM_OPT_CRQST: - if (opt_len != 4) { - (void)printf("[Bad OPT_CRQST option, length %u != 4]", opt_len); - return; - } - flags1 = *bp++; - flags2 = *bp++; - (void)printf(" CRQST"); - opts_len -= 4; - break; - - default: - (void)printf(" OPT_%02X [%d] ", opt_type, opt_len); - bp += opt_len; - opts_len -= opt_len; - break; - } - - if (opt_type & PGM_OPT_END) - break; - } - } - - (void)printf(" [%u]", EXTRACT_16BITS(&pgm->pgm_length)); - - return; - -trunc: - fputs("[|pgm]", stdout); - if (ch != '\0') - putchar('>'); -} diff --git a/contrib/tcpdump/print-pim.c b/contrib/tcpdump/print-pim.c deleted file mode 100644 index 8af21608f98f0..0000000000000 --- a/contrib/tcpdump/print-pim.c +++ /dev/null @@ -1,1070 +0,0 @@ -/* - * Copyright (c) 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-pim.c,v 1.45.2.3 2005/07/11 20:24:34 hannes Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> -#include "interface.h" - -#define PIMV2_TYPE_HELLO 0 -#define PIMV2_TYPE_REGISTER 1 -#define PIMV2_TYPE_REGISTER_STOP 2 -#define PIMV2_TYPE_JOIN_PRUNE 3 -#define PIMV2_TYPE_BOOTSTRAP 4 -#define PIMV2_TYPE_ASSERT 5 -#define PIMV2_TYPE_GRAFT 6 -#define PIMV2_TYPE_GRAFT_ACK 7 -#define PIMV2_TYPE_CANDIDATE_RP 8 -#define PIMV2_TYPE_PRUNE_REFRESH 9 - -static struct tok pimv2_type_values[] = { - { PIMV2_TYPE_HELLO, "Hello" }, - { PIMV2_TYPE_REGISTER, "Register" }, - { PIMV2_TYPE_REGISTER_STOP, "Register Stop" }, - { PIMV2_TYPE_JOIN_PRUNE, "Join / Prune" }, - { PIMV2_TYPE_BOOTSTRAP, "Bootstrap" }, - { PIMV2_TYPE_ASSERT, "Assert" }, - { PIMV2_TYPE_GRAFT, "Graft" }, - { PIMV2_TYPE_GRAFT_ACK, "Graft Acknowledgement" }, - { PIMV2_TYPE_CANDIDATE_RP, "Candidate RP Advertisement" }, - { PIMV2_TYPE_PRUNE_REFRESH, "Prune Refresh" }, - { 0, NULL} -}; - -#define PIMV2_HELLO_OPTION_HOLDTIME 1 -#define PIMV2_HELLO_OPTION_LANPRUNEDELAY 2 -#define PIMV2_HELLO_OPTION_DR_PRIORITY_OLD 18 -#define PIMV2_HELLO_OPTION_DR_PRIORITY 19 -#define PIMV2_HELLO_OPTION_GENID 20 -#define PIMV2_HELLO_OPTION_REFRESH_CAP 21 -#define PIMV2_HELLO_OPTION_BIDIR_CAP 22 -#define PIMV2_HELLO_OPTION_ADDRESS_LIST 24 -#define PIMV2_HELLO_OPTION_ADDRESS_LIST_OLD 65001 - -static struct tok pimv2_hello_option_values[] = { - { PIMV2_HELLO_OPTION_HOLDTIME, "Hold Time" }, - { PIMV2_HELLO_OPTION_LANPRUNEDELAY, "LAN Prune Delay" }, - { PIMV2_HELLO_OPTION_DR_PRIORITY_OLD, "DR Priority (Old)" }, - { PIMV2_HELLO_OPTION_DR_PRIORITY, "DR Priority" }, - { PIMV2_HELLO_OPTION_GENID, "Generation ID" }, - { PIMV2_HELLO_OPTION_REFRESH_CAP, "State Refresh Capability" }, - { PIMV2_HELLO_OPTION_BIDIR_CAP, "Bi-Directional Capability" }, - { PIMV2_HELLO_OPTION_ADDRESS_LIST, "Address List" }, - { PIMV2_HELLO_OPTION_ADDRESS_LIST_OLD, "Address List (Old)" }, - { 0, NULL} -}; - - -/* - * XXX: We consider a case where IPv6 is not ready yet for portability, - * but PIM dependent defintions should be independent of IPv6... - */ - -struct pim { - u_int8_t pim_typever; - /* upper 4bit: PIM version number; 2 for PIMv2 */ - /* lower 4bit: the PIM message type, currently they are: - * Hello, Register, Register-Stop, Join/Prune, - * Bootstrap, Assert, Graft (PIM-DM only), - * Graft-Ack (PIM-DM only), C-RP-Adv - */ -#define PIM_VER(x) (((x) & 0xf0) >> 4) -#define PIM_TYPE(x) ((x) & 0x0f) - u_char pim_rsv; /* Reserved */ - u_short pim_cksum; /* IP style check sum */ -}; - - -#include <stdio.h> -#include <stdlib.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -#include "ip.h" - -static void pimv2_print(register const u_char *bp, register u_int len); - -static void -pimv1_join_prune_print(register const u_char *bp, register u_int len) -{ - int maddrlen, addrlen, ngroups, njoin, nprune; - int njp; - - /* If it's a single group and a single source, use 1-line output. */ - if (TTEST2(bp[0], 30) && bp[11] == 1 && - ((njoin = EXTRACT_16BITS(&bp[20])) + EXTRACT_16BITS(&bp[22])) == 1) { - int hold; - - (void)printf(" RPF %s ", ipaddr_string(bp)); - hold = EXTRACT_16BITS(&bp[6]); - if (hold != 180) { - (void)printf("Hold "); - relts_print(hold); - } - (void)printf("%s (%s/%d, %s", njoin ? "Join" : "Prune", - ipaddr_string(&bp[26]), bp[25] & 0x3f, - ipaddr_string(&bp[12])); - if (EXTRACT_32BITS(&bp[16]) != 0xffffffff) - (void)printf("/%s", ipaddr_string(&bp[16])); - (void)printf(") %s%s %s", - (bp[24] & 0x01) ? "Sparse" : "Dense", - (bp[25] & 0x80) ? " WC" : "", - (bp[25] & 0x40) ? "RP" : "SPT"); - return; - } - - TCHECK2(bp[0], sizeof(struct in_addr)); - if (vflag > 1) - (void)printf("\n"); - (void)printf(" Upstream Nbr: %s", ipaddr_string(bp)); - TCHECK2(bp[6], 2); - if (vflag > 1) - (void)printf("\n"); - (void)printf(" Hold time: "); - relts_print(EXTRACT_16BITS(&bp[6])); - if (vflag < 2) - return; - bp += 8; - len -= 8; - - TCHECK2(bp[0], 4); - maddrlen = bp[1]; - addrlen = bp[2]; - ngroups = bp[3]; - bp += 4; - len -= 4; - while (ngroups--) { - /* - * XXX - does the address have length "addrlen" and the - * mask length "maddrlen"? - */ - TCHECK2(bp[0], sizeof(struct in_addr)); - (void)printf("\n\tGroup: %s", ipaddr_string(bp)); - TCHECK2(bp[4], sizeof(struct in_addr)); - if (EXTRACT_32BITS(&bp[4]) != 0xffffffff) - (void)printf("/%s", ipaddr_string(&bp[4])); - TCHECK2(bp[8], 4); - njoin = EXTRACT_16BITS(&bp[8]); - nprune = EXTRACT_16BITS(&bp[10]); - (void)printf(" joined: %d pruned: %d", njoin, nprune); - bp += 12; - len -= 12; - for (njp = 0; njp < (njoin + nprune); njp++) { - const char *type; - - if (njp < njoin) - type = "Join "; - else - type = "Prune"; - TCHECK2(bp[0], 6); - (void)printf("\n\t%s %s%s%s%s/%d", type, - (bp[0] & 0x01) ? "Sparse " : "Dense ", - (bp[1] & 0x80) ? "WC " : "", - (bp[1] & 0x40) ? "RP " : "SPT ", - ipaddr_string(&bp[2]), bp[1] & 0x3f); - bp += 6; - len -= 6; - } - } - return; -trunc: - (void)printf("[|pim]"); - return; -} - -void -pimv1_print(register const u_char *bp, register u_int len) -{ - register const u_char *ep; - register u_char type; - - ep = (const u_char *)snapend; - if (bp >= ep) - return; - - TCHECK(bp[1]); - type = bp[1]; - - switch (type) { - case 0: - (void)printf(" Query"); - if (TTEST(bp[8])) { - switch (bp[8] >> 4) { - case 0: - (void)printf(" Dense-mode"); - break; - case 1: - (void)printf(" Sparse-mode"); - break; - case 2: - (void)printf(" Sparse-Dense-mode"); - break; - default: - (void)printf(" mode-%d", bp[8] >> 4); - break; - } - } - if (vflag) { - TCHECK2(bp[10],2); - (void)printf(" (Hold-time "); - relts_print(EXTRACT_16BITS(&bp[10])); - (void)printf(")"); - } - break; - - case 1: - (void)printf(" Register"); - TCHECK2(bp[8], 20); /* ip header */ - (void)printf(" for %s > %s", ipaddr_string(&bp[20]), - ipaddr_string(&bp[24])); - break; - case 2: - (void)printf(" Register-Stop"); - TCHECK2(bp[12], sizeof(struct in_addr)); - (void)printf(" for %s > %s", ipaddr_string(&bp[8]), - ipaddr_string(&bp[12])); - break; - case 3: - (void)printf(" Join/Prune"); - if (vflag) - pimv1_join_prune_print(&bp[8], len - 8); - break; - case 4: - (void)printf(" RP-reachable"); - if (vflag) { - TCHECK2(bp[22], 2); - (void)printf(" group %s", - ipaddr_string(&bp[8])); - if (EXTRACT_32BITS(&bp[12]) != 0xffffffff) - (void)printf("/%s", ipaddr_string(&bp[12])); - (void)printf(" RP %s hold ", ipaddr_string(&bp[16])); - relts_print(EXTRACT_16BITS(&bp[22])); - } - break; - case 5: - (void)printf(" Assert"); - TCHECK2(bp[16], sizeof(struct in_addr)); - (void)printf(" for %s > %s", ipaddr_string(&bp[16]), - ipaddr_string(&bp[8])); - if (EXTRACT_32BITS(&bp[12]) != 0xffffffff) - (void)printf("/%s", ipaddr_string(&bp[12])); - TCHECK2(bp[24], 4); - (void)printf(" %s pref %d metric %d", - (bp[20] & 0x80) ? "RP-tree" : "SPT", - EXTRACT_32BITS(&bp[20]) & 0x7fffffff, - EXTRACT_32BITS(&bp[24])); - break; - case 6: - (void)printf(" Graft"); - if (vflag) - pimv1_join_prune_print(&bp[8], len - 8); - break; - case 7: - (void)printf(" Graft-ACK"); - if (vflag) - pimv1_join_prune_print(&bp[8], len - 8); - break; - case 8: - (void)printf(" Mode"); - break; - default: - (void)printf(" [type %d]", type); - break; - } - if ((bp[4] >> 4) != 1) - (void)printf(" [v%d]", bp[4] >> 4); - return; - -trunc: - (void)printf("[|pim]"); - return; -} - -/* - * auto-RP is a cisco protocol, documented at - * ftp://ftpeng.cisco.com/ipmulticast/specs/pim-autorp-spec01.txt - * - * This implements version 1+, dated Sept 9, 1998. - */ -void -cisco_autorp_print(register const u_char *bp, register u_int len) -{ - int type; - int numrps; - int hold; - - TCHECK(bp[0]); - (void)printf(" auto-rp "); - type = bp[0]; - switch (type) { - case 0x11: - (void)printf("candidate-advert"); - break; - case 0x12: - (void)printf("mapping"); - break; - default: - (void)printf("type-0x%02x", type); - break; - } - - TCHECK(bp[1]); - numrps = bp[1]; - - TCHECK2(bp[2], 2); - (void)printf(" Hold "); - hold = EXTRACT_16BITS(&bp[2]); - if (hold) - relts_print(EXTRACT_16BITS(&bp[2])); - else - printf("FOREVER"); - - /* Next 4 bytes are reserved. */ - - bp += 8; len -= 8; - - /*XXX skip unless -v? */ - - /* - * Rest of packet: - * numrps entries of the form: - * 32 bits: RP - * 6 bits: reserved - * 2 bits: PIM version supported, bit 0 is "supports v1", 1 is "v2". - * 8 bits: # of entries for this RP - * each entry: 7 bits: reserved, 1 bit: negative, - * 8 bits: mask 32 bits: source - * lather, rinse, repeat. - */ - while (numrps--) { - int nentries; - char s; - - TCHECK2(bp[0], 4); - (void)printf(" RP %s", ipaddr_string(bp)); - TCHECK(bp[4]); - switch (bp[4] & 0x3) { - case 0: printf(" PIMv?"); - break; - case 1: printf(" PIMv1"); - break; - case 2: printf(" PIMv2"); - break; - case 3: printf(" PIMv1+2"); - break; - } - if (bp[4] & 0xfc) - (void)printf(" [rsvd=0x%02x]", bp[4] & 0xfc); - TCHECK(bp[5]); - nentries = bp[5]; - bp += 6; len -= 6; - s = ' '; - for (; nentries; nentries--) { - TCHECK2(bp[0], 6); - (void)printf("%c%s%s/%d", s, bp[0] & 1 ? "!" : "", - ipaddr_string(&bp[2]), bp[1]); - if (bp[0] & 0xfe) - (void)printf("[rsvd=0x%02x]", bp[0] & 0xfe); - s = ','; - bp += 6; len -= 6; - } - } - return; - -trunc: - (void)printf("[|autorp]"); - return; -} - -void -pim_print(register const u_char *bp, register u_int len) -{ - register const u_char *ep; - register struct pim *pim = (struct pim *)bp; - - ep = (const u_char *)snapend; - if (bp >= ep) - return; -#ifdef notyet /* currently we see only version and type */ - TCHECK(pim->pim_rsv); -#endif - - switch (PIM_VER(pim->pim_typever)) { - case 2: - if (!vflag) { - printf("PIMv%u, %s, length: %u", - PIM_VER(pim->pim_typever), - tok2str(pimv2_type_values,"Unknown Type",PIM_TYPE(pim->pim_typever)), - len); - return; - } else { - printf("PIMv%u, length: %u\n\t%s", - PIM_VER(pim->pim_typever), - len, - tok2str(pimv2_type_values,"Unknown Type",PIM_TYPE(pim->pim_typever))); - pimv2_print(bp, len); - } - break; - default: - printf("PIMv%u, length: %u", - PIM_VER(pim->pim_typever), - len); - break; - } - return; -} - -/* - * PIMv2 uses encoded address representations. - * - * The last PIM-SM I-D before RFC2117 was published specified the - * following representation for unicast addresses. However, RFC2117 - * specified no encoding for unicast addresses with the unicast - * address length specified in the header. Therefore, we have to - * guess which encoding is being used (Cisco's PIMv2 implementation - * uses the non-RFC encoding). RFC2117 turns a previously "Reserved" - * field into a 'unicast-address-length-in-bytes' field. We guess - * that it's the draft encoding if this reserved field is zero. - * - * RFC2362 goes back to the encoded format, and calls the addr length - * field "reserved" again. - * - * The first byte is the address family, from: - * - * 0 Reserved - * 1 IP (IP version 4) - * 2 IP6 (IP version 6) - * 3 NSAP - * 4 HDLC (8-bit multidrop) - * 5 BBN 1822 - * 6 802 (includes all 802 media plus Ethernet "canonical format") - * 7 E.163 - * 8 E.164 (SMDS, Frame Relay, ATM) - * 9 F.69 (Telex) - * 10 X.121 (X.25, Frame Relay) - * 11 IPX - * 12 Appletalk - * 13 Decnet IV - * 14 Banyan Vines - * 15 E.164 with NSAP format subaddress - * - * In addition, the second byte is an "Encoding". 0 is the default - * encoding for the address family, and no other encodings are currently - * specified. - * - */ - -static int pimv2_addr_len; - -enum pimv2_addrtype { - pimv2_unicast, pimv2_group, pimv2_source -}; - -/* 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Addr Family | Encoding Type | Unicast Address | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+++++++ - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Addr Family | Encoding Type | Reserved | Mask Len | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Group multicast Address | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Addr Family | Encoding Type | Rsrvd |S|W|R| Mask Len | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Source Address | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ -static int -pimv2_addr_print(const u_char *bp, enum pimv2_addrtype at, int silent) -{ - int af; - int len, hdrlen; - - TCHECK(bp[0]); - - if (pimv2_addr_len == 0) { - TCHECK(bp[1]); - switch (bp[0]) { - case 1: - af = AF_INET; - len = sizeof(struct in_addr); - break; -#ifdef INET6 - case 2: - af = AF_INET6; - len = sizeof(struct in6_addr); - break; -#endif - default: - return -1; - } - if (bp[1] != 0) - return -1; - hdrlen = 2; - } else { - switch (pimv2_addr_len) { - case sizeof(struct in_addr): - af = AF_INET; - break; -#ifdef INET6 - case sizeof(struct in6_addr): - af = AF_INET6; - break; -#endif - default: - return -1; - break; - } - len = pimv2_addr_len; - hdrlen = 0; - } - - bp += hdrlen; - switch (at) { - case pimv2_unicast: - TCHECK2(bp[0], len); - if (af == AF_INET) { - if (!silent) - (void)printf("%s", ipaddr_string(bp)); - } -#ifdef INET6 - else if (af == AF_INET6) { - if (!silent) - (void)printf("%s", ip6addr_string(bp)); - } -#endif - return hdrlen + len; - case pimv2_group: - case pimv2_source: - TCHECK2(bp[0], len + 2); - if (af == AF_INET) { - if (!silent) { - (void)printf("%s", ipaddr_string(bp + 2)); - if (bp[1] != 32) - (void)printf("/%u", bp[1]); - } - } -#ifdef INET6 - else if (af == AF_INET6) { - if (!silent) { - (void)printf("%s", ip6addr_string(bp + 2)); - if (bp[1] != 128) - (void)printf("/%u", bp[1]); - } - } -#endif - if (bp[0] && !silent) { - if (at == pimv2_group) { - (void)printf("(0x%02x)", bp[0]); - } else { - (void)printf("(%s%s%s", - bp[0] & 0x04 ? "S" : "", - bp[0] & 0x02 ? "W" : "", - bp[0] & 0x01 ? "R" : ""); - if (bp[0] & 0xf8) { - (void) printf("+0x%02x", bp[0] & 0xf8); - } - (void)printf(")"); - } - } - return hdrlen + 2 + len; - default: - return -1; - } -trunc: - return -1; -} - -static void -pimv2_print(register const u_char *bp, register u_int len) -{ - register const u_char *ep; - register struct pim *pim = (struct pim *)bp; - int advance; - - ep = (const u_char *)snapend; - if (bp >= ep) - return; - if (ep > bp + len) - ep = bp + len; - TCHECK(pim->pim_rsv); - pimv2_addr_len = pim->pim_rsv; - if (pimv2_addr_len != 0) - (void)printf(", RFC2117-encoding"); - - switch (PIM_TYPE(pim->pim_typever)) { - case PIMV2_TYPE_HELLO: - { - u_int16_t otype, olen; - bp += 4; - while (bp < ep) { - TCHECK2(bp[0], 4); - otype = EXTRACT_16BITS(&bp[0]); - olen = EXTRACT_16BITS(&bp[2]); - TCHECK2(bp[0], 4 + olen); - - printf("\n\t %s Option (%u), length: %u, Value: ", - tok2str( pimv2_hello_option_values,"Unknown",otype), - otype, - olen); - bp += 4; - - switch (otype) { - case PIMV2_HELLO_OPTION_HOLDTIME: - relts_print(EXTRACT_16BITS(bp)); - break; - - case PIMV2_HELLO_OPTION_LANPRUNEDELAY: - if (olen != 4) { - (void)printf("ERROR: Option Lenght != 4 Bytes (%u)", olen); - } else { - char t_bit; - u_int16_t lan_delay, override_interval; - lan_delay = EXTRACT_16BITS(bp); - override_interval = EXTRACT_16BITS(bp+2); - t_bit = (lan_delay & 0x8000)? 1 : 0; - lan_delay &= ~0x8000; - (void)printf("\n\t T-bit=%d, LAN delay %dms, Override interval %dms", - t_bit, lan_delay, override_interval); - } - break; - - case PIMV2_HELLO_OPTION_DR_PRIORITY_OLD: - case PIMV2_HELLO_OPTION_DR_PRIORITY: - switch (olen) { - case 0: - printf("Bi-Directional Capability (Old)"); - break; - case 4: - printf("%u", EXTRACT_32BITS(bp)); - break; - default: - printf("ERROR: Option Lenght != 4 Bytes (%u)", olen); - break; - } - break; - - case PIMV2_HELLO_OPTION_GENID: - (void)printf("0x%08x", EXTRACT_32BITS(bp)); - break; - - case PIMV2_HELLO_OPTION_REFRESH_CAP: - (void)printf("v%d", *bp); - if (*(bp+1) != 0) { - (void)printf(", interval "); - relts_print(*(bp+1)); - } - if (EXTRACT_16BITS(bp+2) != 0) { - (void)printf(" ?0x%04x?", EXTRACT_16BITS(bp+2)); - } - break; - - case PIMV2_HELLO_OPTION_BIDIR_CAP: - break; - - case PIMV2_HELLO_OPTION_ADDRESS_LIST_OLD: - case PIMV2_HELLO_OPTION_ADDRESS_LIST: - if (vflag > 1) { - const u_char *ptr = bp; - while (ptr < (bp+olen)) { - int advance; - - printf("\n\t "); - advance = pimv2_addr_print(ptr, pimv2_unicast, 0); - if (advance < 0) { - printf("..."); - break; - } - ptr += advance; - } - } - break; - default: - if (vflag <= 1) - print_unknown_data(bp,"\n\t ",olen); - break; - } - /* do we want to see an additionally hexdump ? */ - if (vflag> 1) - print_unknown_data(bp,"\n\t ",olen); - bp += olen; - } - break; - } - - case PIMV2_TYPE_REGISTER: - { - struct ip *ip; - - if (vflag && bp + 8 <= ep) { - (void)printf(" %s%s", bp[4] & 0x80 ? "B" : "", - bp[4] & 0x40 ? "N" : ""); - } - bp += 8; len -= 8; - - /* encapsulated multicast packet */ - if (bp >= ep) - break; - ip = (struct ip *)bp; - switch (IP_V(ip)) { - case 4: /* IPv4 */ - printf(" "); - ip_print(gndo, bp, len); - break; -#ifdef INET6 - case 6: /* IPv6 */ - printf(" "); - ip6_print(bp, len); - break; -#endif - default: - (void)printf(" IP ver %d", IP_V(ip)); - break; - } - break; - } - - case PIMV2_TYPE_REGISTER_STOP: - bp += 4; len -= 4; - if (bp >= ep) - break; - (void)printf(" group="); - if ((advance = pimv2_addr_print(bp, pimv2_group, 0)) < 0) { - (void)printf("..."); - break; - } - bp += advance; len -= advance; - if (bp >= ep) - break; - (void)printf(" source="); - if ((advance = pimv2_addr_print(bp, pimv2_unicast, 0)) < 0) { - (void)printf("..."); - break; - } - bp += advance; len -= advance; - break; - - case PIMV2_TYPE_JOIN_PRUNE: - case PIMV2_TYPE_GRAFT: - case PIMV2_TYPE_GRAFT_ACK: - - - /* - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * |PIM Ver| Type | Addr length | Checksum | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Unicast-Upstream Neighbor Address | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Reserved | Num groups | Holdtime | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Encoded-Multicast Group Address-1 | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Number of Joined Sources | Number of Pruned Sources | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Encoded-Joined Source Address-1 | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | . | - * | . | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Encoded-Joined Source Address-n | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Encoded-Pruned Source Address-1 | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | . | - * | . | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Encoded-Pruned Source Address-n | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | . | - * | . | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Encoded-Multicast Group Address-n | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - { - u_int8_t ngroup; - u_int16_t holdtime; - u_int16_t njoin; - u_int16_t nprune; - int i, j; - - bp += 4; len -= 4; - if (PIM_TYPE(pim->pim_typever) != 7) { /*not for Graft-ACK*/ - if (bp >= ep) - break; - (void)printf(", upstream-neighbor: "); - if ((advance = pimv2_addr_print(bp, pimv2_unicast, 0)) < 0) { - (void)printf("..."); - break; - } - bp += advance; len -= advance; - } - if (bp + 4 > ep) - break; - ngroup = bp[1]; - holdtime = EXTRACT_16BITS(&bp[2]); - (void)printf("\n\t %u group(s)", ngroup); - if (PIM_TYPE(pim->pim_typever) != 7) { /*not for Graft-ACK*/ - (void)printf(", holdtime: "); - if (holdtime == 0xffff) - (void)printf("infinite"); - else - relts_print(holdtime); - } - bp += 4; len -= 4; - for (i = 0; i < ngroup; i++) { - if (bp >= ep) - goto jp_done; - (void)printf("\n\t group #%u: ", i+1); - if ((advance = pimv2_addr_print(bp, pimv2_group, 0)) < 0) { - (void)printf("...)"); - goto jp_done; - } - bp += advance; len -= advance; - if (bp + 4 > ep) { - (void)printf("...)"); - goto jp_done; - } - njoin = EXTRACT_16BITS(&bp[0]); - nprune = EXTRACT_16BITS(&bp[2]); - (void)printf(", joined sources: %u, pruned sources: %u", njoin,nprune); - bp += 4; len -= 4; - for (j = 0; j < njoin; j++) { - (void)printf("\n\t joined source #%u: ",j+1); - if ((advance = pimv2_addr_print(bp, pimv2_source, 0)) < 0) { - (void)printf("...)"); - goto jp_done; - } - bp += advance; len -= advance; - } - for (j = 0; j < nprune; j++) { - (void)printf("\n\t pruned source #%u: ",j+1); - if ((advance = pimv2_addr_print(bp, pimv2_source, 0)) < 0) { - (void)printf("...)"); - goto jp_done; - } - bp += advance; len -= advance; - } - } - jp_done: - break; - } - - case PIMV2_TYPE_BOOTSTRAP: - { - int i, j, frpcnt; - bp += 4; - - /* Fragment Tag, Hash Mask len, and BSR-priority */ - if (bp + sizeof(u_int16_t) >= ep) break; - (void)printf(" tag=%x", EXTRACT_16BITS(bp)); - bp += sizeof(u_int16_t); - if (bp >= ep) break; - (void)printf(" hashmlen=%d", bp[0]); - if (bp + 1 >= ep) break; - (void)printf(" BSRprio=%d", bp[1]); - bp += 2; - - /* Encoded-Unicast-BSR-Address */ - if (bp >= ep) break; - (void)printf(" BSR="); - if ((advance = pimv2_addr_print(bp, pimv2_unicast, 0)) < 0) { - (void)printf("..."); - break; - } - bp += advance; - - for (i = 0; bp < ep; i++) { - /* Encoded-Group Address */ - (void)printf(" (group%d: ", i); - if ((advance = pimv2_addr_print(bp, pimv2_group, 0)) - < 0) { - (void)printf("...)"); - goto bs_done; - } - bp += advance; - - /* RP-Count, Frag RP-Cnt, and rsvd */ - if (bp >= ep) { - (void)printf("...)"); - goto bs_done; - } - (void)printf(" RPcnt=%d", bp[0]); - if (bp + 1 >= ep) { - (void)printf("...)"); - goto bs_done; - } - (void)printf(" FRPcnt=%d", frpcnt = bp[1]); - bp += 4; - - for (j = 0; j < frpcnt && bp < ep; j++) { - /* each RP info */ - (void)printf(" RP%d=", j); - if ((advance = pimv2_addr_print(bp, - pimv2_unicast, - 0)) < 0) { - (void)printf("...)"); - goto bs_done; - } - bp += advance; - - if (bp + 1 >= ep) { - (void)printf("...)"); - goto bs_done; - } - (void)printf(",holdtime="); - relts_print(EXTRACT_16BITS(bp)); - if (bp + 2 >= ep) { - (void)printf("...)"); - goto bs_done; - } - (void)printf(",prio=%d", bp[2]); - bp += 4; - } - (void)printf(")"); - } - bs_done: - break; - } - case PIMV2_TYPE_ASSERT: - bp += 4; len -= 4; - if (bp >= ep) - break; - (void)printf(" group="); - if ((advance = pimv2_addr_print(bp, pimv2_group, 0)) < 0) { - (void)printf("..."); - break; - } - bp += advance; len -= advance; - if (bp >= ep) - break; - (void)printf(" src="); - if ((advance = pimv2_addr_print(bp, pimv2_unicast, 0)) < 0) { - (void)printf("..."); - break; - } - bp += advance; len -= advance; - if (bp + 8 > ep) - break; - if (bp[0] & 0x80) - (void)printf(" RPT"); - (void)printf(" pref=%u", EXTRACT_32BITS(&bp[0]) & 0x7fffffff); - (void)printf(" metric=%u", EXTRACT_32BITS(&bp[4])); - break; - - case PIMV2_TYPE_CANDIDATE_RP: - { - int i, pfxcnt; - bp += 4; - - /* Prefix-Cnt, Priority, and Holdtime */ - if (bp >= ep) break; - (void)printf(" prefix-cnt=%d", bp[0]); - pfxcnt = bp[0]; - if (bp + 1 >= ep) break; - (void)printf(" prio=%d", bp[1]); - if (bp + 3 >= ep) break; - (void)printf(" holdtime="); - relts_print(EXTRACT_16BITS(&bp[2])); - bp += 4; - - /* Encoded-Unicast-RP-Address */ - if (bp >= ep) break; - (void)printf(" RP="); - if ((advance = pimv2_addr_print(bp, pimv2_unicast, 0)) < 0) { - (void)printf("..."); - break; - } - bp += advance; - - /* Encoded-Group Addresses */ - for (i = 0; i < pfxcnt && bp < ep; i++) { - (void)printf(" Group%d=", i); - if ((advance = pimv2_addr_print(bp, pimv2_group, 0)) - < 0) { - (void)printf("..."); - break; - } - bp += advance; - } - break; - } - - case PIMV2_TYPE_PRUNE_REFRESH: - (void)printf(" src="); - if ((advance = pimv2_addr_print(bp, pimv2_unicast, 0)) < 0) { - (void)printf("..."); - break; - } - bp += advance; - (void)printf(" grp="); - if ((advance = pimv2_addr_print(bp, pimv2_group, 0)) < 0) { - (void)printf("..."); - break; - } - bp += advance; - (void)printf(" forwarder="); - if ((advance = pimv2_addr_print(bp, pimv2_unicast, 0)) < 0) { - (void)printf("..."); - break; - } - bp += advance; - TCHECK2(bp[0], 2); - (void)printf(" TUNR "); - relts_print(EXTRACT_16BITS(bp)); - break; - - - default: - (void)printf(" [type %d]", PIM_TYPE(pim->pim_typever)); - break; - } - - return; - -trunc: - (void)printf("[|pim]"); -} - -/* - * Local Variables: - * c-style: whitesmith - * c-basic-offset: 8 - * End: - */ diff --git a/contrib/tcpdump/print-ppp.c b/contrib/tcpdump/print-ppp.c deleted file mode 100644 index b6bafae90bc98..0000000000000 --- a/contrib/tcpdump/print-ppp.c +++ /dev/null @@ -1,1690 +0,0 @@ -/* - * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * Extensively modified by Motonori Shindo (mshindo@mshindo.net) for more - * complete PPP support. - */ - -/* - * TODO: - * o resolve XXX as much as possible - * o MP support - * o BAP support - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-ppp.c,v 1.108.2.4 2005/06/18 23:56:40 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#ifdef __bsdi__ -#include <net/slcompress.h> -#include <net/if_ppp.h> -#endif - -#include <pcap.h> -#include <stdio.h> -#include <stdlib.h> - -#include "interface.h" -#include "extract.h" -#include "addrtoname.h" -#include "ppp.h" -#include "chdlc.h" -#include "ethertype.h" -#include "oui.h" - -/* - * The following constatns are defined by IANA. Please refer to - * http://www.isi.edu/in-notes/iana/assignments/ppp-numbers - * for the up-to-date information. - */ - -/* Protocol Codes defined in ppp.h */ - -struct tok ppptype2str[] = { - { PPP_IP, "IP" }, - { PPP_OSI, "OSI" }, - { PPP_NS, "NS" }, - { PPP_DECNET, "DECNET" }, - { PPP_APPLE, "APPLE" }, - { PPP_IPX, "IPX" }, - { PPP_VJC, "VJC IP" }, - { PPP_VJNC, "VJNC IP" }, - { PPP_BRPDU, "BRPDU" }, - { PPP_STII, "STII" }, - { PPP_VINES, "VINES" }, - { PPP_MPLS_UCAST, "MPLS" }, - { PPP_MPLS_MCAST, "MPLS" }, - { PPP_COMP, "Compressed"}, - { PPP_ML, "MLPPP"}, - { PPP_IPV6, "IP6"}, - - { PPP_HELLO, "HELLO" }, - { PPP_LUXCOM, "LUXCOM" }, - { PPP_SNS, "SNS" }, - { PPP_IPCP, "IPCP" }, - { PPP_OSICP, "OSICP" }, - { PPP_NSCP, "NSCP" }, - { PPP_DECNETCP, "DECNETCP" }, - { PPP_APPLECP, "APPLECP" }, - { PPP_IPXCP, "IPXCP" }, - { PPP_STIICP, "STIICP" }, - { PPP_VINESCP, "VINESCP" }, - { PPP_IPV6CP, "IP6CP" }, - { PPP_MPLSCP, "MPLSCP" }, - - { PPP_LCP, "LCP" }, - { PPP_PAP, "PAP" }, - { PPP_LQM, "LQM" }, - { PPP_CHAP, "CHAP" }, - { PPP_EAP, "EAP" }, - { PPP_SPAP, "SPAP" }, - { PPP_SPAP_OLD, "Old-SPAP" }, - { PPP_BACP, "BACP" }, - { PPP_BAP, "BAP" }, - { PPP_MPCP, "MLPPP-CP" }, - { 0, NULL } -}; - -/* Control Protocols (LCP/IPCP/CCP etc.) Codes defined in RFC 1661 */ - -#define CPCODES_VEXT 0 /* Vendor-Specific (RFC2153) */ -#define CPCODES_CONF_REQ 1 /* Configure-Request */ -#define CPCODES_CONF_ACK 2 /* Configure-Ack */ -#define CPCODES_CONF_NAK 3 /* Configure-Nak */ -#define CPCODES_CONF_REJ 4 /* Configure-Reject */ -#define CPCODES_TERM_REQ 5 /* Terminate-Request */ -#define CPCODES_TERM_ACK 6 /* Terminate-Ack */ -#define CPCODES_CODE_REJ 7 /* Code-Reject */ -#define CPCODES_PROT_REJ 8 /* Protocol-Reject (LCP only) */ -#define CPCODES_ECHO_REQ 9 /* Echo-Request (LCP only) */ -#define CPCODES_ECHO_RPL 10 /* Echo-Reply (LCP only) */ -#define CPCODES_DISC_REQ 11 /* Discard-Request (LCP only) */ -#define CPCODES_ID 12 /* Identification (LCP only) RFC1570 */ -#define CPCODES_TIME_REM 13 /* Time-Remaining (LCP only) RFC1570 */ -#define CPCODES_RESET_REQ 14 /* Reset-Request (CCP only) RFC1962 */ -#define CPCODES_RESET_REP 15 /* Reset-Reply (CCP only) */ - -struct tok cpcodes[] = { - {CPCODES_VEXT, "Vendor-Extension"}, /* RFC2153 */ - {CPCODES_CONF_REQ, "Conf-Request"}, - {CPCODES_CONF_ACK, "Conf-Ack"}, - {CPCODES_CONF_NAK, "Conf-Nack"}, - {CPCODES_CONF_REJ, "Conf-Reject"}, - {CPCODES_TERM_REQ, "Term-Request"}, - {CPCODES_TERM_ACK, "Term-Ack"}, - {CPCODES_CODE_REJ, "Code-Reject"}, - {CPCODES_PROT_REJ, "Prot-Reject"}, - {CPCODES_ECHO_REQ, "Echo-Request"}, - {CPCODES_ECHO_RPL, "Echo-Reply"}, - {CPCODES_DISC_REQ, "Disc-Req"}, - {CPCODES_ID, "Ident"}, /* RFC1570 */ - {CPCODES_TIME_REM, "Time-Rem"}, /* RFC1570 */ - {CPCODES_RESET_REQ, "Reset-Req"}, /* RFC1962 */ - {CPCODES_RESET_REP, "Reset-Ack"}, /* RFC1962 */ - {0, NULL} -}; - -/* LCP Config Options */ - -#define LCPOPT_VEXT 0 -#define LCPOPT_MRU 1 -#define LCPOPT_ACCM 2 -#define LCPOPT_AP 3 -#define LCPOPT_QP 4 -#define LCPOPT_MN 5 -#define LCPOPT_DEP6 6 -#define LCPOPT_PFC 7 -#define LCPOPT_ACFC 8 -#define LCPOPT_FCSALT 9 -#define LCPOPT_SDP 10 -#define LCPOPT_NUMMODE 11 -#define LCPOPT_DEP12 12 -#define LCPOPT_CBACK 13 -#define LCPOPT_DEP14 14 -#define LCPOPT_DEP15 15 -#define LCPOPT_DEP16 16 -#define LCPOPT_MLMRRU 17 -#define LCPOPT_MLSSNHF 18 -#define LCPOPT_MLED 19 -#define LCPOPT_PROP 20 -#define LCPOPT_DCEID 21 -#define LCPOPT_MPP 22 -#define LCPOPT_LD 23 -#define LCPOPT_LCPAOPT 24 -#define LCPOPT_COBS 25 -#define LCPOPT_PE 26 -#define LCPOPT_MLHF 27 -#define LCPOPT_I18N 28 -#define LCPOPT_SDLOS 29 -#define LCPOPT_PPPMUX 30 - -#define LCPOPT_MIN LCPOPT_VEXT -#define LCPOPT_MAX LCPOPT_PPPMUX - -static const char *lcpconfopts[] = { - "Vend-Ext", /* (0) */ - "MRU", /* (1) */ - "ACCM", /* (2) */ - "Auth-Prot", /* (3) */ - "Qual-Prot", /* (4) */ - "Magic-Num", /* (5) */ - "deprecated(6)", /* used to be a Quality Protocol */ - "PFC", /* (7) */ - "ACFC", /* (8) */ - "FCS-Alt", /* (9) */ - "SDP", /* (10) */ - "Num-Mode", /* (11) */ - "deprecated(12)", /* used to be a Multi-Link-Procedure*/ - "Call-Back", /* (13) */ - "deprecated(14)", /* used to be a Connect-Time */ - "deprecated(15)", /* used to be a Compund-Frames */ - "deprecated(16)", /* used to be a Nominal-Data-Encap */ - "MRRU", /* (17) */ - "12-Bit seq #", /* (18) */ - "End-Disc", /* (19) */ - "Proprietary", /* (20) */ - "DCE-Id", /* (21) */ - "MP+", /* (22) */ - "Link-Disc", /* (23) */ - "LCP-Auth-Opt", /* (24) */ - "COBS", /* (25) */ - "Prefix-elision", /* (26) */ - "Multilink-header-Form",/* (27) */ - "I18N", /* (28) */ - "SDL-over-SONET/SDH", /* (29) */ - "PPP-Muxing", /* (30) */ -}; - -/* ECP - to be supported */ - -/* CCP Config Options */ - -#define CCPOPT_OUI 0 /* RFC1962 */ -#define CCPOPT_PRED1 1 /* RFC1962 */ -#define CCPOPT_PRED2 2 /* RFC1962 */ -#define CCPOPT_PJUMP 3 /* RFC1962 */ -/* 4-15 unassigned */ -#define CCPOPT_HPPPC 16 /* RFC1962 */ -#define CCPOPT_STACLZS 17 /* RFC1974 */ -#define CCPOPT_MPPC 18 /* RFC2118 */ -#define CCPOPT_GFZA 19 /* RFC1962 */ -#define CCPOPT_V42BIS 20 /* RFC1962 */ -#define CCPOPT_BSDCOMP 21 /* RFC1977 */ -/* 22 unassigned */ -#define CCPOPT_LZSDCP 23 /* RFC1967 */ -#define CCPOPT_MVRCA 24 /* RFC1975 */ -#define CCPOPT_DEC 25 /* RFC1976 */ -#define CCPOPT_DEFLATE 26 /* RFC1979 */ -/* 27-254 unassigned */ -#define CCPOPT_RESV 255 /* RFC1962 */ - -const struct tok ccpconfopts_values[] = { - { CCPOPT_OUI, "OUI" }, - { CCPOPT_PRED1, "Pred-1" }, - { CCPOPT_PRED2, "Pred-2" }, - { CCPOPT_PJUMP, "Puddle" }, - { CCPOPT_HPPPC, "HP-PPC" }, - { CCPOPT_STACLZS, "Stac-LZS" }, - { CCPOPT_MPPC, "MPPC" }, - { CCPOPT_GFZA, "Gand-FZA" }, - { CCPOPT_V42BIS, "V.42bis" }, - { CCPOPT_BSDCOMP, "BSD-Comp" }, - { CCPOPT_LZSDCP, "LZS-DCP" }, - { CCPOPT_MVRCA, "MVRCA" }, - { CCPOPT_DEC, "DEC" }, - { CCPOPT_DEFLATE, "Deflate" }, - { CCPOPT_RESV, "Reserved"}, - {0, NULL} -}; - -/* BACP Config Options */ - -#define BACPOPT_FPEER 1 /* RFC2125 */ - -const struct tok bacconfopts_values[] = { - { BACPOPT_FPEER, "Favored-Peer" }, - {0, NULL} -}; - - -/* SDCP - to be supported */ - -/* IPCP Config Options */ -#define IPCPOPT_2ADDR 1 /* RFC1172, RFC1332 (deprecated) */ -#define IPCPOPT_IPCOMP 2 /* RFC1332 */ -#define IPCPOPT_ADDR 3 /* RFC1332 */ -#define IPCPOPT_MOBILE4 4 /* RFC2290 */ -#define IPCPOPT_PRIDNS 129 /* RFC1877 */ -#define IPCPOPT_PRINBNS 130 /* RFC1877 */ -#define IPCPOPT_SECDNS 131 /* RFC1877 */ -#define IPCPOPT_SECNBNS 132 /* RFC1877 */ - -struct tok ipcpopt_values[] = { - { IPCPOPT_2ADDR, "IP-Addrs" }, - { IPCPOPT_IPCOMP, "IP-Comp" }, - { IPCPOPT_ADDR, "IP-Addr" }, - { IPCPOPT_MOBILE4, "Home-Addr" }, - { IPCPOPT_PRIDNS, "Pri-DNS" }, - { IPCPOPT_PRINBNS, "Pri-NBNS" }, - { IPCPOPT_SECDNS, "Sec-DNS" }, - { IPCPOPT_SECNBNS, "Sec-NBNS" }, - { 0, NULL } -}; - - -/* IP6CP Config Options */ -#define IP6CP_IFID 1 - -struct tok ip6cpopt_values[] = { - { IP6CP_IFID, "Interface-ID" }, - { 0, NULL } -}; - -/* ATCP - to be supported */ -/* OSINLCP - to be supported */ -/* BVCP - to be supported */ -/* BCP - to be supported */ -/* IPXCP - to be supported */ -/* MPLSCP - to be supported */ - -/* Auth Algorithms */ - -/* 0-4 Reserved (RFC1994) */ -#define AUTHALG_CHAPMD5 5 /* RFC1994 */ -#define AUTHALG_MSCHAP1 128 /* RFC2433 */ -#define AUTHALG_MSCHAP2 129 /* RFC2795 */ - -struct tok authalg_values[] = { - { AUTHALG_CHAPMD5, "MD5" }, - { AUTHALG_MSCHAP1, "MS-CHAPv1" }, - { AUTHALG_MSCHAP2, "MS-CHAPv2" }, - { 0, NULL } -}; - -/* FCS Alternatives - to be supported */ - -/* Multilink Endpoint Discriminator (RFC1717) */ -#define MEDCLASS_NULL 0 /* Null Class */ -#define MEDCLASS_LOCAL 1 /* Locally Assigned */ -#define MEDCLASS_IPV4 2 /* Internet Protocol (IPv4) */ -#define MEDCLASS_MAC 3 /* IEEE 802.1 global MAC address */ -#define MEDCLASS_MNB 4 /* PPP Magic Number Block */ -#define MEDCLASS_PSNDN 5 /* Public Switched Network Director Number */ - -/* PPP LCP Callback */ -#define CALLBACK_AUTH 0 /* Location determined by user auth */ -#define CALLBACK_DSTR 1 /* Dialing string */ -#define CALLBACK_LID 2 /* Location identifier */ -#define CALLBACK_E164 3 /* E.164 number */ -#define CALLBACK_X500 4 /* X.500 distinguished name */ -#define CALLBACK_CBCP 6 /* Location is determined during CBCP nego */ - -struct tok ppp_callback_values[] = { - { CALLBACK_AUTH, "UserAuth" }, - { CALLBACK_DSTR, "DialString" }, - { CALLBACK_LID, "LocalID" }, - { CALLBACK_E164, "E.164" }, - { CALLBACK_X500, "X.500" }, - { CALLBACK_CBCP, "CBCP" }, - { 0, NULL } -}; - -/* CHAP */ - -#define CHAP_CHAL 1 -#define CHAP_RESP 2 -#define CHAP_SUCC 3 -#define CHAP_FAIL 4 - -struct tok chapcode_values[] = { - { CHAP_CHAL, "Challenge" }, - { CHAP_RESP, "Response" }, - { CHAP_SUCC, "Success" }, - { CHAP_FAIL, "Fail" }, - { 0, NULL} -}; - -/* PAP */ - -#define PAP_AREQ 1 -#define PAP_AACK 2 -#define PAP_ANAK 3 - -struct tok papcode_values[] = { - { PAP_AREQ, "Auth-Req" }, - { PAP_AACK, "Auth-ACK" }, - { PAP_ANAK, "Auth-NACK" }, - { 0, NULL } -}; - -/* BAP */ -#define BAP_CALLREQ 1 -#define BAP_CALLRES 2 -#define BAP_CBREQ 3 -#define BAP_CBRES 4 -#define BAP_LDQREQ 5 -#define BAP_LDQRES 6 -#define BAP_CSIND 7 -#define BAP_CSRES 8 - -static void handle_ctrl_proto (u_int proto,const u_char *p, int length); -static void handle_chap (const u_char *p, int length); -static void handle_pap (const u_char *p, int length); -static void handle_bap (const u_char *p, int length); -static void handle_mlppp(const u_char *p, int length); -static int print_lcp_config_options (const u_char *p, int); -static int print_ipcp_config_options (const u_char *p, int); -static int print_ip6cp_config_options (const u_char *p, int); -static int print_ccp_config_options (const u_char *p, int); -static int print_bacp_config_options (const u_char *p, int); -static void handle_ppp (u_int proto, const u_char *p, int length); -static void ppp_hdlc(const u_char *p, int length); - -/* generic Control Protocol (e.g. LCP, IPCP, CCP, etc.) handler */ -static void -handle_ctrl_proto(u_int proto, const u_char *pptr, int length) -{ - const char *typestr; - u_int code, len; - int (*pfunc)(const u_char *, int); - int x, j; - const u_char *tptr; - - tptr=pptr; - - typestr = tok2str(ppptype2str, "unknown ctrl-proto (0x%04x)", proto); - printf("%s, ",typestr); - - if (length < 4) /* FIXME weak boundary checking */ - goto trunc; - TCHECK2(*tptr, 2); - - code = *tptr++; - - printf("%s (0x%02x), id %u, length %u", - tok2str(cpcodes, "Unknown Opcode",code), - code, - *tptr++, /* ID */ - length+2); - - if (!vflag) - return; - - if (length <= 4) - return; /* there may be a NULL confreq etc. */ - - TCHECK2(*tptr, 2); - len = EXTRACT_16BITS(tptr); - tptr += 2; - - printf("\n\tencoded length %u (=Option(s) length %u)",len,len-4); - - if (vflag>1) - print_unknown_data(pptr-2,"\n\t",6); - - - switch (code) { - case CPCODES_VEXT: - if (length < 11) - break; - TCHECK2(*tptr, 4); - printf("\n\t Magic-Num 0x%08x", EXTRACT_32BITS(tptr)); - tptr += 4; - TCHECK2(*tptr, 3); - printf(" Vendor: %s (%u)", - tok2str(oui_values,"Unknown",EXTRACT_24BITS(tptr)), - EXTRACT_24BITS(tptr)); - /* XXX: need to decode Kind and Value(s)? */ - break; - case CPCODES_CONF_REQ: - case CPCODES_CONF_ACK: - case CPCODES_CONF_NAK: - case CPCODES_CONF_REJ: - x = len - 4; /* Code(1), Identifier(1) and Length(2) */ - do { - switch (proto) { - case PPP_LCP: - pfunc = print_lcp_config_options; - break; - case PPP_IPCP: - pfunc = print_ipcp_config_options; - break; - case PPP_IPV6CP: - pfunc = print_ip6cp_config_options; - break; - case PPP_CCP: - pfunc = print_ccp_config_options; - break; - case PPP_BACP: - pfunc = print_bacp_config_options; - break; - default: - /* - * No print routine for the options for - * this protocol. - */ - pfunc = NULL; - break; - } - - if (pfunc == NULL) /* catch the above null pointer if unknown CP */ - break; - - if ((j = (*pfunc)(tptr, len)) == 0) - break; - x -= j; - tptr += j; - } while (x > 0); - break; - - case CPCODES_TERM_REQ: - case CPCODES_TERM_ACK: - /* XXX: need to decode Data? */ - break; - case CPCODES_CODE_REJ: - /* XXX: need to decode Rejected-Packet? */ - break; - case CPCODES_PROT_REJ: - if (length < 6) - break; - TCHECK2(*tptr, 2); - printf("\n\t Rejected %s Protocol (0x%04x)", - tok2str(ppptype2str,"unknown", EXTRACT_16BITS(tptr)), - EXTRACT_16BITS(tptr)); - /* XXX: need to decode Rejected-Information? - hexdump for now */ - if (len > 6) { - printf("\n\t Rejected Packet"); - print_unknown_data(tptr+2,"\n\t ",len-2); - } - break; - case CPCODES_ECHO_REQ: - case CPCODES_ECHO_RPL: - case CPCODES_DISC_REQ: - if (length < 8) - break; - TCHECK2(*tptr, 4); - printf("\n\t Magic-Num 0x%08x", EXTRACT_32BITS(tptr)); - /* XXX: need to decode Data? - hexdump for now */ - if (len > 8) { - printf("\n\t Data"); - print_unknown_data(tptr+4,"\n\t ",len-4); - } - break; - case CPCODES_ID: - if (length < 8) - break; - TCHECK2(*tptr, 4); - printf("\n\t Magic-Num 0x%08x", EXTRACT_32BITS(tptr)); - /* RFC 1661 says this is intended to be human readable */ - if (len > 8) { - printf("\n\t Message\n\t "); - fn_printn(tptr+4,len-4,snapend); - } - break; - case CPCODES_TIME_REM: - if (length < 12) - break; - TCHECK2(*tptr, 4); - printf("\n\t Magic-Num 0x%08x", EXTRACT_32BITS(tptr)); - TCHECK2(*(tptr + 4), 4); - printf(", Seconds-Remaining %us", EXTRACT_32BITS(tptr + 4)); - /* XXX: need to decode Message? */ - break; - default: - /* XXX this is dirty but we do not get the - * original pointer passed to the begin - * the PPP packet */ - if (vflag <= 1) - print_unknown_data(pptr-2,"\n\t ",length+2); - break; - } - return; - -trunc: - printf("[|%s]", typestr); -} - -/* LCP config options */ -static int -print_lcp_config_options(const u_char *p, int length) -{ - int len, opt; - - if (length < 2) - return 0; - TCHECK2(*p, 2); - len = p[1]; - opt = p[0]; - if (length < len) - return 0; - if (len < 2) { - if ((opt >= LCPOPT_MIN) && (opt <= LCPOPT_MAX)) - printf("\n\t %s Option (0x%02x), length %u (bogus, should be >= 2)", lcpconfopts[opt],opt,len); - else - printf("\n\tunknown LCP option 0x%02x", opt); - return 0; - } - if ((opt >= LCPOPT_MIN) && (opt <= LCPOPT_MAX)) - printf("\n\t %s Option (0x%02x), length %u: ", lcpconfopts[opt],opt,len); - else { - printf("\n\tunknown LCP option 0x%02x", opt); - return len; - } - - switch (opt) { - case LCPOPT_VEXT: - if (len >= 6) { - TCHECK2(*(p + 2), 3); - printf("Vendor: %s (%u)", - tok2str(oui_values,"Unknown",EXTRACT_24BITS(p+2)), - EXTRACT_24BITS(p+2)); -#if 0 - TCHECK(p[5]); - printf(", kind: 0x%02x", p[5]); - printf(", Value: 0x") - for (i = 0; i < len - 6; i++) { - TCHECK(p[6 + i]); - printf("%02x", p[6 + i]); - } -#endif - } - break; - case LCPOPT_MRU: - if (len == 4) { - TCHECK2(*(p + 2), 2); - printf("%u", EXTRACT_16BITS(p + 2)); - } - break; - case LCPOPT_ACCM: - if (len == 6) { - TCHECK2(*(p + 2), 4); - printf("0x%08x", EXTRACT_32BITS(p + 2)); - } - break; - case LCPOPT_AP: - if (len >= 4) { - TCHECK2(*(p + 2), 2); - printf("%s", tok2str(ppptype2str,"Unknown Auth Proto (0x04x)",EXTRACT_16BITS(p+2))); - - switch (EXTRACT_16BITS(p+2)) { - case PPP_CHAP: - TCHECK(p[4]); - printf(", %s",tok2str(authalg_values,"Unknown Auth Alg %u",p[4])); - break; - case PPP_PAP: /* fall through */ - case PPP_EAP: - case PPP_SPAP: - case PPP_SPAP_OLD: - break; - default: - print_unknown_data(p,"\n\t",len); - } - } - break; - case LCPOPT_QP: - if (len >= 4) { - TCHECK2(*(p + 2), 2); - if (EXTRACT_16BITS(p+2) == PPP_LQM) - printf(" LQR"); - else - printf(" unknown"); - } - break; - case LCPOPT_MN: - if (len == 6) { - TCHECK2(*(p + 2), 4); - printf("0x%08x", EXTRACT_32BITS(p + 2)); - } - break; - case LCPOPT_PFC: - break; - case LCPOPT_ACFC: - break; - case LCPOPT_LD: - if (len == 4) { - TCHECK2(*(p + 2), 2); - printf("0x%04x", EXTRACT_16BITS(p + 2)); - } - break; - case LCPOPT_CBACK: - if (len < 3) - break; - TCHECK(p[2]); - printf("Callback Operation %s (%u)", - tok2str(ppp_callback_values,"Unknown",p[2]), - p[2]); - break; - case LCPOPT_MLMRRU: - if (len == 4) { - TCHECK2(*(p + 2), 2); - printf("%u", EXTRACT_16BITS(p + 2)); - } - break; - case LCPOPT_MLED: - if (len < 3) - break; - TCHECK(p[2]); - switch (p[2]) { /* class */ - case MEDCLASS_NULL: - printf("Null"); - break; - case MEDCLASS_LOCAL: - printf("Local"); /* XXX */ - break; - case MEDCLASS_IPV4: - if (len != 7) - break; - TCHECK2(*(p + 3), 4); - printf("IPv4 %s", ipaddr_string(p + 3)); - break; - case MEDCLASS_MAC: - if (len != 9) - break; - TCHECK(p[8]); - printf("MAC %02x:%02x:%02x:%02x:%02x:%02x", - p[3], p[4], p[5], p[6], p[7], p[8]); - break; - case MEDCLASS_MNB: - printf("Magic-Num-Block"); /* XXX */ - break; - case MEDCLASS_PSNDN: - printf("PSNDN"); /* XXX */ - break; - } - break; - -/* XXX: to be supported */ -#if 0 - case LCPOPT_DEP6: - case LCPOPT_FCSALT: - case LCPOPT_SDP: - case LCPOPT_NUMMODE: - case LCPOPT_DEP12: - case LCPOPT_DEP14: - case LCPOPT_DEP15: - case LCPOPT_DEP16: - case LCPOPT_MLSSNHF: - case LCPOPT_PROP: - case LCPOPT_DCEID: - case LCPOPT_MPP: - case LCPOPT_LCPAOPT: - case LCPOPT_COBS: - case LCPOPT_PE: - case LCPOPT_MLHF: - case LCPOPT_I18N: - case LCPOPT_SDLOS: - case LCPOPT_PPPMUX: - break; -#endif - default: - if(vflag<2) - print_unknown_data(&p[2],"\n\t ",len-2); - break; - } - - if (vflag>1) - print_unknown_data(&p[2],"\n\t ",len-2); /* exclude TLV header */ - - return len; - -trunc: - printf("[|lcp]"); - return 0; -} - -/* ML-PPP*/ -struct tok ppp_ml_flag_values[] = { - { 0x80, "begin" }, - { 0x40, "end" }, - { 0, NULL } -}; - -static void -handle_mlppp(const u_char *p, int length) { - - if (!eflag) - printf("MLPPP, "); - - printf("seq 0x%03x, Flags [%s], length %u", - (EXTRACT_16BITS(p))&0x0fff, /* only support 12-Bit sequence space for now */ - bittok2str(ppp_ml_flag_values, "none", *p & 0xc0), - length); - - return; -} - -/* CHAP */ -static void -handle_chap(const u_char *p, int length) -{ - u_int code, len; - int val_size, name_size, msg_size; - const u_char *p0; - int i; - - p0 = p; - if (length < 1) { - printf("[|chap]"); - return; - } else if (length < 4) { - TCHECK(*p); - printf("[|chap 0x%02x]", *p); - return; - } - - TCHECK(*p); - code = *p; - printf("CHAP, %s (0x%02x)", - tok2str(chapcode_values,"unknown",code), - code); - p++; - - TCHECK(*p); - printf(", id %u", *p); /* ID */ - p++; - - TCHECK2(*p, 2); - len = EXTRACT_16BITS(p); - p += 2; - - /* - * Note that this is a generic CHAP decoding routine. Since we - * don't know which flavor of CHAP (i.e. CHAP-MD5, MS-CHAPv1, - * MS-CHAPv2) is used at this point, we can't decode packet - * specifically to each algorithms. Instead, we simply decode - * the GCD (Gratest Common Denominator) for all algorithms. - */ - switch (code) { - case CHAP_CHAL: - case CHAP_RESP: - if (length - (p - p0) < 1) - return; - TCHECK(*p); - val_size = *p; /* value size */ - p++; - if (length - (p - p0) < val_size) - return; - printf(", Value "); - for (i = 0; i < val_size; i++) { - TCHECK(*p); - printf("%02x", *p++); - } - name_size = len - (p - p0); - printf(", Name "); - for (i = 0; i < name_size; i++) { - TCHECK(*p); - safeputchar(*p++); - } - break; - case CHAP_SUCC: - case CHAP_FAIL: - msg_size = len - (p - p0); - printf(", Msg "); - for (i = 0; i< msg_size; i++) { - TCHECK(*p); - safeputchar(*p++); - } - break; - } - return; - -trunc: - printf("[|chap]"); -} - -/* PAP (see RFC 1334) */ -static void -handle_pap(const u_char *p, int length) -{ - u_int code, len; - int peerid_len, passwd_len, msg_len; - const u_char *p0; - int i; - - p0 = p; - if (length < 1) { - printf("[|pap]"); - return; - } else if (length < 4) { - TCHECK(*p); - printf("[|pap 0x%02x]", *p); - return; - } - - TCHECK(*p); - code = *p; - printf("PAP, %s (0x%02x)", - tok2str(papcode_values,"unknown",code), - code); - p++; - - TCHECK(*p); - printf(", id %u", *p); /* ID */ - p++; - - TCHECK2(*p, 2); - len = EXTRACT_16BITS(p); - p += 2; - - if ((int)len > length) { - printf(", length %u > packet size", len); - return; - } - length = len; - if (length < (p - p0)) { - printf(", length %u < PAP header length", length); - return; - } - - switch (code) { - case PAP_AREQ: - if (length - (p - p0) < 1) - return; - TCHECK(*p); - peerid_len = *p; /* Peer-ID Length */ - p++; - if (length - (p - p0) < peerid_len) - return; - printf(", Peer "); - for (i = 0; i < peerid_len; i++) { - TCHECK(*p); - safeputchar(*p++); - } - - if (length - (p - p0) < 1) - return; - TCHECK(*p); - passwd_len = *p; /* Password Length */ - p++; - if (length - (p - p0) < passwd_len) - return; - printf(", Name "); - for (i = 0; i < passwd_len; i++) { - TCHECK(*p); - safeputchar(*p++); - } - break; - case PAP_AACK: - case PAP_ANAK: - if (length - (p - p0) < 1) - return; - TCHECK(*p); - msg_len = *p; /* Msg-Length */ - p++; - if (length - (p - p0) < msg_len) - return; - printf(", Msg "); - for (i = 0; i< msg_len; i++) { - TCHECK(*p); - safeputchar(*p++); - } - break; - } - return; - -trunc: - printf("[|pap]"); -} - -/* BAP */ -static void -handle_bap(const u_char *p _U_, int length _U_) -{ - /* XXX: to be supported!! */ -} - - -/* IPCP config options */ -static int -print_ipcp_config_options(const u_char *p, int length) -{ - int len, opt; - - if (length < 2) - return 0; - TCHECK2(*p, 2); - len = p[1]; - opt = p[0]; - if (length < len) - return 0; - if (len < 2) { - printf("\n\t %s Option (0x%02x), length %u (bogus, should be >= 2)", - tok2str(ipcpopt_values,"unknown",opt), - opt, - len); - return 0; - } - - printf("\n\t %s Option (0x%02x), length %u: ", - tok2str(ipcpopt_values,"unknown",opt), - opt, - len); - - switch (opt) { - case IPCPOPT_2ADDR: /* deprecated */ - if (len != 10) - goto invlen; - TCHECK2(*(p + 6), 4); - printf("src %s, dst %s", - ipaddr_string(p + 2), - ipaddr_string(p + 6)); - break; - case IPCPOPT_IPCOMP: - if (len < 4) - goto invlen; - TCHECK2(*(p + 2), 2); - if (EXTRACT_16BITS(p + 2) == PPP_VJC) { - printf("VJ-Comp"); - /* XXX: VJ-Comp parameters should be decoded */ - } else - printf("unknown-comp-proto %04x", EXTRACT_16BITS(p + 2)); - break; - - case IPCPOPT_ADDR: /* those options share the same format - fall through */ - case IPCPOPT_MOBILE4: - case IPCPOPT_PRIDNS: - case IPCPOPT_PRINBNS: - case IPCPOPT_SECDNS: - case IPCPOPT_SECNBNS: - if (len != 6) - goto invlen; - TCHECK2(*(p + 2), 4); - printf("%s", ipaddr_string(p + 2)); - break; - default: - if(vflag<2) - print_unknown_data(&p[2],"\n\t ",len-2); - break; - } - if (vflag>1) - print_unknown_data(&p[2],"\n\t ",len-2); /* exclude TLV header */ - return len; - -invlen: - printf(", invalid-length-%d", opt); - return 0; - -trunc: - printf("[|ipcp]"); - return 0; -} - -/* IP6CP config options */ -static int -print_ip6cp_config_options(const u_char *p, int length) -{ - int len, opt; - - if (length < 2) - return 0; - TCHECK2(*p, 2); - len = p[1]; - opt = p[0]; - if (length < len) - return 0; - if (len < 2) { - printf("\n\t %s Option (0x%02x), length %u (bogus, should be >= 2)", - tok2str(ip6cpopt_values,"unknown",opt), - opt, - len); - return 0; - } - - printf("\n\t %s Option (0x%02x), length %u: ", - tok2str(ip6cpopt_values,"unknown",opt), - opt, - len); - - switch (opt) { - case IP6CP_IFID: - if (len != 10) - goto invlen; - TCHECK2(*(p + 2), 8); - printf("%04x:%04x:%04x:%04x", - EXTRACT_16BITS(p + 2), - EXTRACT_16BITS(p + 4), - EXTRACT_16BITS(p + 6), - EXTRACT_16BITS(p + 8)); - break; - default: - if(vflag<2) - print_unknown_data(&p[2],"\n\t ",len-2); - break; - } - if (vflag>1) - print_unknown_data(&p[2],"\n\t ",len-2); /* exclude TLV header */ - - return len; - -invlen: - printf(", invalid-length-%d", opt); - return 0; - -trunc: - printf("[|ip6cp]"); - return 0; -} - - -/* CCP config options */ -static int -print_ccp_config_options(const u_char *p, int length) -{ - int len, opt; - - if (length < 2) - return 0; - TCHECK2(*p, 2); - len = p[1]; - opt = p[0]; - if (length < len) - return 0; - if (len < 2) { - printf("\n\t %s Option (0x%02x), length %u (bogus, should be >= 2)", - tok2str(ccpconfopts_values, "Unknown", opt), - opt, - len); - return 0; - } - - printf("\n\t %s Option (0x%02x), length %u:", - tok2str(ccpconfopts_values, "Unknown", opt), - opt, - len); - - switch (opt) { - /* fall through --> default: nothing supported yet */ - case CCPOPT_OUI: - case CCPOPT_PRED1: - case CCPOPT_PRED2: - case CCPOPT_PJUMP: - case CCPOPT_HPPPC: - case CCPOPT_STACLZS: - case CCPOPT_MPPC: - case CCPOPT_GFZA: - case CCPOPT_V42BIS: - case CCPOPT_BSDCOMP: - case CCPOPT_LZSDCP: - case CCPOPT_MVRCA: - case CCPOPT_DEC: - case CCPOPT_DEFLATE: - case CCPOPT_RESV: - default: - if(vflag<2) - print_unknown_data(&p[2],"\n\t ",len-2); - break; - } - if (vflag>1) - print_unknown_data(&p[2],"\n\t ",len-2); /* exclude TLV header */ - - return len; - -trunc: - printf("[|ccp]"); - return 0; -} - -/* BACP config options */ -static int -print_bacp_config_options(const u_char *p, int length) -{ - int len, opt; - - if (length < 2) - return 0; - TCHECK2(*p, 2); - len = p[1]; - opt = p[0]; - if (length < len) - return 0; - if (len < 2) { - printf("\n\t %s Option (0x%02x), length %u (bogus, should be >= 2)", - tok2str(bacconfopts_values, "Unknown", opt), - opt, - len); - return 0; - } - - printf("\n\t %s Option (0x%02x), length %u:", - tok2str(bacconfopts_values, "Unknown", opt), - opt, - len); - - switch (opt) { - case BACPOPT_FPEER: - TCHECK2(*(p + 2), 4); - printf(", Magic-Num 0x%08x", EXTRACT_32BITS(p + 2)); - break; - default: - if(vflag<2) - print_unknown_data(&p[2],"\n\t ",len-2); - break; - } - if (vflag>1) - print_unknown_data(&p[2],"\n\t ",len-2); /* exclude TLV header */ - - return len; - -trunc: - printf("[|bacp]"); - return 0; -} - - -static void -ppp_hdlc(const u_char *p, int length) -{ - u_char *b, *s, *t, c; - int i, proto; - const void *se; - - b = (u_int8_t *)malloc(length); - if (b == NULL) - return; - - /* - * Unescape all the data into a temporary, private, buffer. - * Do this so that we dont overwrite the original packet - * contents. - */ - for (s = (u_char *)p, t = b, i = length; i > 0; i--) { - c = *s++; - if (c == 0x7d) { - if (i > 1) { - i--; - c = *s++ ^ 0x20; - } else - continue; - } - *t++ = c; - } - - se = snapend; - snapend = t; - - /* now lets guess about the payload codepoint format */ - proto = *b; /* start with a one-octet codepoint guess */ - - switch (proto) { - case PPP_IP: - ip_print(gndo, b+1, t - b - 1); - goto cleanup; -#ifdef INET6 - case PPP_IPV6: - ip6_print(b+1, t - b - 1); - goto cleanup; -#endif - default: /* no luck - try next guess */ - break; - } - - proto = EXTRACT_16BITS(b); /* next guess - load two octets */ - - switch (proto) { - case (PPP_ADDRESS << 8 | PPP_CONTROL): /* looks like a PPP frame */ - proto = EXTRACT_16BITS(b+2); /* load the PPP proto-id */ - handle_ppp(proto, b+4, t - b - 4); - break; - default: /* last guess - proto must be a PPP proto-id */ - handle_ppp(proto, b+2, t - b - 2); - break; - } - -cleanup: - snapend = se; - free(b); - return; -} - - -/* PPP */ -static void -handle_ppp(u_int proto, const u_char *p, int length) -{ - if ((proto & 0xff00) == 0x7e00) {/* is this an escape code ? */ - ppp_hdlc(p-1, length); - return; - } - - switch (proto) { - case PPP_LCP: /* fall through */ - case PPP_IPCP: - case PPP_OSICP: - case PPP_MPLSCP: - case PPP_IPV6CP: - case PPP_CCP: - case PPP_BACP: - handle_ctrl_proto(proto, p, length); - break; - case PPP_ML: - handle_mlppp(p, length); - break; - case PPP_CHAP: - handle_chap(p, length); - break; - case PPP_PAP: - handle_pap(p, length); - break; - case PPP_BAP: /* XXX: not yet completed */ - handle_bap(p, length); - break; - case ETHERTYPE_IP: /*XXX*/ - case PPP_VJNC: - case PPP_IP: - ip_print(gndo, p, length); - break; -#ifdef INET6 - case ETHERTYPE_IPV6: /*XXX*/ - case PPP_IPV6: - ip6_print(p, length); - break; -#endif - case ETHERTYPE_IPX: /*XXX*/ - case PPP_IPX: - ipx_print(p, length); - break; - case PPP_OSI: - isoclns_print(p, length, length); - break; - case PPP_MPLS_UCAST: - case PPP_MPLS_MCAST: - mpls_print(p, length); - break; - case PPP_COMP: - printf("compressed PPP data"); - break; - default: - printf("%s ", tok2str(ppptype2str, "unknown PPP protocol (0x%04x)", proto)); - print_unknown_data(p,"\n\t",length); - break; - } -} - -/* Standard PPP printer */ -u_int -ppp_print(register const u_char *p, u_int length) -{ - u_int proto,ppp_header; - u_int olen = length; /* _o_riginal length */ - u_int hdr_len = 0; - - /* - * Here, we assume that p points to the Address and Control - * field (if they present). - */ - if (length < 2) - goto trunc; - TCHECK2(*p, 2); - ppp_header = EXTRACT_16BITS(p); - - switch(ppp_header) { - case (PPP_WITHDIRECTION_IN << 8 | PPP_CONTROL): - if (eflag) printf("In "); - p += 2; - length -= 2; - hdr_len += 2; - break; - case (PPP_WITHDIRECTION_OUT << 8 | PPP_CONTROL): - if (eflag) printf("Out "); - p += 2; - length -= 2; - hdr_len += 2; - break; - case (PPP_ADDRESS << 8 | PPP_CONTROL): - p += 2; /* ACFC not used */ - length -= 2; - hdr_len += 2; - break; - - default: - break; - } - - if (length < 2) - goto trunc; - TCHECK(*p); - if (*p % 2) { - proto = *p; /* PFC is used */ - p++; - length--; - hdr_len++; - } else { - TCHECK2(*p, 2); - proto = EXTRACT_16BITS(p); - p += 2; - length -= 2; - hdr_len += 2; - } - - if (eflag) - printf("%s (0x%04x), length %u: ", - tok2str(ppptype2str, "unknown", proto), - proto, - olen); - - handle_ppp(proto, p, length); - return (hdr_len); -trunc: - printf("[|ppp]"); - return (0); -} - - -/* PPP I/F printer */ -u_int -ppp_if_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - register u_int length = h->len; - register u_int caplen = h->caplen; - - if (caplen < PPP_HDRLEN) { - printf("[|ppp]"); - return (caplen); - } - -#if 0 - /* - * XXX: seems to assume that there are 2 octets prepended to an - * actual PPP frame. The 1st octet looks like Input/Output flag - * while 2nd octet is unknown, at least to me - * (mshindo@mshindo.net). - * - * That was what the original tcpdump code did. - * - * FreeBSD's "if_ppp.c" *does* set the first octet to 1 for outbound - * packets and 0 for inbound packets - but only if the - * protocol field has the 0x8000 bit set (i.e., it's a network - * control protocol); it does so before running the packet through - * "bpf_filter" to see if it should be discarded, and to see - * if we should update the time we sent the most recent packet... - * - * ...but it puts the original address field back after doing - * so. - * - * NetBSD's "if_ppp.c" doesn't set the first octet in that fashion. - * - * I don't know if any PPP implementation handed up to a BPF - * device packets with the first octet being 1 for outbound and - * 0 for inbound packets, so I (guy@alum.mit.edu) don't know - * whether that ever needs to be checked or not. - * - * Note that NetBSD has a DLT_PPP_SERIAL, which it uses for PPP, - * and its tcpdump appears to assume that the frame always - * begins with an address field and a control field, and that - * the address field might be 0x0f or 0x8f, for Cisco - * point-to-point with HDLC framing as per section 4.3.1 of RFC - * 1547, as well as 0xff, for PPP in HDLC-like framing as per - * RFC 1662. - * - * (Is the Cisco framing in question what DLT_C_HDLC, in - * BSD/OS, is?) - */ - if (eflag) - printf("%c %4d %02x ", p[0] ? 'O' : 'I', length, p[1]); -#endif - - ppp_print(p, length); - - return (0); -} - -/* - * PPP I/F printer to use if we know that RFC 1662-style PPP in HDLC-like - * framing, or Cisco PPP with HDLC framing as per section 4.3.1 of RFC 1547, - * is being used (i.e., we don't check for PPP_ADDRESS and PPP_CONTROL, - * discard them *if* those are the first two octets, and parse the remaining - * packet as a PPP packet, as "ppp_print()" does). - * - * This handles, for example, DLT_PPP_SERIAL in NetBSD. - */ -u_int -ppp_hdlc_if_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - register u_int length = h->len; - register u_int caplen = h->caplen; - u_int proto; - u_int hdrlen = 0; - - if (caplen < 2) { - printf("[|ppp]"); - return (caplen); - } - - switch (p[0]) { - - case PPP_ADDRESS: - if (caplen < 4) { - printf("[|ppp]"); - return (caplen); - } - - if (eflag) - printf("%02x %02x %d ", p[0], p[1], length); - p += 2; - length -= 2; - hdrlen += 2; - - proto = EXTRACT_16BITS(p); - p += 2; - length -= 2; - hdrlen += 2; - printf("%s: ", tok2str(ppptype2str, "unknown PPP protocol (0x%04x)", proto)); - - handle_ppp(proto, p, length); - break; - - case CHDLC_UNICAST: - case CHDLC_BCAST: - return (chdlc_if_print(h, p)); - - default: - if (eflag) - printf("%02x %02x %d ", p[0], p[1], length); - p += 2; - length -= 2; - hdrlen += 2; - - /* - * XXX - NetBSD's "ppp_netbsd_serial_if_print()" treats - * the next two octets as an Ethernet type; does that - * ever happen? - */ - printf("unknown addr %02x; ctrl %02x", p[0], p[1]); - break; - } - - return (hdrlen); -} - -#define PPP_BSDI_HDRLEN 24 - -/* BSD/OS specific PPP printer */ -u_int -ppp_bsdos_if_print(const struct pcap_pkthdr *h _U_, register const u_char *p _U_) -{ - register int hdrlength; -#ifdef __bsdi__ - register u_int length = h->len; - register u_int caplen = h->caplen; - u_int16_t ptype; - const u_char *q; - int i; - - if (caplen < PPP_BSDI_HDRLEN) { - printf("[|ppp]"); - return (caplen) - } - - hdrlength = 0; - -#if 0 - if (p[0] == PPP_ADDRESS && p[1] == PPP_CONTROL) { - if (eflag) - printf("%02x %02x ", p[0], p[1]); - p += 2; - hdrlength = 2; - } - - if (eflag) - printf("%d ", length); - /* Retrieve the protocol type */ - if (*p & 01) { - /* Compressed protocol field */ - ptype = *p; - if (eflag) - printf("%02x ", ptype); - p++; - hdrlength += 1; - } else { - /* Un-compressed protocol field */ - ptype = ntohs(*(u_int16_t *)p); - if (eflag) - printf("%04x ", ptype); - p += 2; - hdrlength += 2; - } -#else - ptype = 0; /*XXX*/ - if (eflag) - printf("%c ", p[SLC_DIR] ? 'O' : 'I'); - if (p[SLC_LLHL]) { - /* link level header */ - struct ppp_header *ph; - - q = p + SLC_BPFHDRLEN; - ph = (struct ppp_header *)q; - if (ph->phdr_addr == PPP_ADDRESS - && ph->phdr_ctl == PPP_CONTROL) { - if (eflag) - printf("%02x %02x ", q[0], q[1]); - ptype = ntohs(ph->phdr_type); - if (eflag && (ptype == PPP_VJC || ptype == PPP_VJNC)) { - printf("%s ", tok2str(ppptype2str, - "proto-#%d", ptype)); - } - } else { - if (eflag) { - printf("LLH=["); - for (i = 0; i < p[SLC_LLHL]; i++) - printf("%02x", q[i]); - printf("] "); - } - } - } - if (eflag) - printf("%d ", length); - if (p[SLC_CHL]) { - q = p + SLC_BPFHDRLEN + p[SLC_LLHL]; - - switch (ptype) { - case PPP_VJC: - ptype = vjc_print(q, ptype); - hdrlength = PPP_BSDI_HDRLEN; - p += hdrlength; - switch (ptype) { - case PPP_IP: - ip_print(p, length); - break; -#ifdef INET6 - case PPP_IPV6: - ip6_print(p, length); - break; -#endif - case PPP_MPLS_UCAST: - case PPP_MPLS_MCAST: - mpls_print(p, length); - break; - } - goto printx; - case PPP_VJNC: - ptype = vjc_print(q, ptype); - hdrlength = PPP_BSDI_HDRLEN; - p += hdrlength; - switch (ptype) { - case PPP_IP: - ip_print(p, length); - break; -#ifdef INET6 - case PPP_IPV6: - ip6_print(p, length); - break; -#endif - case PPP_MPLS_UCAST: - case PPP_MPLS_MCAST: - mpls_print(p, length); - break; - } - goto printx; - default: - if (eflag) { - printf("CH=["); - for (i = 0; i < p[SLC_LLHL]; i++) - printf("%02x", q[i]); - printf("] "); - } - break; - } - } - - hdrlength = PPP_BSDI_HDRLEN; -#endif - - length -= hdrlength; - p += hdrlength; - - switch (ptype) { - case PPP_IP: - ip_print(p, length); - break; -#ifdef INET6 - case PPP_IPV6: - ip6_print(p, length); - break; -#endif - case PPP_MPLS_UCAST: - case PPP_MPLS_MCAST: - mpls_print(p, length); - break; - default: - printf("%s ", tok2str(ppptype2str, "unknown PPP protocol (0x%04x)", ptype)); - } - -printx: -#else /* __bsdi */ - hdrlength = 0; -#endif /* __bsdi__ */ - return (hdrlength); -} - - -/* - * Local Variables: - * c-style: whitesmith - * c-basic-offset: 8 - * End: - */ diff --git a/contrib/tcpdump/print-pppoe.c b/contrib/tcpdump/print-pppoe.c deleted file mode 100644 index 229b5eef60afc..0000000000000 --- a/contrib/tcpdump/print-pppoe.c +++ /dev/null @@ -1,209 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * Original code by Greg Stark <gsstark@mit.edu> - */ - -#ifndef lint -static const char rcsid[] _U_ = -"@(#) $Header: /tcpdump/master/tcpdump/print-pppoe.c,v 1.30.2.1 2005/04/26 19:48:56 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "ppp.h" -#include "ethertype.h" -#include "ether.h" -#include "extract.h" /* must come after interface.h */ - -/* Codes */ -enum { - PPPOE_PADI = 0x09, - PPPOE_PADO = 0x07, - PPPOE_PADR = 0x19, - PPPOE_PADS = 0x65, - PPPOE_PADT = 0xa7 -}; - -static struct tok pppoecode2str[] = { - { PPPOE_PADI, "PADI" }, - { PPPOE_PADO, "PADO" }, - { PPPOE_PADR, "PADR" }, - { PPPOE_PADS, "PADS" }, - { PPPOE_PADT, "PADT" }, - { 0, "" }, /* PPP Data */ - { 0, NULL } -}; - -/* Tags */ -enum { - PPPOE_EOL = 0, - PPPOE_SERVICE_NAME = 0x0101, - PPPOE_AC_NAME = 0x0102, - PPPOE_HOST_UNIQ = 0x0103, - PPPOE_AC_COOKIE = 0x0104, - PPPOE_VENDOR = 0x0105, - PPPOE_RELAY_SID = 0x0110, - PPPOE_SERVICE_NAME_ERROR = 0x0201, - PPPOE_AC_SYSTEM_ERROR = 0x0202, - PPPOE_GENERIC_ERROR = 0x0203 -}; - -static struct tok pppoetag2str[] = { - { PPPOE_EOL, "EOL" }, - { PPPOE_SERVICE_NAME, "Service-Name" }, - { PPPOE_AC_NAME, "AC-Name" }, - { PPPOE_HOST_UNIQ, "Host-Uniq" }, - { PPPOE_AC_COOKIE, "AC-Cookie" }, - { PPPOE_VENDOR, "Vendor-Specific" }, - { PPPOE_RELAY_SID, "Relay-Session-ID" }, - { PPPOE_SERVICE_NAME_ERROR, "Service-Name-Error" }, - { PPPOE_AC_SYSTEM_ERROR, "AC-System-Error" }, - { PPPOE_GENERIC_ERROR, "Generic-Error" }, - { 0, NULL } -}; - -#define PPPOE_HDRLEN 6 -#define MAXTAGPRINT 80 - -u_int -pppoe_if_print(const struct pcap_pkthdr *h, register const u_char *p) -{ - return (pppoe_print(p, h->len)); -} - -u_int -pppoe_print(register const u_char *bp, u_int length) -{ - u_int16_t pppoe_ver, pppoe_type, pppoe_code, pppoe_sessionid; - u_int pppoe_length; - const u_char *pppoe_packet, *pppoe_payload; - - if (length < PPPOE_HDRLEN) { - (void)printf("truncated-pppoe %u", length); - return (length); - } - length -= PPPOE_HDRLEN; - pppoe_packet = bp; - TCHECK2(*pppoe_packet, PPPOE_HDRLEN); - pppoe_ver = (pppoe_packet[0] & 0xF0) >> 4; - pppoe_type = (pppoe_packet[0] & 0x0F); - pppoe_code = pppoe_packet[1]; - pppoe_sessionid = EXTRACT_16BITS(pppoe_packet + 2); - pppoe_length = EXTRACT_16BITS(pppoe_packet + 4); - pppoe_payload = pppoe_packet + PPPOE_HDRLEN; - - if (pppoe_ver != 1) { - printf(" [ver %d]",pppoe_ver); - } - if (pppoe_type != 1) { - printf(" [type %d]",pppoe_type); - } - - printf("PPPoE %s", tok2str(pppoecode2str, "PAD-%x", pppoe_code)); - if (pppoe_code == PPPOE_PADI && pppoe_length > 1484 - PPPOE_HDRLEN) { - printf(" [len %u!]",pppoe_length); - } - if (pppoe_length > length) { - printf(" [len %u > %u!]", pppoe_length, length); - pppoe_length = length; - } - if (pppoe_sessionid) { - printf(" [ses 0x%x]", pppoe_sessionid); - } - - if (pppoe_code) { - /* PPP session packets don't contain tags */ - u_short tag_type = 0xffff, tag_len; - const u_char *p = pppoe_payload; - - /* - * loop invariant: - * p points to current tag, - * tag_type is previous tag or 0xffff for first iteration - */ - while (tag_type && p < pppoe_payload + pppoe_length) { - TCHECK2(*p, 4); - tag_type = EXTRACT_16BITS(p); - tag_len = EXTRACT_16BITS(p + 2); - p += 4; - /* p points to tag_value */ - - if (tag_len) { - unsigned isascii = 0, isgarbage = 0; - const u_char *v = p; - char tag_str[MAXTAGPRINT]; - unsigned tag_str_len = 0; - - /* TODO print UTF-8 decoded text */ - TCHECK2(*p, tag_len); - for (v = p; v < p + tag_len && tag_str_len < MAXTAGPRINT-1; v++) - if (*v >= 32 && *v < 127) { - tag_str[tag_str_len++] = *v; - isascii++; - } else { - tag_str[tag_str_len++] = '.'; - isgarbage++; - } - tag_str[tag_str_len] = 0; - - if (isascii > isgarbage) { - printf(" [%s \"%*.*s\"]", - tok2str(pppoetag2str, "TAG-0x%x", tag_type), - (int)tag_str_len, - (int)tag_str_len, - tag_str); - } else { - /* Print hex, not fast to abuse printf but this doesn't get used much */ - printf(" [%s 0x", tok2str(pppoetag2str, "TAG-0x%x", tag_type)); - for (v=p; v<p+tag_len; v++) { - printf("%02X", *v); - } - printf("]"); - } - - - } else - printf(" [%s]", tok2str(pppoetag2str, - "TAG-0x%x", tag_type)); - - p += tag_len; - /* p points to next tag */ - } - return (0); - } else { - /* PPPoE data */ - printf(" "); - return (PPPOE_HDRLEN + ppp_print(pppoe_payload, pppoe_length)); - } - -trunc: - printf("[|pppoe]"); - return (PPPOE_HDRLEN); -} diff --git a/contrib/tcpdump/print-pptp.c b/contrib/tcpdump/print-pptp.c deleted file mode 100644 index c4c8300d9aeda..0000000000000 --- a/contrib/tcpdump/print-pptp.c +++ /dev/null @@ -1,1068 +0,0 @@ -/* - * Copyright (c) 1991, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * PPTP support contributed by Motonori Shindo (mshindo@mshindo.net) - */ - - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-pptp.c,v 1.11 2003/11/16 09:36:33 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> - -#include "interface.h" -#include "extract.h" - -static char tstr[] = " [|pptp]"; - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -#define PPTP_MSG_TYPE_CTRL 1 /* Control Message */ -#define PPTP_MSG_TYPE_MGMT 2 /* Management Message (currently not used */ -#define PPTP_MAGIC_COOKIE 0x1a2b3c4d /* for sanity check */ - -#define PPTP_CTRL_MSG_TYPE_SCCRQ 1 -#define PPTP_CTRL_MSG_TYPE_SCCRP 2 -#define PPTP_CTRL_MSG_TYPE_StopCCRQ 3 -#define PPTP_CTRL_MSG_TYPE_StopCCRP 4 -#define PPTP_CTRL_MSG_TYPE_ECHORQ 5 -#define PPTP_CTRL_MSG_TYPE_ECHORP 6 -#define PPTP_CTRL_MSG_TYPE_OCRQ 7 -#define PPTP_CTRL_MSG_TYPE_OCRP 8 -#define PPTP_CTRL_MSG_TYPE_ICRQ 9 -#define PPTP_CTRL_MSG_TYPE_ICRP 10 -#define PPTP_CTRL_MSG_TYPE_ICCN 11 -#define PPTP_CTRL_MSG_TYPE_CCRQ 12 -#define PPTP_CTRL_MSG_TYPE_CDN 13 -#define PPTP_CTRL_MSG_TYPE_WEN 14 -#define PPTP_CTRL_MSG_TYPE_SLI 15 - -#define PPTP_FRAMING_CAP_ASYNC_MASK 0x00000001 /* Aynchronous */ -#define PPTP_FRAMING_CAP_SYNC_MASK 0x00000002 /* Synchronous */ - -#define PPTP_BEARER_CAP_ANALOG_MASK 0x00000001 /* Analog */ -#define PPTP_BEARER_CAP_DIGITAL_MASK 0x00000002 /* Digital */ - -static const char *pptp_message_type_string[] = { - "NOT_DEFINED", /* 0 Not defined in the RFC2637 */ - "SCCRQ", /* 1 Start-Control-Connection-Request */ - "SCCRP", /* 2 Start-Control-Connection-Reply */ - "StopCCRQ", /* 3 Stop-Control-Connection-Request */ - "StopCCRP", /* 4 Stop-Control-Connection-Reply */ - "ECHORQ", /* 5 Echo Request */ - "ECHORP", /* 6 Echo Reply */ - - "OCRQ", /* 7 Outgoing-Call-Request */ - "OCRP", /* 8 Outgoing-Call-Reply */ - "ICRQ", /* 9 Incoming-Call-Request */ - "ICRP", /* 10 Incoming-Call-Reply */ - "ICCN", /* 11 Incoming-Call-Connected */ - "CCRQ", /* 12 Call-Clear-Request */ - "CDN", /* 13 Call-Disconnect-Notify */ - - "WEN", /* 14 WAN-Error-Notify */ - - "SLI" /* 15 Set-Link-Info */ -#define PPTP_MAX_MSGTYPE_INDEX 16 -}; - -/* common for all PPTP control messages */ -struct pptp_hdr { - u_int16_t length; - u_int16_t msg_type; - u_int32_t magic_cookie; - u_int16_t ctrl_msg_type; - u_int16_t reserved0; -}; - -struct pptp_msg_sccrq { - u_int16_t proto_ver; - u_int16_t reserved1; - u_int32_t framing_cap; - u_int32_t bearer_cap; - u_int16_t max_channel; - u_int16_t firm_rev; - u_char hostname[64]; - u_char vendor[64]; -}; - -struct pptp_msg_sccrp { - u_int16_t proto_ver; - u_int8_t result_code; - u_int8_t err_code; - u_int32_t framing_cap; - u_int32_t bearer_cap; - u_int16_t max_channel; - u_int16_t firm_rev; - u_char hostname[64]; - u_char vendor[64]; -}; - -struct pptp_msg_stopccrq { - u_int8_t reason; - u_int8_t reserved1; - u_int16_t reserved2; -}; - -struct pptp_msg_stopccrp { - u_int8_t result_code; - u_int8_t err_code; - u_int16_t reserved1; -}; - -struct pptp_msg_echorq { - u_int32_t id; -}; - -struct pptp_msg_echorp { - u_int32_t id; - u_int8_t result_code; - u_int8_t err_code; - u_int16_t reserved1; -}; - -struct pptp_msg_ocrq { - u_int16_t call_id; - u_int16_t call_ser; - u_int32_t min_bps; - u_int32_t max_bps; - u_int32_t bearer_type; - u_int32_t framing_type; - u_int16_t recv_winsiz; - u_int16_t pkt_proc_delay; - u_int16_t phone_no_len; - u_int16_t reserved1; - u_char phone_no[64]; - u_char subaddr[64]; -}; - -struct pptp_msg_ocrp { - u_int16_t call_id; - u_int16_t peer_call_id; - u_int8_t result_code; - u_int8_t err_code; - u_int16_t cause_code; - u_int32_t conn_speed; - u_int16_t recv_winsiz; - u_int16_t pkt_proc_delay; - u_int32_t phy_chan_id; -}; - -struct pptp_msg_icrq { - u_int16_t call_id; - u_int16_t call_ser; - u_int32_t bearer_type; - u_int32_t phy_chan_id; - u_int16_t dialed_no_len; - u_int16_t dialing_no_len; - u_char dialed_no[64]; /* DNIS */ - u_char dialing_no[64]; /* CLID */ - u_char subaddr[64]; -}; - -struct pptp_msg_icrp { - u_int16_t call_id; - u_int16_t peer_call_id; - u_int8_t result_code; - u_int8_t err_code; - u_int16_t recv_winsiz; - u_int16_t pkt_proc_delay; - u_int16_t reserved1; -}; - -struct pptp_msg_iccn { - u_int16_t peer_call_id; - u_int16_t reserved1; - u_int32_t conn_speed; - u_int16_t recv_winsiz; - u_int16_t pkt_proc_delay; - u_int32_t framing_type; -}; - -struct pptp_msg_ccrq { - u_int16_t call_id; - u_int16_t reserved1; -}; - -struct pptp_msg_cdn { - u_int16_t call_id; - u_int8_t result_code; - u_int8_t err_code; - u_int16_t cause_code; - u_int16_t reserved1; - u_char call_stats[128]; -}; - -struct pptp_msg_wen { - u_int16_t peer_call_id; - u_int16_t reserved1; - u_int32_t crc_err; - u_int32_t framing_err; - u_int32_t hardware_overrun; - u_int32_t buffer_overrun; - u_int32_t timeout_err; - u_int32_t align_err; -}; - -struct pptp_msg_sli { - u_int16_t peer_call_id; - u_int16_t reserved1; - u_int32_t send_accm; - u_int32_t recv_accm; -}; - -/* attributes that appear more than once in above messages: - - Number of - occurence attributes - -------------------------------------- - 2 u_int32_t bearer_cap; - 2 u_int32_t bearer_type; - 6 u_int16_t call_id; - 2 u_int16_t call_ser; - 2 u_int16_t cause_code; - 2 u_int32_t conn_speed; - 6 u_int8_t err_code; - 2 u_int16_t firm_rev; - 2 u_int32_t framing_cap; - 2 u_int32_t framing_type; - 2 u_char hostname[64]; - 2 u_int32_t id; - 2 u_int16_t max_channel; - 5 u_int16_t peer_call_id; - 2 u_int32_t phy_chan_id; - 4 u_int16_t pkt_proc_delay; - 2 u_int16_t proto_ver; - 4 u_int16_t recv_winsiz; - 2 u_int8_t reserved1; - 9 u_int16_t reserved1; - 6 u_int8_t result_code; - 2 u_char subaddr[64]; - 2 u_char vendor[64]; - - so I will prepare print out functions for these attributes (except for - reserved*). -*/ - -/******************************************/ -/* Attribute-specific print out functions */ -/******************************************/ - -/* In these attribute-specific print-out functions, it't not necessary - to do TCHECK because they are already checked in the caller of - these functions. */ - -static void -pptp_bearer_cap_print(const u_int32_t *bearer_cap) -{ - printf(" BEARER_CAP("); - if (EXTRACT_32BITS(bearer_cap) & PPTP_BEARER_CAP_DIGITAL_MASK) { - printf("D"); - } - if (EXTRACT_32BITS(bearer_cap) & PPTP_BEARER_CAP_ANALOG_MASK) { - printf("A"); - } - printf(")"); -} - -static void -pptp_bearer_type_print(const u_int32_t *bearer_type) -{ - printf(" BEARER_TYPE("); - switch (EXTRACT_32BITS(bearer_type)) { - case 1: - printf("A"); /* Analog */ - break; - case 2: - printf("D"); /* Digital */ - break; - case 3: - printf("Any"); - break; - default: - printf("?"); - break; - } - printf(")"); -} - -static void -pptp_call_id_print(const u_int16_t *call_id) -{ - printf(" CALL_ID(%u)", EXTRACT_16BITS(call_id)); -} - -static void -pptp_call_ser_print(const u_int16_t *call_ser) -{ - printf(" CALL_SER_NUM(%u)", EXTRACT_16BITS(call_ser)); -} - -static void -pptp_cause_code_print(const u_int16_t *cause_code) -{ - printf(" CAUSE_CODE(%u)", EXTRACT_16BITS(cause_code)); -} - -static void -pptp_conn_speed_print(const u_int32_t *conn_speed) -{ - printf(" CONN_SPEED(%u)", EXTRACT_32BITS(conn_speed)); -} - -static void -pptp_err_code_print(const u_int8_t *err_code) -{ - printf(" ERR_CODE(%u", *err_code); - if (vflag) { - switch (*err_code) { - case 0: - printf(":None"); - break; - case 1: - printf(":Not-Connected"); - break; - case 2: - printf(":Bad-Format"); - break; - case 3: - printf(":Bad-Valude"); - break; - case 4: - printf(":No-Resource"); - break; - case 5: - printf(":Bad-Call-ID"); - break; - case 6: - printf(":PAC-Error"); - break; - default: - printf(":?"); - break; - } - } - printf(")"); -} - -static void -pptp_firm_rev_print(const u_int16_t *firm_rev) -{ - printf(" FIRM_REV(%u)", EXTRACT_16BITS(firm_rev)); -} - -static void -pptp_framing_cap_print(const u_int32_t *framing_cap) -{ - printf(" FRAME_CAP("); - if (EXTRACT_32BITS(framing_cap) & PPTP_FRAMING_CAP_ASYNC_MASK) { - printf("A"); /* Async */ - } - if (EXTRACT_32BITS(framing_cap) & PPTP_FRAMING_CAP_SYNC_MASK) { - printf("S"); /* Sync */ - } - printf(")"); -} - -static void -pptp_framing_type_print(const u_int32_t *framing_type) -{ - printf(" FRAME_TYPE("); - switch (EXTRACT_32BITS(framing_type)) { - case 1: - printf("A"); /* Async */ - break; - case 2: - printf("S"); /* Sync */ - break; - case 3: - printf("E"); /* Either */ - break; - default: - printf("?"); - break; - } - printf(")"); -} - -static void -pptp_hostname_print(const u_char *hostname) -{ - printf(" HOSTNAME(%.64s)", hostname); -} - -static void -pptp_id_print(const u_int32_t *id) -{ - printf(" ID(%u)", EXTRACT_32BITS(id)); -} - -static void -pptp_max_channel_print(const u_int16_t *max_channel) -{ - printf(" MAX_CHAN(%u)", EXTRACT_16BITS(max_channel)); -} - -static void -pptp_peer_call_id_print(const u_int16_t *peer_call_id) -{ - printf(" PEER_CALL_ID(%u)", EXTRACT_16BITS(peer_call_id)); -} - -static void -pptp_phy_chan_id_print(const u_int32_t *phy_chan_id) -{ - printf(" PHY_CHAN_ID(%u)", EXTRACT_32BITS(phy_chan_id)); -} - -static void -pptp_pkt_proc_delay_print(const u_int16_t *pkt_proc_delay) -{ - printf(" PROC_DELAY(%u)", EXTRACT_16BITS(pkt_proc_delay)); -} - -static void -pptp_proto_ver_print(const u_int16_t *proto_ver) -{ - printf(" PROTO_VER(%u.%u)", /* Version.Revision */ - EXTRACT_16BITS(proto_ver) >> 8, - EXTRACT_16BITS(proto_ver) & 0xff); -} - -static void -pptp_recv_winsiz_print(const u_int16_t *recv_winsiz) -{ - printf(" RECV_WIN(%u)", EXTRACT_16BITS(recv_winsiz)); -} - -static void -pptp_result_code_print(const u_int8_t *result_code, int ctrl_msg_type) -{ - printf(" RESULT_CODE(%u", *result_code); - if (vflag) { - switch (ctrl_msg_type) { - case PPTP_CTRL_MSG_TYPE_SCCRP: - switch (*result_code) { - case 1: - printf(":Successful channel establishment"); - break; - case 2: - printf(":General error"); - break; - case 3: - printf(":Command channel already exists"); - break; - case 4: - printf(":Requester is not authorized to establish a command channel"); - break; - case 5: - printf(":The protocol version of the requester is not supported"); - break; - default: - printf(":?"); - break; - } - break; - case PPTP_CTRL_MSG_TYPE_StopCCRP: - case PPTP_CTRL_MSG_TYPE_ECHORP: - switch (*result_code) { - case 1: - printf(":OK"); - break; - case 2: - printf(":General Error"); - break; - default: - printf(":?"); - break; - } - break; - case PPTP_CTRL_MSG_TYPE_OCRP: - switch (*result_code) { - case 1: - printf(":Connected"); - break; - case 2: - printf(":General Error"); - break; - case 3: - printf(":No Carrier"); - break; - case 4: - printf(":Busy"); - break; - case 5: - printf(":No Dial Tone"); - break; - case 6: - printf(":Time-out"); - break; - case 7: - printf(":Do Not Accept"); - break; - default: - printf(":?"); - break; - } - break; - case PPTP_CTRL_MSG_TYPE_ICRP: - switch (*result_code) { - case 1: - printf(":Connect"); - break; - case 2: - printf(":General Error"); - break; - case 3: - printf(":Do Not Accept"); - break; - default: - printf(":?"); - break; - } - break; - case PPTP_CTRL_MSG_TYPE_CDN: - switch (*result_code) { - case 1: - printf(":Lost Carrier"); - break; - case 2: - printf(":General Error"); - break; - case 3: - printf(":Admin Shutdown"); - break; - case 4: - printf(":Request"); - default: - printf(":?"); - break; - break; - } - default: - /* assertion error */ - break; - } - } - printf(")"); -} - -static void -pptp_subaddr_print(const u_char *subaddr) -{ - printf(" SUB_ADDR(%.64s)", subaddr); -} - -static void -pptp_vendor_print(const u_char *vendor) -{ - printf(" VENDOR(%.64s)", vendor); -} - -/************************************/ -/* PPTP message print out functions */ -/************************************/ -static void -pptp_sccrq_print(const u_char *dat) -{ - struct pptp_msg_sccrq *ptr = (struct pptp_msg_sccrq *)dat; - - TCHECK(ptr->proto_ver); - pptp_proto_ver_print(&ptr->proto_ver); - TCHECK(ptr->reserved1); - TCHECK(ptr->framing_cap); - pptp_framing_cap_print(&ptr->framing_cap); - TCHECK(ptr->bearer_cap); - pptp_bearer_cap_print(&ptr->bearer_cap); - TCHECK(ptr->max_channel); - pptp_max_channel_print(&ptr->max_channel); - TCHECK(ptr->firm_rev); - pptp_firm_rev_print(&ptr->firm_rev); - TCHECK(ptr->hostname); - pptp_hostname_print(&ptr->hostname[0]); - TCHECK(ptr->vendor); - pptp_vendor_print(&ptr->vendor[0]); - - return; - -trunc: - printf("%s", tstr); -} - -static void -pptp_sccrp_print(const u_char *dat) -{ - struct pptp_msg_sccrp *ptr = (struct pptp_msg_sccrp *)dat; - - TCHECK(ptr->proto_ver); - pptp_proto_ver_print(&ptr->proto_ver); - TCHECK(ptr->result_code); - pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_SCCRP); - TCHECK(ptr->err_code); - pptp_err_code_print(&ptr->err_code); - TCHECK(ptr->framing_cap); - pptp_framing_cap_print(&ptr->framing_cap); - TCHECK(ptr->bearer_cap); - pptp_bearer_cap_print(&ptr->bearer_cap); - TCHECK(ptr->max_channel); - pptp_max_channel_print(&ptr->max_channel); - TCHECK(ptr->firm_rev); - pptp_firm_rev_print(&ptr->firm_rev); - TCHECK(ptr->hostname); - pptp_hostname_print(&ptr->hostname[0]); - TCHECK(ptr->vendor); - pptp_vendor_print(&ptr->vendor[0]); - - return; - -trunc: - printf("%s", tstr); -} - -static void -pptp_stopccrq_print(const u_char *dat) -{ - struct pptp_msg_stopccrq *ptr = (struct pptp_msg_stopccrq *)dat; - - TCHECK(ptr->reason); - printf(" REASON(%u", ptr->reason); - if (vflag) { - switch (ptr->reason) { - case 1: - printf(":None"); - break; - case 2: - printf(":Stop-Protocol"); - break; - case 3: - printf(":Stop-Local-Shutdown"); - break; - default: - printf(":?"); - break; - } - } - printf(")"); - TCHECK(ptr->reserved1); - TCHECK(ptr->reserved2); - - return; - -trunc: - printf("%s", tstr); -} - -static void -pptp_stopccrp_print(const u_char *dat) -{ - struct pptp_msg_stopccrp *ptr = (struct pptp_msg_stopccrp *)dat; - - TCHECK(ptr->result_code); - pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_StopCCRP); - TCHECK(ptr->err_code); - pptp_err_code_print(&ptr->err_code); - TCHECK(ptr->reserved1); - - return; - -trunc: - printf("%s", tstr); -} - -static void -pptp_echorq_print(const u_char *dat) -{ - struct pptp_msg_echorq *ptr = (struct pptp_msg_echorq *)dat; - - TCHECK(ptr->id); - pptp_id_print(&ptr->id); - - return; - -trunc: - printf("%s", tstr); -} - -static void -pptp_echorp_print(const u_char *dat) -{ - struct pptp_msg_echorp *ptr = (struct pptp_msg_echorp *)dat; - - TCHECK(ptr->id); - pptp_id_print(&ptr->id); - TCHECK(ptr->result_code); - pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_ECHORP); - TCHECK(ptr->err_code); - pptp_err_code_print(&ptr->err_code); - TCHECK(ptr->reserved1); - - return; - -trunc: - printf("%s", tstr); -} - -static void -pptp_ocrq_print(const u_char *dat) -{ - struct pptp_msg_ocrq *ptr = (struct pptp_msg_ocrq *)dat; - - TCHECK(ptr->call_id); - pptp_call_id_print(&ptr->call_id); - TCHECK(ptr->call_ser); - pptp_call_ser_print(&ptr->call_ser); - TCHECK(ptr->min_bps); - printf(" MIN_BPS(%u)", EXTRACT_32BITS(&ptr->min_bps)); - TCHECK(ptr->max_bps); - printf(" MAX_BPS(%u)", EXTRACT_32BITS(&ptr->max_bps)); - TCHECK(ptr->bearer_type); - pptp_bearer_type_print(&ptr->bearer_type); - TCHECK(ptr->framing_type); - pptp_framing_type_print(&ptr->framing_type); - TCHECK(ptr->recv_winsiz); - pptp_recv_winsiz_print(&ptr->recv_winsiz); - TCHECK(ptr->pkt_proc_delay); - pptp_pkt_proc_delay_print(&ptr->pkt_proc_delay); - TCHECK(ptr->phone_no_len); - printf(" PHONE_NO_LEN(%u)", EXTRACT_16BITS(&ptr->phone_no_len)); - TCHECK(ptr->reserved1); - TCHECK(ptr->phone_no); - printf(" PHONE_NO(%.64s)", ptr->phone_no); - TCHECK(ptr->subaddr); - pptp_subaddr_print(&ptr->subaddr[0]); - - return; - -trunc: - printf("%s", tstr); -} - -static void -pptp_ocrp_print(const u_char *dat) -{ - struct pptp_msg_ocrp *ptr = (struct pptp_msg_ocrp *)dat; - - TCHECK(ptr->call_id); - pptp_call_id_print(&ptr->call_id); - TCHECK(ptr->peer_call_id); - pptp_peer_call_id_print(&ptr->peer_call_id); - TCHECK(ptr->result_code); - pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_OCRP); - TCHECK(ptr->err_code); - pptp_err_code_print(&ptr->err_code); - TCHECK(ptr->cause_code); - pptp_cause_code_print(&ptr->cause_code); - TCHECK(ptr->conn_speed); - pptp_conn_speed_print(&ptr->conn_speed); - TCHECK(ptr->recv_winsiz); - pptp_recv_winsiz_print(&ptr->recv_winsiz); - TCHECK(ptr->pkt_proc_delay); - pptp_pkt_proc_delay_print(&ptr->pkt_proc_delay); - TCHECK(ptr->phy_chan_id); - pptp_phy_chan_id_print(&ptr->phy_chan_id); - - return; - -trunc: - printf("%s", tstr); -} - -static void -pptp_icrq_print(const u_char *dat) -{ - struct pptp_msg_icrq *ptr = (struct pptp_msg_icrq *)dat; - - TCHECK(ptr->call_id); - pptp_call_id_print(&ptr->call_id); - TCHECK(ptr->call_ser); - pptp_call_ser_print(&ptr->call_ser); - TCHECK(ptr->bearer_type); - pptp_bearer_type_print(&ptr->bearer_type); - TCHECK(ptr->phy_chan_id); - pptp_phy_chan_id_print(&ptr->phy_chan_id); - TCHECK(ptr->dialed_no_len); - printf(" DIALED_NO_LEN(%u)", EXTRACT_16BITS(&ptr->dialed_no_len)); - TCHECK(ptr->dialing_no_len); - printf(" DIALING_NO_LEN(%u)", EXTRACT_16BITS(&ptr->dialing_no_len)); - TCHECK(ptr->dialed_no); - printf(" DIALED_NO(%.64s)", ptr->dialed_no); - TCHECK(ptr->dialing_no); - printf(" DIALING_NO(%.64s)", ptr->dialing_no); - TCHECK(ptr->subaddr); - pptp_subaddr_print(&ptr->subaddr[0]); - - return; - -trunc: - printf("%s", tstr); -} - -static void -pptp_icrp_print(const u_char *dat) -{ - struct pptp_msg_icrp *ptr = (struct pptp_msg_icrp *)dat; - - TCHECK(ptr->call_id); - pptp_call_id_print(&ptr->call_id); - TCHECK(ptr->peer_call_id); - pptp_peer_call_id_print(&ptr->peer_call_id); - TCHECK(ptr->result_code); - pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_ICRP); - TCHECK(ptr->err_code); - pptp_err_code_print(&ptr->err_code); - TCHECK(ptr->recv_winsiz); - pptp_recv_winsiz_print(&ptr->recv_winsiz); - TCHECK(ptr->pkt_proc_delay); - pptp_pkt_proc_delay_print(&ptr->pkt_proc_delay); - TCHECK(ptr->reserved1); - - return; - -trunc: - printf("%s", tstr); -} - -static void -pptp_iccn_print(const u_char *dat) -{ - struct pptp_msg_iccn *ptr = (struct pptp_msg_iccn *)dat; - - TCHECK(ptr->peer_call_id); - pptp_peer_call_id_print(&ptr->peer_call_id); - TCHECK(ptr->reserved1); - TCHECK(ptr->conn_speed); - pptp_conn_speed_print(&ptr->conn_speed); - TCHECK(ptr->recv_winsiz); - pptp_recv_winsiz_print(&ptr->recv_winsiz); - TCHECK(ptr->pkt_proc_delay); - pptp_pkt_proc_delay_print(&ptr->pkt_proc_delay); - TCHECK(ptr->framing_type); - pptp_framing_type_print(&ptr->framing_type); - - return; - -trunc: - printf("%s", tstr); -} - -static void -pptp_ccrq_print(const u_char *dat) -{ - struct pptp_msg_ccrq *ptr = (struct pptp_msg_ccrq *)dat; - - TCHECK(ptr->call_id); - pptp_call_id_print(&ptr->call_id); - TCHECK(ptr->reserved1); - - return; - -trunc: - printf("%s", tstr); -} - -static void -pptp_cdn_print(const u_char *dat) -{ - struct pptp_msg_cdn *ptr = (struct pptp_msg_cdn *)dat; - - TCHECK(ptr->call_id); - pptp_call_id_print(&ptr->call_id); - TCHECK(ptr->result_code); - pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_CDN); - TCHECK(ptr->err_code); - pptp_err_code_print(&ptr->err_code); - TCHECK(ptr->cause_code); - pptp_cause_code_print(&ptr->cause_code); - TCHECK(ptr->reserved1); - TCHECK(ptr->call_stats); - printf(" CALL_STATS(%.128s)", ptr->call_stats); - - return; - -trunc: - printf("%s", tstr); -} - -static void -pptp_wen_print(const u_char *dat) -{ - struct pptp_msg_wen *ptr = (struct pptp_msg_wen *)dat; - - TCHECK(ptr->peer_call_id); - pptp_peer_call_id_print(&ptr->peer_call_id); - TCHECK(ptr->reserved1); - TCHECK(ptr->crc_err); - printf(" CRC_ERR(%u)", EXTRACT_32BITS(&ptr->crc_err)); - TCHECK(ptr->framing_err); - printf(" FRAMING_ERR(%u)", EXTRACT_32BITS(&ptr->framing_err)); - TCHECK(ptr->hardware_overrun); - printf(" HARDWARE_OVERRUN(%u)", EXTRACT_32BITS(&ptr->hardware_overrun)); - TCHECK(ptr->buffer_overrun); - printf(" BUFFER_OVERRUN(%u)", EXTRACT_32BITS(&ptr->buffer_overrun)); - TCHECK(ptr->timeout_err); - printf(" TIMEOUT_ERR(%u)", EXTRACT_32BITS(&ptr->timeout_err)); - TCHECK(ptr->align_err); - printf(" ALIGN_ERR(%u)", EXTRACT_32BITS(&ptr->align_err)); - - return; - -trunc: - printf("%s", tstr); -} - -static void -pptp_sli_print(const u_char *dat) -{ - struct pptp_msg_sli *ptr = (struct pptp_msg_sli *)dat; - - TCHECK(ptr->peer_call_id); - pptp_peer_call_id_print(&ptr->peer_call_id); - TCHECK(ptr->reserved1); - TCHECK(ptr->send_accm); - printf(" SEND_ACCM(0x%08x)", EXTRACT_32BITS(&ptr->send_accm)); - TCHECK(ptr->recv_accm); - printf(" RECV_ACCM(0x%08x)", EXTRACT_32BITS(&ptr->recv_accm)); - - return; - -trunc: - printf("%s", tstr); -} - -void -pptp_print(const u_char *dat) -{ - const struct pptp_hdr *hdr; - u_int32_t mc; - u_int16_t ctrl_msg_type; - - printf(": pptp"); - - hdr = (struct pptp_hdr *)dat; - - TCHECK(hdr->length); - if (vflag) { - printf(" Length=%u", EXTRACT_16BITS(&hdr->length)); - } - TCHECK(hdr->msg_type); - if (vflag) { - switch(EXTRACT_16BITS(&hdr->msg_type)) { - case PPTP_MSG_TYPE_CTRL: - printf(" CTRL-MSG"); - break; - case PPTP_MSG_TYPE_MGMT: - printf(" MGMT-MSG"); - break; - default: - printf(" UNKNOWN-MSG-TYPE"); - break; - } - } - - TCHECK(hdr->magic_cookie); - mc = EXTRACT_32BITS(&hdr->magic_cookie); - if (mc != PPTP_MAGIC_COOKIE) { - printf(" UNEXPECTED Magic-Cookie!!(%08x)", mc); - } - if (vflag || mc != PPTP_MAGIC_COOKIE) { - printf(" Magic-Cookie=%08x", mc); - } - TCHECK(hdr->ctrl_msg_type); - ctrl_msg_type = EXTRACT_16BITS(&hdr->ctrl_msg_type); - if (ctrl_msg_type < PPTP_MAX_MSGTYPE_INDEX) { - printf(" CTRL_MSGTYPE=%s", - pptp_message_type_string[ctrl_msg_type]); - } else { - printf(" UNKNOWN_CTRL_MSGTYPE(%u)", ctrl_msg_type); - } - TCHECK(hdr->reserved0); - - dat += 12; - - switch(ctrl_msg_type) { - case PPTP_CTRL_MSG_TYPE_SCCRQ: - pptp_sccrq_print(dat); - break; - case PPTP_CTRL_MSG_TYPE_SCCRP: - pptp_sccrp_print(dat); - break; - case PPTP_CTRL_MSG_TYPE_StopCCRQ: - pptp_stopccrq_print(dat); - break; - case PPTP_CTRL_MSG_TYPE_StopCCRP: - pptp_stopccrp_print(dat); - break; - case PPTP_CTRL_MSG_TYPE_ECHORQ: - pptp_echorq_print(dat); - break; - case PPTP_CTRL_MSG_TYPE_ECHORP: - pptp_echorp_print(dat); - break; - case PPTP_CTRL_MSG_TYPE_OCRQ: - pptp_ocrq_print(dat); - break; - case PPTP_CTRL_MSG_TYPE_OCRP: - pptp_ocrp_print(dat); - break; - case PPTP_CTRL_MSG_TYPE_ICRQ: - pptp_icrq_print(dat); - break; - case PPTP_CTRL_MSG_TYPE_ICRP: - pptp_icrp_print(dat); - break; - case PPTP_CTRL_MSG_TYPE_ICCN: - pptp_iccn_print(dat); - break; - case PPTP_CTRL_MSG_TYPE_CCRQ: - pptp_ccrq_print(dat); - break; - case PPTP_CTRL_MSG_TYPE_CDN: - pptp_cdn_print(dat); - break; - case PPTP_CTRL_MSG_TYPE_WEN: - pptp_wen_print(dat); - break; - case PPTP_CTRL_MSG_TYPE_SLI: - pptp_sli_print(dat); - break; - default: - /* do nothing */ - break; - } - - return; - -trunc: - printf("%s", tstr); -} diff --git a/contrib/tcpdump/print-radius.c b/contrib/tcpdump/print-radius.c deleted file mode 100644 index 203c50bd06ab6..0000000000000 --- a/contrib/tcpdump/print-radius.c +++ /dev/null @@ -1,937 +0,0 @@ -/* - * Copyright (C) 2000 Alfredo Andres Omella. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. The names of the authors may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * 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. - */ -/* - * Radius printer routines as specified on: - * - * RFC 2865: - * "Remote Authentication Dial In User Service (RADIUS)" - * - * RFC 2866: - * "RADIUS Accounting" - * - * RFC 2867: - * "RADIUS Accounting Modifications for Tunnel Protocol Support" - * - * RFC 2868: - * "RADIUS Attributes for Tunnel Protocol Support" - * - * RFC 2869: - * "RADIUS Extensions" - * - * Alfredo Andres Omella (aandres@s21sec.com) v0.1 2000/09/15 - * - * TODO: Among other things to print ok MacIntosh and Vendor values - */ - -#ifndef lint -static const char rcsid[] _U_ = - "$Id: print-radius.c,v 1.27.2.1 2005/09/26 01:02:40 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <string.h> - -#include <stdio.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" -#include "oui.h" - -#define TAM_SIZE(x) (sizeof(x)/sizeof(x[0]) ) - -#define PRINT_HEX(bytes_len, ptr_data) \ - while(bytes_len) \ - { \ - printf("%02X", *ptr_data ); \ - ptr_data++; \ - bytes_len--; \ - } - - -/* Radius packet codes */ -#define RADCMD_ACCESS_REQ 1 /* Access-Request */ -#define RADCMD_ACCESS_ACC 2 /* Access-Accept */ -#define RADCMD_ACCESS_REJ 3 /* Access-Reject */ -#define RADCMD_ACCOUN_REQ 4 /* Accounting-Request */ -#define RADCMD_ACCOUN_RES 5 /* Accounting-Response */ -#define RADCMD_ACCESS_CHA 11 /* Access-Challenge */ -#define RADCMD_STATUS_SER 12 /* Status-Server */ -#define RADCMD_STATUS_CLI 13 /* Status-Client */ -#define RADCMD_RESERVED 255 /* Reserved */ - -static struct tok radius_command_values[] = { - { RADCMD_ACCESS_REQ, "Access Request" }, - { RADCMD_ACCESS_ACC, "Access Accept" }, - { RADCMD_ACCESS_REJ, "Access Reject" }, - { RADCMD_ACCOUN_REQ, "Accounting Request" }, - { RADCMD_ACCOUN_RES, "Accounting Response" }, - { RADCMD_ACCESS_CHA, "Access Challenge" }, - { RADCMD_STATUS_SER, "Status Server" }, - { RADCMD_STATUS_CLI, "Status Client" }, - { RADCMD_RESERVED, "Reserved" }, - { 0, NULL} -}; - -/********************************/ -/* Begin Radius Attribute types */ -/********************************/ -#define SERV_TYPE 6 -#define FRM_IPADDR 8 -#define LOG_IPHOST 14 -#define LOG_SERVICE 15 -#define FRM_IPX 23 -#define SESSION_TIMEOUT 27 -#define IDLE_TIMEOUT 28 -#define FRM_ATALK_LINK 37 -#define FRM_ATALK_NETWORK 38 - -#define ACCT_DELAY 41 -#define ACCT_SESSION_TIME 46 - -#define TUNNEL_TYPE 64 -#define TUNNEL_MEDIUM 65 -#define TUNNEL_CLIENT_END 66 -#define TUNNEL_SERVER_END 67 -#define TUNNEL_PASS 69 - -#define ARAP_PASS 70 -#define ARAP_FEATURES 71 - -#define TUNNEL_PRIV_GROUP 81 -#define TUNNEL_ASSIGN_ID 82 -#define TUNNEL_PREFERENCE 83 - -#define ARAP_CHALLENGE_RESP 84 -#define ACCT_INT_INTERVAL 85 - -#define TUNNEL_CLIENT_AUTH 90 -#define TUNNEL_SERVER_AUTH 91 -/********************************/ -/* End Radius Attribute types */ -/********************************/ - - -static void print_attr_string(register u_char *, u_int, u_short ); -static void print_attr_num(register u_char *, u_int, u_short ); -static void print_vendor_attr(register u_char *, u_int, u_short ); -static void print_attr_address(register u_char *, u_int, u_short); -static void print_attr_time(register u_char *, u_int, u_short); -static void print_attr_strange(register u_char *, u_int, u_short); - - -struct radius_hdr { u_int8_t code; /* Radius packet code */ - u_int8_t id; /* Radius packet id */ - u_int16_t len; /* Radius total length */ - u_int8_t auth[16]; /* Authenticator */ - }; - -#define MIN_RADIUS_LEN 20 - -struct radius_attr { u_int8_t type; /* Attribute type */ - u_int8_t len; /* Attribute length */ - }; - - -/* Service-Type Attribute standard values */ -static const char *serv_type[]={ NULL, - "Login", - "Framed", - "Callback Login", - "Callback Framed", - "Outbound", - "Administrative", - "NAS Prompt", - "Authenticate Only", - "Callback NAS Prompt", - "Call Check", - "Callback Administrative", - }; - -/* Framed-Protocol Attribute standard values */ -static const char *frm_proto[]={ NULL, - "PPP", - "SLIP", - "ARAP", - "Gandalf proprietary", - "Xylogics IPX/SLIP", - "X.75 Synchronous", - }; - -/* Framed-Routing Attribute standard values */ -static const char *frm_routing[]={ "None", - "Send", - "Listen", - "Send&Listen", - }; - -/* Framed-Compression Attribute standard values */ -static const char *frm_comp[]={ "None", - "VJ TCP/IP", - "IPX", - "Stac-LZS", - }; - -/* Login-Service Attribute standard values */ -static const char *login_serv[]={ "Telnet", - "Rlogin", - "TCP Clear", - "PortMaster(proprietary)", - "LAT", - "X.25-PAD", - "X.25-T3POS", - "Unassigned", - "TCP Clear Quiet", - }; - - -/* Termination-Action Attribute standard values */ -static const char *term_action[]={ "Default", - "RADIUS-Request", - }; - -/* NAS-Port-Type Attribute standard values */ -static const char *nas_port_type[]={ "Async", - "Sync", - "ISDN Sync", - "ISDN Async V.120", - "ISDN Async V.110", - "Virtual", - "PIAFS", - "HDLC Clear Channel", - "X.25", - "X.75", - "G.3 Fax", - "SDSL", - "ADSL-CAP", - "ADSL-DMT", - "ISDN-DSL", - "Ethernet", - "xDSL", - "Cable", - "Wireless - Other", - "Wireless - IEEE 802.11", - }; - -/* Acct-Status-Type Accounting Attribute standard values */ -static const char *acct_status[]={ NULL, - "Start", - "Stop", - "Interim-Update", - "Unassigned", - "Unassigned", - "Unassigned", - "Accounting-On", - "Accounting-Off", - "Tunnel-Start", - "Tunnel-Stop", - "Tunnel-Reject", - "Tunnel-Link-Start", - "Tunnel-Link-Stop", - "Tunnel-Link-Reject", - "Failed", - }; - -/* Acct-Authentic Accounting Attribute standard values */ -static const char *acct_auth[]={ NULL, - "RADIUS", - "Local", - "Remote", - }; - -/* Acct-Terminate-Cause Accounting Attribute standard values */ -static const char *acct_term[]={ NULL, - "User Request", - "Lost Carrier", - "Lost Service", - "Idle Timeout", - "Session Timeout", - "Admin Reset", - "Admin Reboot", - "Port Error", - "NAS Error", - "NAS Request", - "NAS Reboot", - "Port Unneeded", - "Port Preempted", - "Port Suspended", - "Service Unavailable", - "Callback", - "User Error", - "Host Request", - }; - -/* Tunnel-Type Attribute standard values */ -static const char *tunnel_type[]={ NULL, - "PPTP", - "L2F", - "L2TP", - "ATMP", - "VTP", - "AH", - "IP-IP", - "MIN-IP-IP", - "ESP", - "GRE", - "DVS", - "IP-in-IP Tunneling", - }; - -/* Tunnel-Medium-Type Attribute standard values */ -static const char *tunnel_medium[]={ NULL, - "IPv4", - "IPv6", - "NSAP", - "HDLC", - "BBN 1822", - "802", - "E.163", - "E.164", - "F.69", - "X.121", - "IPX", - "Appletalk", - "Decnet IV", - "Banyan Vines", - "E.164 with NSAP subaddress", - }; - -/* ARAP-Zone-Access Attribute standard values */ -static const char *arap_zone[]={ NULL, - "Only access to dfl zone", - "Use zone filter inc.", - "Not used", - "Use zone filter exc.", - }; - -static const char *prompt[]={ "No Echo", - "Echo", - }; - - -struct attrtype { const char *name; /* Attribute name */ - const char **subtypes; /* Standard Values (if any) */ - u_char siz_subtypes; /* Size of total standard values */ - u_char first_subtype; /* First standard value is 0 or 1 */ - void (*print_func)(register u_char *, u_int, u_short ); - } attr_type[]= - { - { NULL, NULL, 0, 0, NULL }, - { "Username", NULL, 0, 0, print_attr_string }, - { "Password", NULL, 0, 0, NULL }, - { "CHAP Password", NULL, 0, 0, NULL }, - { "NAS IP Address", NULL, 0, 0, print_attr_address }, - { "NAS Port", NULL, 0, 0, print_attr_num }, - { "Service Type", serv_type, TAM_SIZE(serv_type)-1, 1, print_attr_num }, - { "Framed Protocol", frm_proto, TAM_SIZE(frm_proto)-1, 1, print_attr_num }, - { "Framed IP Address", NULL, 0, 0, print_attr_address }, - { "Framed IP Network", NULL, 0, 0, print_attr_address }, - { "Framed Routing", frm_routing, TAM_SIZE(frm_routing), 0, print_attr_num }, - { "Filter ID", NULL, 0, 0, print_attr_string }, - { "Framed MTU", NULL, 0, 0, print_attr_num }, - { "Framed Compression", frm_comp, TAM_SIZE(frm_comp), 0, print_attr_num }, - { "Login IP Host", NULL, 0, 0, print_attr_address }, - { "Login Service", login_serv, TAM_SIZE(login_serv), 0, print_attr_num }, - { "Login TCP Port", NULL, 0, 0, print_attr_num }, - { "Unassigned", NULL, 0, 0, NULL }, /*17*/ - { "Reply", NULL, 0, 0, print_attr_string }, - { "Callback-number", NULL, 0, 0, print_attr_string }, - { "Callback-ID", NULL, 0, 0, print_attr_string }, - { "Unassigned", NULL, 0, 0, NULL }, /*21*/ - { "Framed Route", NULL, 0, 0, print_attr_string }, - { "Framed IPX Network", NULL, 0, 0, print_attr_num }, - { "State", NULL, 0, 0, print_attr_string }, - { "Class", NULL, 0, 0, print_attr_string }, - { "Vendor Specific", NULL, 0, 0, print_vendor_attr }, - { "Session Timeout", NULL, 0, 0, print_attr_num }, - { "Idle Timeout", NULL, 0, 0, print_attr_num }, - { "Termination Action", term_action, TAM_SIZE(term_action), 0, print_attr_num }, - { "Called Station", NULL, 0, 0, print_attr_string }, - { "Calling Station", NULL, 0, 0, print_attr_string }, - { "NAS ID", NULL, 0, 0, print_attr_string }, - { "Proxy State", NULL, 0, 0, print_attr_string }, - { "Login LAT Service", NULL, 0, 0, print_attr_string }, - { "Login LAT Node", NULL, 0, 0, print_attr_string }, - { "Login LAT Group", NULL, 0, 0, print_attr_string }, - { "Framed Appletalk Link", NULL, 0, 0, print_attr_num }, - { "Framed Appltalk Net", NULL, 0, 0, print_attr_num }, - { "Framed Appletalk Zone", NULL, 0, 0, print_attr_string }, - { "Accounting Status", acct_status, TAM_SIZE(acct_status)-1, 1, print_attr_num }, - { "Accounting Delay", NULL, 0, 0, print_attr_num }, - { "Accounting Input Octets", NULL, 0, 0, print_attr_num }, - { "Accounting Output Octets", NULL, 0, 0, print_attr_num }, - { "Accounting Session ID", NULL, 0, 0, print_attr_string }, - { "Accounting Authentication", acct_auth, TAM_SIZE(acct_auth)-1, 1, print_attr_num }, - { "Accounting Session Time", NULL, 0, 0, print_attr_num }, - { "Accounting Input Packets", NULL, 0, 0, print_attr_num }, - { "Accounting Output Packets", NULL, 0, 0, print_attr_num }, - { "Accounting Termination Cause", acct_term, TAM_SIZE(acct_term)-1, 1, print_attr_num }, - { "Accounting Multilink Session ID", NULL, 0, 0, print_attr_string }, - { "Accounting Link Count", NULL, 0, 0, print_attr_num }, - { "Accounting Input Giga", NULL, 0, 0, print_attr_num }, - { "Accounting Output Giga", NULL, 0, 0, print_attr_num }, - { "Unassigned", NULL, 0, 0, NULL }, /*54*/ - { "Event Timestamp", NULL, 0, 0, print_attr_time }, - { "Unassigned", NULL, 0, 0, NULL }, /*56*/ - { "Unassigned", NULL, 0, 0, NULL }, /*57*/ - { "Unassigned", NULL, 0, 0, NULL }, /*58*/ - { "Unassigned", NULL, 0, 0, NULL }, /*59*/ - { "CHAP challenge", NULL, 0, 0, print_attr_string }, - { "NAS Port Type", nas_port_type, TAM_SIZE(nas_port_type), 0, print_attr_num }, - { "Port Limit", NULL, 0, 0, print_attr_num }, - { "Login LAT Port", NULL, 0, 0, print_attr_string }, /*63*/ - { "Tunnel Type", tunnel_type, TAM_SIZE(tunnel_type)-1, 1, print_attr_num }, - { "Tunnel Medium", tunnel_medium, TAM_SIZE(tunnel_medium)-1, 1, print_attr_num }, - { "Tunnel Client End", NULL, 0, 0, print_attr_string }, - { "Tunnel Server End", NULL, 0, 0, print_attr_string }, - { "Accounting Tunnel connect", NULL, 0, 0, print_attr_string }, - { "Tunnel Password", NULL, 0, 0, print_attr_string }, - { "ARAP Password", NULL, 0, 0, print_attr_strange }, - { "ARAP Feature", NULL, 0, 0, print_attr_strange }, - { "ARAP Zone Acces", arap_zone, TAM_SIZE(arap_zone)-1, 1, print_attr_num }, /*72*/ - { "ARAP Security", NULL, 0, 0, print_attr_string }, - { "ARAP Security Data", NULL, 0, 0, print_attr_string }, - { "Password Retry", NULL, 0, 0, print_attr_num }, - { "Prompt", prompt, TAM_SIZE(prompt), 0, print_attr_num }, - { "Connect Info", NULL, 0, 0, print_attr_string }, - { "Config Token", NULL, 0, 0, print_attr_string }, - { "EAP Message", NULL, 0, 0, print_attr_string }, - { "Message Authentication", NULL, 0, 0, print_attr_string }, /*80*/ - { "Tunnel Private Group", NULL, 0, 0, print_attr_string }, - { "Tunnel Assigned ID", NULL, 0, 0, print_attr_string }, - { "Tunnel Preference", NULL, 0, 0, print_attr_num }, - { "ARAP Challenge Response", NULL, 0, 0, print_attr_strange }, - { "Accounting Interim Interval", NULL, 0, 0, print_attr_num }, - { "Accounting Tunnel packets lost", NULL, 0, 0, print_attr_num }, /*86*/ - { "NAS Port ID", NULL, 0, 0, print_attr_string }, - { "Framed Pool", NULL, 0, 0, print_attr_string }, - { "Unassigned", NULL, 0, 0, NULL }, - { "Tunnel Client Authentication ID", NULL, 0, 0, print_attr_string }, - { "Tunnel Server Authentication ID", NULL, 0, 0, print_attr_string }, - { "Unassigned", NULL, 0, 0, NULL }, /*92*/ - { "Unassigned", NULL, 0, 0, NULL } /*93*/ - }; - - -/*****************************/ -/* Print an attribute string */ -/* value pointed by 'data' */ -/* and 'length' size. */ -/*****************************/ -/* Returns nothing. */ -/*****************************/ -static void -print_attr_string(register u_char *data, u_int length, u_short attr_code ) -{ - register u_int i; - - TCHECK2(data[0],length); - - switch(attr_code) - { - case TUNNEL_PASS: - if (length < 3) - { - printf(" [|radius]"); - return; - } - if (*data && (*data <=0x1F) ) - printf("Tag %u, ",*data); - data++; - length--; - printf("Salt %u ",EXTRACT_16BITS(data) ); - data+=2; - length-=2; - break; - case TUNNEL_CLIENT_END: - case TUNNEL_SERVER_END: - case TUNNEL_PRIV_GROUP: - case TUNNEL_ASSIGN_ID: - case TUNNEL_CLIENT_AUTH: - case TUNNEL_SERVER_AUTH: - if (*data <= 0x1F) - { - if (length < 1) - { - printf(" [|radius]"); - return; - } - printf("Tag %u",*data); - data++; - length--; - } - break; - } - - for (i=0; *data && i < length ; i++, data++) - printf("%c",(*data < 32 || *data > 128) ? '.' : *data ); - - return; - - trunc: - printf(" [|radius]"); -} - -/* - * print vendor specific attributes - */ - -static void -print_vendor_attr(register u_char *data, u_int length, u_short attr_code _U_) -{ - u_int idx; - u_int vendor_id; - u_int vendor_type; - u_int vendor_length; - - if (length < 4) - goto trunc; - TCHECK2(*data, 4); - vendor_id = EXTRACT_32BITS(data); - data+=4; - length-=4; - - printf("Vendor: %s (%u)", - tok2str(smi_values,"Unknown",vendor_id), - vendor_id); - - while (length >= 2) { - TCHECK2(*data, 2); - - vendor_type = *(data); - vendor_length = *(data+1); - - if (vendor_length < 2) - { - printf("\n\t Vendor Attribute: %u, Length: %u (bogus, must be >= 2)", - vendor_type, - vendor_length); - return; - } - if (vendor_length > length) - { - printf("\n\t Vendor Attribute: %u, Length: %u (bogus, goes past end of vendor-specific attribute)", - vendor_type, - vendor_length); - return; - } - data+=2; - vendor_length-=2; - length-=2; - TCHECK2(*data, vendor_length); - - printf("\n\t Vendor Attribute: %u, Length: %u, Value: ", - vendor_type, - vendor_length); - for (idx = 0; idx < vendor_length ; idx++, data++) - printf("%c",(*data < 32 || *data > 128) ? '.' : *data ); - length-=vendor_length; - } - return; - - trunc: - printf(" [|radius]"); -} - - - -/******************************/ -/* Print an attribute numeric */ -/* value pointed by 'data' */ -/* and 'length' size. */ -/******************************/ -/* Returns nothing. */ -/******************************/ -static void -print_attr_num(register u_char *data, u_int length, u_short attr_code ) -{ - u_int8_t tag; - u_int32_t timeout; - - if (length != 4) - { - printf("ERROR: length %u != 4", length); - return; - } - - TCHECK2(data[0],4); - /* This attribute has standard values */ - if (attr_type[attr_code].siz_subtypes) - { - static const char **table; - u_int32_t data_value; - table = attr_type[attr_code].subtypes; - - if ( (attr_code == TUNNEL_TYPE) || (attr_code == TUNNEL_MEDIUM) ) - { - if (!*data) - printf("Tag[Unused]"); - else - printf("Tag[%d]", *data); - data++; - data_value = EXTRACT_24BITS(data); - } - else - { - data_value = EXTRACT_32BITS(data); - } - if ( data_value <= (u_int32_t)(attr_type[attr_code].siz_subtypes - 1 + - attr_type[attr_code].first_subtype) && - data_value >= attr_type[attr_code].first_subtype ) - printf("%s",table[data_value]); - else - printf("#%u",data_value); - } - else - { - switch(attr_code) /* Be aware of special cases... */ - { - case FRM_IPX: - if (EXTRACT_32BITS( data) == 0xFFFFFFFE ) - printf("NAS Select"); - else - printf("%d",EXTRACT_32BITS( data) ); - break; - - case SESSION_TIMEOUT: - case IDLE_TIMEOUT: - case ACCT_DELAY: - case ACCT_SESSION_TIME: - case ACCT_INT_INTERVAL: - timeout = EXTRACT_32BITS( data); - if ( timeout < 60 ) - printf( "%02d secs", timeout); - else - { - if ( timeout < 3600 ) - printf( "%02d:%02d min", - timeout / 60, timeout % 60); - else - printf( "%02d:%02d:%02d hours", - timeout / 3600, (timeout % 3600) / 60, - timeout % 60); - } - break; - - case FRM_ATALK_LINK: - if (EXTRACT_32BITS(data) ) - printf("%d",EXTRACT_32BITS(data) ); - else - printf("Unnumbered" ); - break; - - case FRM_ATALK_NETWORK: - if (EXTRACT_32BITS(data) ) - printf("%d",EXTRACT_32BITS(data) ); - else - printf("NAS assigned" ); - break; - - case TUNNEL_PREFERENCE: - tag = *data; - data++; - if (tag == 0) - printf("Tag (Unused) %d",EXTRACT_24BITS(data) ); - else - printf("Tag (%d) %d", tag, EXTRACT_24BITS(data) ); - break; - - default: - printf("%d",EXTRACT_32BITS( data) ); - break; - - } /* switch */ - - } /* if-else */ - - return; - - trunc: - printf(" [|radius]"); -} - - -/*****************************/ -/* Print an attribute IPv4 */ -/* address value pointed by */ -/* 'data' and 'length' size. */ -/*****************************/ -/* Returns nothing. */ -/*****************************/ -static void -print_attr_address(register u_char *data, u_int length, u_short attr_code ) -{ - if (length != 4) - { - printf("ERROR: length %u != 4", length); - return; - } - - TCHECK2(data[0],4); - - switch(attr_code) - { - case FRM_IPADDR: - case LOG_IPHOST: - if (EXTRACT_32BITS(data) == 0xFFFFFFFF ) - printf("User Selected"); - else - if (EXTRACT_32BITS(data) == 0xFFFFFFFE ) - printf("NAS Select"); - else - printf("%s",ipaddr_string(data)); - break; - - default: - printf("%s",ipaddr_string(data) ); - break; - } - - return; - - trunc: - printf(" [|radius]"); -} - - -/*************************************/ -/* Print an attribute of 'secs since */ -/* January 1, 1970 00:00 UTC' value */ -/* pointed by 'data' and 'length' */ -/* size. */ -/*************************************/ -/* Returns nothing. */ -/*************************************/ -static void print_attr_time(register u_char *data, u_int length, u_short attr_code _U_) -{ - time_t attr_time; - char string[26]; - - if (length != 4) - { - printf("ERROR: length %u != 4", length); - return; - } - - TCHECK2(data[0],4); - - attr_time = EXTRACT_32BITS(data); - strlcpy(string, ctime(&attr_time), sizeof(string)); - /* Get rid of the newline */ - string[24] = '\0'; - printf("%.24s", string); - return; - - trunc: - printf(" [|radius]"); -} - - -/***********************************/ -/* Print an attribute of 'strange' */ -/* data format pointed by 'data' */ -/* and 'length' size. */ -/***********************************/ -/* Returns nothing. */ -/***********************************/ -static void print_attr_strange(register u_char *data, u_int length, u_short attr_code) -{ - u_short len_data; - - switch(attr_code) - { - case ARAP_PASS: - if (length != 16) - { - printf("ERROR: length %u != 16", length); - return; - } - printf("User_challenge ("); - TCHECK2(data[0],8); - len_data = 8; - PRINT_HEX(len_data, data); - printf(") User_resp("); - TCHECK2(data[0],8); - len_data = 8; - PRINT_HEX(len_data, data); - printf(")"); - break; - - case ARAP_FEATURES: - if (length != 14) - { - printf("ERROR: length %u != 14", length); - return; - } - TCHECK2(data[0],1); - if (*data) - printf("User can change password"); - else - printf("User cannot change password"); - data++; - TCHECK2(data[0],1); - printf(", Min password length: %d",*data); - data++; - printf(", created at: "); - TCHECK2(data[0],4); - len_data = 4; - PRINT_HEX(len_data, data); - printf(", expires in: "); - TCHECK2(data[0],4); - len_data = 4; - PRINT_HEX(len_data, data); - printf(", Current Time: "); - TCHECK2(data[0],4); - len_data = 4; - PRINT_HEX(len_data, data); - break; - - case ARAP_CHALLENGE_RESP: - if (length < 8) - { - printf("ERROR: length %u != 8", length); - return; - } - TCHECK2(data[0],8); - len_data = 8; - PRINT_HEX(len_data, data); - break; - } - return; - - trunc: - printf(" [|radius]"); -} - - - -static void -radius_attrs_print(register const u_char *attr, u_int length) -{ - register const struct radius_attr *rad_attr = (struct radius_attr *)attr; - const char *attr_string; - - while (length > 0) - { - 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), length: %u (bogus, must be >= 2)", - attr_string, - rad_attr->type, - rad_attr->len); - return; - } - if (rad_attr->len > length) - { - printf("\n\t %s Attribute (%u), length: %u (bogus, goes past end of packet)", - attr_string, - rad_attr->type, - rad_attr->len); - return; - } - printf("\n\t %s Attribute (%u), length: %u, Value: ", - attr_string, - rad_attr->type, - rad_attr->len); - - if (rad_attr->type < 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 ? */ - if (vflag> 1) - print_unknown_data((u_char *)rad_attr+2,"\n\t ",(rad_attr->len)-2); - - length-=(rad_attr->len); - rad_attr = (struct radius_attr *)( ((char *)(rad_attr))+rad_attr->len); - } - return; - -trunc: - printf(" [|radius]"); -} - - -void -radius_print(const u_char *dat, u_int length) -{ - register const struct radius_hdr *rad; - u_int len, auth_idx; - - TCHECK2(*dat, MIN_RADIUS_LEN); - rad = (struct radius_hdr *)dat; - len = EXTRACT_16BITS(&rad->len); - - if (len < MIN_RADIUS_LEN) - { - printf(" [|radius]"); - return; - } - - if (len > length) - len = length; - - if (vflag < 1) { - printf("RADIUS, %s (%u), id: 0x%02x length: %u", - tok2str(radius_command_values,"Unknown Command",rad->code), - rad->code, - rad->id, - len); - return; - } - else { - printf("RADIUS, length: %u\n\t%s (%u), id: 0x%02x, Authenticator: ", - len, - tok2str(radius_command_values,"Unknown Command",rad->code), - rad->code, - rad->id); - - for(auth_idx=0; auth_idx < 16; auth_idx++) - printf("%02x", rad->auth[auth_idx] ); - } - - if (len > MIN_RADIUS_LEN) - radius_attrs_print( dat + MIN_RADIUS_LEN, len - MIN_RADIUS_LEN); - return; - -trunc: - printf(" [|radius]"); -} diff --git a/contrib/tcpdump/print-raw.c b/contrib/tcpdump/print-raw.c deleted file mode 100644 index 0fe6dd1947b36..0000000000000 --- a/contrib/tcpdump/print-raw.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-raw.c,v 1.41 2003/11/16 09:36:34 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <pcap.h> -#include <stdio.h> -#include <string.h> - -#include "addrtoname.h" -#include "interface.h" - -/* - * The DLT_RAW packet has no header. It contains a raw IP packet. - */ - -u_int -raw_if_print(const struct pcap_pkthdr *h, const u_char *p) -{ - if (eflag) - printf("ip: "); - - ipN_print(p, h->len); - - return (0); -} diff --git a/contrib/tcpdump/print-rip.c b/contrib/tcpdump/print-rip.c deleted file mode 100644 index 772a2e056c7e5..0000000000000 --- a/contrib/tcpdump/print-rip.c +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Copyright (c) 1989, 1990, 1991, 1993, 1994, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-rip.c,v 1.57 2003/11/16 09:36:34 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" /* must come after interface.h */ - -struct rip { - u_int8_t rip_cmd; /* request/response */ - u_int8_t rip_vers; /* protocol version # */ - u_int8_t unused[2]; /* unused */ -}; - -#define RIPCMD_REQUEST 1 /* want info */ -#define RIPCMD_RESPONSE 2 /* responding to request */ -#define RIPCMD_TRACEON 3 /* turn tracing on */ -#define RIPCMD_TRACEOFF 4 /* turn it off */ -#define RIPCMD_POLL 5 /* want info from everybody */ -#define RIPCMD_POLLENTRY 6 /* poll for entry */ - -static const struct tok rip_cmd_values[] = { - { RIPCMD_REQUEST, "Request" }, - { RIPCMD_RESPONSE, "Response" }, - { RIPCMD_TRACEON, "Trace on" }, - { RIPCMD_TRACEOFF, "Trace off" }, - { RIPCMD_POLL, "Poll" }, - { RIPCMD_POLLENTRY, "Poll Entry" }, - { 0, NULL} -}; - -#define RIP_AUTHLEN 16 -#define RIP_ROUTELEN 20 - -/* - * rfc 1723 - * - * 0 1 2 3 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Command (1) | Version (1) | unused | - * +---------------+---------------+-------------------------------+ - * | Address Family Identifier (2) | Route Tag (2) | - * +-------------------------------+-------------------------------+ - * | IP Address (4) | - * +---------------------------------------------------------------+ - * | Subnet Mask (4) | - * +---------------------------------------------------------------+ - * | Next Hop (4) | - * +---------------------------------------------------------------+ - * | Metric (4) | - * +---------------------------------------------------------------+ - * - */ - -struct rip_netinfo { - u_int16_t rip_family; - u_int16_t rip_tag; - u_int32_t rip_dest; - u_int32_t rip_dest_mask; - u_int32_t rip_router; - u_int32_t rip_metric; /* cost of route */ -}; - -static void -rip_entry_print_v1(register const struct rip_netinfo *ni) -{ - register u_short family; - - /* RFC 1058 */ - family = EXTRACT_16BITS(&ni->rip_family); - if (family != AF_INET) { - printf("\n\t AFI: %u:", family); - print_unknown_data((u_int8_t *)&ni->rip_family,"\n\t ",RIP_ROUTELEN); - return; - } - if (EXTRACT_16BITS(&ni->rip_tag) || - EXTRACT_32BITS(&ni->rip_dest_mask) || - EXTRACT_32BITS(&ni->rip_router)) { - /* MBZ fields not zero */ - print_unknown_data((u_int8_t *)&ni->rip_family,"\n\t ",RIP_ROUTELEN); - return; - } /* AF_INET */ - printf("\n\t %s, metric: %u", - ipaddr_string(&ni->rip_dest), - EXTRACT_32BITS(&ni->rip_metric)); -} - -static void -rip_entry_print_v2(register const struct rip_netinfo *ni) -{ - register u_char *p; - register u_short family; - u_char buf[RIP_AUTHLEN]; - - family = EXTRACT_16BITS(&ni->rip_family); - if (family == 0xFFFF) { /* 16 bytes authentication ? */ - if (EXTRACT_16BITS(&ni->rip_tag) == 2) { /* simple text authentication ? */ - memcpy(buf, &ni->rip_dest, sizeof(buf)); - buf[sizeof(buf)-1] = '\0'; - for (p = buf; *p; p++) { - if (!isprint(*p)) - break; - } - printf("\n\t Simple Text Authentication data: %s", buf); - } else { - printf("\n\t Unknown (%u) Authentication data:", - EXTRACT_16BITS(&ni->rip_tag)); - print_unknown_data((u_int8_t *)&ni->rip_dest,"\n\t ",RIP_AUTHLEN); - } - } else if (family != AF_INET) { - printf("\n\t AFI: %u", family); - print_unknown_data((u_int8_t *)&ni->rip_tag,"\n\t ",RIP_ROUTELEN-2); - return; - } else { /* AF_INET */ - printf("\n\t AFI: IPv4: %15s/%-2d, tag 0x%04x, metric: %u, next-hop: ", - ipaddr_string(&ni->rip_dest), - mask2plen(EXTRACT_32BITS(&ni->rip_dest_mask)), - EXTRACT_16BITS(&ni->rip_tag), - EXTRACT_32BITS(&ni->rip_metric)); - if (EXTRACT_32BITS(&ni->rip_router)) - printf("%s", ipaddr_string(&ni->rip_router)); - else - printf("self"); - } -} - -void -rip_print(const u_char *dat, u_int length) -{ - register const struct rip *rp; - register const struct rip_netinfo *ni; - register u_int i, j; - register int trunc; - - if (snapend < dat) { - printf(" [|rip]"); - return; - } - i = snapend - dat; - if (i > length) - i = length; - if (i < sizeof(*rp)) { - printf(" [|rip]"); - return; - } - i -= sizeof(*rp); - - rp = (struct rip *)dat; - - printf("%sRIPv%u", - (vflag >= 1) ? "\n\t" : "", - rp->rip_vers); - - switch (rp->rip_vers) { - case 0: - /* - * RFC 1058. - * - * XXX - RFC 1058 says - * - * 0 Datagrams whose version number is zero are to be ignored. - * These are from a previous version of the protocol, whose - * packet format was machine-specific. - * - * so perhaps we should just dump the packet, in hex. - */ - print_unknown_data((u_int8_t *)&rp->rip_cmd,"\n\t",length); - break; - default: - /* dump version and lets see if we know the commands name*/ - printf(", %s, length: %u", - tok2str(rip_cmd_values, - "unknown command (%u)", - rp->rip_cmd), - length); - - if (vflag < 1) - return; - - switch (rp->rip_cmd) { - case RIPCMD_RESPONSE: - j = length / sizeof(*ni); - printf(", routes: %u",j); - trunc = (i / sizeof(*ni)) != j; - ni = (struct rip_netinfo *)(rp + 1); - for (; i >= sizeof(*ni); ++ni) { - if (rp->rip_vers == 1) - rip_entry_print_v1(ni); - else if (rp->rip_vers == 2) - rip_entry_print_v2(ni); - else - break; - i -= sizeof(*ni); - } - if (trunc) - printf("[|rip]"); - break; - - case RIPCMD_REQUEST: - case RIPCMD_TRACEOFF: - case RIPCMD_POLL: - case RIPCMD_POLLENTRY: - break; - - case RIPCMD_TRACEON: - /* fall through */ - default: - if (vflag <= 1) { - if(!print_unknown_data((u_int8_t *)rp,"\n\t",length)) - return; - } - break; - } - /* do we want to see an additionally hexdump ? */ - if (vflag> 1) { - if(!print_unknown_data((u_int8_t *)rp,"\n\t",length)) - return; - } - } -} - - diff --git a/contrib/tcpdump/print-ripng.c b/contrib/tcpdump/print-ripng.c deleted file mode 100644 index 5e7a02ecc413a..0000000000000 --- a/contrib/tcpdump/print-ripng.c +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (c) 1989, 1990, 1991, 1993, 1994 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-ripng.c,v 1.18 2005/01/04 00:15:54 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifdef INET6 - -#include <tcpdump-stdinc.h> -#include <stdio.h> - -#include "route6d.h" -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -#if !defined(IN6_IS_ADDR_UNSPECIFIED) && !defined(_MSC_VER) /* MSVC inline */ -static int IN6_IS_ADDR_UNSPECIFIED(const struct in6_addr *addr) -{ - static const struct in6_addr in6addr_any; /* :: */ - return (memcmp(addr, &in6addr_any, sizeof(*addr)) == 0); -} -#endif - -static int -rip6_entry_print(register const struct netinfo6 *ni, int metric) -{ - int l; - l = printf("%s/%d", ip6addr_string(&ni->rip6_dest), ni->rip6_plen); - if (ni->rip6_tag) - l += printf(" [%d]", EXTRACT_16BITS(&ni->rip6_tag)); - if (metric) - l += printf(" (%d)", ni->rip6_metric); - return l; -} - -void -ripng_print(const u_char *dat, unsigned int length) -{ - register const struct rip6 *rp = (struct rip6 *)dat; - register const struct netinfo6 *ni; - register u_int amt; - register u_int i; - int j; - int trunc; - - if (snapend < dat) - return; - amt = snapend - dat; - i = min(length, amt); - if (i < (sizeof(struct rip6) - sizeof(struct netinfo6))) - return; - i -= (sizeof(struct rip6) - sizeof(struct netinfo6)); - - switch (rp->rip6_cmd) { - - case RIP6_REQUEST: - j = length / sizeof(*ni); - if (j == 1 - && rp->rip6_nets->rip6_metric == HOPCNT_INFINITY6 - && IN6_IS_ADDR_UNSPECIFIED(&rp->rip6_nets->rip6_dest)) { - printf(" ripng-req dump"); - break; - } - if (j * sizeof(*ni) != length - 4) - printf(" ripng-req %d[%u]:", j, length); - else - printf(" ripng-req %d:", j); - trunc = ((i / sizeof(*ni)) * sizeof(*ni) != i); - for (ni = rp->rip6_nets; i >= sizeof(*ni); - i -= sizeof(*ni), ++ni) { - if (vflag > 1) - printf("\n\t"); - else - printf(" "); - rip6_entry_print(ni, 0); - } - break; - case RIP6_RESPONSE: - j = length / sizeof(*ni); - if (j * sizeof(*ni) != length - 4) - printf(" ripng-resp %d[%u]:", j, length); - else - printf(" ripng-resp %d:", j); - trunc = ((i / sizeof(*ni)) * sizeof(*ni) != i); - for (ni = rp->rip6_nets; i >= sizeof(*ni); - i -= sizeof(*ni), ++ni) { - if (vflag > 1) - printf("\n\t"); - else - printf(" "); - rip6_entry_print(ni, ni->rip6_metric); - } - if (trunc) - printf("[|ripng]"); - break; - default: - printf(" ripng-%d ?? %u", rp->rip6_cmd, length); - break; - } - if (rp->rip6_vers != RIP6_VERSION) - printf(" [vers %d]", rp->rip6_vers); -} -#endif /* INET6 */ diff --git a/contrib/tcpdump/print-rsvp.c b/contrib/tcpdump/print-rsvp.c deleted file mode 100644 index 94ac6f0fbe1f9..0000000000000 --- a/contrib/tcpdump/print-rsvp.c +++ /dev/null @@ -1,1569 +0,0 @@ -/* - * 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. - * - * Original code by Hannes Gredler (hannes@juniper.net) - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-rsvp.c,v 1.33.2.8 2005/09/22 14:52:40 hannes Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#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 "ethertype.h" -#include "gmpls.h" - -/* - * RFC 2205 common header - * - * 0 1 2 3 - * +-------------+-------------+-------------+-------------+ - * | Vers | Flags| Msg Type | RSVP Checksum | - * +-------------+-------------+-------------+-------------+ - * | Send_TTL | (Reserved) | RSVP Length | - * +-------------+-------------+-------------+-------------+ - * - */ - -struct rsvp_common_header { - u_int8_t version_flags; - u_int8_t msg_type; - u_int8_t checksum[2]; - u_int8_t ttl; - u_int8_t reserved; - u_int8_t length[2]; -}; - -/* - * RFC2205 object header - * - * - * 0 1 2 3 - * +-------------+-------------+-------------+-------------+ - * | Length (bytes) | Class-Num | C-Type | - * +-------------+-------------+-------------+-------------+ - * | | - * // (Object contents) // - * | | - * +-------------+-------------+-------------+-------------+ - */ - -struct rsvp_object_header { - u_int8_t length[2]; - u_int8_t class_num; - u_int8_t ctype; -}; - -#define RSVP_VERSION 1 -#define RSVP_EXTRACT_VERSION(x) (((x)&0xf0)>>4) -#define RSVP_EXTRACT_FLAGS(x) ((x)&0x0f) - -#define RSVP_MSGTYPE_PATH 1 -#define RSVP_MSGTYPE_RESV 2 -#define RSVP_MSGTYPE_PATHERR 3 -#define RSVP_MSGTYPE_RESVERR 4 -#define RSVP_MSGTYPE_PATHTEAR 5 -#define RSVP_MSGTYPE_RESVTEAR 6 -#define RSVP_MSGTYPE_RESVCONF 7 -#define RSVP_MSGTYPE_AGGREGATE 12 -#define RSVP_MSGTYPE_ACK 13 -#define RSVP_MSGTYPE_HELLO_OLD 14 /* ancient Hellos */ -#define RSVP_MSGTYPE_SREFRESH 15 -#define RSVP_MSGTYPE_HELLO 20 - -static const struct tok rsvp_msg_type_values[] = { - { RSVP_MSGTYPE_PATH, "Path" }, - { RSVP_MSGTYPE_RESV, "Resv" }, - { RSVP_MSGTYPE_PATHERR, "PathErr" }, - { RSVP_MSGTYPE_RESVERR, "ResvErr" }, - { RSVP_MSGTYPE_PATHTEAR, "PathTear" }, - { RSVP_MSGTYPE_RESVTEAR, "ResvTear" }, - { RSVP_MSGTYPE_RESVCONF, "ResvConf" }, - { RSVP_MSGTYPE_AGGREGATE, "Aggregate" }, - { RSVP_MSGTYPE_ACK, "Acknowledgement" }, - { RSVP_MSGTYPE_HELLO_OLD, "Hello (Old)" }, - { RSVP_MSGTYPE_SREFRESH, "Refresh" }, - { RSVP_MSGTYPE_HELLO, "Hello" }, - { 0, NULL} -}; - -static const struct tok rsvp_header_flag_values[] = { - { 0x01, "Refresh reduction capable" }, /* rfc2961 */ - { 0, NULL} -}; - -#define RSVP_OBJ_SESSION 1 /* rfc2205 */ -#define RSVP_OBJ_RSVP_HOP 3 /* rfc2205, rfc3473 */ -#define RSVP_OBJ_INTEGRITY 4 /* rfc2747 */ -#define RSVP_OBJ_TIME_VALUES 5 /* rfc2205 */ -#define RSVP_OBJ_ERROR_SPEC 6 -#define RSVP_OBJ_SCOPE 7 -#define RSVP_OBJ_STYLE 8 /* rfc2205 */ -#define RSVP_OBJ_FLOWSPEC 9 /* rfc2215 */ -#define RSVP_OBJ_FILTERSPEC 10 /* rfc2215 */ -#define RSVP_OBJ_SENDER_TEMPLATE 11 -#define RSVP_OBJ_SENDER_TSPEC 12 /* rfc2215 */ -#define RSVP_OBJ_ADSPEC 13 /* rfc2215 */ -#define RSVP_OBJ_POLICY_DATA 14 -#define RSVP_OBJ_CONFIRM 15 /* rfc2205 */ -#define RSVP_OBJ_LABEL 16 /* rfc3209 */ -#define RSVP_OBJ_LABEL_REQ 19 /* rfc3209 */ -#define RSVP_OBJ_ERO 20 /* rfc3209 */ -#define RSVP_OBJ_RRO 21 /* rfc3209 */ -#define RSVP_OBJ_HELLO 22 /* rfc3209 */ -#define RSVP_OBJ_MESSAGE_ID 23 -#define RSVP_OBJ_MESSAGE_ID_ACK 24 -#define RSVP_OBJ_MESSAGE_ID_LIST 25 -#define RSVP_OBJ_RECOVERY_LABEL 34 /* rfc3473 */ -#define RSVP_OBJ_UPSTREAM_LABEL 35 /* rfc3473 */ -#define RSVP_OBJ_LABEL_SET 36 /* rfc3473 */ -#define RSVP_OBJ_PROTECTION 37 /* rfc3473 */ -#define RSVP_OBJ_DETOUR 63 /* draft-ietf-mpls-rsvp-lsp-fastreroute-07 */ -#define RSVP_OBJ_CLASSTYPE 66 /* rfc4124 */ -#define RSVP_OBJ_CLASSTYPE_OLD 125 /* draft-ietf-tewg-diff-te-proto-07 */ -#define RSVP_OBJ_SUGGESTED_LABEL 129 /* rfc3473 */ -#define RSVP_OBJ_ACCEPT_LABEL_SET 130 /* rfc3473 */ -#define RSVP_OBJ_RESTART_CAPABILITY 131 /* rfc3473 */ -#define RSVP_OBJ_NOTIFY_REQ 195 /* rfc3473 */ -#define RSVP_OBJ_ADMIN_STATUS 196 /* rfc3473 */ -#define RSVP_OBJ_PROPERTIES 204 /* juniper proprietary */ -#define RSVP_OBJ_FASTREROUTE 205 /* draft-ietf-mpls-rsvp-lsp-fastreroute-07 */ -#define RSVP_OBJ_SESSION_ATTRIBUTE 207 /* rfc3209 */ -#define RSVP_OBJ_CALL_ID 230 /* rfc3474 */ -#define RSVP_OBJ_CALL_OPS 236 /* rfc3474 */ - -static const struct tok rsvp_obj_values[] = { - { RSVP_OBJ_SESSION, "Session" }, - { RSVP_OBJ_RSVP_HOP, "RSVP Hop" }, - { RSVP_OBJ_INTEGRITY, "Integrity" }, - { RSVP_OBJ_TIME_VALUES, "Time Values" }, - { RSVP_OBJ_ERROR_SPEC, "Error Spec" }, - { RSVP_OBJ_SCOPE, "Scope" }, - { RSVP_OBJ_STYLE, "Style" }, - { RSVP_OBJ_FLOWSPEC, "Flowspec" }, - { RSVP_OBJ_FILTERSPEC, "FilterSpec" }, - { RSVP_OBJ_SENDER_TEMPLATE, "Sender Template" }, - { RSVP_OBJ_SENDER_TSPEC, "Sender TSpec" }, - { RSVP_OBJ_ADSPEC, "Adspec" }, - { RSVP_OBJ_POLICY_DATA, "Policy Data" }, - { RSVP_OBJ_CONFIRM, "Confirm" }, - { RSVP_OBJ_LABEL, "Label" }, - { RSVP_OBJ_LABEL_REQ, "Label Request" }, - { RSVP_OBJ_ERO, "ERO" }, - { RSVP_OBJ_RRO, "RRO" }, - { RSVP_OBJ_HELLO, "Hello" }, - { RSVP_OBJ_MESSAGE_ID, "Message ID" }, - { RSVP_OBJ_MESSAGE_ID_ACK, "Message ID Ack" }, - { RSVP_OBJ_MESSAGE_ID_LIST, "Message ID List" }, - { RSVP_OBJ_RECOVERY_LABEL, "Recovery Label" }, - { RSVP_OBJ_UPSTREAM_LABEL, "Upstream Label" }, - { RSVP_OBJ_LABEL_SET, "Label Set" }, - { RSVP_OBJ_ACCEPT_LABEL_SET, "Acceptable Label Set" }, - { RSVP_OBJ_DETOUR, "Detour" }, - { RSVP_OBJ_CLASSTYPE, "Class Type" }, - { RSVP_OBJ_CLASSTYPE_OLD, "Class Type (old)" }, - { RSVP_OBJ_SUGGESTED_LABEL, "Suggested Label" }, - { RSVP_OBJ_PROPERTIES, "Properties" }, - { RSVP_OBJ_FASTREROUTE, "Fast Re-Route" }, - { RSVP_OBJ_SESSION_ATTRIBUTE, "Session Attribute" }, - { RSVP_OBJ_CALL_ID, "Call-ID" }, - { RSVP_OBJ_CALL_OPS, "Call Capability" }, - { RSVP_OBJ_RESTART_CAPABILITY, "Restart Capability" }, - { RSVP_OBJ_NOTIFY_REQ, "Notify Request" }, - { RSVP_OBJ_PROTECTION, "Protection" }, - { RSVP_OBJ_ADMIN_STATUS, "Administrative Status" }, - { 0, NULL} -}; - -#define RSVP_CTYPE_IPV4 1 -#define RSVP_CTYPE_IPV6 2 -#define RSVP_CTYPE_TUNNEL_IPV4 7 -#define RSVP_CTYPE_TUNNEL_IPV6 8 -#define RSVP_CTYPE_1 1 -#define RSVP_CTYPE_2 2 -#define RSVP_CTYPE_3 3 -#define RSVP_CTYPE_4 4 - -/* - * the ctypes are not globally unique so for - * translating it to strings we build a table based - * on objects offsetted by the ctype - */ - -static const struct tok rsvp_ctype_values[] = { - { 256*RSVP_OBJ_RSVP_HOP+RSVP_CTYPE_IPV4, "IPv4" }, - { 256*RSVP_OBJ_RSVP_HOP+RSVP_CTYPE_IPV6, "IPv6" }, - { 256*RSVP_OBJ_RSVP_HOP+RSVP_CTYPE_3, "IPv4 plus opt. TLVs" }, - { 256*RSVP_OBJ_RSVP_HOP+RSVP_CTYPE_4, "IPv6 plus opt. TLVs" }, - { 256*RSVP_OBJ_NOTIFY_REQ+RSVP_CTYPE_IPV4, "IPv4" }, - { 256*RSVP_OBJ_NOTIFY_REQ+RSVP_CTYPE_IPV6, "IPv6" }, - { 256*RSVP_OBJ_CONFIRM+RSVP_CTYPE_IPV4, "IPv4" }, - { 256*RSVP_OBJ_CONFIRM+RSVP_CTYPE_IPV6, "IPv6" }, - { 256*RSVP_OBJ_TIME_VALUES+RSVP_CTYPE_1, "1" }, - { 256*RSVP_OBJ_FLOWSPEC+RSVP_CTYPE_1, "obsolete" }, - { 256*RSVP_OBJ_FLOWSPEC+RSVP_CTYPE_2, "IntServ" }, - { 256*RSVP_OBJ_SENDER_TSPEC+RSVP_CTYPE_2, "IntServ" }, - { 256*RSVP_OBJ_ADSPEC+RSVP_CTYPE_2, "IntServ" }, - { 256*RSVP_OBJ_FILTERSPEC+RSVP_CTYPE_IPV4, "IPv4" }, - { 256*RSVP_OBJ_FILTERSPEC+RSVP_CTYPE_IPV6, "IPv6" }, - { 256*RSVP_OBJ_FILTERSPEC+RSVP_CTYPE_3, "IPv6 Flow-label" }, - { 256*RSVP_OBJ_FILTERSPEC+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, - { 256*RSVP_OBJ_SESSION+RSVP_CTYPE_IPV4, "IPv4" }, - { 256*RSVP_OBJ_SESSION+RSVP_CTYPE_IPV6, "IPv6" }, - { 256*RSVP_OBJ_SESSION+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, - { 256*RSVP_OBJ_SENDER_TEMPLATE+RSVP_CTYPE_IPV4, "IPv4" }, - { 256*RSVP_OBJ_SENDER_TEMPLATE+RSVP_CTYPE_IPV6, "IPv6" }, - { 256*RSVP_OBJ_SENDER_TEMPLATE+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, - { 256*RSVP_OBJ_MESSAGE_ID+RSVP_CTYPE_1, "1" }, - { 256*RSVP_OBJ_MESSAGE_ID_ACK+RSVP_CTYPE_1, "1" }, - { 256*RSVP_OBJ_MESSAGE_ID_LIST+RSVP_CTYPE_1, "1" }, - { 256*RSVP_OBJ_STYLE+RSVP_CTYPE_1, "1" }, - { 256*RSVP_OBJ_HELLO+RSVP_CTYPE_1, "Hello Request" }, - { 256*RSVP_OBJ_HELLO+RSVP_CTYPE_2, "Hello Ack" }, - { 256*RSVP_OBJ_LABEL_REQ+RSVP_CTYPE_1, "without label range" }, - { 256*RSVP_OBJ_LABEL_REQ+RSVP_CTYPE_2, "with ATM label range" }, - { 256*RSVP_OBJ_LABEL_REQ+RSVP_CTYPE_3, "with FR label range" }, - { 256*RSVP_OBJ_LABEL_REQ+RSVP_CTYPE_4, "Generalized Label" }, - { 256*RSVP_OBJ_LABEL+RSVP_CTYPE_1, "Label" }, - { 256*RSVP_OBJ_LABEL+RSVP_CTYPE_2, "Generalized Label" }, - { 256*RSVP_OBJ_LABEL+RSVP_CTYPE_3, "Waveband Switching" }, - { 256*RSVP_OBJ_SUGGESTED_LABEL+RSVP_CTYPE_1, "Label" }, - { 256*RSVP_OBJ_SUGGESTED_LABEL+RSVP_CTYPE_2, "Generalized Label" }, - { 256*RSVP_OBJ_SUGGESTED_LABEL+RSVP_CTYPE_3, "Waveband Switching" }, - { 256*RSVP_OBJ_UPSTREAM_LABEL+RSVP_CTYPE_1, "Label" }, - { 256*RSVP_OBJ_UPSTREAM_LABEL+RSVP_CTYPE_2, "Generalized Label" }, - { 256*RSVP_OBJ_UPSTREAM_LABEL+RSVP_CTYPE_3, "Waveband Switching" }, - { 256*RSVP_OBJ_RECOVERY_LABEL+RSVP_CTYPE_1, "Label" }, - { 256*RSVP_OBJ_RECOVERY_LABEL+RSVP_CTYPE_2, "Generalized Label" }, - { 256*RSVP_OBJ_RECOVERY_LABEL+RSVP_CTYPE_3, "Waveband Switching" }, - { 256*RSVP_OBJ_ERO+RSVP_CTYPE_IPV4, "IPv4" }, - { 256*RSVP_OBJ_RRO+RSVP_CTYPE_IPV4, "IPv4" }, - { 256*RSVP_OBJ_ERROR_SPEC+RSVP_CTYPE_IPV4, "IPv4" }, - { 256*RSVP_OBJ_ERROR_SPEC+RSVP_CTYPE_IPV6, "IPv6" }, - { 256*RSVP_OBJ_ERROR_SPEC+RSVP_CTYPE_3, "IPv4 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_SESSION_ATTRIBUTE+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, - { 256*RSVP_OBJ_FASTREROUTE+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, /* old style*/ - { 256*RSVP_OBJ_FASTREROUTE+RSVP_CTYPE_1, "1" }, /* new style */ - { 256*RSVP_OBJ_DETOUR+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, - { 256*RSVP_OBJ_PROPERTIES+RSVP_CTYPE_1, "1" }, - { 256*RSVP_OBJ_CLASSTYPE+RSVP_CTYPE_1, "1" }, - { 256*RSVP_OBJ_CLASSTYPE_OLD+RSVP_CTYPE_1, "1" }, - { 0, NULL} -}; - -struct rsvp_obj_integrity_t { - u_int8_t flags; - u_int8_t res; - u_int8_t key_id[6]; - u_int8_t sequence[8]; - u_int8_t digest[16]; -}; - -static const struct tok rsvp_obj_integrity_flag_values[] = { - { 0x80, "Handshake" }, - { 0, NULL} -}; - -struct rsvp_obj_frr_t { - u_int8_t setup_prio; - u_int8_t hold_prio; - u_int8_t hop_limit; - u_int8_t flags; - u_int8_t bandwidth[4]; - u_int8_t include_any[4]; - u_int8_t exclude_any[4]; - u_int8_t include_all[4]; -}; - - -#define RSVP_OBJ_XRO_MASK_SUBOBJ(x) ((x)&0x7f) -#define RSVP_OBJ_XRO_MASK_LOOSE(x) ((x)&0x80) - -#define RSVP_OBJ_XRO_RES 0 -#define RSVP_OBJ_XRO_IPV4 1 -#define RSVP_OBJ_XRO_IPV6 2 -#define RSVP_OBJ_XRO_ASN 32 -#define RSVP_OBJ_XRO_MPLS 64 - -static const struct tok rsvp_obj_xro_values[] = { - { RSVP_OBJ_XRO_RES, "Reserved" }, - { RSVP_OBJ_XRO_IPV4, "IPv4 prefix" }, - { RSVP_OBJ_XRO_IPV6, "IPv6 prefix" }, - { RSVP_OBJ_XRO_ASN, "Autonomous system number" }, - { RSVP_OBJ_XRO_MPLS, "MPLS label switched path termination" }, - { 0, NULL} -}; - -/* draft-ietf-mpls-rsvp-lsp-fastreroute-07.txt */ -static const struct tok rsvp_obj_rro_flag_values[] = { - { 0x01, "Local protection available" }, - { 0x02, "Local protection in use" }, - { 0x04, "Bandwidth protection" }, - { 0x08, "Node protection" }, - { 0, NULL} -}; - -static const struct tok rsvp_resstyle_values[] = { - { 17, "Wildcard Filter" }, - { 10, "Fixed Filter" }, - { 18, "Shared Explicit" }, - { 0, NULL} -}; - -#define RSVP_OBJ_INTSERV_GUARANTEED_SERV 2 -#define RSVP_OBJ_INTSERV_CONTROLLED_LOAD 5 - -static const struct tok rsvp_intserv_service_type_values[] = { - { 1, "Default/Global Information" }, - { RSVP_OBJ_INTSERV_GUARANTEED_SERV, "Guaranteed Service" }, - { RSVP_OBJ_INTSERV_CONTROLLED_LOAD, "Controlled Load" }, - { 0, NULL} -}; - -static const struct tok rsvp_intserv_parameter_id_values[] = { - { 4, "IS hop cnt" }, - { 6, "Path b/w estimate" }, - { 8, "Minimum path latency" }, - { 10, "Composed MTU" }, - { 127, "Token Bucket TSpec" }, - { 130, "Guaranteed Service RSpec" }, - { 133, "End-to-end composed value for C" }, - { 134, "End-to-end composed value for D" }, - { 135, "Since-last-reshaping point composed C" }, - { 136, "Since-last-reshaping point composed D" }, - { 0, NULL} -}; - -static struct tok rsvp_session_attribute_flag_values[] = { - { 0x01, "Local Protection desired" }, - { 0x02, "Label Recording desired" }, - { 0x04, "SE Style desired" }, - { 0x08, "Bandwidth protection desired" }, /* draft-ietf-mpls-rsvp-lsp-fastreroute-02.txt */ - { 0x10, "Node protection desired" }, /* draft-ietf-mpls-rsvp-lsp-fastreroute-02.txt */ - { 0, NULL} -}; - -static struct tok rsvp_obj_prop_tlv_values[] = { - { 0x01, "Cos" }, - { 0x02, "Metric 1" }, - { 0x04, "Metric 2" }, - { 0x08, "CCC Status" }, - { 0x10, "Path Type" }, - { 0, NULL} -}; - -#define RSVP_OBJ_ERROR_SPEC_CODE_ROUTING 24 -#define RSVP_OBJ_ERROR_SPEC_CODE_NOTIFY 25 -#define RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE 28 -#define RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE_OLD 125 - -static struct tok rsvp_obj_error_code_values[] = { - { RSVP_OBJ_ERROR_SPEC_CODE_ROUTING, "Routing Problem" }, - { RSVP_OBJ_ERROR_SPEC_CODE_NOTIFY, "Notify Error" }, - { RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE, "Diffserv TE Error" }, - { RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE_OLD, "Diffserv TE Error (Old)" }, - { 0, NULL} -}; - -static struct tok rsvp_obj_error_code_routing_values[] = { - { 1, "Bad EXPLICIT_ROUTE object" }, - { 2, "Bad strict node" }, - { 3, "Bad loose node" }, - { 4, "Bad initial subobject" }, - { 5, "No route available toward destination" }, - { 6, "Unacceptable label value" }, - { 7, "RRO indicated routing loops" }, - { 8, "non-RSVP-capable router in the path" }, - { 9, "MPLS label allocation failure" }, - { 10, "Unsupported L3PID" }, - { 0, NULL} -}; - -static struct tok rsvp_obj_error_code_diffserv_te_values[] = { - { 1, "Unexpected CT object" }, - { 2, "Unsupported CT" }, - { 3, "Invalid CT value" }, - { 4, "CT/setup priority do not form a configured TE-Class" }, - { 5, "CT/holding priority do not form a configured TE-Class" }, - { 6, "CT/setup priority and CT/holding priority do not form a configured TE-Class" }, - { 7, "Inconsistency between signaled PSC and signaled CT" }, - { 8, "Inconsistency between signaled PHBs and signaled CT" }, - { 0, NULL} -}; - -#define FALSE 0 -#define TRUE 1 - - -static int rsvp_intserv_print(const u_char *, u_short); - -/* - * this is a dissector for all the intserv defined - * specs as defined per rfc2215 - * it is called from various rsvp objects; - * returns the amount of bytes being processed - */ -static int -rsvp_intserv_print(const u_char *tptr, u_short obj_tlen) { - - int parameter_id,parameter_length; - union { - float f; - u_int32_t i; - } bw; - - if (obj_tlen < 4) - return 0; - parameter_id = *(tptr); - parameter_length = EXTRACT_16BITS(tptr+2)<<2; /* convert wordcount to bytecount */ - - printf("\n\t Parameter ID: %s (%u), length: %u, Flags: [0x%02x]", - tok2str(rsvp_intserv_parameter_id_values,"unknown",parameter_id), - parameter_id, - parameter_length, - *(tptr+1)); - - if (obj_tlen < parameter_length+4) - return 0; - switch(parameter_id) { /* parameter_id */ - - case 4: - /* - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | 4 (e) | (f) | 1 (g) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | IS hop cnt (32-bit unsigned integer) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - if (parameter_length == 4) - printf("\n\t\tIS hop count: %u", EXTRACT_32BITS(tptr+4)); - break; - - case 6: - /* - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | 6 (h) | (i) | 1 (j) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Path b/w estimate (32-bit IEEE floating point number) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - if (parameter_length == 4) { - bw.i = EXTRACT_32BITS(tptr+4); - printf("\n\t\tPath b/w estimate: %.10g Mbps", bw.f/125000); - } - break; - - case 8: - /* - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | 8 (k) | (l) | 1 (m) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Minimum path latency (32-bit integer) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - if (parameter_length == 4) { - printf("\n\t\tMinimum path latency: "); - if (EXTRACT_32BITS(tptr+4) == 0xffffffff) - printf("don't care"); - else - printf("%u", EXTRACT_32BITS(tptr+4)); - } - break; - - case 10: - - /* - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | 10 (n) | (o) | 1 (p) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Composed MTU (32-bit unsigned integer) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - if (parameter_length == 4) - printf("\n\t\tComposed MTU: %u bytes", EXTRACT_32BITS(tptr+4)); - break; - case 127: - /* - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | 127 (e) | 0 (f) | 5 (g) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Token Bucket Rate [r] (32-bit IEEE floating point number) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Token Bucket Size [b] (32-bit IEEE floating point number) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Peak Data Rate [p] (32-bit IEEE floating point number) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Minimum Policed Unit [m] (32-bit integer) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Maximum Packet Size [M] (32-bit integer) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - if (parameter_length == 20) { - bw.i = EXTRACT_32BITS(tptr+4); - printf("\n\t\tToken Bucket Rate: %.10g Mbps", bw.f/125000); - bw.i = EXTRACT_32BITS(tptr+8); - printf("\n\t\tToken Bucket Size: %.10g bytes", bw.f); - bw.i = EXTRACT_32BITS(tptr+12); - printf("\n\t\tPeak Data Rate: %.10g Mbps", bw.f/125000); - printf("\n\t\tMinimum Policed Unit: %u bytes", EXTRACT_32BITS(tptr+16)); - printf("\n\t\tMaximum Packet Size: %u bytes", EXTRACT_32BITS(tptr+20)); - } - break; - - case 130: - /* - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | 130 (h) | 0 (i) | 2 (j) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Rate [R] (32-bit IEEE floating point number) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Slack Term [S] (32-bit integer) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - if (parameter_length == 8) { - bw.i = EXTRACT_32BITS(tptr+4); - printf("\n\t\tRate: %.10g Mbps", bw.f/125000); - printf("\n\t\tSlack Term: %u", EXTRACT_32BITS(tptr+8)); - } - break; - - case 133: - case 134: - case 135: - case 136: - if (parameter_length == 4) - printf("\n\t\tValue: %u", EXTRACT_32BITS(tptr+4)); - break; - - default: - if (vflag <= 1) - print_unknown_data(tptr+4,"\n\t\t",parameter_length); - } - return (parameter_length+4); /* header length 4 bytes */ -} - -static int -rsvp_obj_print (const u_char *tptr, const char *ident, u_int tlen) { - - const struct rsvp_object_header *rsvp_obj_header; - const u_char *obj_tptr; - union { - const struct rsvp_obj_integrity_t *rsvp_obj_integrity; - const struct rsvp_obj_frr_t *rsvp_obj_frr; - } obj_ptr; - - u_short rsvp_obj_len,rsvp_obj_ctype,obj_tlen,intserv_serv_tlen; - int hexdump,processed,padbytes,error_code,error_value,i; - union { - float f; - u_int32_t i; - } bw; - u_int8_t namelen; - - while(tlen>=sizeof(struct rsvp_object_header)) { - /* did we capture enough for fully decoding the object header ? */ - if (!TTEST2(*tptr, sizeof(struct rsvp_object_header))) - goto trunc; - - rsvp_obj_header = (const struct rsvp_object_header *)tptr; - rsvp_obj_len=EXTRACT_16BITS(rsvp_obj_header->length); - rsvp_obj_ctype=rsvp_obj_header->ctype; - - if(rsvp_obj_len % 4) { - printf("%sERROR: object header size %u not a multiple of 4", ident, rsvp_obj_len); - return -1; - } - if(rsvp_obj_len < sizeof(struct rsvp_object_header)) { - printf("%sERROR: object header too short %u < %lu", ident, rsvp_obj_len, - (unsigned long)sizeof(const struct rsvp_object_header)); - return -1; - } - - printf("%s%s Object (%u) Flags: [%s", - ident, - tok2str(rsvp_obj_values, - "Unknown", - rsvp_obj_header->class_num), - rsvp_obj_header->class_num, - ((rsvp_obj_header->class_num)&0x80) ? "ignore" : "reject"); - - if (rsvp_obj_header->class_num > 128) - printf(" %s", - ((rsvp_obj_header->class_num)&0x40) ? "and forward" : "silently"); - - printf(" if unknown], Class-Type: %s (%u), length: %u", - tok2str(rsvp_ctype_values, - "Unknown", - ((rsvp_obj_header->class_num)<<8)+rsvp_obj_ctype), - rsvp_obj_ctype, - rsvp_obj_len); - - if(tlen < rsvp_obj_len) { - printf("%sERROR: object goes past end of objects TLV", ident); - return -1; - } - - obj_tptr=tptr+sizeof(struct rsvp_object_header); - obj_tlen=rsvp_obj_len-sizeof(struct rsvp_object_header); - - /* did we capture enough for fully decoding the object ? */ - if (!TTEST2(*tptr, rsvp_obj_len)) - return -1; - hexdump=FALSE; - - switch(rsvp_obj_header->class_num) { - case RSVP_OBJ_SESSION: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_IPV4: - if (obj_tlen < 8) - return -1; - printf("%s IPv4 DestAddress: %s, Protocol ID: 0x%02x", - ident, - ipaddr_string(obj_tptr), - *(obj_tptr+sizeof(struct in_addr))); - printf("%s Flags: [0x%02x], DestPort %u", - ident, - *(obj_tptr+5), - EXTRACT_16BITS(obj_tptr+6)); - obj_tlen-=8; - obj_tptr+=8; - break; -#ifdef INET6 - case RSVP_CTYPE_IPV6: - if (obj_tlen < 20) - return -1; - printf("%s IPv6 DestAddress: %s, Protocol ID: 0x%02x", - ident, - ip6addr_string(obj_tptr), - *(obj_tptr+sizeof(struct in6_addr))); - printf("%s Flags: [0x%02x], DestPort %u", - ident, - *(obj_tptr+sizeof(struct in6_addr)+1), - EXTRACT_16BITS(obj_tptr+sizeof(struct in6_addr)+2)); - obj_tlen-=20; - obj_tptr+=20; - break; - - case RSVP_CTYPE_TUNNEL_IPV6: - if (obj_tlen < 36) - return -1; - printf("%s IPv6 Tunnel EndPoint: %s, Tunnel ID: 0x%04x, Extended Tunnel ID: %s", - ident, - ip6addr_string(obj_tptr), - EXTRACT_16BITS(obj_tptr+18), - ip6addr_string(obj_tptr+20)); - obj_tlen-=36; - obj_tptr+=36; - break; -#endif - case RSVP_CTYPE_TUNNEL_IPV4: - if (obj_tlen < 12) - return -1; - printf("%s IPv4 Tunnel EndPoint: %s, Tunnel ID: 0x%04x, Extended Tunnel ID: %s", - ident, - ipaddr_string(obj_tptr), - EXTRACT_16BITS(obj_tptr+6), - ipaddr_string(obj_tptr+8)); - obj_tlen-=12; - obj_tptr+=12; - break; - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_CONFIRM: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_IPV4: - if (obj_tlen < sizeof(struct in_addr)) - return -1; - printf("%s IPv4 Receiver Address: %s", - ident, - ipaddr_string(obj_tptr)); - obj_tlen-=sizeof(struct in_addr); - obj_tptr+=sizeof(struct in_addr); - break; -#ifdef INET6 - case RSVP_CTYPE_IPV6: - if (obj_tlen < sizeof(struct in6_addr)) - return -1; - printf("%s IPv6 Receiver Address: %s", - ident, - ip6addr_string(obj_tptr)); - obj_tlen-=sizeof(struct in6_addr); - obj_tptr+=sizeof(struct in6_addr); - break; -#endif - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_NOTIFY_REQ: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_IPV4: - if (obj_tlen < sizeof(struct in_addr)) - return -1; - printf("%s IPv4 Notify Node Address: %s", - ident, - ipaddr_string(obj_tptr)); - obj_tlen-=sizeof(struct in_addr); - obj_tptr+=sizeof(struct in_addr); - break; -#ifdef INET6 - case RSVP_CTYPE_IPV6: - if (obj_tlen < sizeof(struct in6_addr)) - return-1; - printf("%s IPv6 Notify Node Address: %s", - ident, - ip6addr_string(obj_tptr)); - obj_tlen-=sizeof(struct in6_addr); - obj_tptr+=sizeof(struct in6_addr); - break; -#endif - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_SUGGESTED_LABEL: /* fall through */ - case RSVP_OBJ_UPSTREAM_LABEL: /* fall through */ - case RSVP_OBJ_RECOVERY_LABEL: /* fall through */ - case RSVP_OBJ_LABEL: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_1: - while(obj_tlen >= 4 ) { - printf("%s Label: %u", ident, EXTRACT_32BITS(obj_tptr)); - obj_tlen-=4; - obj_tptr+=4; - } - break; - case RSVP_CTYPE_2: - if (obj_tlen < 4) - return-1; - printf("%s Generalized Label: %u", - ident, - EXTRACT_32BITS(obj_tptr)); - obj_tlen-=4; - obj_tptr+=4; - break; - case RSVP_CTYPE_3: - if (obj_tlen < 12) - return-1; - printf("%s Waveband ID: %u%s Start Label: %u, Stop Label: %u", - ident, - EXTRACT_32BITS(obj_tptr), - ident, - EXTRACT_32BITS(obj_tptr+4), - EXTRACT_32BITS(obj_tptr+8)); - obj_tlen-=12; - obj_tptr+=12; - break; - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_STYLE: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_1: - if (obj_tlen < 4) - return-1; - printf("%s Reservation Style: %s, Flags: [0x%02x]", - ident, - tok2str(rsvp_resstyle_values, - "Unknown", - EXTRACT_24BITS(obj_tptr+1)), - *(obj_tptr)); - obj_tlen-=4; - obj_tptr+=4; - break; - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_SENDER_TEMPLATE: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_IPV4: - if (obj_tlen < 8) - return-1; - printf("%s Source Address: %s, Source Port: %u", - ident, - ipaddr_string(obj_tptr), - EXTRACT_16BITS(obj_tptr+6)); - obj_tlen-=8; - obj_tptr+=8; - break; -#ifdef INET6 - case RSVP_CTYPE_IPV6: - if (obj_tlen < 20) - return-1; - printf("%s Source Address: %s, Source Port: %u", - ident, - ip6addr_string(obj_tptr), - EXTRACT_16BITS(obj_tptr+18)); - obj_tlen-=20; - obj_tptr+=20; - break; -#endif - case RSVP_CTYPE_TUNNEL_IPV4: - if (obj_tlen < 8) - return-1; - printf("%s IPv4 Tunnel Sender Address: %s, LSP-ID: 0x%04x", - ident, - ipaddr_string(obj_tptr), - EXTRACT_16BITS(obj_tptr+6)); - obj_tlen-=8; - obj_tptr+=8; - break; - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_LABEL_REQ: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_1: - while(obj_tlen >= 4 ) { - printf("%s L3 Protocol ID: %s", - ident, - tok2str(ethertype_values, - "Unknown Protocol (0x%04x)", - EXTRACT_16BITS(obj_tptr+2))); - obj_tlen-=4; - obj_tptr+=4; - } - break; - case RSVP_CTYPE_2: - if (obj_tlen < 12) - return-1; - printf("%s L3 Protocol ID: %s", - ident, - tok2str(ethertype_values, - "Unknown Protocol (0x%04x)", - EXTRACT_16BITS(obj_tptr+2))); - printf(",%s merge capability",((*(obj_tptr+4))&0x80) ? "no" : "" ); - printf("%s Minimum VPI/VCI: %u/%u", - ident, - (EXTRACT_16BITS(obj_tptr+4))&0xfff, - (EXTRACT_16BITS(obj_tptr+6))&0xfff); - printf("%s Maximum VPI/VCI: %u/%u", - ident, - (EXTRACT_16BITS(obj_tptr+8))&0xfff, - (EXTRACT_16BITS(obj_tptr+10))&0xfff); - obj_tlen-=12; - obj_tptr+=12; - break; - case RSVP_CTYPE_3: - if (obj_tlen < 12) - return-1; - printf("%s L3 Protocol ID: %s", - ident, - tok2str(ethertype_values, - "Unknown Protocol (0x%04x)", - EXTRACT_16BITS(obj_tptr+2))); - printf("%s Minimum/Maximum DLCI: %u/%u, %s%s bit DLCI", - ident, - (EXTRACT_32BITS(obj_tptr+4))&0x7fffff, - (EXTRACT_32BITS(obj_tptr+8))&0x7fffff, - (((EXTRACT_16BITS(obj_tptr+4)>>7)&3) == 0 ) ? "10" : "", - (((EXTRACT_16BITS(obj_tptr+4)>>7)&3) == 2 ) ? "23" : ""); - obj_tlen-=12; - obj_tptr+=12; - break; - case RSVP_CTYPE_4: - if (obj_tlen < 8) - return-1; - printf("%s LSP Encoding Type: %s (%u)", - ident, - tok2str(gmpls_encoding_values, - "Unknown", - *obj_tptr), - *obj_tptr); - printf("%s Switching Type: %s (%u), Payload ID: %s (0x%04x)", - ident, - tok2str(gmpls_switch_cap_values, - "Unknown", - *(obj_tptr+1)), - *(obj_tptr+1), - tok2str(gmpls_payload_values, - "Unknown", - EXTRACT_16BITS(obj_tptr+2)), - EXTRACT_16BITS(obj_tptr+2)); - obj_tlen-=8; - obj_tptr+=8; - break; - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_RRO: - case RSVP_OBJ_ERO: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_IPV4: - while(obj_tlen >= 4 ) { - printf("%s Subobject Type: %s, length %u", - ident, - tok2str(rsvp_obj_xro_values, - "Unknown %u", - RSVP_OBJ_XRO_MASK_SUBOBJ(*obj_tptr)), - *(obj_tptr+1)); - - if (*(obj_tptr+1) == 0) { /* prevent infinite loops */ - printf("%s ERROR: zero length ERO subtype",ident); - break; - } - - switch(RSVP_OBJ_XRO_MASK_SUBOBJ(*obj_tptr)) { - case RSVP_OBJ_XRO_IPV4: - printf(", %s, %s/%u, Flags: [%s]", - RSVP_OBJ_XRO_MASK_LOOSE(*obj_tptr) ? "Loose" : "Strict", - ipaddr_string(obj_tptr+2), - *(obj_tptr+6), - bittok2str(rsvp_obj_rro_flag_values, - "none", - *(obj_tptr+7))); /* rfc3209 says that this field is rsvd. */ - } - obj_tlen-=*(obj_tptr+1); - obj_tptr+=*(obj_tptr+1); - } - break; - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_HELLO: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_1: - case RSVP_CTYPE_2: - if (obj_tlen < 8) - return-1; - printf("%s Source Instance: 0x%08x, Destination Instance: 0x%08x", - ident, - EXTRACT_32BITS(obj_tptr), - EXTRACT_32BITS(obj_tptr+4)); - obj_tlen-=8; - obj_tptr+=8; - break; - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_RESTART_CAPABILITY: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_1: - if (obj_tlen < 8) - return-1; - printf("%s Restart Time: %ums, Recovery Time: %ums", - ident, - EXTRACT_32BITS(obj_tptr), - EXTRACT_32BITS(obj_tptr+4)); - obj_tlen-=8; - obj_tptr+=8; - break; - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_SESSION_ATTRIBUTE: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_TUNNEL_IPV4: - if (obj_tlen < 4) - return-1; - namelen = *(obj_tptr+3); - if (obj_tlen < 4+namelen) - return-1; - printf("%s Session Name: ", ident); - for (i = 0; i < namelen; i++) - safeputchar(*(obj_tptr+4+i)); - printf("%s Setup Priority: %u, Holding Priority: %u, Flags: [%s]", - ident, - (int)*obj_tptr, - (int)*(obj_tptr+1), - tok2str(rsvp_session_attribute_flag_values, - "none", - *(obj_tptr+2))); - - obj_tlen-=4+*(obj_tptr+3); - obj_tptr+=4+*(obj_tptr+3); - break; - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_RSVP_HOP: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_3: /* fall through - FIXME add TLV parser */ - case RSVP_CTYPE_IPV4: - if (obj_tlen < 8) - return-1; - printf("%s Previous/Next Interface: %s, Logical Interface Handle: 0x%08x", - ident, - ipaddr_string(obj_tptr), - EXTRACT_32BITS(obj_tptr+4)); - obj_tlen-=8; - obj_tptr+=8; - if (obj_tlen) - hexdump=TRUE; /* unless we have a TLV parser lets just hexdump */ - break; -#ifdef INET6 - case RSVP_CTYPE_4: /* fall through - FIXME add TLV parser */ - case RSVP_CTYPE_IPV6: - if (obj_tlen < 20) - return-1; - printf("%s Previous/Next Interface: %s, Logical Interface Handle: 0x%08x", - ident, - ip6addr_string(obj_tptr), - EXTRACT_32BITS(obj_tptr+16)); - obj_tlen-=20; - obj_tptr+=20; - hexdump=TRUE; /* unless we have a TLV parser lets just hexdump */ - break; -#endif - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_TIME_VALUES: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_1: - if (obj_tlen < 4) - return-1; - printf("%s Refresh Period: %ums", - ident, - EXTRACT_32BITS(obj_tptr)); - obj_tlen-=4; - obj_tptr+=4; - break; - default: - hexdump=TRUE; - } - break; - - /* those three objects do share the same semantics */ - case RSVP_OBJ_SENDER_TSPEC: - case RSVP_OBJ_ADSPEC: - case RSVP_OBJ_FLOWSPEC: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_2: - if (obj_tlen < 4) - return-1; - printf("%s Msg-Version: %u, length: %u", - ident, - (*obj_tptr & 0xf0) >> 4, - EXTRACT_16BITS(obj_tptr+2)<<2); - obj_tptr+=4; /* get to the start of the service header */ - obj_tlen-=4; - - while (obj_tlen >= 4) { - intserv_serv_tlen=EXTRACT_16BITS(obj_tptr+2)<<2; - printf("%s Service Type: %s (%u), break bit %s set, Service length: %u", - ident, - tok2str(rsvp_intserv_service_type_values,"unknown",*(obj_tptr)), - *(obj_tptr), - (*(obj_tptr+1)&0x80) ? "" : "not", - intserv_serv_tlen); - - obj_tptr+=4; /* get to the start of the parameter list */ - obj_tlen-=4; - - while (intserv_serv_tlen>=4) { - processed = rsvp_intserv_print(obj_tptr, obj_tlen); - if (processed == 0) - break; - obj_tlen-=processed; - intserv_serv_tlen-=processed; - obj_tptr+=processed; - } - } - break; - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_FILTERSPEC: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_IPV4: - if (obj_tlen < 8) - return-1; - printf("%s Source Address: %s, Source Port: %u", - ident, - ipaddr_string(obj_tptr), - EXTRACT_16BITS(obj_tptr+6)); - obj_tlen-=8; - obj_tptr+=8; - break; -#ifdef INET6 - case RSVP_CTYPE_IPV6: - if (obj_tlen < 20) - return-1; - printf("%s Source Address: %s, Source Port: %u", - ident, - ip6addr_string(obj_tptr), - EXTRACT_16BITS(obj_tptr+18)); - obj_tlen-=20; - obj_tptr+=20; - break; - case RSVP_CTYPE_3: - if (obj_tlen < 20) - return-1; - printf("%s Source Address: %s, Flow Label: %u", - ident, - ip6addr_string(obj_tptr), - EXTRACT_24BITS(obj_tptr+17)); - obj_tlen-=20; - obj_tptr+=20; - break; - case RSVP_CTYPE_TUNNEL_IPV6: - if (obj_tlen < 20) - return-1; - printf("%s Source Address: %s, LSP-ID: 0x%04x", - ident, - ipaddr_string(obj_tptr), - EXTRACT_16BITS(obj_tptr+18)); - obj_tlen-=20; - obj_tptr+=20; - break; -#endif - case RSVP_CTYPE_TUNNEL_IPV4: - if (obj_tlen < 8) - return-1; - printf("%s Source Address: %s, LSP-ID: 0x%04x", - ident, - ipaddr_string(obj_tptr), - EXTRACT_16BITS(obj_tptr+6)); - obj_tlen-=8; - obj_tptr+=8; - break; - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_FASTREROUTE: - /* the differences between c-type 1 and 7 are minor */ - obj_ptr.rsvp_obj_frr = (const struct rsvp_obj_frr_t *)obj_tptr; - bw.i = EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->bandwidth); - - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_1: /* new style */ - if (obj_tlen < sizeof(struct rsvp_obj_frr_t)) - return-1; - printf("%s Setup Priority: %u, Holding Priority: %u, Hop-limit: %u, Bandwidth: %.10g Mbps", - ident, - (int)obj_ptr.rsvp_obj_frr->setup_prio, - (int)obj_ptr.rsvp_obj_frr->hold_prio, - (int)obj_ptr.rsvp_obj_frr->hop_limit, - bw.f*8/1000000); - printf("%s Include-any: 0x%08x, Exclude-any: 0x%08x, Include-all: 0x%08x", - ident, - EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->include_any), - EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->exclude_any), - EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->include_all)); - obj_tlen-=sizeof(struct rsvp_obj_frr_t); - obj_tptr+=sizeof(struct rsvp_obj_frr_t); - break; - - case RSVP_CTYPE_TUNNEL_IPV4: /* old style */ - if (obj_tlen < 16) - return-1; - printf("%s Setup Priority: %u, Holding Priority: %u, Hop-limit: %u, Bandwidth: %.10g Mbps", - ident, - (int)obj_ptr.rsvp_obj_frr->setup_prio, - (int)obj_ptr.rsvp_obj_frr->hold_prio, - (int)obj_ptr.rsvp_obj_frr->hop_limit, - bw.f*8/1000000); - printf("%s Include Colors: 0x%08x, Exclude Colors: 0x%08x", - ident, - EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->include_any), - EXTRACT_32BITS(obj_ptr.rsvp_obj_frr->exclude_any)); - obj_tlen-=16; - obj_tptr+=16; - break; - - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_DETOUR: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_TUNNEL_IPV4: - while(obj_tlen >= 8) { - printf("%s PLR-ID: %s, Avoid-Node-ID: %s", - ident, - ipaddr_string(obj_tptr), - ipaddr_string(obj_tptr+4)); - obj_tlen-=8; - obj_tptr+=8; - } - break; - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_CLASSTYPE: - case RSVP_OBJ_CLASSTYPE_OLD: /* fall through */ - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_1: - printf("%s CT: %u", - ident, - EXTRACT_32BITS(obj_tptr)&0x7); - obj_tlen-=4; - obj_tptr+=4; - break; - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_ERROR_SPEC: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_3: /* fall through - FIXME add TLV parser */ - case RSVP_CTYPE_IPV4: - if (obj_tlen < 8) - return-1; - error_code=*(obj_tptr+5); - error_value=EXTRACT_16BITS(obj_tptr+6); - printf("%s Error Node Address: %s, Flags: [0x%02x]%s Error Code: %s (%u)", - ident, - ipaddr_string(obj_tptr), - *(obj_tptr+4), - ident, - tok2str(rsvp_obj_error_code_values,"unknown",error_code), - error_code); - switch (error_code) { - case RSVP_OBJ_ERROR_SPEC_CODE_ROUTING: - printf(", Error Value: %s (%u)", - tok2str(rsvp_obj_error_code_routing_values,"unknown",error_value), - error_value); - break; - case RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE: /* fall through */ - case RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE_OLD: - printf(", Error Value: %s (%u)", - tok2str(rsvp_obj_error_code_diffserv_te_values,"unknown",error_value), - error_value); - break; - default: - printf(", Unknown Error Value (%u)", error_value); - break; - } - obj_tlen-=8; - obj_tptr+=8; - break; -#ifdef INET6 - case RSVP_CTYPE_4: /* fall through - FIXME add TLV parser */ - case RSVP_CTYPE_IPV6: - if (obj_tlen < 20) - return-1; - error_code=*(obj_tptr+17); - error_value=EXTRACT_16BITS(obj_tptr+18); - printf("%s Error Node Address: %s, Flags: [0x%02x]%s Error Code: %s (%u)", - ident, - ip6addr_string(obj_tptr), - *(obj_tptr+16), - ident, - tok2str(rsvp_obj_error_code_values,"unknown",error_code), - error_code); - - switch (error_code) { - case RSVP_OBJ_ERROR_SPEC_CODE_ROUTING: - printf(", Error Value: %s (%u)", - tok2str(rsvp_obj_error_code_routing_values,"unknown",error_value), - error_value); - break; - default: - break; - } - obj_tlen-=20; - obj_tptr+=20; - break; -#endif - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_PROPERTIES: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_1: - if (obj_tlen < 4) - return-1; - padbytes = EXTRACT_16BITS(obj_tptr+2); - printf("%s TLV count: %u, padding bytes: %u", - ident, - EXTRACT_16BITS(obj_tptr), - padbytes); - obj_tlen-=4; - obj_tptr+=4; - /* loop through as long there is anything longer than the TLV header (2) */ - while(obj_tlen >= 2 + padbytes) { - printf("%s %s TLV (0x%02x), length: %u", /* length includes header */ - ident, - tok2str(rsvp_obj_prop_tlv_values,"unknown",*obj_tptr), - *obj_tptr, - *(obj_tptr+1)); - if (obj_tlen < *(obj_tptr+1)) - return-1; - if (*(obj_tptr+1) < 2) - return -1; - print_unknown_data(obj_tptr+2,"\n\t\t",*(obj_tptr+1)-2); - obj_tlen-=*(obj_tptr+1); - obj_tptr+=*(obj_tptr+1); - } - break; - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_MESSAGE_ID: /* fall through */ - case RSVP_OBJ_MESSAGE_ID_ACK: /* fall through */ - case RSVP_OBJ_MESSAGE_ID_LIST: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_1: - if (obj_tlen < 8) - return-1; - printf("%s Flags [0x%02x], epoch: %u", - ident, - *obj_tptr, - EXTRACT_24BITS(obj_tptr+1)); - obj_tlen-=4; - obj_tptr+=4; - /* loop through as long there are no messages left */ - while(obj_tlen >= 4) { - printf("%s Message-ID 0x%08x (%u)", - ident, - EXTRACT_32BITS(obj_tptr), - EXTRACT_32BITS(obj_tptr)); - obj_tlen-=4; - obj_tptr+=4; - } - break; - default: - hexdump=TRUE; - } - break; - - case RSVP_OBJ_INTEGRITY: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_1: - if (obj_tlen < sizeof(struct rsvp_obj_integrity_t)) - return-1; - obj_ptr.rsvp_obj_integrity = (const struct rsvp_obj_integrity_t *)obj_tptr; - printf("%s Key-ID 0x%04x%08x, Sequence 0x%08x%08x, Flags [%s]", - ident, - EXTRACT_16BITS(obj_ptr.rsvp_obj_integrity->key_id), - EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->key_id+2), - EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->sequence), - EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->sequence+4), - bittok2str(rsvp_obj_integrity_flag_values, - "none", - obj_ptr.rsvp_obj_integrity->flags)); - printf("%s MD5-sum 0x%08x%08x%08x%08x (unverified)", - ident, - EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->digest), - EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->digest+4), - EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->digest+8), - EXTRACT_32BITS(obj_ptr.rsvp_obj_integrity->digest+12)); - obj_tlen+=sizeof(struct rsvp_obj_integrity_t); - obj_tptr+=sizeof(struct rsvp_obj_integrity_t); - break; - default: - hexdump=TRUE; - } - break; - - /* - * FIXME those are the defined objects that lack a decoder - * you are welcome to contribute code ;-) - */ - - case RSVP_OBJ_SCOPE: - case RSVP_OBJ_POLICY_DATA: - case RSVP_OBJ_LABEL_SET: - case RSVP_OBJ_ACCEPT_LABEL_SET: - case RSVP_OBJ_PROTECTION: - default: - if (vflag <= 1) - print_unknown_data(obj_tptr,"\n\t ",obj_tlen); /* FIXME indentation */ - break; - } - /* do we also want to see a hex dump ? */ - if (vflag > 1 || hexdump==TRUE) - print_unknown_data(tptr+sizeof(sizeof(struct rsvp_object_header)),"\n\t ", /* FIXME indentation */ - rsvp_obj_len-sizeof(struct rsvp_object_header)); - - tptr+=rsvp_obj_len; - tlen-=rsvp_obj_len; - } - return 0; -trunc: - printf("\n\t\t packet exceeded snapshot"); - return -1; -} - - -void -rsvp_print(register const u_char *pptr, register u_int len) { - - const struct rsvp_common_header *rsvp_com_header; - const u_char *tptr,*subtptr; - u_short tlen,subtlen; - - tptr=pptr; - - rsvp_com_header = (const struct rsvp_common_header *)pptr; - TCHECK(*rsvp_com_header); - - /* - * Sanity checking of the header. - */ - if (RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags) != RSVP_VERSION) { - printf("ERROR: RSVP version %u packet not supported", - RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags)); - return; - } - - /* in non-verbose mode just lets print the basic Message Type*/ - if (vflag < 1) { - printf("RSVPv%u %s Message, length: %u", - RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags), - tok2str(rsvp_msg_type_values, "unknown (%u)",rsvp_com_header->msg_type), - len); - return; - } - - /* ok they seem to want to know everything - lets fully decode it */ - - tlen=EXTRACT_16BITS(rsvp_com_header->length); - - printf("\n\tRSVPv%u %s Message (%u), Flags: [%s], length: %u, ttl: %u, checksum: 0x%04x", - RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags), - tok2str(rsvp_msg_type_values, "unknown, type: %u",rsvp_com_header->msg_type), - rsvp_com_header->msg_type, - bittok2str(rsvp_header_flag_values,"none",RSVP_EXTRACT_FLAGS(rsvp_com_header->version_flags)), - tlen, - rsvp_com_header->ttl, - EXTRACT_16BITS(rsvp_com_header->checksum)); - - if (tlen < sizeof(const struct rsvp_common_header)) { - printf("ERROR: common header too short %u < %lu", tlen, - (unsigned long)sizeof(const struct rsvp_common_header)); - return; - } - - tptr+=sizeof(const struct rsvp_common_header); - tlen-=sizeof(const struct rsvp_common_header); - - switch(rsvp_com_header->msg_type) { - - case RSVP_MSGTYPE_AGGREGATE: - while(tlen > 0) { - subtptr=tptr; - rsvp_com_header = (const struct rsvp_common_header *)subtptr; - TCHECK(*rsvp_com_header); - - /* - * Sanity checking of the header. - */ - if (RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags) != RSVP_VERSION) { - printf("ERROR: RSVP version %u packet not supported", - RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags)); - return; - } - subtlen=EXTRACT_16BITS(rsvp_com_header->length); - - printf("\n\t RSVPv%u %s Message (%u), Flags: [%s], length: %u, ttl: %u, checksum: 0x%04x", - RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags), - tok2str(rsvp_msg_type_values, "unknown, type: %u",rsvp_com_header->msg_type), - rsvp_com_header->msg_type, - bittok2str(rsvp_header_flag_values,"none",RSVP_EXTRACT_FLAGS(rsvp_com_header->version_flags)), - subtlen, - rsvp_com_header->ttl, - EXTRACT_16BITS(rsvp_com_header->checksum)); - - if (subtlen < sizeof(const struct rsvp_common_header)) { - printf("ERROR: common header too short %u < %lu", subtlen, - (unsigned long)sizeof(const struct rsvp_common_header)); - return; - } - - if (tlen < subtlen) { - printf("ERROR: common header too large %u > %u", subtlen, - tlen); - return; - } - - subtptr+=sizeof(const struct rsvp_common_header); - subtlen-=sizeof(const struct rsvp_common_header); - - if (rsvp_obj_print(subtptr,"\n\t ", subtlen) == -1) - return; - - tptr+=subtlen+sizeof(const struct rsvp_common_header); - tlen-=subtlen+sizeof(const struct rsvp_common_header); - } - - break; - - case RSVP_MSGTYPE_PATH: - case RSVP_MSGTYPE_RESV: - case RSVP_MSGTYPE_PATHERR: - case RSVP_MSGTYPE_RESVERR: - case RSVP_MSGTYPE_PATHTEAR: - case RSVP_MSGTYPE_RESVTEAR: - case RSVP_MSGTYPE_RESVCONF: - case RSVP_MSGTYPE_HELLO_OLD: - case RSVP_MSGTYPE_HELLO: - case RSVP_MSGTYPE_ACK: - case RSVP_MSGTYPE_SREFRESH: - if (rsvp_obj_print(tptr,"\n\t ", tlen) == -1) - return; - break; - - default: - print_unknown_data(tptr,"\n\t ",tlen); - break; - } - - return; -trunc: - printf("\n\t\t packet exceeded snapshot"); -} diff --git a/contrib/tcpdump/print-rt6.c b/contrib/tcpdump/print-rt6.c deleted file mode 100644 index 39e22aeaa2783..0000000000000 --- a/contrib/tcpdump/print-rt6.c +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1993, 1994 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-rt6.c,v 1.26.2.1 2005/04/20 22:35:11 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifdef INET6 - -#include <tcpdump-stdinc.h> - -#include <stdio.h> - -#include "ip6.h" - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -int -rt6_print(register const u_char *bp, const u_char *bp2 _U_) -{ - register const struct ip6_rthdr *dp; - register const struct ip6_rthdr0 *dp0; - register const u_char *ep; - int i, len; - register const struct in6_addr *addr; - - dp = (struct ip6_rthdr *)bp; - len = dp->ip6r_len; - - /* 'ep' points to the end of available data. */ - ep = snapend; - - TCHECK(dp->ip6r_segleft); - - printf("srcrt (len=%d", dp->ip6r_len); /*)*/ - printf(", type=%d", dp->ip6r_type); - printf(", segleft=%d", dp->ip6r_segleft); - - switch (dp->ip6r_type) { -#ifndef IPV6_RTHDR_TYPE_0 -#define IPV6_RTHDR_TYPE_0 0 -#endif -#ifndef IPV6_RTHDR_TYPE_2 -#define IPV6_RTHDR_TYPE_2 2 -#endif - case IPV6_RTHDR_TYPE_0: - case IPV6_RTHDR_TYPE_2: /* Mobile IPv6 ID-20 */ - dp0 = (struct ip6_rthdr0 *)dp; - - TCHECK(dp0->ip6r0_reserved); - if (dp0->ip6r0_reserved || vflag) { - printf(", rsv=0x%0x", - EXTRACT_32BITS(&dp0->ip6r0_reserved)); - } - - if (len % 2 == 1) - goto trunc; - len >>= 1; - addr = &dp0->ip6r0_addr[0]; - for (i = 0; i < len; i++) { - if ((u_char *)(addr + 1) > ep) - goto trunc; - - printf(", [%d]%s", i, ip6addr_string(addr)); - addr++; - } - /*(*/ - printf(") "); - return((dp0->ip6r0_len + 1) << 3); - break; - default: - goto trunc; - break; - } - - trunc: - fputs("[|srcrt]", stdout); - return -1; -} -#endif /* INET6 */ diff --git a/contrib/tcpdump/print-rx.c b/contrib/tcpdump/print-rx.c deleted file mode 100644 index bf7c6bdcc6dd2..0000000000000 --- a/contrib/tcpdump/print-rx.c +++ /dev/null @@ -1,2485 +0,0 @@ -/* - * Copyright: (c) 2000 United States Government as represented by the - * Secretary of the Navy. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. The names of the authors may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * 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. - */ -/* - * This code unmangles RX packets. RX is the mutant form of RPC that AFS - * uses to communicate between clients and servers. - * - * In this code, I mainly concern myself with decoding the AFS calls, not - * with the guts of RX, per se. - * - * Bah. If I never look at rx_packet.h again, it will be too soon. - * - * Ken Hornstein <kenh@cmf.nrl.navy.mil> - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-rx.c,v 1.37 2003/11/16 09:36:36 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <tcpdump-stdinc.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -#include "rx.h" - -#include "ip.h" - -static struct tok rx_types[] = { - { RX_PACKET_TYPE_DATA, "data" }, - { RX_PACKET_TYPE_ACK, "ack" }, - { RX_PACKET_TYPE_BUSY, "busy" }, - { RX_PACKET_TYPE_ABORT, "abort" }, - { RX_PACKET_TYPE_ACKALL, "ackall" }, - { RX_PACKET_TYPE_CHALLENGE, "challenge" }, - { RX_PACKET_TYPE_RESPONSE, "response" }, - { RX_PACKET_TYPE_DEBUG, "debug" }, - { RX_PACKET_TYPE_PARAMS, "params" }, - { RX_PACKET_TYPE_VERSION, "version" }, - { 0, NULL }, -}; - -static struct double_tok { - int flag; /* Rx flag */ - int packetType; /* Packet type */ - const char *s; /* Flag string */ -} rx_flags[] = { - { RX_CLIENT_INITIATED, 0, "client-init" }, - { RX_REQUEST_ACK, 0, "req-ack" }, - { RX_LAST_PACKET, 0, "last-pckt" }, - { RX_MORE_PACKETS, 0, "more-pckts" }, - { RX_FREE_PACKET, 0, "free-pckt" }, - { RX_SLOW_START_OK, RX_PACKET_TYPE_ACK, "slow-start" }, - { RX_JUMBO_PACKET, RX_PACKET_TYPE_DATA, "jumbogram" } -}; - -static struct tok fs_req[] = { - { 130, "fetch-data" }, - { 131, "fetch-acl" }, - { 132, "fetch-status" }, - { 133, "store-data" }, - { 134, "store-acl" }, - { 135, "store-status" }, - { 136, "remove-file" }, - { 137, "create-file" }, - { 138, "rename" }, - { 139, "symlink" }, - { 140, "link" }, - { 141, "makedir" }, - { 142, "rmdir" }, - { 143, "oldsetlock" }, - { 144, "oldextlock" }, - { 145, "oldrellock" }, - { 146, "get-stats" }, - { 147, "give-cbs" }, - { 148, "get-vlinfo" }, - { 149, "get-vlstats" }, - { 150, "set-vlstats" }, - { 151, "get-rootvl" }, - { 152, "check-token" }, - { 153, "get-time" }, - { 154, "nget-vlinfo" }, - { 155, "bulk-stat" }, - { 156, "setlock" }, - { 157, "extlock" }, - { 158, "rellock" }, - { 159, "xstat-ver" }, - { 160, "get-xstat" }, - { 161, "dfs-lookup" }, - { 162, "dfs-flushcps" }, - { 163, "dfs-symlink" }, - { 220, "residency" }, - { 0, NULL }, -}; - -static struct tok cb_req[] = { - { 204, "callback" }, - { 205, "initcb" }, - { 206, "probe" }, - { 207, "getlock" }, - { 208, "getce" }, - { 209, "xstatver" }, - { 210, "getxstat" }, - { 211, "initcb2" }, - { 212, "whoareyou" }, - { 213, "initcb3" }, - { 214, "probeuuid" }, - { 215, "getsrvprefs" }, - { 216, "getcellservdb" }, - { 217, "getlocalcell" }, - { 218, "getcacheconf" }, - { 0, NULL }, -}; - -static struct tok pt_req[] = { - { 500, "new-user" }, - { 501, "where-is-it" }, - { 502, "dump-entry" }, - { 503, "add-to-group" }, - { 504, "name-to-id" }, - { 505, "id-to-name" }, - { 506, "delete" }, - { 507, "remove-from-group" }, - { 508, "get-cps" }, - { 509, "new-entry" }, - { 510, "list-max" }, - { 511, "set-max" }, - { 512, "list-entry" }, - { 513, "change-entry" }, - { 514, "list-elements" }, - { 515, "same-mbr-of" }, - { 516, "set-fld-sentry" }, - { 517, "list-owned" }, - { 518, "get-cps2" }, - { 519, "get-host-cps" }, - { 520, "update-entry" }, - { 521, "list-entries" }, - { 0, NULL }, -}; - -static struct tok vldb_req[] = { - { 501, "create-entry" }, - { 502, "delete-entry" }, - { 503, "get-entry-by-id" }, - { 504, "get-entry-by-name" }, - { 505, "get-new-volume-id" }, - { 506, "replace-entry" }, - { 507, "update-entry" }, - { 508, "setlock" }, - { 509, "releaselock" }, - { 510, "list-entry" }, - { 511, "list-attrib" }, - { 512, "linked-list" }, - { 513, "get-stats" }, - { 514, "probe" }, - { 515, "get-addrs" }, - { 516, "change-addr" }, - { 517, "create-entry-n" }, - { 518, "get-entry-by-id-n" }, - { 519, "get-entry-by-name-n" }, - { 520, "replace-entry-n" }, - { 521, "list-entry-n" }, - { 522, "list-attrib-n" }, - { 523, "linked-list-n" }, - { 524, "update-entry-by-name" }, - { 525, "create-entry-u" }, - { 526, "get-entry-by-id-u" }, - { 527, "get-entry-by-name-u" }, - { 528, "replace-entry-u" }, - { 529, "list-entry-u" }, - { 530, "list-attrib-u" }, - { 531, "linked-list-u" }, - { 532, "regaddr" }, - { 533, "get-addrs-u" }, - { 534, "list-attrib-n2" }, - { 0, NULL }, -}; - -static struct tok kauth_req[] = { - { 1, "auth-old" }, - { 21, "authenticate" }, - { 22, "authenticate-v2" }, - { 2, "change-pw" }, - { 3, "get-ticket-old" }, - { 23, "get-ticket" }, - { 4, "set-pw" }, - { 5, "set-fields" }, - { 6, "create-user" }, - { 7, "delete-user" }, - { 8, "get-entry" }, - { 9, "list-entry" }, - { 10, "get-stats" }, - { 11, "debug" }, - { 12, "get-pw" }, - { 13, "get-random-key" }, - { 14, "unlock" }, - { 15, "lock-status" }, - { 0, NULL }, -}; - -static struct tok vol_req[] = { - { 100, "create-volume" }, - { 101, "delete-volume" }, - { 102, "restore" }, - { 103, "forward" }, - { 104, "end-trans" }, - { 105, "clone" }, - { 106, "set-flags" }, - { 107, "get-flags" }, - { 108, "trans-create" }, - { 109, "dump" }, - { 110, "get-nth-volume" }, - { 111, "set-forwarding" }, - { 112, "get-name" }, - { 113, "get-status" }, - { 114, "sig-restore" }, - { 115, "list-partitions" }, - { 116, "list-volumes" }, - { 117, "set-id-types" }, - { 118, "monitor" }, - { 119, "partition-info" }, - { 120, "reclone" }, - { 121, "list-one-volume" }, - { 122, "nuke" }, - { 123, "set-date" }, - { 124, "x-list-volumes" }, - { 125, "x-list-one-volume" }, - { 126, "set-info" }, - { 127, "x-list-partitions" }, - { 128, "forward-multiple" }, - { 0, NULL }, -}; - -static struct tok bos_req[] = { - { 80, "create-bnode" }, - { 81, "delete-bnode" }, - { 82, "set-status" }, - { 83, "get-status" }, - { 84, "enumerate-instance" }, - { 85, "get-instance-info" }, - { 86, "get-instance-parm" }, - { 87, "add-superuser" }, - { 88, "delete-superuser" }, - { 89, "list-superusers" }, - { 90, "list-keys" }, - { 91, "add-key" }, - { 92, "delete-key" }, - { 93, "set-cell-name" }, - { 94, "get-cell-name" }, - { 95, "get-cell-host" }, - { 96, "add-cell-host" }, - { 97, "delete-cell-host" }, - { 98, "set-t-status" }, - { 99, "shutdown-all" }, - { 100, "restart-all" }, - { 101, "startup-all" }, - { 102, "set-noauth-flag" }, - { 103, "re-bozo" }, - { 104, "restart" }, - { 105, "start-bozo-install" }, - { 106, "uninstall" }, - { 107, "get-dates" }, - { 108, "exec" }, - { 109, "prune" }, - { 110, "set-restart-time" }, - { 111, "get-restart-time" }, - { 112, "start-bozo-log" }, - { 113, "wait-all" }, - { 114, "get-instance-strings" }, - { 115, "get-restricted" }, - { 116, "set-restricted" }, - { 0, NULL }, -}; - -static struct tok ubik_req[] = { - { 10000, "vote-beacon" }, - { 10001, "vote-debug-old" }, - { 10002, "vote-sdebug-old" }, - { 10003, "vote-getsyncsite" }, - { 10004, "vote-debug" }, - { 10005, "vote-sdebug" }, - { 20000, "disk-begin" }, - { 20001, "disk-commit" }, - { 20002, "disk-lock" }, - { 20003, "disk-write" }, - { 20004, "disk-getversion" }, - { 20005, "disk-getfile" }, - { 20006, "disk-sendfile" }, - { 20007, "disk-abort" }, - { 20008, "disk-releaselocks" }, - { 20009, "disk-truncate" }, - { 20010, "disk-probe" }, - { 20011, "disk-writev" }, - { 20012, "disk-interfaceaddr" }, - { 20013, "disk-setversion" }, - { 0, NULL }, -}; - -#define VOTE_LOW 10000 -#define VOTE_HIGH 10005 -#define DISK_LOW 20000 -#define DISK_HIGH 20013 - -static struct tok cb_types[] = { - { 1, "exclusive" }, - { 2, "shared" }, - { 3, "dropped" }, - { 0, NULL }, -}; - -static struct tok ubik_lock_types[] = { - { 1, "read" }, - { 2, "write" }, - { 3, "wait" }, - { 0, NULL }, -}; - -static const char *voltype[] = { "read-write", "read-only", "backup" }; - -static struct tok afs_fs_errors[] = { - { 101, "salvage volume" }, - { 102, "no such vnode" }, - { 103, "no such volume" }, - { 104, "volume exist" }, - { 105, "no service" }, - { 106, "volume offline" }, - { 107, "voline online" }, - { 108, "diskfull" }, - { 109, "diskquota exceeded" }, - { 110, "volume busy" }, - { 111, "volume moved" }, - { 112, "AFS IO error" }, - { -100, "restarting fileserver" }, - { 0, NULL } -}; - -/* - * Reasons for acknowledging a packet - */ - -static struct tok rx_ack_reasons[] = { - { 1, "ack requested" }, - { 2, "duplicate packet" }, - { 3, "out of sequence" }, - { 4, "exceeds window" }, - { 5, "no buffer space" }, - { 6, "ping" }, - { 7, "ping response" }, - { 8, "delay" }, - { 9, "idle" }, - { 0, NULL }, -}; - -/* - * Cache entries we keep around so we can figure out the RX opcode - * numbers for replies. This allows us to make sense of RX reply packets. - */ - -struct rx_cache_entry { - u_int32_t callnum; /* Call number (net order) */ - struct in_addr client; /* client IP address (net order) */ - struct in_addr server; /* server IP address (net order) */ - int dport; /* server port (host order) */ - u_short serviceId; /* Service identifier (net order) */ - u_int32_t opcode; /* RX opcode (host order) */ -}; - -#define RX_CACHE_SIZE 64 - -static struct rx_cache_entry rx_cache[RX_CACHE_SIZE]; - -static int rx_cache_next = 0; -static int rx_cache_hint = 0; -static void rx_cache_insert(const u_char *, const struct ip *, int); -static int rx_cache_find(const struct rx_header *, const struct ip *, - int, int32_t *); - -static void fs_print(const u_char *, int); -static void fs_reply_print(const u_char *, int, int32_t); -static void acl_print(u_char *, int, u_char *); -static void cb_print(const u_char *, int); -static void cb_reply_print(const u_char *, int, int32_t); -static void prot_print(const u_char *, int); -static void prot_reply_print(const u_char *, int, int32_t); -static void vldb_print(const u_char *, int); -static void vldb_reply_print(const u_char *, int, int32_t); -static void kauth_print(const u_char *, int); -static void kauth_reply_print(const u_char *, int, int32_t); -static void vol_print(const u_char *, int); -static void vol_reply_print(const u_char *, int, int32_t); -static void bos_print(const u_char *, int); -static void bos_reply_print(const u_char *, int, int32_t); -static void ubik_print(const u_char *); -static void ubik_reply_print(const u_char *, int, int32_t); - -static void rx_ack_print(const u_char *, int); - -static int is_ubik(u_int32_t); - -/* - * Handle the rx-level packet. See if we know what port it's going to so - * we can peek at the afs call inside - */ - -void -rx_print(register const u_char *bp, int length, int sport, int dport, - u_char *bp2) -{ - register struct rx_header *rxh; - int i; - int32_t opcode; - - if (snapend - bp < (int)sizeof (struct rx_header)) { - printf(" [|rx] (%d)", length); - return; - } - - rxh = (struct rx_header *) bp; - - printf(" rx %s", tok2str(rx_types, "type %d", rxh->type)); - - if (vflag) { - int firstflag = 0; - - if (vflag > 1) - printf(" cid %08x call# %d", - (int) EXTRACT_32BITS(&rxh->cid), - (int) EXTRACT_32BITS(&rxh->callNumber)); - - printf(" seq %d ser %d", - (int) EXTRACT_32BITS(&rxh->seq), - (int) EXTRACT_32BITS(&rxh->serial)); - - if (vflag > 2) - printf(" secindex %d serviceid %hu", - (int) rxh->securityIndex, - EXTRACT_16BITS(&rxh->serviceId)); - - if (vflag > 1) - for (i = 0; i < NUM_RX_FLAGS; i++) { - if (rxh->flags & rx_flags[i].flag && - (!rx_flags[i].packetType || - rxh->type == rx_flags[i].packetType)) { - if (!firstflag) { - firstflag = 1; - printf(" "); - } else { - printf(","); - } - printf("<%s>", rx_flags[i].s); - } - } - } - - /* - * Try to handle AFS calls that we know about. Check the destination - * port and make sure it's a data packet. Also, make sure the - * seq number is 1 (because otherwise it's a continuation packet, - * and we can't interpret that). Also, seems that reply packets - * do not have the client-init flag set, so we check for that - * as well. - */ - - if (rxh->type == RX_PACKET_TYPE_DATA && - EXTRACT_32BITS(&rxh->seq) == 1 && - rxh->flags & RX_CLIENT_INITIATED) { - - /* - * Insert this call into the call cache table, so we - * have a chance to print out replies - */ - - rx_cache_insert(bp, (const struct ip *) bp2, dport); - - switch (dport) { - case FS_RX_PORT: /* AFS file service */ - fs_print(bp, length); - break; - case CB_RX_PORT: /* AFS callback service */ - cb_print(bp, length); - break; - case PROT_RX_PORT: /* AFS protection service */ - prot_print(bp, length); - break; - case VLDB_RX_PORT: /* AFS VLDB service */ - vldb_print(bp, length); - break; - case KAUTH_RX_PORT: /* AFS Kerberos auth service */ - kauth_print(bp, length); - break; - case VOL_RX_PORT: /* AFS Volume service */ - vol_print(bp, length); - break; - case BOS_RX_PORT: /* AFS BOS service */ - bos_print(bp, length); - break; - default: - ; - } - - /* - * If it's a reply (client-init is _not_ set, but seq is one) - * then look it up in the cache. If we find it, call the reply - * printing functions Note that we handle abort packets here, - * because printing out the return code can be useful at times. - */ - - } else if (((rxh->type == RX_PACKET_TYPE_DATA && - EXTRACT_32BITS(&rxh->seq) == 1) || - rxh->type == RX_PACKET_TYPE_ABORT) && - (rxh->flags & RX_CLIENT_INITIATED) == 0 && - rx_cache_find(rxh, (const struct ip *) bp2, - sport, &opcode)) { - - switch (sport) { - case FS_RX_PORT: /* AFS file service */ - fs_reply_print(bp, length, opcode); - break; - case CB_RX_PORT: /* AFS callback service */ - cb_reply_print(bp, length, opcode); - break; - case PROT_RX_PORT: /* AFS PT service */ - prot_reply_print(bp, length, opcode); - break; - case VLDB_RX_PORT: /* AFS VLDB service */ - vldb_reply_print(bp, length, opcode); - break; - case KAUTH_RX_PORT: /* AFS Kerberos auth service */ - kauth_reply_print(bp, length, opcode); - break; - case VOL_RX_PORT: /* AFS Volume service */ - vol_reply_print(bp, length, opcode); - break; - case BOS_RX_PORT: /* AFS BOS service */ - bos_reply_print(bp, length, opcode); - break; - default: - ; - } - - /* - * If it's an RX ack packet, then use the appropriate ack decoding - * function (there isn't any service-specific information in the - * ack packet, so we can use one for all AFS services) - */ - - } else if (rxh->type == RX_PACKET_TYPE_ACK) - rx_ack_print(bp, length); - - - printf(" (%d)", length); -} - -/* - * Insert an entry into the cache. Taken from print-nfs.c - */ - -static void -rx_cache_insert(const u_char *bp, const struct ip *ip, int dport) -{ - struct rx_cache_entry *rxent; - const struct rx_header *rxh = (const struct rx_header *) bp; - - if (snapend - bp + 1 <= (int)(sizeof(struct rx_header) + sizeof(int32_t))) - return; - - rxent = &rx_cache[rx_cache_next]; - - if (++rx_cache_next >= RX_CACHE_SIZE) - rx_cache_next = 0; - - rxent->callnum = rxh->callNumber; - rxent->client = ip->ip_src; - rxent->server = ip->ip_dst; - rxent->dport = dport; - rxent->serviceId = rxh->serviceId; - rxent->opcode = EXTRACT_32BITS(bp + sizeof(struct rx_header)); -} - -/* - * Lookup an entry in the cache. Also taken from print-nfs.c - * - * Note that because this is a reply, we're looking at the _source_ - * port. - */ - -static int -rx_cache_find(const struct rx_header *rxh, const struct ip *ip, int sport, - int32_t *opcode) -{ - int i; - struct rx_cache_entry *rxent; - u_int32_t clip = ip->ip_dst.s_addr; - u_int32_t sip = ip->ip_src.s_addr; - - /* Start the search where we last left off */ - - i = rx_cache_hint; - do { - rxent = &rx_cache[i]; - if (rxent->callnum == rxh->callNumber && - rxent->client.s_addr == clip && - rxent->server.s_addr == sip && - rxent->serviceId == rxh->serviceId && - rxent->dport == sport) { - - /* We got a match! */ - - rx_cache_hint = i; - *opcode = rxent->opcode; - return(1); - } - if (++i > RX_CACHE_SIZE) - i = 0; - } while (i != rx_cache_hint); - - /* Our search failed */ - return(0); -} - -/* - * These extrememly grody macros handle the printing of various AFS stuff. - */ - -#define FIDOUT() { unsigned long n1, n2, n3; \ - TCHECK2(bp[0], sizeof(int32_t) * 3); \ - n1 = EXTRACT_32BITS(bp); \ - bp += sizeof(int32_t); \ - n2 = EXTRACT_32BITS(bp); \ - bp += sizeof(int32_t); \ - n3 = EXTRACT_32BITS(bp); \ - bp += sizeof(int32_t); \ - printf(" fid %d/%d/%d", (int) n1, (int) n2, (int) n3); \ - } - -#define STROUT(MAX) { unsigned int i; \ - TCHECK2(bp[0], sizeof(int32_t)); \ - i = EXTRACT_32BITS(bp); \ - if (i > (MAX)) \ - goto trunc; \ - bp += sizeof(int32_t); \ - printf(" \""); \ - if (fn_printn(bp, i, snapend)) \ - goto trunc; \ - printf("\""); \ - bp += ((i + sizeof(int32_t) - 1) / sizeof(int32_t)) * sizeof(int32_t); \ - } - -#define INTOUT() { int i; \ - TCHECK2(bp[0], sizeof(int32_t)); \ - i = (int) EXTRACT_32BITS(bp); \ - bp += sizeof(int32_t); \ - printf(" %d", i); \ - } - -#define UINTOUT() { unsigned long i; \ - TCHECK2(bp[0], sizeof(int32_t)); \ - i = EXTRACT_32BITS(bp); \ - bp += sizeof(int32_t); \ - printf(" %lu", i); \ - } - -#define DATEOUT() { time_t t; struct tm *tm; char str[256]; \ - TCHECK2(bp[0], sizeof(int32_t)); \ - t = (time_t) EXTRACT_32BITS(bp); \ - bp += sizeof(int32_t); \ - tm = localtime(&t); \ - strftime(str, 256, "%Y/%m/%d %T", tm); \ - printf(" %s", str); \ - } - -#define STOREATTROUT() { unsigned long mask, i; \ - TCHECK2(bp[0], (sizeof(int32_t)*6)); \ - mask = EXTRACT_32BITS(bp); bp += sizeof(int32_t); \ - if (mask) printf (" StoreStatus"); \ - if (mask & 1) { printf(" date"); DATEOUT(); } \ - else bp += sizeof(int32_t); \ - i = EXTRACT_32BITS(bp); bp += sizeof(int32_t); \ - if (mask & 2) printf(" owner %lu", i); \ - i = EXTRACT_32BITS(bp); bp += sizeof(int32_t); \ - if (mask & 4) printf(" group %lu", i); \ - i = EXTRACT_32BITS(bp); bp += sizeof(int32_t); \ - if (mask & 8) printf(" mode %lo", i & 07777); \ - i = EXTRACT_32BITS(bp); bp += sizeof(int32_t); \ - if (mask & 16) printf(" segsize %lu", i); \ - /* undocumented in 3.3 docu */ \ - if (mask & 1024) printf(" fsync"); \ - } - -#define UBIK_VERSIONOUT() {int32_t epoch; int32_t counter; \ - TCHECK2(bp[0], sizeof(int32_t) * 2); \ - epoch = EXTRACT_32BITS(bp); \ - bp += sizeof(int32_t); \ - counter = EXTRACT_32BITS(bp); \ - bp += sizeof(int32_t); \ - printf(" %d.%d", epoch, counter); \ - } - -#define AFSUUIDOUT() {u_int32_t temp; int i; \ - TCHECK2(bp[0], 11*sizeof(u_int32_t)); \ - temp = EXTRACT_32BITS(bp); \ - bp += sizeof(u_int32_t); \ - printf(" %08x", temp); \ - temp = EXTRACT_32BITS(bp); \ - bp += sizeof(u_int32_t); \ - printf("%04x", temp); \ - temp = EXTRACT_32BITS(bp); \ - bp += sizeof(u_int32_t); \ - printf("%04x", temp); \ - for (i = 0; i < 8; i++) { \ - temp = EXTRACT_32BITS(bp); \ - bp += sizeof(u_int32_t); \ - printf("%02x", (unsigned char) temp); \ - } \ - } - -/* - * This is the sickest one of all - */ - -#define VECOUT(MAX) { u_char *sp; \ - u_char s[AFSNAMEMAX]; \ - int k; \ - if ((MAX) + 1 > sizeof(s)) \ - goto trunc; \ - TCHECK2(bp[0], (MAX) * sizeof(int32_t)); \ - sp = s; \ - for (k = 0; k < (MAX); k++) { \ - *sp++ = (u_char) EXTRACT_32BITS(bp); \ - bp += sizeof(int32_t); \ - } \ - s[(MAX)] = '\0'; \ - printf(" \""); \ - fn_print(s, NULL); \ - printf("\""); \ - } - -/* - * Handle calls to the AFS file service (fs) - */ - -static void -fs_print(register const u_char *bp, int length) -{ - int fs_op; - unsigned long i; - - if (length <= (int)sizeof(struct rx_header)) - return; - - if (snapend - bp + 1 <= (int)(sizeof(struct rx_header) + sizeof(int32_t))) { - goto trunc; - } - - /* - * Print out the afs call we're invoking. The table used here was - * gleaned from fsint/afsint.xg - */ - - fs_op = EXTRACT_32BITS(bp + sizeof(struct rx_header)); - - printf(" fs call %s", tok2str(fs_req, "op#%d", fs_op)); - - /* - * Print out arguments to some of the AFS calls. This stuff is - * all from afsint.xg - */ - - bp += sizeof(struct rx_header) + 4; - - /* - * Sigh. This is gross. Ritchie forgive me. - */ - - switch (fs_op) { - case 130: /* Fetch data */ - FIDOUT(); - printf(" offset"); - UINTOUT(); - printf(" length"); - UINTOUT(); - break; - case 131: /* Fetch ACL */ - case 132: /* Fetch Status */ - case 143: /* Old set lock */ - case 144: /* Old extend lock */ - case 145: /* Old release lock */ - case 156: /* Set lock */ - case 157: /* Extend lock */ - case 158: /* Release lock */ - FIDOUT(); - break; - case 135: /* Store status */ - FIDOUT(); - STOREATTROUT(); - break; - case 133: /* Store data */ - FIDOUT(); - STOREATTROUT(); - printf(" offset"); - UINTOUT(); - printf(" length"); - UINTOUT(); - printf(" flen"); - UINTOUT(); - break; - case 134: /* Store ACL */ - { - char a[AFSOPAQUEMAX+1]; - FIDOUT(); - TCHECK2(bp[0], 4); - i = EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - TCHECK2(bp[0], i); - i = min(AFSOPAQUEMAX, i); - strncpy(a, (char *) bp, i); - a[i] = '\0'; - acl_print((u_char *) a, sizeof(a), (u_char *) a + i); - break; - } - case 137: /* Create file */ - case 141: /* MakeDir */ - FIDOUT(); - STROUT(AFSNAMEMAX); - STOREATTROUT(); - break; - case 136: /* Remove file */ - case 142: /* Remove directory */ - FIDOUT(); - STROUT(AFSNAMEMAX); - break; - case 138: /* Rename file */ - printf(" old"); - FIDOUT(); - STROUT(AFSNAMEMAX); - printf(" new"); - FIDOUT(); - STROUT(AFSNAMEMAX); - break; - case 139: /* Symlink */ - FIDOUT(); - STROUT(AFSNAMEMAX); - printf(" link to"); - STROUT(AFSNAMEMAX); - break; - case 140: /* Link */ - FIDOUT(); - STROUT(AFSNAMEMAX); - printf(" link to"); - FIDOUT(); - break; - case 148: /* Get volume info */ - STROUT(AFSNAMEMAX); - break; - case 149: /* Get volume stats */ - case 150: /* Set volume stats */ - printf(" volid"); - UINTOUT(); - break; - case 154: /* New get volume info */ - printf(" volname"); - STROUT(AFSNAMEMAX); - break; - case 155: /* Bulk stat */ - { - unsigned long j; - TCHECK2(bp[0], 4); - j = EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - - for (i = 0; i < j; i++) { - FIDOUT(); - if (i != j - 1) - printf(","); - } - if (j == 0) - printf(" <none!>"); - } - default: - ; - } - - return; - -trunc: - printf(" [|fs]"); -} - -/* - * Handle replies to the AFS file service - */ - -static void -fs_reply_print(register const u_char *bp, int length, int32_t opcode) -{ - unsigned long i; - struct rx_header *rxh; - - if (length <= (int)sizeof(struct rx_header)) - return; - - rxh = (struct rx_header *) bp; - - /* - * Print out the afs call we're invoking. The table used here was - * gleaned from fsint/afsint.xg - */ - - printf(" fs reply %s", tok2str(fs_req, "op#%d", opcode)); - - bp += sizeof(struct rx_header); - - /* - * If it was a data packet, interpret the response - */ - - if (rxh->type == RX_PACKET_TYPE_DATA) { - switch (opcode) { - case 131: /* Fetch ACL */ - { - char a[AFSOPAQUEMAX+1]; - TCHECK2(bp[0], 4); - i = EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - TCHECK2(bp[0], i); - i = min(AFSOPAQUEMAX, i); - strncpy(a, (char *) bp, i); - a[i] = '\0'; - acl_print((u_char *) a, sizeof(a), (u_char *) a + i); - break; - } - case 137: /* Create file */ - case 141: /* MakeDir */ - printf(" new"); - FIDOUT(); - break; - case 151: /* Get root volume */ - printf(" root volume"); - STROUT(AFSNAMEMAX); - break; - case 153: /* Get time */ - DATEOUT(); - break; - default: - ; - } - } else if (rxh->type == RX_PACKET_TYPE_ABORT) { - int i; - - /* - * Otherwise, just print out the return code - */ - TCHECK2(bp[0], sizeof(int32_t)); - i = (int) EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - - printf(" error %s", tok2str(afs_fs_errors, "#%d", i)); - } else { - printf(" strange fs reply of type %d", rxh->type); - } - - return; - -trunc: - printf(" [|fs]"); -} - -/* - * Print out an AFS ACL string. An AFS ACL is a string that has the - * following format: - * - * <positive> <negative> - * <uid1> <aclbits1> - * .... - * - * "positive" and "negative" are integers which contain the number of - * positive and negative ACL's in the string. The uid/aclbits pair are - * ASCII strings containing the UID/PTS record and and a ascii number - * representing a logical OR of all the ACL permission bits - */ - -static void -acl_print(u_char *s, int maxsize, u_char *end) -{ - int pos, neg, acl; - int n, i; - char *user; - - if ((user = (char *)malloc(maxsize)) == NULL) - return; - - if (sscanf((char *) s, "%d %d\n%n", &pos, &neg, &n) != 2) - goto finish; - - s += n; - - if (s > end) - goto finish; - - /* - * This wacky order preserves the order used by the "fs" command - */ - -#define ACLOUT(acl) \ - if (acl & PRSFS_READ) \ - printf("r"); \ - if (acl & PRSFS_LOOKUP) \ - printf("l"); \ - if (acl & PRSFS_INSERT) \ - printf("i"); \ - if (acl & PRSFS_DELETE) \ - printf("d"); \ - if (acl & PRSFS_WRITE) \ - printf("w"); \ - if (acl & PRSFS_LOCK) \ - printf("k"); \ - if (acl & PRSFS_ADMINISTER) \ - printf("a"); - - for (i = 0; i < pos; i++) { - if (sscanf((char *) s, "%s %d\n%n", user, &acl, &n) != 2) - goto finish; - s += n; - printf(" +{"); - fn_print((u_char *)user, NULL); - printf(" "); - ACLOUT(acl); - printf("}"); - if (s > end) - goto finish; - } - - for (i = 0; i < neg; i++) { - if (sscanf((char *) s, "%s %d\n%n", user, &acl, &n) != 2) - goto finish; - s += n; - printf(" -{"); - fn_print((u_char *)user, NULL); - printf(" "); - ACLOUT(acl); - printf("}"); - if (s > end) - goto finish; - } - -finish: - free(user); - return; -} - -#undef ACLOUT - -/* - * Handle calls to the AFS callback service - */ - -static void -cb_print(register const u_char *bp, int length) -{ - int cb_op; - unsigned long i; - - if (length <= (int)sizeof(struct rx_header)) - return; - - if (snapend - bp + 1 <= (int)(sizeof(struct rx_header) + sizeof(int32_t))) { - goto trunc; - } - - /* - * Print out the afs call we're invoking. The table used here was - * gleaned from fsint/afscbint.xg - */ - - cb_op = EXTRACT_32BITS(bp + sizeof(struct rx_header)); - - printf(" cb call %s", tok2str(cb_req, "op#%d", cb_op)); - - bp += sizeof(struct rx_header) + 4; - - /* - * Print out the afs call we're invoking. The table used here was - * gleaned from fsint/afscbint.xg - */ - - switch (cb_op) { - case 204: /* Callback */ - { - unsigned long j, t; - TCHECK2(bp[0], 4); - j = EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - - for (i = 0; i < j; i++) { - FIDOUT(); - if (i != j - 1) - printf(","); - } - - if (j == 0) - printf(" <none!>"); - - j = EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - - if (j != 0) - printf(";"); - - for (i = 0; i < j; i++) { - printf(" ver"); - INTOUT(); - printf(" expires"); - DATEOUT(); - TCHECK2(bp[0], 4); - t = EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - tok2str(cb_types, "type %d", t); - } - } - case 214: { - printf(" afsuuid"); - AFSUUIDOUT(); - break; - } - default: - ; - } - - return; - -trunc: - printf(" [|cb]"); -} - -/* - * Handle replies to the AFS Callback Service - */ - -static void -cb_reply_print(register const u_char *bp, int length, int32_t opcode) -{ - struct rx_header *rxh; - - if (length <= (int)sizeof(struct rx_header)) - return; - - rxh = (struct rx_header *) bp; - - /* - * Print out the afs call we're invoking. The table used here was - * gleaned from fsint/afscbint.xg - */ - - printf(" cb reply %s", tok2str(cb_req, "op#%d", opcode)); - - bp += sizeof(struct rx_header); - - /* - * If it was a data packet, interpret the response. - */ - - if (rxh->type == RX_PACKET_TYPE_DATA) - switch (opcode) { - case 213: /* InitCallBackState3 */ - AFSUUIDOUT(); - break; - default: - ; - } - else { - /* - * Otherwise, just print out the return code - */ - printf(" errcode"); - INTOUT(); - } - - return; - -trunc: - printf(" [|cb]"); -} - -/* - * Handle calls to the AFS protection database server - */ - -static void -prot_print(register const u_char *bp, int length) -{ - unsigned long i; - int pt_op; - - if (length <= (int)sizeof(struct rx_header)) - return; - - if (snapend - bp + 1 <= (int)(sizeof(struct rx_header) + sizeof(int32_t))) { - goto trunc; - } - - /* - * Print out the afs call we're invoking. The table used here was - * gleaned from ptserver/ptint.xg - */ - - pt_op = EXTRACT_32BITS(bp + sizeof(struct rx_header)); - - printf(" pt"); - - if (is_ubik(pt_op)) { - ubik_print(bp); - return; - } - - printf(" call %s", tok2str(pt_req, "op#%d", pt_op)); - - /* - * Decode some of the arguments to the PT calls - */ - - bp += sizeof(struct rx_header) + 4; - - switch (pt_op) { - case 500: /* I New User */ - STROUT(PRNAMEMAX); - printf(" id"); - INTOUT(); - printf(" oldid"); - INTOUT(); - break; - case 501: /* Where is it */ - case 506: /* Delete */ - case 508: /* Get CPS */ - case 512: /* List entry */ - case 514: /* List elements */ - case 517: /* List owned */ - case 518: /* Get CPS2 */ - case 519: /* Get host CPS */ - printf(" id"); - INTOUT(); - break; - case 502: /* Dump entry */ - printf(" pos"); - INTOUT(); - break; - case 503: /* Add to group */ - case 507: /* Remove from group */ - case 515: /* Is a member of? */ - printf(" uid"); - INTOUT(); - printf(" gid"); - INTOUT(); - break; - case 504: /* Name to ID */ - { - unsigned long j; - TCHECK2(bp[0], 4); - j = EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - - /* - * Who designed this chicken-shit protocol? - * - * Each character is stored as a 32-bit - * integer! - */ - - for (i = 0; i < j; i++) { - VECOUT(PRNAMEMAX); - } - if (j == 0) - printf(" <none!>"); - } - break; - case 505: /* Id to name */ - { - unsigned long j; - printf(" ids:"); - TCHECK2(bp[0], 4); - i = EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - for (j = 0; j < i; j++) - INTOUT(); - if (j == 0) - printf(" <none!>"); - } - break; - case 509: /* New entry */ - STROUT(PRNAMEMAX); - printf(" flag"); - INTOUT(); - printf(" oid"); - INTOUT(); - break; - case 511: /* Set max */ - printf(" id"); - INTOUT(); - printf(" gflag"); - INTOUT(); - break; - case 513: /* Change entry */ - printf(" id"); - INTOUT(); - STROUT(PRNAMEMAX); - printf(" oldid"); - INTOUT(); - printf(" newid"); - INTOUT(); - break; - case 520: /* Update entry */ - printf(" id"); - INTOUT(); - STROUT(PRNAMEMAX); - break; - default: - ; - } - - - return; - -trunc: - printf(" [|pt]"); -} - -/* - * Handle replies to the AFS protection service - */ - -static void -prot_reply_print(register const u_char *bp, int length, int32_t opcode) -{ - struct rx_header *rxh; - unsigned long i; - - if (length < (int)sizeof(struct rx_header)) - return; - - rxh = (struct rx_header *) bp; - - /* - * Print out the afs call we're invoking. The table used here was - * gleaned from ptserver/ptint.xg. Check to see if it's a - * Ubik call, however. - */ - - printf(" pt"); - - if (is_ubik(opcode)) { - ubik_reply_print(bp, length, opcode); - return; - } - - printf(" reply %s", tok2str(pt_req, "op#%d", opcode)); - - bp += sizeof(struct rx_header); - - /* - * If it was a data packet, interpret the response - */ - - if (rxh->type == RX_PACKET_TYPE_DATA) - switch (opcode) { - case 504: /* Name to ID */ - { - unsigned long j; - printf(" ids:"); - TCHECK2(bp[0], 4); - i = EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - for (j = 0; j < i; j++) - INTOUT(); - if (j == 0) - printf(" <none!>"); - } - break; - case 505: /* ID to name */ - { - unsigned long j; - TCHECK2(bp[0], 4); - j = EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - - /* - * Who designed this chicken-shit protocol? - * - * Each character is stored as a 32-bit - * integer! - */ - - for (i = 0; i < j; i++) { - VECOUT(PRNAMEMAX); - } - if (j == 0) - printf(" <none!>"); - } - break; - case 508: /* Get CPS */ - case 514: /* List elements */ - case 517: /* List owned */ - case 518: /* Get CPS2 */ - case 519: /* Get host CPS */ - { - unsigned long j; - TCHECK2(bp[0], 4); - j = EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - for (i = 0; i < j; i++) { - INTOUT(); - } - if (j == 0) - printf(" <none!>"); - } - break; - case 510: /* List max */ - printf(" maxuid"); - INTOUT(); - printf(" maxgid"); - INTOUT(); - break; - default: - ; - } - else { - /* - * Otherwise, just print out the return code - */ - printf(" errcode"); - INTOUT(); - } - - return; - -trunc: - printf(" [|pt]"); -} - -/* - * Handle calls to the AFS volume location database service - */ - -static void -vldb_print(register const u_char *bp, int length) -{ - int vldb_op; - unsigned long i; - - if (length <= (int)sizeof(struct rx_header)) - return; - - if (snapend - bp + 1 <= (int)(sizeof(struct rx_header) + sizeof(int32_t))) { - goto trunc; - } - - /* - * Print out the afs call we're invoking. The table used here was - * gleaned from vlserver/vldbint.xg - */ - - vldb_op = EXTRACT_32BITS(bp + sizeof(struct rx_header)); - - printf(" vldb"); - - if (is_ubik(vldb_op)) { - ubik_print(bp); - return; - } - printf(" call %s", tok2str(vldb_req, "op#%d", vldb_op)); - - /* - * Decode some of the arguments to the VLDB calls - */ - - bp += sizeof(struct rx_header) + 4; - - switch (vldb_op) { - case 501: /* Create new volume */ - case 517: /* Create entry N */ - VECOUT(VLNAMEMAX); - break; - case 502: /* Delete entry */ - case 503: /* Get entry by ID */ - case 507: /* Update entry */ - case 508: /* Set lock */ - case 509: /* Release lock */ - case 518: /* Get entry by ID N */ - printf(" volid"); - INTOUT(); - TCHECK2(bp[0], sizeof(int32_t)); - i = EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - if (i <= 2) - printf(" type %s", voltype[i]); - break; - case 504: /* Get entry by name */ - case 519: /* Get entry by name N */ - case 524: /* Update entry by name */ - case 527: /* Get entry by name U */ - STROUT(VLNAMEMAX); - break; - case 505: /* Get new vol id */ - printf(" bump"); - INTOUT(); - break; - case 506: /* Replace entry */ - case 520: /* Replace entry N */ - printf(" volid"); - INTOUT(); - TCHECK2(bp[0], sizeof(int32_t)); - i = EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - if (i <= 2) - printf(" type %s", voltype[i]); - VECOUT(VLNAMEMAX); - break; - case 510: /* List entry */ - case 521: /* List entry N */ - printf(" index"); - INTOUT(); - break; - default: - ; - } - - return; - -trunc: - printf(" [|vldb]"); -} - -/* - * Handle replies to the AFS volume location database service - */ - -static void -vldb_reply_print(register const u_char *bp, int length, int32_t opcode) -{ - struct rx_header *rxh; - unsigned long i; - - if (length < (int)sizeof(struct rx_header)) - return; - - rxh = (struct rx_header *) bp; - - /* - * Print out the afs call we're invoking. The table used here was - * gleaned from vlserver/vldbint.xg. Check to see if it's a - * Ubik call, however. - */ - - printf(" vldb"); - - if (is_ubik(opcode)) { - ubik_reply_print(bp, length, opcode); - return; - } - - printf(" reply %s", tok2str(vldb_req, "op#%d", opcode)); - - bp += sizeof(struct rx_header); - - /* - * If it was a data packet, interpret the response - */ - - if (rxh->type == RX_PACKET_TYPE_DATA) - switch (opcode) { - case 510: /* List entry */ - printf(" count"); - INTOUT(); - printf(" nextindex"); - INTOUT(); - case 503: /* Get entry by id */ - case 504: /* Get entry by name */ - { unsigned long nservers, j; - VECOUT(VLNAMEMAX); - TCHECK2(bp[0], sizeof(int32_t)); - bp += sizeof(int32_t); - printf(" numservers"); - TCHECK2(bp[0], sizeof(int32_t)); - nservers = EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - printf(" %lu", nservers); - printf(" servers"); - for (i = 0; i < 8; i++) { - TCHECK2(bp[0], sizeof(int32_t)); - if (i < nservers) - printf(" %s", - intoa(((struct in_addr *) bp)->s_addr)); - bp += sizeof(int32_t); - } - printf(" partitions"); - for (i = 0; i < 8; i++) { - TCHECK2(bp[0], sizeof(int32_t)); - j = EXTRACT_32BITS(bp); - if (i < nservers && j <= 26) - printf(" %c", 'a' + (int)j); - else if (i < nservers) - printf(" %lu", j); - bp += sizeof(int32_t); - } - TCHECK2(bp[0], 8 * sizeof(int32_t)); - bp += 8 * sizeof(int32_t); - printf(" rwvol"); - UINTOUT(); - printf(" rovol"); - UINTOUT(); - printf(" backup"); - UINTOUT(); - } - break; - case 505: /* Get new volume ID */ - printf(" newvol"); - UINTOUT(); - break; - case 521: /* List entry */ - case 529: /* List entry U */ - printf(" count"); - INTOUT(); - printf(" nextindex"); - INTOUT(); - case 518: /* Get entry by ID N */ - case 519: /* Get entry by name N */ - { unsigned long nservers, j; - VECOUT(VLNAMEMAX); - printf(" numservers"); - TCHECK2(bp[0], sizeof(int32_t)); - nservers = EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - printf(" %lu", nservers); - printf(" servers"); - for (i = 0; i < 13; i++) { - TCHECK2(bp[0], sizeof(int32_t)); - if (i < nservers) - printf(" %s", - intoa(((struct in_addr *) bp)->s_addr)); - bp += sizeof(int32_t); - } - printf(" partitions"); - for (i = 0; i < 13; i++) { - TCHECK2(bp[0], sizeof(int32_t)); - j = EXTRACT_32BITS(bp); - if (i < nservers && j <= 26) - printf(" %c", 'a' + (int)j); - else if (i < nservers) - printf(" %lu", j); - bp += sizeof(int32_t); - } - TCHECK2(bp[0], 13 * sizeof(int32_t)); - bp += 13 * sizeof(int32_t); - printf(" rwvol"); - UINTOUT(); - printf(" rovol"); - UINTOUT(); - printf(" backup"); - UINTOUT(); - } - break; - case 526: /* Get entry by ID U */ - case 527: /* Get entry by name U */ - { unsigned long nservers, j; - VECOUT(VLNAMEMAX); - printf(" numservers"); - TCHECK2(bp[0], sizeof(int32_t)); - nservers = EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - printf(" %lu", nservers); - printf(" servers"); - for (i = 0; i < 13; i++) { - if (i < nservers) { - printf(" afsuuid"); - AFSUUIDOUT(); - } else { - TCHECK2(bp[0], 44); - bp += 44; - } - } - TCHECK2(bp[0], 4 * 13); - bp += 4 * 13; - printf(" partitions"); - for (i = 0; i < 13; i++) { - TCHECK2(bp[0], sizeof(int32_t)); - j = EXTRACT_32BITS(bp); - if (i < nservers && j <= 26) - printf(" %c", 'a' + (int)j); - else if (i < nservers) - printf(" %lu", j); - bp += sizeof(int32_t); - } - TCHECK2(bp[0], 13 * sizeof(int32_t)); - bp += 13 * sizeof(int32_t); - printf(" rwvol"); - UINTOUT(); - printf(" rovol"); - UINTOUT(); - printf(" backup"); - UINTOUT(); - } - default: - ; - } - - else { - /* - * Otherwise, just print out the return code - */ - printf(" errcode"); - INTOUT(); - } - - return; - -trunc: - printf(" [|vldb]"); -} - -/* - * Handle calls to the AFS Kerberos Authentication service - */ - -static void -kauth_print(register const u_char *bp, int length) -{ - int kauth_op; - - if (length <= (int)sizeof(struct rx_header)) - return; - - if (snapend - bp + 1 <= (int)(sizeof(struct rx_header) + sizeof(int32_t))) { - goto trunc; - } - - /* - * Print out the afs call we're invoking. The table used here was - * gleaned from kauth/kauth.rg - */ - - kauth_op = EXTRACT_32BITS(bp + sizeof(struct rx_header)); - - printf(" kauth"); - - if (is_ubik(kauth_op)) { - ubik_print(bp); - return; - } - - - printf(" call %s", tok2str(kauth_req, "op#%d", kauth_op)); - - /* - * Decode some of the arguments to the KA calls - */ - - bp += sizeof(struct rx_header) + 4; - - switch (kauth_op) { - case 1: /* Authenticate old */; - case 21: /* Authenticate */ - case 22: /* Authenticate-V2 */ - case 2: /* Change PW */ - case 5: /* Set fields */ - case 6: /* Create user */ - case 7: /* Delete user */ - case 8: /* Get entry */ - case 14: /* Unlock */ - case 15: /* Lock status */ - printf(" principal"); - STROUT(KANAMEMAX); - STROUT(KANAMEMAX); - break; - case 3: /* GetTicket-old */ - case 23: /* GetTicket */ - { - int i; - printf(" kvno"); - INTOUT(); - printf(" domain"); - STROUT(KANAMEMAX); - TCHECK2(bp[0], sizeof(int32_t)); - i = (int) EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - TCHECK2(bp[0], i); - bp += i; - printf(" principal"); - STROUT(KANAMEMAX); - STROUT(KANAMEMAX); - break; - } - case 4: /* Set Password */ - printf(" principal"); - STROUT(KANAMEMAX); - STROUT(KANAMEMAX); - printf(" kvno"); - INTOUT(); - break; - case 12: /* Get password */ - printf(" name"); - STROUT(KANAMEMAX); - break; - default: - ; - } - - return; - -trunc: - printf(" [|kauth]"); -} - -/* - * Handle replies to the AFS Kerberos Authentication Service - */ - -static void -kauth_reply_print(register const u_char *bp, int length, int32_t opcode) -{ - struct rx_header *rxh; - - if (length <= (int)sizeof(struct rx_header)) - return; - - rxh = (struct rx_header *) bp; - - /* - * Print out the afs call we're invoking. The table used here was - * gleaned from kauth/kauth.rg - */ - - printf(" kauth"); - - if (is_ubik(opcode)) { - ubik_reply_print(bp, length, opcode); - return; - } - - printf(" reply %s", tok2str(kauth_req, "op#%d", opcode)); - - bp += sizeof(struct rx_header); - - /* - * If it was a data packet, interpret the response. - */ - - if (rxh->type == RX_PACKET_TYPE_DATA) - /* Well, no, not really. Leave this for later */ - ; - else { - /* - * Otherwise, just print out the return code - */ - printf(" errcode"); - INTOUT(); - } - - return; - -trunc: - printf(" [|kauth]"); -} - -/* - * Handle calls to the AFS Volume location service - */ - -static void -vol_print(register const u_char *bp, int length) -{ - int vol_op; - - if (length <= (int)sizeof(struct rx_header)) - return; - - if (snapend - bp + 1 <= (int)(sizeof(struct rx_header) + sizeof(int32_t))) { - goto trunc; - } - - /* - * Print out the afs call we're invoking. The table used here was - * gleaned from volser/volint.xg - */ - - vol_op = EXTRACT_32BITS(bp + sizeof(struct rx_header)); - - printf(" vol call %s", tok2str(vol_req, "op#%d", vol_op)); - - /* - * Normally there would be a switch statement here to decode the - * arguments to the AFS call, but since I don't have access to - * an AFS server (yet) and I'm not an AFS admin, I can't - * test any of these calls. Leave this blank for now. - */ - - return; - -trunc: - printf(" [|vol]"); -} - -/* - * Handle replies to the AFS Volume Service - */ - -static void -vol_reply_print(register const u_char *bp, int length, int32_t opcode) -{ - struct rx_header *rxh; - - if (length <= (int)sizeof(struct rx_header)) - return; - - rxh = (struct rx_header *) bp; - - /* - * Print out the afs call we're invoking. The table used here was - * gleaned from volser/volint.xg - */ - - printf(" vol reply %s", tok2str(vol_req, "op#%d", opcode)); - - bp += sizeof(struct rx_header); - - /* - * If it was a data packet, interpret the response. - */ - - if (rxh->type == RX_PACKET_TYPE_DATA) - /* Well, no, not really. Leave this for later */ - ; - else { - /* - * Otherwise, just print out the return code - */ - printf(" errcode"); - INTOUT(); - } - - return; - -trunc: - printf(" [|vol]"); -} - -/* - * Handle calls to the AFS BOS service - */ - -static void -bos_print(register const u_char *bp, int length) -{ - int bos_op; - - if (length <= (int)sizeof(struct rx_header)) - return; - - if (snapend - bp + 1 <= (int)(sizeof(struct rx_header) + sizeof(int32_t))) { - goto trunc; - } - - /* - * Print out the afs call we're invoking. The table used here was - * gleaned from bozo/bosint.xg - */ - - bos_op = EXTRACT_32BITS(bp + sizeof(struct rx_header)); - - printf(" bos call %s", tok2str(bos_req, "op#%d", bos_op)); - - /* - * Decode some of the arguments to the BOS calls - */ - - bp += sizeof(struct rx_header) + 4; - - switch (bos_op) { - case 80: /* Create B node */ - printf(" type"); - STROUT(BOSNAMEMAX); - printf(" instance"); - STROUT(BOSNAMEMAX); - break; - case 81: /* Delete B node */ - case 83: /* Get status */ - case 85: /* Get instance info */ - case 87: /* Add super user */ - case 88: /* Delete super user */ - case 93: /* Set cell name */ - case 96: /* Add cell host */ - case 97: /* Delete cell host */ - case 104: /* Restart */ - case 106: /* Uninstall */ - case 108: /* Exec */ - case 112: /* Getlog */ - case 114: /* Get instance strings */ - STROUT(BOSNAMEMAX); - break; - case 82: /* Set status */ - case 98: /* Set T status */ - STROUT(BOSNAMEMAX); - printf(" status"); - INTOUT(); - break; - case 86: /* Get instance parm */ - STROUT(BOSNAMEMAX); - printf(" num"); - INTOUT(); - break; - case 84: /* Enumerate instance */ - case 89: /* List super users */ - case 90: /* List keys */ - case 91: /* Add key */ - case 92: /* Delete key */ - case 95: /* Get cell host */ - INTOUT(); - break; - case 105: /* Install */ - STROUT(BOSNAMEMAX); - printf(" size"); - INTOUT(); - printf(" flags"); - INTOUT(); - printf(" date"); - INTOUT(); - break; - default: - ; - } - - return; - -trunc: - printf(" [|bos]"); -} - -/* - * Handle replies to the AFS BOS Service - */ - -static void -bos_reply_print(register const u_char *bp, int length, int32_t opcode) -{ - struct rx_header *rxh; - - if (length <= (int)sizeof(struct rx_header)) - return; - - rxh = (struct rx_header *) bp; - - /* - * Print out the afs call we're invoking. The table used here was - * gleaned from volser/volint.xg - */ - - printf(" bos reply %s", tok2str(bos_req, "op#%d", opcode)); - - bp += sizeof(struct rx_header); - - /* - * If it was a data packet, interpret the response. - */ - - if (rxh->type == RX_PACKET_TYPE_DATA) - /* Well, no, not really. Leave this for later */ - ; - else { - /* - * Otherwise, just print out the return code - */ - printf(" errcode"); - INTOUT(); - } - - return; - -trunc: - printf(" [|bos]"); -} - -/* - * Check to see if this is a Ubik opcode. - */ - -static int -is_ubik(u_int32_t opcode) -{ - if ((opcode >= VOTE_LOW && opcode <= VOTE_HIGH) || - (opcode >= DISK_LOW && opcode <= DISK_HIGH)) - return(1); - else - return(0); -} - -/* - * Handle Ubik opcodes to any one of the replicated database services - */ - -static void -ubik_print(register const u_char *bp) -{ - int ubik_op; - int32_t temp; - - /* - * Print out the afs call we're invoking. The table used here was - * gleaned from ubik/ubik_int.xg - */ - - ubik_op = EXTRACT_32BITS(bp + sizeof(struct rx_header)); - - printf(" ubik call %s", tok2str(ubik_req, "op#%d", ubik_op)); - - /* - * Decode some of the arguments to the Ubik calls - */ - - bp += sizeof(struct rx_header) + 4; - - switch (ubik_op) { - case 10000: /* Beacon */ - TCHECK2(bp[0], 4); - temp = EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - printf(" syncsite %s", temp ? "yes" : "no"); - printf(" votestart"); - DATEOUT(); - printf(" dbversion"); - UBIK_VERSIONOUT(); - printf(" tid"); - UBIK_VERSIONOUT(); - break; - case 10003: /* Get sync site */ - printf(" site"); - UINTOUT(); - break; - case 20000: /* Begin */ - case 20001: /* Commit */ - case 20007: /* Abort */ - case 20008: /* Release locks */ - case 20010: /* Writev */ - printf(" tid"); - UBIK_VERSIONOUT(); - break; - case 20002: /* Lock */ - printf(" tid"); - UBIK_VERSIONOUT(); - printf(" file"); - INTOUT(); - printf(" pos"); - INTOUT(); - printf(" length"); - INTOUT(); - temp = EXTRACT_32BITS(bp); - bp += sizeof(int32_t); - tok2str(ubik_lock_types, "type %d", temp); - break; - case 20003: /* Write */ - printf(" tid"); - UBIK_VERSIONOUT(); - printf(" file"); - INTOUT(); - printf(" pos"); - INTOUT(); - break; - case 20005: /* Get file */ - printf(" file"); - INTOUT(); - break; - case 20006: /* Send file */ - printf(" file"); - INTOUT(); - printf(" length"); - INTOUT(); - printf(" dbversion"); - UBIK_VERSIONOUT(); - break; - case 20009: /* Truncate */ - printf(" tid"); - UBIK_VERSIONOUT(); - printf(" file"); - INTOUT(); - printf(" length"); - INTOUT(); - break; - case 20012: /* Set version */ - printf(" tid"); - UBIK_VERSIONOUT(); - printf(" oldversion"); - UBIK_VERSIONOUT(); - printf(" newversion"); - UBIK_VERSIONOUT(); - break; - default: - ; - } - - return; - -trunc: - printf(" [|ubik]"); -} - -/* - * Handle Ubik replies to any one of the replicated database services - */ - -static void -ubik_reply_print(register const u_char *bp, int length, int32_t opcode) -{ - struct rx_header *rxh; - - if (length < (int)sizeof(struct rx_header)) - return; - - rxh = (struct rx_header *) bp; - - /* - * Print out the ubik call we're invoking. This table was gleaned - * from ubik/ubik_int.xg - */ - - printf(" ubik reply %s", tok2str(ubik_req, "op#%d", opcode)); - - bp += sizeof(struct rx_header); - - /* - * If it was a data packet, print out the arguments to the Ubik calls - */ - - if (rxh->type == RX_PACKET_TYPE_DATA) - switch (opcode) { - case 10000: /* Beacon */ - printf(" vote no"); - break; - case 20004: /* Get version */ - printf(" dbversion"); - UBIK_VERSIONOUT(); - break; - default: - ; - } - - /* - * Otherwise, print out "yes" it it was a beacon packet (because - * that's how yes votes are returned, go figure), otherwise - * just print out the error code. - */ - - else - switch (opcode) { - case 10000: /* Beacon */ - printf(" vote yes until"); - DATEOUT(); - break; - default: - printf(" errcode"); - INTOUT(); - } - - return; - -trunc: - printf(" [|ubik]"); -} - -/* - * Handle RX ACK packets. - */ - -static void -rx_ack_print(register const u_char *bp, int length) -{ - struct rx_ackPacket *rxa; - int i, start, last; - - if (length < (int)sizeof(struct rx_header)) - return; - - bp += sizeof(struct rx_header); - - /* - * This may seem a little odd .... the rx_ackPacket structure - * contains an array of individual packet acknowledgements - * (used for selective ack/nack), but since it's variable in size, - * we don't want to truncate based on the size of the whole - * rx_ackPacket structure. - */ - - TCHECK2(bp[0], sizeof(struct rx_ackPacket) - RX_MAXACKS); - - rxa = (struct rx_ackPacket *) bp; - bp += (sizeof(struct rx_ackPacket) - RX_MAXACKS); - - /* - * Print out a few useful things from the ack packet structure - */ - - if (vflag > 2) - printf(" bufspace %d maxskew %d", - (int) EXTRACT_16BITS(&rxa->bufferSpace), - (int) EXTRACT_16BITS(&rxa->maxSkew)); - - printf(" first %d serial %d reason %s", - EXTRACT_32BITS(&rxa->firstPacket), EXTRACT_32BITS(&rxa->serial), - tok2str(rx_ack_reasons, "#%d", (int) rxa->reason)); - - /* - * Okay, now we print out the ack array. The way _this_ works - * is that we start at "first", and step through the ack array. - * If we have a contiguous range of acks/nacks, try to - * collapse them into a range. - * - * If you're really clever, you might have noticed that this - * doesn't seem quite correct. Specifically, due to structure - * padding, sizeof(struct rx_ackPacket) - RX_MAXACKS won't actually - * yield the start of the ack array (because RX_MAXACKS is 255 - * and the structure will likely get padded to a 2 or 4 byte - * boundary). However, this is the way it's implemented inside - * of AFS - the start of the extra fields are at - * sizeof(struct rx_ackPacket) - RX_MAXACKS + nAcks, which _isn't_ - * the exact start of the ack array. Sigh. That's why we aren't - * using bp, but instead use rxa->acks[]. But nAcks gets added - * to bp after this, so bp ends up at the right spot. Go figure. - */ - - if (rxa->nAcks != 0) { - - TCHECK2(bp[0], rxa->nAcks); - - /* - * Sigh, this is gross, but it seems to work to collapse - * ranges correctly. - */ - - for (i = 0, start = last = -2; i < rxa->nAcks; i++) - if (rxa->acks[i] == RX_ACK_TYPE_ACK) { - - /* - * I figured this deserved _some_ explanation. - * First, print "acked" and the packet seq - * number if this is the first time we've - * seen an acked packet. - */ - - if (last == -2) { - printf(" acked %d", - rxa->firstPacket + i); - start = i; - } - - /* - * Otherwise, if the there is a skip in - * the range (such as an nacked packet in - * the middle of some acked packets), - * then print the current packet number - * seperated from the last number by - * a comma. - */ - - else if (last != i - 1) { - printf(",%d", rxa->firstPacket + i); - start = i; - } - - /* - * We always set last to the value of - * the last ack we saw. Conversely, start - * is set to the value of the first ack - * we saw in a range. - */ - - last = i; - - /* - * Okay, this bit a code gets executed when - * we hit a nack ... in _this_ case we - * want to print out the range of packets - * that were acked, so we need to print - * the _previous_ packet number seperated - * from the first by a dash (-). Since we - * already printed the first packet above, - * just print the final packet. Don't - * do this if there will be a single-length - * range. - */ - } else if (last == i - 1 && start != last) - printf("-%d", rxa->firstPacket + i - 1); - - /* - * So, what's going on here? We ran off the end of the - * ack list, and if we got a range we need to finish it up. - * So we need to determine if the last packet in the list - * was an ack (if so, then last will be set to it) and - * we need to see if the last range didn't start with the - * last packet (because if it _did_, then that would mean - * that the packet number has already been printed and - * we don't need to print it again). - */ - - if (last == i - 1 && start != last) - printf("-%d", rxa->firstPacket + i - 1); - - /* - * Same as above, just without comments - */ - - for (i = 0, start = last = -2; i < rxa->nAcks; i++) - if (rxa->acks[i] == RX_ACK_TYPE_NACK) { - if (last == -2) { - printf(" nacked %d", - rxa->firstPacket + i); - start = i; - } else if (last != i - 1) { - printf(",%d", rxa->firstPacket + i); - start = i; - } - last = i; - } else if (last == i - 1 && start != last) - printf("-%d", rxa->firstPacket + i - 1); - - if (last == i - 1 && start != last) - printf("-%d", rxa->firstPacket + i - 1); - - bp += rxa->nAcks; - } - - - /* - * These are optional fields; depending on your version of AFS, - * you may or may not see them - */ - -#define TRUNCRET(n) if (snapend - bp + 1 <= n) return; - - if (vflag > 1) { - TRUNCRET(4); - printf(" ifmtu"); - INTOUT(); - - TRUNCRET(4); - printf(" maxmtu"); - INTOUT(); - - TRUNCRET(4); - printf(" rwind"); - INTOUT(); - - TRUNCRET(4); - printf(" maxpackets"); - INTOUT(); - } - - return; - -trunc: - printf(" [|ack]"); -} -#undef TRUNCRET diff --git a/contrib/tcpdump/print-sctp.c b/contrib/tcpdump/print-sctp.c deleted file mode 100644 index db26e2976c34b..0000000000000 --- a/contrib/tcpdump/print-sctp.c +++ /dev/null @@ -1,358 +0,0 @@ -/* Copyright (c) 2001 NETLAB, Temple University - * Copyright (c) 2001 Protocol Engineering Lab, University of Delaware - * - * Jerry Heinz <gheinz@astro.temple.edu> - * John Fiore <jfiore@joda.cis.temple.edu> - * Armando L. Caro Jr. <acaro@cis.udel.edu> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the University nor of the Laboratory may be used - * to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static const char rcsid[] _U_ = -"@(#) $Header: /tcpdump/master/tcpdump/print-sctp.c,v 1.16.2.4 2005/07/07 01:24:38 guy Exp $ (NETLAB/PEL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include "sctpHeader.h" -#include "sctpConstants.h" -#include <assert.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 - -void sctp_print(const u_char *bp, /* beginning of sctp packet */ - const u_char *bp2, /* beginning of enclosing */ - u_int sctpPacketLength) /* ip packet */ -{ - const struct sctpHeader *sctpPktHdr; - const struct ip *ip; -#ifdef INET6 - const struct ip6_hdr *ip6; -#endif - const void *endPacketPtr; - u_short sourcePort, destPort; - int chunkCount; - const struct sctpChunkDesc *chunkDescPtr; - const void *nextChunk; - const char *sep; - - sctpPktHdr = (const struct sctpHeader*) bp; - endPacketPtr = (const u_char*)sctpPktHdr+sctpPacketLength; - - if( (u_long) endPacketPtr > (u_long) snapend) - endPacketPtr = (const void *) snapend; - ip = (struct ip *)bp2; -#ifdef INET6 - if (IP_V(ip) == 6) - ip6 = (const struct ip6_hdr *)bp2; - else - ip6 = NULL; -#endif /*INET6*/ - TCHECK(*sctpPktHdr); - - if (sctpPacketLength < sizeof(struct sctpHeader)) - { - (void)printf("truncated-sctp - %ld bytes missing!", - (long)sctpPacketLength-sizeof(struct sctpHeader)); - return; - } - - /* sctpPacketLength -= sizeof(struct sctpHeader); packet length */ - /* is now only as long as the payload */ - - sourcePort = EXTRACT_16BITS(&sctpPktHdr->source); - destPort = EXTRACT_16BITS(&sctpPktHdr->destination); - -#ifdef INET6 - if (ip6) { - (void)printf("%s.%d > %s.%d: sctp", - ip6addr_string(&ip6->ip6_src), - sourcePort, - ip6addr_string(&ip6->ip6_dst), - destPort); - } else -#endif /*INET6*/ - { - (void)printf("%s.%d > %s.%d: sctp", - ipaddr_string(&ip->ip_src), - sourcePort, - ipaddr_string(&ip->ip_dst), - destPort); - } - fflush(stdout); - - if (vflag >= 2) - sep = "\n\t"; - else - sep = " ("; - /* cycle through all chunks, printing information on each one */ - for (chunkCount = 0, - chunkDescPtr = (const struct sctpChunkDesc *) - ((const u_char*) sctpPktHdr + sizeof(struct sctpHeader)); - chunkDescPtr != NULL && - ( (const void *) - ((const u_char *) chunkDescPtr + sizeof(struct sctpChunkDesc)) - <= endPacketPtr); - - chunkDescPtr = (const struct sctpChunkDesc *) nextChunk, chunkCount++) - { - u_int16_t chunkLength; - const u_char *chunkEnd; - u_int16_t align; - - TCHECK(*chunkDescPtr); - chunkLength = EXTRACT_16BITS(&chunkDescPtr->chunkLength); - if (chunkLength < sizeof(*chunkDescPtr)) { - printf("%s%d) [Bad chunk length %u]", sep, chunkCount+1, chunkLength); - break; - } - - TCHECK2(*((u_int8_t *)chunkDescPtr), chunkLength); - chunkEnd = ((const u_char*)chunkDescPtr + chunkLength); - - align=chunkLength % 4; - if (align != 0) - align = 4 - align; - - nextChunk = (const void *) (chunkEnd + align); - - printf("%s%d) ", sep, chunkCount+1); - switch (chunkDescPtr->chunkID) - { - case SCTP_DATA : - { - const struct sctpDataPart *dataHdrPtr; - - printf("[DATA] "); - - if ((chunkDescPtr->chunkFlg & SCTP_DATA_UNORDERED) - == SCTP_DATA_UNORDERED) - printf("(U)"); - - if ((chunkDescPtr->chunkFlg & SCTP_DATA_FIRST_FRAG) - == SCTP_DATA_FIRST_FRAG) - printf("(B)"); - - if ((chunkDescPtr->chunkFlg & SCTP_DATA_LAST_FRAG) - == SCTP_DATA_LAST_FRAG) - printf("(E)"); - - if( ((chunkDescPtr->chunkFlg & SCTP_DATA_UNORDERED) - == SCTP_DATA_UNORDERED) - || - ((chunkDescPtr->chunkFlg & SCTP_DATA_FIRST_FRAG) - == SCTP_DATA_FIRST_FRAG) - || - ((chunkDescPtr->chunkFlg & SCTP_DATA_LAST_FRAG) - == SCTP_DATA_LAST_FRAG) ) - printf(" "); - - dataHdrPtr=(const struct sctpDataPart*)(chunkDescPtr+1); - - printf("[TSN: %u] ", EXTRACT_32BITS(&dataHdrPtr->TSN)); - printf("[SID: %u] ", EXTRACT_16BITS(&dataHdrPtr->streamId)); - printf("[SSEQ %u] ", EXTRACT_16BITS(&dataHdrPtr->sequence)); - printf("[PPID 0x%x] ", EXTRACT_32BITS(&dataHdrPtr->payloadtype)); - fflush(stdout); - - if (vflag >= 2) /* if verbose output is specified */ - { /* at the command line */ - const u_char *payloadPtr; - - printf("[Payload"); - - if (!suppress_default_print) { - payloadPtr = (const u_char *) (++dataHdrPtr); - printf(":"); - if (htons(chunkDescPtr->chunkLength) < - sizeof(struct sctpDataPart)+ - sizeof(struct sctpChunkDesc)+1) { - printf("bogus chunk length %u]", - htons(chunkDescPtr->chunkLength)); - return; - } - default_print(payloadPtr, - htons(chunkDescPtr->chunkLength) - - (sizeof(struct sctpDataPart)+ - sizeof(struct sctpChunkDesc)+1)); - } else - printf("]"); - } - break; - } - case SCTP_INITIATION : - { - const struct sctpInitiation *init; - - printf("[INIT] "); - init=(const struct sctpInitiation*)(chunkDescPtr+1); - printf("[init tag: %u] ", EXTRACT_32BITS(&init->initTag)); - printf("[rwnd: %u] ", EXTRACT_32BITS(&init->rcvWindowCredit)); - printf("[OS: %u] ", EXTRACT_16BITS(&init->NumPreopenStreams)); - printf("[MIS: %u] ", EXTRACT_16BITS(&init->MaxInboundStreams)); - printf("[init TSN: %u] ", EXTRACT_32BITS(&init->initialTSN)); - -#if(0) /* ALC you can add code for optional params here */ - if( (init+1) < chunkEnd ) - printf(" @@@@@ UNFINISHED @@@@@@%s\n", - "Optional params present, but not printed."); -#endif - break; - } - case SCTP_INITIATION_ACK : - { - const struct sctpInitiation *init; - - printf("[INIT ACK] "); - init=(const struct sctpInitiation*)(chunkDescPtr+1); - printf("[init tag: %u] ", EXTRACT_32BITS(&init->initTag)); - printf("[rwnd: %u] ", EXTRACT_32BITS(&init->rcvWindowCredit)); - printf("[OS: %u] ", EXTRACT_16BITS(&init->NumPreopenStreams)); - printf("[MIS: %u] ", EXTRACT_16BITS(&init->MaxInboundStreams)); - printf("[init TSN: %u] ", EXTRACT_32BITS(&init->initialTSN)); - -#if(0) /* ALC you can add code for optional params here */ - if( (init+1) < chunkEnd ) - printf(" @@@@@ UNFINISHED @@@@@@%s\n", - "Optional params present, but not printed."); -#endif - break; - } - case SCTP_SELECTIVE_ACK: - { - const struct sctpSelectiveAck *sack; - const struct sctpSelectiveFrag *frag; - int fragNo, tsnNo; - const u_char *dupTSN; - - printf("[SACK] "); - sack=(const struct sctpSelectiveAck*)(chunkDescPtr+1); - printf("[cum ack %u] ", EXTRACT_32BITS(&sack->highestConseqTSN)); - printf("[a_rwnd %u] ", EXTRACT_32BITS(&sack->updatedRwnd)); - printf("[#gap acks %u] ", EXTRACT_16BITS(&sack->numberOfdesc)); - printf("[#dup tsns %u] ", EXTRACT_16BITS(&sack->numDupTsns)); - - - /* print gaps */ - for (frag = ( (const struct sctpSelectiveFrag *) - ((const struct sctpSelectiveAck *) sack+1)), - fragNo=0; - (const void *)frag < nextChunk && fragNo < EXTRACT_16BITS(&sack->numberOfdesc); - frag++, fragNo++) - printf("\n\t\t[gap ack block #%d: start = %u, end = %u] ", - fragNo+1, - EXTRACT_32BITS(&sack->highestConseqTSN) + EXTRACT_16BITS(&frag->fragmentStart), - EXTRACT_32BITS(&sack->highestConseqTSN) + EXTRACT_16BITS(&frag->fragmentEnd)); - - - /* print duplicate TSNs */ - for (dupTSN = (const u_char *)frag, tsnNo=0; - (const void *) dupTSN < nextChunk && tsnNo<EXTRACT_16BITS(&sack->numDupTsns); - dupTSN += 4, tsnNo++) - printf("\n\t\t[dup TSN #%u: %u] ", tsnNo+1, - EXTRACT_32BITS(dupTSN)); - - break; - } - case SCTP_HEARTBEAT_REQUEST : - { - const struct sctpHBsender *hb; - - hb=(const struct sctpHBsender*)chunkDescPtr; - - printf("[HB REQ] "); - - break; - } - case SCTP_HEARTBEAT_ACK : - printf("[HB ACK] "); - break; - case SCTP_ABORT_ASSOCIATION : - printf("[ABORT] "); - break; - case SCTP_SHUTDOWN : - printf("[SHUTDOWN] "); - break; - case SCTP_SHUTDOWN_ACK : - printf("[SHUTDOWN ACK] "); - break; - case SCTP_OPERATION_ERR : - printf("[OP ERR] "); - break; - case SCTP_COOKIE_ECHO : - printf("[COOKIE ECHO] "); - break; - case SCTP_COOKIE_ACK : - printf("[COOKIE ACK] "); - break; - case SCTP_ECN_ECHO : - printf("[ECN ECHO] "); - break; - case SCTP_ECN_CWR : - printf("[ECN CWR] "); - break; - case SCTP_SHUTDOWN_COMPLETE : - printf("[SHUTDOWN COMPLETE] "); - break; - case SCTP_FORWARD_CUM_TSN : - printf("[FOR CUM TSN] "); - break; - case SCTP_RELIABLE_CNTL : - printf("[REL CTRL] "); - break; - case SCTP_RELIABLE_CNTL_ACK : - printf("[REL CTRL ACK] "); - break; - default : - printf("[Unknown chunk type: 0x%x]", chunkDescPtr->chunkID); - return; - } - - if (vflag < 2) - sep = ", ("; - } - return; - -trunc: - printf("[|sctp]"); - return; -} diff --git a/contrib/tcpdump/print-sip.c b/contrib/tcpdump/print-sip.c deleted file mode 100644 index b4d13b132fe85..0000000000000 --- a/contrib/tcpdump/print-sip.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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. - * - * Original code by Hannes Gredler (hannes@juniper.net) - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-sip.c,v 1.1 2004/07/27 17:04:20 hannes Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <stdlib.h> - -#include "interface.h" -#include "extract.h" - -#include "udp.h" - -void -sip_print(register const u_char *pptr, register u_int len) -{ - u_int idx; - - printf("SIP, length: %u%s", len, vflag ? "\n\t" : ""); - - /* in non-verbose mode just lets print the protocol and length */ - if (vflag < 1) - return; - - for (idx = 0; idx < len; idx++) { - if (EXTRACT_16BITS(pptr+idx) != 0x0d0a) { /* linefeed ? */ - safeputchar(*(pptr+idx)); - } else { - printf("\n\t"); - idx+=1; - } - } - - /* do we want to see an additionally hexdump ? */ - if (vflag> 1) - print_unknown_data(pptr,"\n\t",len); - - return; -} diff --git a/contrib/tcpdump/print-sl.c b/contrib/tcpdump/print-sl.c deleted file mode 100644 index f28a21a407a36..0000000000000 --- a/contrib/tcpdump/print-sl.c +++ /dev/null @@ -1,239 +0,0 @@ -/* - * Copyright (c) 1989, 1990, 1991, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-sl.c,v 1.65 2005/04/06 21:32:42 mcr Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <pcap.h> -#include <stdio.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" /* must come after interface.h */ - -#include "ip.h" -#include "tcp.h" -#include "slip.h" -#include "slcompress.h" - -static u_int lastlen[2][256]; -static u_int lastconn = 255; - -static void sliplink_print(const u_char *, const struct ip *, u_int); -static void compressed_sl_print(const u_char *, const struct ip *, u_int, int); - -u_int -sl_if_print(const struct pcap_pkthdr *h, const u_char *p) -{ - register u_int caplen = h->caplen; - register u_int length = h->len; - register const struct ip *ip; - - if (caplen < SLIP_HDRLEN) { - printf("[|slip]"); - return (caplen); - } - - length -= SLIP_HDRLEN; - - ip = (struct ip *)(p + SLIP_HDRLEN); - - if (eflag) - sliplink_print(p, ip, length); - - switch (IP_V(ip)) { - case 4: - ip_print(gndo, (u_char *)ip, length); - break; -#ifdef INET6 - case 6: - ip6_print((u_char *)ip, length); - break; -#endif - default: - printf ("ip v%d", IP_V(ip)); - } - - return (SLIP_HDRLEN); -} - -u_int -sl_bsdos_if_print(const struct pcap_pkthdr *h, const u_char *p) -{ - register u_int caplen = h->caplen; - register u_int length = h->len; - register const struct ip *ip; - - if (caplen < SLIP_HDRLEN) { - printf("[|slip]"); - return (caplen); - } - - length -= SLIP_HDRLEN; - - ip = (struct ip *)(p + SLIP_HDRLEN); - -#ifdef notdef - if (eflag) - sliplink_print(p, ip, length); -#endif - - ip_print(gndo, (u_char *)ip, length); - - return (SLIP_HDRLEN); -} - -static void -sliplink_print(register const u_char *p, register const struct ip *ip, - register u_int length) -{ - int dir; - u_int hlen; - - dir = p[SLX_DIR]; - putchar(dir == SLIPDIR_IN ? 'I' : 'O'); - putchar(' '); - - if (nflag) { - /* XXX just dump the header */ - register int i; - - for (i = SLX_CHDR; i < SLX_CHDR + CHDR_LEN - 1; ++i) - printf("%02x.", p[i]); - printf("%02x: ", p[SLX_CHDR + CHDR_LEN - 1]); - return; - } - switch (p[SLX_CHDR] & 0xf0) { - - case TYPE_IP: - printf("ip %d: ", length + SLIP_HDRLEN); - break; - - case TYPE_UNCOMPRESSED_TCP: - /* - * The connection id is stored in the IP protocol field. - * Get it from the link layer since sl_uncompress_tcp() - * has restored the IP header copy to IPPROTO_TCP. - */ - lastconn = ((struct ip *)&p[SLX_CHDR])->ip_p; - hlen = IP_HL(ip); - hlen += TH_OFF((struct tcphdr *)&((int *)ip)[hlen]); - lastlen[dir][lastconn] = length - (hlen << 2); - printf("utcp %d: ", lastconn); - break; - - default: - if (p[SLX_CHDR] & TYPE_COMPRESSED_TCP) { - compressed_sl_print(&p[SLX_CHDR], ip, - length, dir); - printf(": "); - } else - printf("slip-%d!: ", p[SLX_CHDR]); - } -} - -static const u_char * -print_sl_change(const char *str, register const u_char *cp) -{ - register u_int i; - - if ((i = *cp++) == 0) { - i = EXTRACT_16BITS(cp); - cp += 2; - } - printf(" %s%d", str, i); - return (cp); -} - -static const u_char * -print_sl_winchange(register const u_char *cp) -{ - register short i; - - if ((i = *cp++) == 0) { - i = EXTRACT_16BITS(cp); - cp += 2; - } - if (i >= 0) - printf(" W+%d", i); - else - printf(" W%d", i); - return (cp); -} - -static void -compressed_sl_print(const u_char *chdr, const struct ip *ip, - u_int length, int dir) -{ - register const u_char *cp = chdr; - register u_int flags, hlen; - - flags = *cp++; - if (flags & NEW_C) { - lastconn = *cp++; - printf("ctcp %d", lastconn); - } else - printf("ctcp *"); - - /* skip tcp checksum */ - cp += 2; - - switch (flags & SPECIALS_MASK) { - case SPECIAL_I: - printf(" *SA+%d", lastlen[dir][lastconn]); - break; - - case SPECIAL_D: - printf(" *S+%d", lastlen[dir][lastconn]); - break; - - default: - if (flags & NEW_U) - cp = print_sl_change("U=", cp); - if (flags & NEW_W) - cp = print_sl_winchange(cp); - if (flags & NEW_A) - cp = print_sl_change("A+", cp); - if (flags & NEW_S) - cp = print_sl_change("S+", cp); - break; - } - if (flags & NEW_I) - cp = print_sl_change("I+", cp); - - /* - * 'hlen' is the length of the uncompressed TCP/IP header (in words). - * 'cp - chdr' is the length of the compressed header. - * 'length - hlen' is the amount of data in the packet. - */ - hlen = IP_HL(ip); - hlen += TH_OFF((struct tcphdr *)&((int32_t *)ip)[hlen]); - lastlen[dir][lastconn] = length - (hlen << 2); - printf(" %d (%ld)", lastlen[dir][lastconn], (long)(cp - chdr)); -} diff --git a/contrib/tcpdump/print-sll.c b/contrib/tcpdump/print-sll.c deleted file mode 100644 index d2a821d01b496..0000000000000 --- a/contrib/tcpdump/print-sll.c +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-sll.c,v 1.16.2.2 2005/07/07 01:24:39 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> -#include <pcap.h> - -#include "interface.h" -#include "addrtoname.h" -#include "ethertype.h" -#include "extract.h" - -#include "ether.h" -#include "sll.h" - -const struct tok sll_pkttype_values[] = { - { LINUX_SLL_HOST, "In" }, - { LINUX_SLL_BROADCAST, "B" }, - { LINUX_SLL_MULTICAST, "M" }, - { LINUX_SLL_OTHERHOST, "P" }, - { LINUX_SLL_OUTGOING, "Out" }, - { 0, NULL} -}; - -static inline void -sll_print(register const struct sll_header *sllp, u_int length) -{ - u_short ether_type; - - printf("%3s ",tok2str(sll_pkttype_values,"?",EXTRACT_16BITS(&sllp->sll_pkttype))); - - /* - * XXX - check the link-layer address type value? - * For now, we just assume 6 means Ethernet. - * XXX - print others as strings of hex? - */ - if (EXTRACT_16BITS(&sllp->sll_halen) == 6) - (void)printf("%s ", etheraddr_string(sllp->sll_addr)); - - if (!qflag) { - ether_type = EXTRACT_16BITS(&sllp->sll_protocol); - - if (ether_type <= ETHERMTU) { - /* - * Not an Ethernet type; what type is it? - */ - switch (ether_type) { - - case LINUX_SLL_P_802_3: - /* - * Ethernet_802.3 IPX frame. - */ - (void)printf("802.3"); - break; - - case LINUX_SLL_P_802_2: - /* - * 802.2. - */ - (void)printf("802.3"); - break; - - default: - /* - * What is it? - */ - (void)printf("ethertype Unknown (0x%04x)", - ether_type); - break; - } - } else { - (void)printf("ethertype %s (0x%04x)", - tok2str(ethertype_values, "Unknown", ether_type), - ether_type); - } - (void)printf(", length %u: ", length); - } -} - -/* - * This is the top level routine of the printer. 'p' points to the - * Linux "cooked capture" header of the packet, 'h->ts' is the timestamp, - * 'h->len' is the length of the packet off the wire, and 'h->caplen' - * is the number of bytes actually captured. - */ -u_int -sll_if_print(const struct pcap_pkthdr *h, const u_char *p) -{ - u_int caplen = h->caplen; - u_int length = h->len; - register const struct sll_header *sllp; - u_short ether_type; - u_short extracted_ethertype; - - if (caplen < SLL_HDR_LEN) { - /* - * XXX - this "can't happen" because "pcap-linux.c" always - * adds this many bytes of header to every packet in a - * cooked socket capture. - */ - printf("[|sll]"); - return (caplen); - } - - sllp = (const struct sll_header *)p; - - if (eflag) - sll_print(sllp, length); - - /* - * Go past the cooked-mode header. - */ - length -= SLL_HDR_LEN; - caplen -= SLL_HDR_LEN; - p += SLL_HDR_LEN; - - ether_type = ntohs(sllp->sll_protocol); - - /* - * Is it (gag) an 802.3 encapsulation, or some non-Ethernet - * packet type? - */ - extracted_ethertype = 0; - if (ether_type <= ETHERMTU) { - /* - * Yes - what type is it? - */ - switch (ether_type) { - - case LINUX_SLL_P_802_3: - /* - * Ethernet_802.3 IPX frame. - */ - ipx_print(p, length); - break; - - case LINUX_SLL_P_802_2: - /* - * 802.2. - * Try to print the LLC-layer header & higher layers. - */ - if (llc_print(p, length, caplen, NULL, NULL, - &extracted_ethertype) == 0) - goto unknown; /* unknown LLC type */ - break; - - default: - unknown: - /* ether_type not known, print raw packet */ - if (!eflag) - sll_print(sllp, length + SLL_HDR_LEN); - if (extracted_ethertype) { - printf("(LLC %s) ", - etherproto_string(htons(extracted_ethertype))); - } - if (!suppress_default_print) - default_print(p, caplen); - break; - } - } else if (ether_encap_print(ether_type, p, length, caplen, - &extracted_ethertype) == 0) { - /* ether_type not known, print raw packet */ - if (!eflag) - sll_print(sllp, length + SLL_HDR_LEN); - if (!suppress_default_print) - default_print(p, caplen); - } - - return (SLL_HDR_LEN); -} diff --git a/contrib/tcpdump/print-slow.c b/contrib/tcpdump/print-slow.c deleted file mode 100644 index 96099221b9f7d..0000000000000 --- a/contrib/tcpdump/print-slow.c +++ /dev/null @@ -1,264 +0,0 @@ -/* - * Copyright (c) 1998-2005 The TCPDUMP project - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that: (1) source code - * distributions retain the above copyright notice and this paragraph - * in its entirety, and (2) distributions including binary code include - * the above copyright notice and this paragraph in its entirety in - * the documentation or other materials provided with the distribution. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND - * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT - * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE. - * - * support for the IEEE "slow protocols" LACP, MARKER as per 802.3ad - * - * Original code by Hannes Gredler (hannes@juniper.net) - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-slow.c,v 1.1.2.1 2005/07/10 14:47:56 hannes Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "interface.h" -#include "extract.h" -#include "addrtoname.h" -#include "ether.h" - -struct slow_common_header { - u_int8_t proto_subtype; - u_int8_t version; -}; - -#define SLOW_PROTO_LACP 1 -#define SLOW_PROTO_MARKER 2 - -#define LACP_VERSION 1 -#define MARKER_VERSION 1 - -static const struct tok slow_proto_values[] = { - { SLOW_PROTO_LACP, "LACP" }, - { SLOW_PROTO_MARKER, "MARKER" }, - { 0, NULL} -}; - -struct tlv_header_t { - u_int8_t type; - u_int8_t length; -}; - -#define LACP_TLV_TERMINATOR 0x00 -#define LACP_TLV_ACTOR_INFO 0x01 -#define LACP_TLV_PARTNER_INFO 0x02 -#define LACP_TLV_COLLECTOR_INFO 0x03 - -#define MARKER_TLV_TERMINATOR 0x00 -#define MARKER_TLV_MARKER_INFO 0x01 - -static const struct tok slow_tlv_values[] = { - { (SLOW_PROTO_LACP << 8) + LACP_TLV_TERMINATOR, "Terminator"}, - { (SLOW_PROTO_LACP << 8) + LACP_TLV_ACTOR_INFO, "Actor Information"}, - { (SLOW_PROTO_LACP << 8) + LACP_TLV_PARTNER_INFO, "Partner Information"}, - { (SLOW_PROTO_LACP << 8) + LACP_TLV_COLLECTOR_INFO, "Collector Information"}, - - { (SLOW_PROTO_MARKER << 8) + MARKER_TLV_TERMINATOR, "Terminator"}, - { (SLOW_PROTO_MARKER << 8) + MARKER_TLV_MARKER_INFO, "Marker Information"}, - { 0, NULL} -}; - -struct lacp_tlv_actor_partner_info_t { - u_int8_t sys_pri[2]; - u_int8_t sys[ETHER_ADDR_LEN]; - u_int8_t key[2]; - u_int8_t port_pri[2]; - u_int8_t port[2]; - u_int8_t state; - u_int8_t pad[3]; -}; - -static const struct tok lacp_tlv_actor_partner_info_state_values[] = { - { 0x01, "Activity"}, - { 0x02, "Timeout"}, - { 0x04, "Aggregation"}, - { 0x08, "Synchronization"}, - { 0x10, "Collecting"}, - { 0x20, "Distributing"}, - { 0x40, "Default"}, - { 0x80, "Expired"}, - { 0, NULL} -}; - -struct lacp_tlv_collector_info_t { - u_int8_t max_delay[2]; - u_int8_t pad[12]; -}; - -struct marker_tlv_marker_info_t { - u_int8_t req_port[2]; - u_int8_t req_sys[ETHER_ADDR_LEN]; - u_int8_t req_trans_id[4]; - u_int8_t pad[2]; -}; - -struct lacp_marker_tlv_terminator_t { - u_int8_t pad[50]; -}; - -void -slow_print(register const u_char *pptr, register u_int len) { - - const struct slow_common_header *slow_com_header; - const struct tlv_header_t *tlv_header; - const u_char *tptr,*tlv_tptr; - u_int tlv_len,tlen,tlv_tlen; - - union { - const struct lacp_marker_tlv_terminator_t *lacp_marker_tlv_terminator; - const struct lacp_tlv_actor_partner_info_t *lacp_tlv_actor_partner_info; - const struct lacp_tlv_collector_info_t *lacp_tlv_collector_info; - const struct marker_tlv_marker_info_t *marker_tlv_marker_info; - } tlv_ptr; - - tptr=pptr; - slow_com_header = (const struct slow_common_header *)pptr; - TCHECK(*slow_com_header); - - /* - * Sanity checking of the header. - */ - if (slow_com_header->proto_subtype == SLOW_PROTO_LACP && - slow_com_header->version != LACP_VERSION) { - printf("LACP version %u packet not supported",slow_com_header->version); - return; - } - if (slow_com_header->proto_subtype == SLOW_PROTO_MARKER && - slow_com_header->version != MARKER_VERSION) { - printf("MARKER version %u packet not supported",slow_com_header->version); - return; - } - - printf("%sv%u, length: %u", - tok2str(slow_proto_values, "unknown (%u)",slow_com_header->proto_subtype), - slow_com_header->version, - len); - - if (!vflag) - return; - - /* ok they seem to want to know everything - lets fully decode it */ - tlen=len-sizeof(struct slow_common_header); - tptr+=sizeof(const struct slow_common_header); - - while(tlen>0) { - /* did we capture enough for fully decoding the tlv header ? */ - TCHECK2(*tptr, sizeof(struct tlv_header_t)); - tlv_header = (const struct tlv_header_t *)tptr; - tlv_len = tlv_header->length; - - printf("\n\t%s TLV (0x%02x), length: %u", - tok2str(slow_tlv_values, - "Unknown", - (slow_com_header->proto_subtype << 8) + tlv_header->type), - tlv_header->type, - tlv_len); - - if ((tlv_len < sizeof(struct tlv_header_t) || - tlv_len > tlen) && - tlv_header->type != LACP_TLV_TERMINATOR && - tlv_header->type != MARKER_TLV_TERMINATOR) { - printf("\n\t-----trailing data-----"); - print_unknown_data(tptr+sizeof(sizeof(struct tlv_header_t)),"\n\t ",tlen); - return; - } - - tlv_tptr=tptr+sizeof(struct tlv_header_t); - tlv_tlen=tlv_len-sizeof(struct tlv_header_t); - - /* did we capture enough for fully decoding the tlv ? */ - TCHECK2(*tptr, tlv_len); - - switch((slow_com_header->proto_subtype << 8) + tlv_header->type) { - - /* those two TLVs have the same structure -> fall through */ - case ((SLOW_PROTO_LACP << 8) + LACP_TLV_ACTOR_INFO): - case ((SLOW_PROTO_LACP << 8) + LACP_TLV_PARTNER_INFO): - tlv_ptr.lacp_tlv_actor_partner_info = (const struct lacp_tlv_actor_partner_info_t *)tlv_tptr; - - printf("\n\t System %s, System Priority %u, Key %u" \ - ", Port %u, Port Priority %u\n\t State Flags [%s]", - etheraddr_string(tlv_ptr.lacp_tlv_actor_partner_info->sys), - EXTRACT_16BITS(tlv_ptr.lacp_tlv_actor_partner_info->sys_pri), - EXTRACT_16BITS(tlv_ptr.lacp_tlv_actor_partner_info->key), - EXTRACT_16BITS(tlv_ptr.lacp_tlv_actor_partner_info->port), - EXTRACT_16BITS(tlv_ptr.lacp_tlv_actor_partner_info->port_pri), - bittok2str(lacp_tlv_actor_partner_info_state_values, - "none", - tlv_ptr.lacp_tlv_actor_partner_info->state)); - - break; - - case ((SLOW_PROTO_LACP << 8) + LACP_TLV_COLLECTOR_INFO): - tlv_ptr.lacp_tlv_collector_info = (const struct lacp_tlv_collector_info_t *)tlv_tptr; - - printf("\n\t Max Delay %u", - EXTRACT_16BITS(tlv_ptr.lacp_tlv_collector_info->max_delay)); - - break; - - case ((SLOW_PROTO_MARKER << 8) + MARKER_TLV_MARKER_INFO): - tlv_ptr.marker_tlv_marker_info = (const struct marker_tlv_marker_info_t *)tlv_tptr; - - printf("\n\t Request System %s, Request Port %u, Request Transaction ID 0x%08x", - etheraddr_string(tlv_ptr.marker_tlv_marker_info->req_sys), - EXTRACT_16BITS(tlv_ptr.marker_tlv_marker_info->req_port), - EXTRACT_32BITS(tlv_ptr.marker_tlv_marker_info->req_trans_id)); - - break; - - /* those two TLVs have the same structure -> fall through */ - case ((SLOW_PROTO_LACP << 8) + LACP_TLV_TERMINATOR): - case ((SLOW_PROTO_MARKER << 8) + LACP_TLV_TERMINATOR): - tlv_ptr.lacp_marker_tlv_terminator = (const struct lacp_marker_tlv_terminator_t *)tlv_tptr; - if (tlv_len == 0) { - tlv_len = sizeof(tlv_ptr.lacp_marker_tlv_terminator->pad) + - sizeof(struct tlv_header_t); - /* tell the user that we modified the length field */ - if (vflag>1) - printf(" (=%u)",tlv_len); - /* we have messed around with the length field - now we need to check - * again if there are enough bytes on the wire for the hexdump */ - TCHECK2(tlv_ptr.lacp_marker_tlv_terminator->pad[0], - sizeof(tlv_ptr.lacp_marker_tlv_terminator->pad)); - } - - break; - - default: - if (vflag <= 1) - print_unknown_data(tlv_tptr,"\n\t ",tlv_tlen); - break; - } - /* do we want to see an additionally hexdump ? */ - if (vflag > 1) - print_unknown_data(tptr+sizeof(sizeof(struct tlv_header_t)),"\n\t ", - tlv_len-sizeof(struct tlv_header_t)); - - tptr+=tlv_len; - tlen-=tlv_len; - } - return; -trunc: - printf("\n\t\t packet exceeded snapshot"); -} diff --git a/contrib/tcpdump/print-smb.c b/contrib/tcpdump/print-smb.c deleted file mode 100644 index 3c8cfbfa150eb..0000000000000 --- a/contrib/tcpdump/print-smb.c +++ /dev/null @@ -1,1471 +0,0 @@ -/* - * Copyright (C) Andrew Tridgell 1995-1999 - * - * This software may be distributed either under the terms of the - * BSD-style license that accompanies tcpdump or the GNU GPL version 2 - * or later - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-smb.c,v 1.41.2.2 2005/05/08 20:01:09 guy Exp $"; -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "extract.h" -#include "smb.h" - -static int request = 0; -static int unicodestr = 0; - -const u_char *startbuf = NULL; - -struct smbdescript { - const char *req_f1; - const char *req_f2; - const char *rep_f1; - const char *rep_f2; - void (*fn)(const u_char *, const u_char *, const u_char *, const u_char *); -}; - -struct smbdescriptint { - const char *req_f1; - const char *req_f2; - const char *rep_f1; - const char *rep_f2; - void (*fn)(const u_char *, const u_char *, int, int); -}; - -struct smbfns -{ - int id; - const char *name; - int flags; - struct smbdescript descript; -}; - -struct smbfnsint -{ - int id; - const char *name; - int flags; - struct smbdescriptint descript; -}; - -#define DEFDESCRIPT { NULL, NULL, NULL, NULL, NULL } - -#define FLG_CHAIN (1 << 0) - -static struct smbfns * -smbfind(int id, struct smbfns *list) -{ - int sindex; - - for (sindex = 0; list[sindex].name; sindex++) - if (list[sindex].id == id) - return(&list[sindex]); - - return(&list[0]); -} - -static struct smbfnsint * -smbfindint(int id, struct smbfnsint *list) -{ - int sindex; - - for (sindex = 0; list[sindex].name; sindex++) - if (list[sindex].id == id) - return(&list[sindex]); - - return(&list[0]); -} - -static void -trans2_findfirst(const u_char *param, const u_char *data, int pcnt, int dcnt) -{ - const char *fmt; - - if (request) - fmt = "Attribute=[A]\nSearchCount=[d]\nFlags=[w]\nLevel=[dP4]\nFile=[S]\n"; - else - fmt = "Handle=[w]\nCount=[d]\nEOS=[w]\nEoffset=[d]\nLastNameOfs=[w]\n"; - - smb_fdata(param, fmt, param + pcnt, unicodestr); - if (dcnt) { - printf("data:\n"); - print_data(data, dcnt); - } -} - -static void -trans2_qfsinfo(const u_char *param, const u_char *data, int pcnt, int dcnt) -{ - static int level = 0; - const char *fmt=""; - - if (request) { - TCHECK2(*param, 2); - level = EXTRACT_LE_16BITS(param); - fmt = "InfoLevel=[d]\n"; - smb_fdata(param, fmt, param + pcnt, unicodestr); - } else { - switch (level) { - case 1: - fmt = "idFileSystem=[W]\nSectorUnit=[D]\nUnit=[D]\nAvail=[D]\nSectorSize=[d]\n"; - break; - case 2: - fmt = "CreationTime=[T2]VolNameLength=[lb]\nVolumeLabel=[c]\n"; - break; - case 0x105: - fmt = "Capabilities=[W]\nMaxFileLen=[D]\nVolNameLen=[lD]\nVolume=[C]\n"; - break; - default: - fmt = "UnknownLevel\n"; - break; - } - smb_fdata(data, fmt, data + dcnt, unicodestr); - } - if (dcnt) { - printf("data:\n"); - print_data(data, dcnt); - } - return; -trunc: - printf("[|SMB]"); - return; -} - -struct smbfnsint trans2_fns[] = { - { 0, "TRANSACT2_OPEN", 0, - { "Flags2=[w]\nMode=[w]\nSearchAttrib=[A]\nAttrib=[A]\nTime=[T2]\nOFun=[w]\nSize=[D]\nRes=([w, w, w, w, w])\nPath=[S]", - NULL, - "Handle=[d]\nAttrib=[A]\nTime=[T2]\nSize=[D]\nAccess=[w]\nType=[w]\nState=[w]\nAction=[w]\nInode=[W]\nOffErr=[d]\n|EALength=[d]\n", - NULL, NULL }}, - { 1, "TRANSACT2_FINDFIRST", 0, - { NULL, NULL, NULL, NULL, trans2_findfirst }}, - { 2, "TRANSACT2_FINDNEXT", 0, DEFDESCRIPT }, - { 3, "TRANSACT2_QFSINFO", 0, - { NULL, NULL, NULL, NULL, trans2_qfsinfo }}, - { 4, "TRANSACT2_SETFSINFO", 0, DEFDESCRIPT }, - { 5, "TRANSACT2_QPATHINFO", 0, DEFDESCRIPT }, - { 6, "TRANSACT2_SETPATHINFO", 0, DEFDESCRIPT }, - { 7, "TRANSACT2_QFILEINFO", 0, DEFDESCRIPT }, - { 8, "TRANSACT2_SETFILEINFO", 0, DEFDESCRIPT }, - { 9, "TRANSACT2_FSCTL", 0, DEFDESCRIPT }, - { 10, "TRANSACT2_IOCTL", 0, DEFDESCRIPT }, - { 11, "TRANSACT2_FINDNOTIFYFIRST", 0, DEFDESCRIPT }, - { 12, "TRANSACT2_FINDNOTIFYNEXT", 0, DEFDESCRIPT }, - { 13, "TRANSACT2_MKDIR", 0, DEFDESCRIPT }, - { -1, NULL, 0, DEFDESCRIPT } -}; - - -static void -print_trans2(const u_char *words, const u_char *dat, const u_char *buf, const u_char *maxbuf) -{ - u_int bcc; - static struct smbfnsint *fn = &trans2_fns[0]; - const u_char *data, *param; - const u_char *w = words + 1; - const char *f1 = NULL, *f2 = NULL; - int pcnt, dcnt; - - TCHECK(words[0]); - if (request) { - TCHECK2(w[14 * 2], 2); - pcnt = EXTRACT_LE_16BITS(w + 9 * 2); - param = buf + EXTRACT_LE_16BITS(w + 10 * 2); - dcnt = EXTRACT_LE_16BITS(w + 11 * 2); - data = buf + EXTRACT_LE_16BITS(w + 12 * 2); - fn = smbfindint(EXTRACT_LE_16BITS(w + 14 * 2), trans2_fns); - } else { - if (words[0] == 0) { - printf("%s\n", fn->name); - printf("Trans2Interim\n"); - return; - } - TCHECK2(w[7 * 2], 2); - pcnt = EXTRACT_LE_16BITS(w + 3 * 2); - param = buf + EXTRACT_LE_16BITS(w + 4 * 2); - dcnt = EXTRACT_LE_16BITS(w + 6 * 2); - data = buf + EXTRACT_LE_16BITS(w + 7 * 2); - } - - printf("%s param_length=%d data_length=%d\n", fn->name, pcnt, dcnt); - - if (request) { - if (words[0] == 8) { - smb_fdata(words + 1, - "Trans2Secondary\nTotParam=[d]\nTotData=[d]\nParamCnt=[d]\nParamOff=[d]\nParamDisp=[d]\nDataCnt=[d]\nDataOff=[d]\nDataDisp=[d]\nHandle=[d]\n", - maxbuf, unicodestr); - return; - } else { - smb_fdata(words + 1, - "TotParam=[d]\nTotData=[d]\nMaxParam=[d]\nMaxData=[d]\nMaxSetup=[b][P1]\nFlags=[w]\nTimeOut=[D]\nRes1=[w]\nParamCnt=[d]\nParamOff=[d]\nDataCnt=[d]\nDataOff=[d]\nSetupCnt=[b][P1]\n", - words + 1 + 14 * 2, unicodestr); - } - f1 = fn->descript.req_f1; - f2 = fn->descript.req_f2; - } else { - smb_fdata(words + 1, - "TotParam=[d]\nTotData=[d]\nRes1=[w]\nParamCnt=[d]\nParamOff=[d]\nParamDisp[d]\nDataCnt=[d]\nDataOff=[d]\nDataDisp=[d]\nSetupCnt=[b][P1]\n", - words + 1 + 10 * 2, unicodestr); - f1 = fn->descript.rep_f1; - f2 = fn->descript.rep_f2; - } - - TCHECK2(*dat, 2); - bcc = EXTRACT_LE_16BITS(dat); - printf("smb_bcc=%u\n", bcc); - if (fn->descript.fn) - (*fn->descript.fn)(param, data, pcnt, dcnt); - else { - smb_fdata(param, f1 ? f1 : "Parameters=\n", param + pcnt, unicodestr); - smb_fdata(data, f2 ? f2 : "Data=\n", data + dcnt, unicodestr); - } - return; -trunc: - printf("[|SMB]"); - return; -} - - -static void -print_browse(const u_char *param, int paramlen, const u_char *data, int datalen) -{ - const u_char *maxbuf = data + datalen; - int command; - - TCHECK(data[0]); - command = data[0]; - - smb_fdata(param, "BROWSE PACKET\n|Param ", param+paramlen, unicodestr); - - switch (command) { - case 0xF: - data = smb_fdata(data, - "BROWSE PACKET:\nType=[B] (LocalMasterAnnouncement)\nUpdateCount=[w]\nRes1=[B]\nAnnounceInterval=[d]\nName=[n2]\nMajorVersion=[B]\nMinorVersion=[B]\nServerType=[W]\nElectionVersion=[w]\nBrowserConstant=[w]\n", - maxbuf, unicodestr); - break; - - case 0x1: - data = smb_fdata(data, - "BROWSE PACKET:\nType=[B] (HostAnnouncement)\nUpdateCount=[w]\nRes1=[B]\nAnnounceInterval=[d]\nName=[n2]\nMajorVersion=[B]\nMinorVersion=[B]\nServerType=[W]\nElectionVersion=[w]\nBrowserConstant=[w]\n", - maxbuf, unicodestr); - break; - - case 0x2: - data = smb_fdata(data, - "BROWSE PACKET:\nType=[B] (AnnouncementRequest)\nFlags=[B]\nReplySystemName=[S]\n", - maxbuf, unicodestr); - break; - - case 0xc: - data = smb_fdata(data, - "BROWSE PACKET:\nType=[B] (WorkgroupAnnouncement)\nUpdateCount=[w]\nRes1=[B]\nAnnounceInterval=[d]\nName=[n2]\nMajorVersion=[B]\nMinorVersion=[B]\nServerType=[W]\nCommentPointer=[W]\nServerName=[S]\n", - maxbuf, unicodestr); - break; - - case 0x8: - data = smb_fdata(data, - "BROWSE PACKET:\nType=[B] (ElectionFrame)\nElectionVersion=[B]\nOSSummary=[W]\nUptime=[(W, W)]\nServerName=[S]\n", - maxbuf, unicodestr); - break; - - case 0xb: - data = smb_fdata(data, - "BROWSE PACKET:\nType=[B] (BecomeBackupBrowser)\nName=[S]\n", - maxbuf, unicodestr); - break; - - case 0x9: - data = smb_fdata(data, - "BROWSE PACKET:\nType=[B] (GetBackupList)\nListCount?=[B]\nToken=[W]\n", - maxbuf, unicodestr); - break; - - case 0xa: - data = smb_fdata(data, - "BROWSE PACKET:\nType=[B] (BackupListResponse)\nServerCount?=[B]\nToken=[W]\n*Name=[S]\n", - maxbuf, unicodestr); - break; - - case 0xd: - data = smb_fdata(data, - "BROWSE PACKET:\nType=[B] (MasterAnnouncement)\nMasterName=[S]\n", - maxbuf, unicodestr); - break; - - case 0xe: - data = smb_fdata(data, - "BROWSE PACKET:\nType=[B] (ResetBrowser)\nOptions=[B]\n", maxbuf, unicodestr); - break; - - default: - data = smb_fdata(data, "Unknown Browser Frame ", maxbuf, unicodestr); - break; - } - return; -trunc: - printf("[|SMB]"); - return; -} - - -static void -print_ipc(const u_char *param, int paramlen, const u_char *data, int datalen) -{ - if (paramlen) - smb_fdata(param, "Command=[w]\nStr1=[S]\nStr2=[S]\n", param + paramlen, - unicodestr); - if (datalen) - smb_fdata(data, "IPC ", data + datalen, unicodestr); -} - - -static void -print_trans(const u_char *words, const u_char *data1, const u_char *buf, const u_char *maxbuf) -{ - u_int bcc; - const char *f1, *f2, *f3, *f4; - const u_char *data, *param; - const u_char *w = words + 1; - int datalen, paramlen; - - if (request) { - TCHECK2(w[12 * 2], 2); - paramlen = EXTRACT_LE_16BITS(w + 9 * 2); - param = buf + EXTRACT_LE_16BITS(w + 10 * 2); - datalen = EXTRACT_LE_16BITS(w + 11 * 2); - data = buf + EXTRACT_LE_16BITS(w + 12 * 2); - f1 = "TotParamCnt=[d] \nTotDataCnt=[d] \nMaxParmCnt=[d] \nMaxDataCnt=[d]\nMaxSCnt=[d] \nTransFlags=[w] \nRes1=[w] \nRes2=[w] \nRes3=[w]\nParamCnt=[d] \nParamOff=[d] \nDataCnt=[d] \nDataOff=[d] \nSUCnt=[d]\n"; - f2 = "|Name=[S]\n"; - f3 = "|Param "; - f4 = "|Data "; - } else { - TCHECK2(w[7 * 2], 2); - paramlen = EXTRACT_LE_16BITS(w + 3 * 2); - param = buf + EXTRACT_LE_16BITS(w + 4 * 2); - datalen = EXTRACT_LE_16BITS(w + 6 * 2); - data = buf + EXTRACT_LE_16BITS(w + 7 * 2); - f1 = "TotParamCnt=[d] \nTotDataCnt=[d] \nRes1=[d]\nParamCnt=[d] \nParamOff=[d] \nRes2=[d] \nDataCnt=[d] \nDataOff=[d] \nRes3=[d]\nLsetup=[d]\n"; - f2 = "|Unknown "; - f3 = "|Param "; - f4 = "|Data "; - } - - smb_fdata(words + 1, f1, SMBMIN(words + 1 + 2 * words[0], maxbuf), - unicodestr); - - TCHECK2(*data1, 2); - bcc = EXTRACT_LE_16BITS(data1); - printf("smb_bcc=%u\n", bcc); - if (bcc > 0) { - smb_fdata(data1 + 2, f2, maxbuf - (paramlen + datalen), unicodestr); - - if (strcmp((const char *)(data1 + 2), "\\MAILSLOT\\BROWSE") == 0) { - print_browse(param, paramlen, data, datalen); - return; - } - - if (strcmp((const char *)(data1 + 2), "\\PIPE\\LANMAN") == 0) { - print_ipc(param, paramlen, data, datalen); - return; - } - - if (paramlen) - smb_fdata(param, f3, SMBMIN(param + paramlen, maxbuf), unicodestr); - if (datalen) - smb_fdata(data, f4, SMBMIN(data + datalen, maxbuf), unicodestr); - } - return; -trunc: - printf("[|SMB]"); - return; -} - - -static void -print_negprot(const u_char *words, const u_char *data, const u_char *buf _U_, const u_char *maxbuf) -{ - u_int wct, bcc; - const char *f1 = NULL, *f2 = NULL; - - TCHECK(words[0]); - wct = words[0]; - if (request) - f2 = "*|Dialect=[Y]\n"; - else { - if (wct == 1) - f1 = "Core Protocol\nDialectIndex=[d]"; - else if (wct == 17) - f1 = "NT1 Protocol\nDialectIndex=[d]\nSecMode=[B]\nMaxMux=[d]\nNumVcs=[d]\nMaxBuffer=[D]\nRawSize=[D]\nSessionKey=[W]\nCapabilities=[W]\nServerTime=[T3]TimeZone=[d]\nCryptKey="; - else if (wct == 13) - f1 = "Coreplus/Lanman1/Lanman2 Protocol\nDialectIndex=[d]\nSecMode=[w]\nMaxXMit=[d]\nMaxMux=[d]\nMaxVcs=[d]\nBlkMode=[w]\nSessionKey=[W]\nServerTime=[T1]TimeZone=[d]\nRes=[W]\nCryptKey="; - } - - if (f1) - smb_fdata(words + 1, f1, SMBMIN(words + 1 + wct * 2, maxbuf), - unicodestr); - else - print_data(words + 1, SMBMIN(wct * 2, PTR_DIFF(maxbuf, words + 1))); - - TCHECK2(*data, 2); - bcc = EXTRACT_LE_16BITS(data); - printf("smb_bcc=%u\n", bcc); - if (bcc > 0) { - if (f2) - smb_fdata(data + 2, f2, SMBMIN(data + 2 + EXTRACT_LE_16BITS(data), - maxbuf), unicodestr); - else - print_data(data + 2, SMBMIN(EXTRACT_LE_16BITS(data), PTR_DIFF(maxbuf, data + 2))); - } - return; -trunc: - printf("[|SMB]"); - return; -} - -static void -print_sesssetup(const u_char *words, const u_char *data, const u_char *buf _U_, const u_char *maxbuf) -{ - u_int wct, bcc; - const char *f1 = NULL, *f2 = NULL; - - TCHECK(words[0]); - wct = words[0]; - if (request) { - if (wct == 10) - f1 = "Com2=[w]\nOff2=[d]\nBufSize=[d]\nMpxMax=[d]\nVcNum=[d]\nSessionKey=[W]\nPassLen=[d]\nCryptLen=[d]\nCryptOff=[d]\nPass&Name=\n"; - else - f1 = "Com2=[B]\nRes1=[B]\nOff2=[d]\nMaxBuffer=[d]\nMaxMpx=[d]\nVcNumber=[d]\nSessionKey=[W]\nCaseInsensitivePasswordLength=[d]\nCaseSensitivePasswordLength=[d]\nRes=[W]\nCapabilities=[W]\nPass1&Pass2&Account&Domain&OS&LanMan=\n"; - } else { - if (wct == 3) { - f1 = "Com2=[w]\nOff2=[d]\nAction=[w]\n"; - } else if (wct == 13) { - f1 = "Com2=[B]\nRes=[B]\nOff2=[d]\nAction=[w]\n"; - f2 = "NativeOS=[S]\nNativeLanMan=[S]\nPrimaryDomain=[S]\n"; - } - } - - if (f1) - smb_fdata(words + 1, f1, SMBMIN(words + 1 + wct * 2, maxbuf), - unicodestr); - else - print_data(words + 1, SMBMIN(wct * 2, PTR_DIFF(maxbuf, words + 1))); - - TCHECK2(*data, 2); - bcc = EXTRACT_LE_16BITS(data); - printf("smb_bcc=%u\n", bcc); - if (bcc > 0) { - if (f2) - smb_fdata(data + 2, f2, SMBMIN(data + 2 + EXTRACT_LE_16BITS(data), - maxbuf), unicodestr); - else - print_data(data + 2, SMBMIN(EXTRACT_LE_16BITS(data), PTR_DIFF(maxbuf, data + 2))); - } - return; -trunc: - printf("[|SMB]"); - return; -} - -static void -print_lockingandx(const u_char *words, const u_char *data, const u_char *buf _U_, const u_char *maxbuf) -{ - u_int wct, bcc; - const u_char *maxwords; - const char *f1 = NULL, *f2 = NULL; - - TCHECK(words[0]); - wct = words[0]; - if (request) { - f1 = "Com2=[w]\nOff2=[d]\nHandle=[d]\nLockType=[w]\nTimeOut=[D]\nUnlockCount=[d]\nLockCount=[d]\n"; - TCHECK(words[7]); - if (words[7] & 0x10) - f2 = "*Process=[d]\n[P2]Offset=[M]\nLength=[M]\n"; - else - f2 = "*Process=[d]\nOffset=[D]\nLength=[D]\n"; - } else { - f1 = "Com2=[w]\nOff2=[d]\n"; - } - - maxwords = SMBMIN(words + 1 + wct * 2, maxbuf); - if (wct) - smb_fdata(words + 1, f1, maxwords, unicodestr); - - TCHECK2(*data, 2); - bcc = EXTRACT_LE_16BITS(data); - printf("smb_bcc=%u\n", bcc); - if (bcc > 0) { - if (f2) - smb_fdata(data + 2, f2, SMBMIN(data + 2 + EXTRACT_LE_16BITS(data), - maxbuf), unicodestr); - else - print_data(data + 2, SMBMIN(EXTRACT_LE_16BITS(data), PTR_DIFF(maxbuf, data + 2))); - } - return; -trunc: - printf("[|SMB]"); - return; -} - - -static struct smbfns smb_fns[] = { - { -1, "SMBunknown", 0, DEFDESCRIPT }, - - { SMBtcon, "SMBtcon", 0, - { NULL, "Path=[Z]\nPassword=[Z]\nDevice=[Z]\n", - "MaxXmit=[d]\nTreeId=[d]\n", NULL, - NULL } }, - - { SMBtdis, "SMBtdis", 0, DEFDESCRIPT }, - { SMBexit, "SMBexit", 0, DEFDESCRIPT }, - { SMBioctl, "SMBioctl", 0, DEFDESCRIPT }, - - { SMBecho, "SMBecho", 0, - { "ReverbCount=[d]\n", NULL, - "SequenceNum=[d]\n", NULL, - NULL } }, - - { SMBulogoffX, "SMBulogoffX", FLG_CHAIN, DEFDESCRIPT }, - - { SMBgetatr, "SMBgetatr", 0, - { NULL, "Path=[Z]\n", - "Attribute=[A]\nTime=[T2]Size=[D]\nRes=([w,w,w,w,w])\n", NULL, - NULL } }, - - { SMBsetatr, "SMBsetatr", 0, - { "Attribute=[A]\nTime=[T2]Res=([w,w,w,w,w])\n", "Path=[Z]\n", - NULL, NULL, NULL } }, - - { SMBchkpth, "SMBchkpth", 0, - { NULL, "Path=[Z]\n", NULL, NULL, NULL } }, - - { SMBsearch, "SMBsearch", 0, - { "Count=[d]\nAttrib=[A]\n", - "Path=[Z]\nBlkType=[B]\nBlkLen=[d]\n|Res1=[B]\nMask=[s11]\nSrv1=[B]\nDirIndex=[d]\nSrv2=[w]\nRes2=[W]\n", - "Count=[d]\n", - "BlkType=[B]\nBlkLen=[d]\n*\nRes1=[B]\nMask=[s11]\nSrv1=[B]\nDirIndex=[d]\nSrv2=[w]\nRes2=[W]\nAttrib=[a]\nTime=[T1]Size=[D]\nName=[s13]\n", - NULL } }, - - { SMBopen, "SMBopen", 0, - { "Mode=[w]\nAttribute=[A]\n", "Path=[Z]\n", - "Handle=[d]\nOAttrib=[A]\nTime=[T2]Size=[D]\nAccess=[w]\n", - NULL, NULL } }, - - { SMBcreate, "SMBcreate", 0, - { "Attrib=[A]\nTime=[T2]", "Path=[Z]\n", "Handle=[d]\n", NULL, NULL } }, - - { SMBmknew, "SMBmknew", 0, - { "Attrib=[A]\nTime=[T2]", "Path=[Z]\n", "Handle=[d]\n", NULL, NULL } }, - - { SMBunlink, "SMBunlink", 0, - { "Attrib=[A]\n", "Path=[Z]\n", NULL, NULL, NULL } }, - - { SMBread, "SMBread", 0, - { "Handle=[d]\nByteCount=[d]\nOffset=[D]\nCountLeft=[d]\n", NULL, - "Count=[d]\nRes=([w,w,w,w])\n", NULL, NULL } }, - - { SMBwrite, "SMBwrite", 0, - { "Handle=[d]\nByteCount=[d]\nOffset=[D]\nCountLeft=[d]\n", NULL, - "Count=[d]\n", NULL, NULL } }, - - { SMBclose, "SMBclose", 0, - { "Handle=[d]\nTime=[T2]", NULL, NULL, NULL, NULL } }, - - { SMBmkdir, "SMBmkdir", 0, - { NULL, "Path=[Z]\n", NULL, NULL, NULL } }, - - { SMBrmdir, "SMBrmdir", 0, - { NULL, "Path=[Z]\n", NULL, NULL, NULL } }, - - { SMBdskattr, "SMBdskattr", 0, - { NULL, NULL, - "TotalUnits=[d]\nBlocksPerUnit=[d]\nBlockSize=[d]\nFreeUnits=[d]\nMedia=[w]\n", - NULL, NULL } }, - - { SMBmv, "SMBmv", 0, - { "Attrib=[A]\n", "OldPath=[Z]\nNewPath=[Z]\n", NULL, NULL, NULL } }, - - /* - * this is a Pathworks specific call, allowing the - * changing of the root path - */ - { pSETDIR, "SMBsetdir", 0, { NULL, "Path=[Z]\n", NULL, NULL, NULL } }, - - { SMBlseek, "SMBlseek", 0, - { "Handle=[d]\nMode=[w]\nOffset=[D]\n", "Offset=[D]\n", NULL, NULL, NULL } }, - - { SMBflush, "SMBflush", 0, { "Handle=[d]\n", NULL, NULL, NULL, NULL } }, - - { SMBsplopen, "SMBsplopen", 0, - { "SetupLen=[d]\nMode=[w]\n", "Ident=[Z]\n", "Handle=[d]\n", - NULL, NULL } }, - - { SMBsplclose, "SMBsplclose", 0, - { "Handle=[d]\n", NULL, NULL, NULL, NULL } }, - - { SMBsplretq, "SMBsplretq", 0, - { "MaxCount=[d]\nStartIndex=[d]\n", NULL, - "Count=[d]\nIndex=[d]\n", - "*Time=[T2]Status=[B]\nJobID=[d]\nSize=[D]\nRes=[B]Name=[s16]\n", - NULL } }, - - { SMBsplwr, "SMBsplwr", 0, - { "Handle=[d]\n", NULL, NULL, NULL, NULL } }, - - { SMBlock, "SMBlock", 0, - { "Handle=[d]\nCount=[D]\nOffset=[D]\n", NULL, NULL, NULL, NULL } }, - - { SMBunlock, "SMBunlock", 0, - { "Handle=[d]\nCount=[D]\nOffset=[D]\n", NULL, NULL, NULL, NULL } }, - - /* CORE+ PROTOCOL FOLLOWS */ - - { SMBreadbraw, "SMBreadbraw", 0, - { "Handle=[d]\nOffset=[D]\nMaxCount=[d]\nMinCount=[d]\nTimeOut=[D]\nRes=[d]\n", - NULL, NULL, NULL, NULL } }, - - { SMBwritebraw, "SMBwritebraw", 0, - { "Handle=[d]\nTotalCount=[d]\nRes=[w]\nOffset=[D]\nTimeOut=[D]\nWMode=[w]\nRes2=[W]\n|DataSize=[d]\nDataOff=[d]\n", - NULL, "WriteRawAck", NULL, NULL } }, - - { SMBwritec, "SMBwritec", 0, - { NULL, NULL, "Count=[d]\n", NULL, NULL } }, - - { SMBwriteclose, "SMBwriteclose", 0, - { "Handle=[d]\nCount=[d]\nOffset=[D]\nTime=[T2]Res=([w,w,w,w,w,w])", - NULL, "Count=[d]\n", NULL, NULL } }, - - { SMBlockread, "SMBlockread", 0, - { "Handle=[d]\nByteCount=[d]\nOffset=[D]\nCountLeft=[d]\n", NULL, - "Count=[d]\nRes=([w,w,w,w])\n", NULL, NULL } }, - - { SMBwriteunlock, "SMBwriteunlock", 0, - { "Handle=[d]\nByteCount=[d]\nOffset=[D]\nCountLeft=[d]\n", NULL, - "Count=[d]\n", NULL, NULL } }, - - { SMBreadBmpx, "SMBreadBmpx", 0, - { "Handle=[d]\nOffset=[D]\nMaxCount=[d]\nMinCount=[d]\nTimeOut=[D]\nRes=[w]\n", - NULL, - "Offset=[D]\nTotCount=[d]\nRemaining=[d]\nRes=([w,w])\nDataSize=[d]\nDataOff=[d]\n", - NULL, NULL } }, - - { SMBwriteBmpx, "SMBwriteBmpx", 0, - { "Handle=[d]\nTotCount=[d]\nRes=[w]\nOffset=[D]\nTimeOut=[D]\nWMode=[w]\nRes2=[W]\nDataSize=[d]\nDataOff=[d]\n", NULL, - "Remaining=[d]\n", NULL, NULL } }, - - { SMBwriteBs, "SMBwriteBs", 0, - { "Handle=[d]\nTotCount=[d]\nOffset=[D]\nRes=[W]\nDataSize=[d]\nDataOff=[d]\n", - NULL, "Count=[d]\n", NULL, NULL } }, - - { SMBsetattrE, "SMBsetattrE", 0, - { "Handle=[d]\nCreationTime=[T2]AccessTime=[T2]ModifyTime=[T2]", NULL, - NULL, NULL, NULL } }, - - { SMBgetattrE, "SMBgetattrE", 0, - { "Handle=[d]\n", NULL, - "CreationTime=[T2]AccessTime=[T2]ModifyTime=[T2]Size=[D]\nAllocSize=[D]\nAttribute=[A]\n", - NULL, NULL } }, - - { SMBtranss, "SMBtranss", 0, DEFDESCRIPT }, - { SMBioctls, "SMBioctls", 0, DEFDESCRIPT }, - - { SMBcopy, "SMBcopy", 0, - { "TreeID2=[d]\nOFun=[w]\nFlags=[w]\n", "Path=[S]\nNewPath=[S]\n", - "CopyCount=[d]\n", "|ErrStr=[S]\n", NULL } }, - - { SMBmove, "SMBmove", 0, - { "TreeID2=[d]\nOFun=[w]\nFlags=[w]\n", "Path=[S]\nNewPath=[S]\n", - "MoveCount=[d]\n", "|ErrStr=[S]\n", NULL } }, - - { SMBopenX, "SMBopenX", FLG_CHAIN, - { "Com2=[w]\nOff2=[d]\nFlags=[w]\nMode=[w]\nSearchAttrib=[A]\nAttrib=[A]\nTime=[T2]OFun=[w]\nSize=[D]\nTimeOut=[D]\nRes=[W]\n", - "Path=[S]\n", - "Com2=[w]\nOff2=[d]\nHandle=[d]\nAttrib=[A]\nTime=[T2]Size=[D]\nAccess=[w]\nType=[w]\nState=[w]\nAction=[w]\nFileID=[W]\nRes=[w]\n", - NULL, NULL } }, - - { SMBreadX, "SMBreadX", FLG_CHAIN, - { "Com2=[w]\nOff2=[d]\nHandle=[d]\nOffset=[D]\nMaxCount=[d]\nMinCount=[d]\nTimeOut=[D]\nCountLeft=[d]\n", - NULL, - "Com2=[w]\nOff2=[d]\nRemaining=[d]\nRes=[W]\nDataSize=[d]\nDataOff=[d]\nRes=([w,w,w,w])\n", - NULL, NULL } }, - - { SMBwriteX, "SMBwriteX", FLG_CHAIN, - { "Com2=[w]\nOff2=[d]\nHandle=[d]\nOffset=[D]\nTimeOut=[D]\nWMode=[w]\nCountLeft=[d]\nRes=[w]\nDataSize=[d]\nDataOff=[d]\n", - NULL, - "Com2=[w]\nOff2=[d]\nCount=[d]\nRemaining=[d]\nRes=[W]\n", - NULL, NULL } }, - - { SMBffirst, "SMBffirst", 0, - { "Count=[d]\nAttrib=[A]\n", - "Path=[Z]\nBlkType=[B]\nBlkLen=[d]\n|Res1=[B]\nMask=[s11]\nSrv1=[B]\nDirIndex=[d]\nSrv2=[w]\n", - "Count=[d]\n", - "BlkType=[B]\nBlkLen=[d]\n*\nRes1=[B]\nMask=[s11]\nSrv1=[B]\nDirIndex=[d]\nSrv2=[w]\nRes2=[W]\nAttrib=[a]\nTime=[T1]Size=[D]\nName=[s13]\n", - NULL } }, - - { SMBfunique, "SMBfunique", 0, - { "Count=[d]\nAttrib=[A]\n", - "Path=[Z]\nBlkType=[B]\nBlkLen=[d]\n|Res1=[B]\nMask=[s11]\nSrv1=[B]\nDirIndex=[d]\nSrv2=[w]\n", - "Count=[d]\n", - "BlkType=[B]\nBlkLen=[d]\n*\nRes1=[B]\nMask=[s11]\nSrv1=[B]\nDirIndex=[d]\nSrv2=[w]\nRes2=[W]\nAttrib=[a]\nTime=[T1]Size=[D]\nName=[s13]\n", - NULL } }, - - { SMBfclose, "SMBfclose", 0, - { "Count=[d]\nAttrib=[A]\n", - "Path=[Z]\nBlkType=[B]\nBlkLen=[d]\n|Res1=[B]\nMask=[s11]\nSrv1=[B]\nDirIndex=[d]\nSrv2=[w]\n", - "Count=[d]\n", - "BlkType=[B]\nBlkLen=[d]\n*\nRes1=[B]\nMask=[s11]\nSrv1=[B]\nDirIndex=[d]\nSrv2=[w]\nRes2=[W]\nAttrib=[a]\nTime=[T1]Size=[D]\nName=[s13]\n", - NULL } }, - - { SMBfindnclose, "SMBfindnclose", 0, - { "Handle=[d]\n", NULL, NULL, NULL, NULL } }, - - { SMBfindclose, "SMBfindclose", 0, - { "Handle=[d]\n", NULL, NULL, NULL, NULL } }, - - { SMBsends, "SMBsends", 0, - { NULL, "Source=[Z]\nDest=[Z]\n", NULL, NULL, NULL } }, - - { SMBsendstrt, "SMBsendstrt", 0, - { NULL, "Source=[Z]\nDest=[Z]\n", "GroupID=[d]\n", NULL, NULL } }, - - { SMBsendend, "SMBsendend", 0, - { "GroupID=[d]\n", NULL, NULL, NULL, NULL } }, - - { SMBsendtxt, "SMBsendtxt", 0, - { "GroupID=[d]\n", NULL, NULL, NULL, NULL } }, - - { SMBsendb, "SMBsendb", 0, - { NULL, "Source=[Z]\nDest=[Z]\n", NULL, NULL, NULL } }, - - { SMBfwdname, "SMBfwdname", 0, DEFDESCRIPT }, - { SMBcancelf, "SMBcancelf", 0, DEFDESCRIPT }, - { SMBgetmac, "SMBgetmac", 0, DEFDESCRIPT }, - - { SMBnegprot, "SMBnegprot", 0, - { NULL, NULL, NULL, NULL, print_negprot } }, - - { SMBsesssetupX, "SMBsesssetupX", FLG_CHAIN, - { NULL, NULL, NULL, NULL, print_sesssetup } }, - - { SMBtconX, "SMBtconX", FLG_CHAIN, - { "Com2=[w]\nOff2=[d]\nFlags=[w]\nPassLen=[d]\nPasswd&Path&Device=\n", - NULL, "Com2=[w]\nOff2=[d]\n", "ServiceType=[R]\n", NULL } }, - - { SMBlockingX, "SMBlockingX", FLG_CHAIN, - { NULL, NULL, NULL, NULL, print_lockingandx } }, - - { SMBtrans2, "SMBtrans2", 0, { NULL, NULL, NULL, NULL, print_trans2 } }, - - { SMBtranss2, "SMBtranss2", 0, DEFDESCRIPT }, - { SMBctemp, "SMBctemp", 0, DEFDESCRIPT }, - { SMBreadBs, "SMBreadBs", 0, DEFDESCRIPT }, - { SMBtrans, "SMBtrans", 0, { NULL, NULL, NULL, NULL, print_trans } }, - - { SMBnttrans, "SMBnttrans", 0, DEFDESCRIPT }, - { SMBnttranss, "SMBnttranss", 0, DEFDESCRIPT }, - - { SMBntcreateX, "SMBntcreateX", FLG_CHAIN, - { "Com2=[w]\nOff2=[d]\nRes=[b]\nNameLen=[ld]\nFlags=[W]\nRootDirectoryFid=[D]\nAccessMask=[W]\nAllocationSize=[L]\nExtFileAttributes=[W]\nShareAccess=[W]\nCreateDisposition=[W]\nCreateOptions=[W]\nImpersonationLevel=[W]\nSecurityFlags=[b]\n", - "Path=[C]\n", - "Com2=[w]\nOff2=[d]\nOplockLevel=[b]\nFid=[d]\nCreateAction=[W]\nCreateTime=[T3]LastAccessTime=[T3]LastWriteTime=[T3]ChangeTime=[T3]ExtFileAttributes=[W]\nAllocationSize=[L]\nEndOfFile=[L]\nFileType=[w]\nDeviceState=[w]\nDirectory=[b]\n", - NULL, NULL } }, - - { SMBntcancel, "SMBntcancel", 0, DEFDESCRIPT }, - - { -1, NULL, 0, DEFDESCRIPT } -}; - - -/* - * print a SMB message - */ -static void -print_smb(const u_char *buf, const u_char *maxbuf) -{ - u_int16_t flags2; - int nterrcodes; - int command; - u_int32_t nterror; - const u_char *words, *maxwords, *data; - struct smbfns *fn; - const char *fmt_smbheader = - "[P4]SMB Command = [B]\nError class = [BP1]\nError code = [d]\nFlags1 = [B]\nFlags2 = [B][P13]\nTree ID = [d]\nProc ID = [d]\nUID = [d]\nMID = [d]\nWord Count = [b]\n"; - int smboffset; - - TCHECK(buf[9]); - request = (buf[9] & 0x80) ? 0 : 1; - flags2 = EXTRACT_LE_16BITS(&buf[10]); - unicodestr = flags2 & 0x8000; - nterrcodes = flags2 & 0x4000; - startbuf = buf; - - command = buf[4]; - - fn = smbfind(command, smb_fns); - - if (vflag > 1) - printf("\n"); - - printf("SMB PACKET: %s (%s)\n", fn->name, request ? "REQUEST" : "REPLY"); - - if (vflag < 2) - return; - - /* print out the header */ - smb_fdata(buf, fmt_smbheader, buf + 33, unicodestr); - - if (nterrcodes) { - nterror = EXTRACT_LE_32BITS(&buf[5]); - if (nterror) - printf("NTError = %s\n", nt_errstr(nterror)); - } else { - if (buf[5]) - printf("SMBError = %s\n", smb_errstr(buf[5], EXTRACT_LE_16BITS(&buf[7]))); - } - - smboffset = 32; - - for (;;) { - const char *f1, *f2; - int wct; - u_int bcc; - int newsmboffset; - - words = buf + smboffset; - TCHECK(words[0]); - wct = words[0]; - data = words + 1 + wct * 2; - maxwords = SMBMIN(data, maxbuf); - - if (request) { - f1 = fn->descript.req_f1; - f2 = fn->descript.req_f2; - } else { - f1 = fn->descript.rep_f1; - f2 = fn->descript.rep_f2; - } - - if (fn->descript.fn) - (*fn->descript.fn)(words, data, buf, maxbuf); - else { - if (wct) { - if (f1) - smb_fdata(words + 1, f1, words + 1 + wct * 2, unicodestr); - else { - int i; - int v; - - for (i = 0; &words[1 + 2 * i] < maxwords; i++) { - TCHECK2(words[1 + 2 * i], 2); - v = EXTRACT_LE_16BITS(words + 1 + 2 * i); - printf("smb_vwv[%d]=%d (0x%X)\n", i, v, v); - } - } - } - - TCHECK2(*data, 2); - bcc = EXTRACT_LE_16BITS(data); - printf("smb_bcc=%u\n", bcc); - if (f2) { - if (bcc > 0) - smb_fdata(data + 2, f2, data + 2 + bcc, unicodestr); - } else { - if (bcc > 0) { - printf("smb_buf[]=\n"); - print_data(data + 2, SMBMIN(bcc, PTR_DIFF(maxbuf, data + 2))); - } - } - } - - if ((fn->flags & FLG_CHAIN) == 0) - break; - if (wct == 0) - break; - TCHECK(words[1]); - command = words[1]; - if (command == 0xFF) - break; - TCHECK2(words[3], 2); - newsmboffset = EXTRACT_LE_16BITS(words + 3); - - fn = smbfind(command, smb_fns); - - printf("\nSMB PACKET: %s (%s) (CHAINED)\n", - fn->name, request ? "REQUEST" : "REPLY"); - if (newsmboffset < smboffset) { - printf("Bad andX offset: %u < %u\n", newsmboffset, smboffset); - break; - } - smboffset = newsmboffset; - } - - printf("\n"); - return; -trunc: - printf("[|SMB]"); - return; -} - - -/* - * print a NBT packet received across tcp on port 139 - */ -void -nbt_tcp_print(const u_char *data, int length) -{ - int caplen; - int type; - u_int nbt_len; - const u_char *maxbuf; - - if (length < 4) - goto trunc; - if (snapend < data) - goto trunc; - caplen = snapend - data; - if (caplen < 4) - goto trunc; - maxbuf = data + caplen; - type = data[0]; - nbt_len = EXTRACT_16BITS(data + 2); - length -= 4; - caplen -= 4; - - startbuf = data; - - if (vflag < 2) { - printf(" NBT Session Packet: "); - switch (type) { - case 0x00: - printf("Session Message"); - break; - - case 0x81: - printf("Session Request"); - break; - - case 0x82: - printf("Session Granted"); - break; - - case 0x83: - { - int ecode; - - if (nbt_len < 4) - goto trunc; - if (length < 4) - goto trunc; - if (caplen < 4) - goto trunc; - ecode = data[4]; - - printf("Session Reject, "); - switch (ecode) { - case 0x80: - printf("Not listening on called name"); - break; - case 0x81: - printf("Not listening for calling name"); - break; - case 0x82: - printf("Called name not present"); - break; - case 0x83: - printf("Called name present, but insufficient resources"); - break; - default: - printf("Unspecified error 0x%X", ecode); - break; - } - } - break; - - case 0x85: - printf("Session Keepalive"); - break; - - default: - data = smb_fdata(data, "Unknown packet type [rB]", maxbuf, 0); - break; - } - } else { - printf ("\n>>> NBT Session Packet\n"); - switch (type) { - case 0x00: - data = smb_fdata(data, "[P1]NBT Session Message\nFlags=[B]\nLength=[rd]\n", - data + 4, 0); - if (data == NULL) - break; - if (nbt_len >= 4 && caplen >= 4 && memcmp(data,"\377SMB",4) == 0) { - if ((int)nbt_len > caplen) { - if ((int)nbt_len > length) - printf("WARNING: Packet is continued in later TCP segments\n"); - else - printf("WARNING: Short packet. Try increasing the snap length by %d\n", - nbt_len - caplen); - } - print_smb(data, maxbuf > data + nbt_len ? data + nbt_len : maxbuf); - } else - printf("Session packet:(raw data or continuation?)\n"); - break; - - case 0x81: - data = smb_fdata(data, - "[P1]NBT Session Request\nFlags=[B]\nLength=[rd]\nDestination=[n1]\nSource=[n1]\n", - maxbuf, 0); - break; - - case 0x82: - data = smb_fdata(data, "[P1]NBT Session Granted\nFlags=[B]\nLength=[rd]\n", maxbuf, 0); - break; - - case 0x83: - { - const u_char *origdata; - int ecode; - - origdata = data; - data = smb_fdata(data, "[P1]NBT SessionReject\nFlags=[B]\nLength=[rd]\nReason=[B]\n", - maxbuf, 0); - if (data == NULL) - break; - if (nbt_len >= 1 && caplen >= 1) { - ecode = origdata[4]; - switch (ecode) { - case 0x80: - printf("Not listening on called name\n"); - break; - case 0x81: - printf("Not listening for calling name\n"); - break; - case 0x82: - printf("Called name not present\n"); - break; - case 0x83: - printf("Called name present, but insufficient resources\n"); - break; - default: - printf("Unspecified error 0x%X\n", ecode); - break; - } - } - } - break; - - case 0x85: - data = smb_fdata(data, "[P1]NBT Session Keepalive\nFlags=[B]\nLength=[rd]\n", maxbuf, 0); - break; - - default: - data = smb_fdata(data, "NBT - Unknown packet type\nType=[B]\n", maxbuf, 0); - break; - } - printf("\n"); - fflush(stdout); - } - return; -trunc: - printf("[|SMB]"); - return; -} - - -/* - * print a NBT packet received across udp on port 137 - */ -void -nbt_udp137_print(const u_char *data, int length) -{ - const u_char *maxbuf = data + length; - int name_trn_id, response, opcode, nm_flags, rcode; - int qdcount, ancount, nscount, arcount; - const char *opcodestr; - const u_char *p; - int total, i; - - TCHECK2(data[10], 2); - name_trn_id = EXTRACT_16BITS(data); - response = (data[2] >> 7); - opcode = (data[2] >> 3) & 0xF; - nm_flags = ((data[2] & 0x7) << 4) + (data[3] >> 4); - rcode = data[3] & 0xF; - qdcount = EXTRACT_16BITS(data + 4); - ancount = EXTRACT_16BITS(data + 6); - nscount = EXTRACT_16BITS(data + 8); - arcount = EXTRACT_16BITS(data + 10); - startbuf = data; - - if (maxbuf <= data) - return; - - if (vflag > 1) - printf("\n>>> "); - - printf("NBT UDP PACKET(137): "); - - switch (opcode) { - case 0: opcodestr = "QUERY"; break; - case 5: opcodestr = "REGISTRATION"; break; - case 6: opcodestr = "RELEASE"; break; - case 7: opcodestr = "WACK"; break; - case 8: opcodestr = "REFRESH(8)"; break; - case 9: opcodestr = "REFRESH"; break; - case 15: opcodestr = "MULTIHOMED REGISTRATION"; break; - default: opcodestr = "OPUNKNOWN"; break; - } - printf("%s", opcodestr); - if (response) { - if (rcode) - printf("; NEGATIVE"); - else - printf("; POSITIVE"); - } - - if (response) - printf("; RESPONSE"); - else - printf("; REQUEST"); - - if (nm_flags & 1) - printf("; BROADCAST"); - else - printf("; UNICAST"); - - if (vflag < 2) - return; - - printf("\nTrnID=0x%X\nOpCode=%d\nNmFlags=0x%X\nRcode=%d\nQueryCount=%d\nAnswerCount=%d\nAuthorityCount=%d\nAddressRecCount=%d\n", - name_trn_id, opcode, nm_flags, rcode, qdcount, ancount, nscount, - arcount); - - p = data + 12; - - total = ancount + nscount + arcount; - - if (qdcount > 100 || total > 100) { - printf("Corrupt packet??\n"); - return; - } - - if (qdcount) { - printf("QuestionRecords:\n"); - for (i = 0; i < qdcount; i++) { - p = smb_fdata(p, - "|Name=[n1]\nQuestionType=[rw]\nQuestionClass=[rw]\n#", - maxbuf, 0); - if (p == NULL) - goto out; - } - } - - if (total) { - printf("\nResourceRecords:\n"); - for (i = 0; i < total; i++) { - int rdlen; - int restype; - - p = smb_fdata(p, "Name=[n1]\n#", maxbuf, 0); - if (p == NULL) - goto out; - restype = EXTRACT_16BITS(p); - p = smb_fdata(p, "ResType=[rw]\nResClass=[rw]\nTTL=[rD]\n", p + 8, 0); - if (p == NULL) - goto out; - rdlen = EXTRACT_16BITS(p); - printf("ResourceLength=%d\nResourceData=\n", rdlen); - p += 2; - if (rdlen == 6) { - p = smb_fdata(p, "AddrType=[rw]\nAddress=[b.b.b.b]\n", p + rdlen, 0); - if (p == NULL) - goto out; - } else { - if (restype == 0x21) { - int numnames; - - TCHECK(*p); - numnames = p[0]; - p = smb_fdata(p, "NumNames=[B]\n", p + 1, 0); - if (p == NULL) - goto out; - while (numnames--) { - p = smb_fdata(p, "Name=[n2]\t#", maxbuf, 0); - if (p == NULL) - goto out; - TCHECK(*p); - if (p[0] & 0x80) - printf("<GROUP> "); - switch (p[0] & 0x60) { - case 0x00: printf("B "); break; - case 0x20: printf("P "); break; - case 0x40: printf("M "); break; - case 0x60: printf("_ "); break; - } - if (p[0] & 0x10) - printf("<DEREGISTERING> "); - if (p[0] & 0x08) - printf("<CONFLICT> "); - if (p[0] & 0x04) - printf("<ACTIVE> "); - if (p[0] & 0x02) - printf("<PERMANENT> "); - printf("\n"); - p += 2; - } - } else { - print_data(p, min(rdlen, length - (p - data))); - p += rdlen; - } - } - } - } - - if (p < maxbuf) - smb_fdata(p, "AdditionalData:\n", maxbuf, 0); - -out: - printf("\n"); - fflush(stdout); - return; -trunc: - printf("[|SMB]"); - return; -} - - - -/* - * print a NBT packet received across udp on port 138 - */ -void -nbt_udp138_print(const u_char *data, int length) -{ - const u_char *maxbuf = data + length; - - if (maxbuf > snapend) - maxbuf = snapend; - if (maxbuf <= data) - return; - startbuf = data; - - if (vflag < 2) { - printf("NBT UDP PACKET(138)"); - return; - } - - data = smb_fdata(data, - "\n>>> NBT UDP PACKET(138) Res=[rw] ID=[rw] IP=[b.b.b.b] Port=[rd] Length=[rd] Res2=[rw]\nSourceName=[n1]\nDestName=[n1]\n#", - maxbuf, 0); - - if (data != NULL) { - /* If there isn't enough data for "\377SMB", don't check for it. */ - if (&data[3] >= maxbuf) - goto out; - - if (memcmp(data, "\377SMB",4) == 0) - print_smb(data, maxbuf); - } -out: - printf("\n"); - fflush(stdout); -} - - -/* - print netbeui frames -*/ -struct nbf_strings { - const char *name; - const char *nonverbose; - const char *verbose; -} nbf_strings[0x20] = { - { "Add Group Name Query", ", [P23]Name to add=[n2]#", - "[P5]ResponseCorrelator=[w]\n[P16]Name to add=[n2]\n" }, - { "Add Name Query", ", [P23]Name to add=[n2]#", - "[P5]ResponseCorrelator=[w]\n[P16]Name to add=[n2]\n" }, - { "Name In Conflict", NULL, NULL }, - { "Status Query", NULL, NULL }, - { NULL, NULL, NULL }, /* not used */ - { NULL, NULL, NULL }, /* not used */ - { NULL, NULL, NULL }, /* not used */ - { "Terminate Trace", NULL, NULL }, - { "Datagram", NULL, - "[P7]Destination=[n2]\nSource=[n2]\n" }, - { "Broadcast Datagram", NULL, - "[P7]Destination=[n2]\nSource=[n2]\n" }, - { "Name Query", ", [P7]Name=[n2]#", - "[P1]SessionNumber=[B]\nNameType=[B][P2]\nResponseCorrelator=[w]\nName=[n2]\nName of sender=[n2]\n" }, - { NULL, NULL, NULL }, /* not used */ - { NULL, NULL, NULL }, /* not used */ - { "Add Name Response", ", [P1]GroupName=[w] [P4]Destination=[n2] Source=[n2]#", - "AddNameInProcess=[B]\nGroupName=[w]\nTransmitCorrelator=[w][P2]\nDestination=[n2]\nSource=[n2]\n" }, - { "Name Recognized", NULL, - "[P1]Data2=[w]\nTransmitCorrelator=[w]\nResponseCorelator=[w]\nDestination=[n2]\nSource=[n2]\n" }, - { "Status Response", NULL, NULL }, - { NULL, NULL, NULL }, /* not used */ - { NULL, NULL, NULL }, /* not used */ - { NULL, NULL, NULL }, /* not used */ - { "Terminate Trace", NULL, NULL }, - { "Data Ack", NULL, - "[P3]TransmitCorrelator=[w][P2]\nRemoteSessionNumber=[B]\nLocalSessionNumber=[B]\n" }, - { "Data First/Middle", NULL, - "Flags=[{RECEIVE_CONTINUE|NO_ACK||PIGGYBACK_ACK_INCLUDED|}]\nResyncIndicator=[w][P2]\nResponseCorelator=[w]\nRemoteSessionNumber=[B]\nLocalSessionNumber=[B]\n" }, - { "Data Only/Last", NULL, - "Flags=[{|NO_ACK|PIGGYBACK_ACK_ALLOWED|PIGGYBACK_ACK_INCLUDED|}]\nResyncIndicator=[w][P2]\nResponseCorelator=[w]\nRemoteSessionNumber=[B]\nLocalSessionNumber=[B]\n" }, - { "Session Confirm", NULL, - "Data1=[B]\nData2=[w]\nTransmitCorrelator=[w]\nResponseCorelator=[w]\nRemoteSessionNumber=[B]\nLocalSessionNumber=[B]\n" }, - { "Session End", NULL, - "[P1]Data2=[w][P4]\nRemoteSessionNumber=[B]\nLocalSessionNumber=[B]\n" }, - { "Session Initialize", NULL, - "Data1=[B]\nData2=[w]\nTransmitCorrelator=[w]\nResponseCorelator=[w]\nRemoteSessionNumber=[B]\nLocalSessionNumber=[B]\n" }, - { "No Receive", NULL, - "Flags=[{|SEND_NO_ACK}]\nDataBytesAccepted=[b][P4]\nRemoteSessionNumber=[B]\nLocalSessionNumber=[B]\n" }, - { "Receive Outstanding", NULL, - "[P1]DataBytesAccepted=[b][P4]\nRemoteSessionNumber=[B]\nLocalSessionNumber=[B]\n" }, - { "Receive Continue", NULL, - "[P2]TransmitCorrelator=[w]\n[P2]RemoteSessionNumber=[B]\nLocalSessionNumber=[B]\n" }, - { NULL, NULL, NULL }, /* not used */ - { NULL, NULL, NULL }, /* not used */ - { "Session Alive", NULL, NULL } -}; - -void -netbeui_print(u_short control, const u_char *data, int length) -{ - const u_char *maxbuf = data + length; - int len; - int command; - const u_char *data2; - int is_truncated = 0; - - if (maxbuf > snapend) - maxbuf = snapend; - TCHECK(data[4]); - len = EXTRACT_LE_16BITS(data); - command = data[4]; - data2 = data + len; - if (data2 >= maxbuf) { - data2 = maxbuf; - is_truncated = 1; - } - - startbuf = data; - - if (vflag < 2) { - printf("NBF Packet: "); - data = smb_fdata(data, "[P5]#", maxbuf, 0); - } else { - printf("\n>>> NBF Packet\nType=0x%X ", control); - data = smb_fdata(data, "Length=[d] Signature=[w] Command=[B]\n#", maxbuf, 0); - } - if (data == NULL) - goto out; - - if (command > 0x1f || nbf_strings[command].name == NULL) { - if (vflag < 2) - data = smb_fdata(data, "Unknown NBF Command#", data2, 0); - else - data = smb_fdata(data, "Unknown NBF Command\n", data2, 0); - } else { - if (vflag < 2) { - printf("%s", nbf_strings[command].name); - if (nbf_strings[command].nonverbose != NULL) - data = smb_fdata(data, nbf_strings[command].nonverbose, data2, 0); - } else { - printf("%s:\n", nbf_strings[command].name); - if (nbf_strings[command].verbose != NULL) - data = smb_fdata(data, nbf_strings[command].verbose, data2, 0); - else - printf("\n"); - } - } - - if (vflag < 2) - return; - - if (data == NULL) - goto out; - - if (is_truncated) { - /* data2 was past the end of the buffer */ - goto out; - } - - /* If this isn't a command that would contain an SMB message, quit. */ - if (command != 0x08 && command != 0x09 && command != 0x15 && - command != 0x16) - goto out; - - /* If there isn't enough data for "\377SMB", don't look for it. */ - if (&data2[3] >= maxbuf) - goto out; - - if (memcmp(data2, "\377SMB",4) == 0) - print_smb(data2, maxbuf); - else { - int i; - for (i = 0; i < 128; i++) { - if (&data2[i + 3] >= maxbuf) - break; - if (memcmp(&data2[i], "\377SMB", 4) == 0) { - printf("found SMB packet at %d\n", i); - print_smb(&data2[i], maxbuf); - break; - } - } - } - -out: - printf("\n"); - return; -trunc: - printf("[|SMB]"); - return; -} - - -/* - * print IPX-Netbios frames - */ -void -ipx_netbios_print(const u_char *data, u_int length) -{ - /* - * this is a hack till I work out how to parse the rest of the - * NetBIOS-over-IPX stuff - */ - int i; - const u_char *maxbuf; - - maxbuf = data + length; - /* Don't go past the end of the captured data in the packet. */ - if (maxbuf > snapend) - maxbuf = snapend; - startbuf = data; - for (i = 0; i < 128; i++) { - if (&data[i + 4] > maxbuf) - break; - if (memcmp(&data[i], "\377SMB", 4) == 0) { - smb_fdata(data, "\n>>> IPX transport ", &data[i], 0); - if (data != NULL) - print_smb(&data[i], maxbuf); - printf("\n"); - fflush(stdout); - break; - } - } - if (i == 128) - smb_fdata(data, "\n>>> Unknown IPX ", maxbuf, 0); -} diff --git a/contrib/tcpdump/print-snmp.c b/contrib/tcpdump/print-snmp.c deleted file mode 100644 index 0686b6223074c..0000000000000 --- a/contrib/tcpdump/print-snmp.c +++ /dev/null @@ -1,1904 +0,0 @@ -/* - * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996, 1997 - * John Robert LoVerso. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * This implementation has been influenced by the CMU SNMP release, - * by Steve Waldbusser. However, this shares no code with that system. - * Additional ASN.1 insight gained from Marshall T. Rose's _The_Open_Book_. - * Earlier forms of this implementation were derived and/or inspired by an - * awk script originally written by C. Philip Wood of LANL (but later - * heavily modified by John Robert LoVerso). The copyright notice for - * that work is preserved below, even though it may not rightly apply - * to this file. - * - * Support for SNMPv2c/SNMPv3 and the ability to link the module against - * the libsmi was added by J. Schoenwaelder, Copyright (c) 1999. - * - * This started out as a very simple program, but the incremental decoding - * (into the BE structure) complicated things. - * - # Los Alamos National Laboratory - # - # Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996, 1997 - # This software was produced under a U.S. Government contract - # (W-7405-ENG-36) by Los Alamos National Laboratory, which is - # operated by the University of California for the U.S. Department - # of Energy. The U.S. Government is licensed to use, reproduce, - # and distribute this software. Permission is granted to the - # public to copy and use this software without charge, provided - # that this Notice and any statement of authorship are reproduced - # on all copies. Neither the Government nor the University makes - # any warranty, express or implied, or assumes any liability or - # responsibility for the use of this software. - # @(#)snmp.awk.x 1.1 (LANL) 1/15/90 - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-snmp.c,v 1.62.2.2 2005/05/06 07:57:19 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#ifdef HAVE_SMI_H -#include <smi.h> -#endif - -#include "interface.h" -#include "addrtoname.h" - -#undef OPAQUE /* defined in <wingdi.h> */ - -/* - * Universal ASN.1 types - * (we only care about the tag values for those allowed in the Internet SMI) - */ -const char *Universal[] = { - "U-0", - "Boolean", - "Integer", -#define INTEGER 2 - "Bitstring", - "String", -#define STRING 4 - "Null", -#define ASN_NULL 5 - "ObjID", -#define OBJECTID 6 - "ObjectDes", - "U-8","U-9","U-10","U-11", /* 8-11 */ - "U-12","U-13","U-14","U-15", /* 12-15 */ - "Sequence", -#define SEQUENCE 16 - "Set" -}; - -/* - * Application-wide ASN.1 types from the Internet SMI and their tags - */ -const char *Application[] = { - "IpAddress", -#define IPADDR 0 - "Counter", -#define COUNTER 1 - "Gauge", -#define GAUGE 2 - "TimeTicks", -#define TIMETICKS 3 - "Opaque", -#define OPAQUE 4 - "C-5", - "Counter64" -#define COUNTER64 6 -}; - -/* - * Context-specific ASN.1 types for the SNMP PDUs and their tags - */ -const char *Context[] = { - "GetRequest", -#define GETREQ 0 - "GetNextRequest", -#define GETNEXTREQ 1 - "GetResponse", -#define GETRESP 2 - "SetRequest", -#define SETREQ 3 - "Trap", -#define TRAP 4 - "GetBulk", -#define GETBULKREQ 5 - "Inform", -#define INFORMREQ 6 - "V2Trap", -#define V2TRAP 7 - "Report" -#define REPORT 8 -}; - -#define NOTIFY_CLASS(x) (x == TRAP || x == V2TRAP || x == INFORMREQ) -#define READ_CLASS(x) (x == GETREQ || x == GETNEXTREQ || x == GETBULKREQ) -#define WRITE_CLASS(x) (x == SETREQ) -#define RESPONSE_CLASS(x) (x == GETRESP) -#define INTERNAL_CLASS(x) (x == REPORT) - -/* - * Context-specific ASN.1 types for the SNMP Exceptions and their tags - */ -const char *Exceptions[] = { - "noSuchObject", -#define NOSUCHOBJECT 0 - "noSuchInstance", -#define NOSUCHINSTANCE 1 - "endOfMibView", -#define ENDOFMIBVIEW 2 -}; - -/* - * Private ASN.1 types - * The Internet SMI does not specify any - */ -const char *Private[] = { - "P-0" -}; - -/* - * error-status values for any SNMP PDU - */ -const char *ErrorStatus[] = { - "noError", - "tooBig", - "noSuchName", - "badValue", - "readOnly", - "genErr", - "noAccess", - "wrongType", - "wrongLength", - "wrongEncoding", - "wrongValue", - "noCreation", - "inconsistentValue", - "resourceUnavailable", - "commitFailed", - "undoFailed", - "authorizationError", - "notWritable", - "inconsistentName" -}; -#define DECODE_ErrorStatus(e) \ - ( e >= 0 && (size_t)e < sizeof(ErrorStatus)/sizeof(ErrorStatus[0]) \ - ? ErrorStatus[e] \ - : (snprintf(errbuf, sizeof(errbuf), "err=%u", e), errbuf)) - -/* - * generic-trap values in the SNMP Trap-PDU - */ -const char *GenericTrap[] = { - "coldStart", - "warmStart", - "linkDown", - "linkUp", - "authenticationFailure", - "egpNeighborLoss", - "enterpriseSpecific" -#define GT_ENTERPRISE 6 -}; -#define DECODE_GenericTrap(t) \ - ( t >= 0 && (size_t)t < sizeof(GenericTrap)/sizeof(GenericTrap[0]) \ - ? GenericTrap[t] \ - : (snprintf(buf, sizeof(buf), "gt=%d", t), buf)) - -/* - * ASN.1 type class table - * Ties together the preceding Universal, Application, Context, and Private - * type definitions. - */ -#define defineCLASS(x) { "x", x, sizeof(x)/sizeof(x[0]) } /* not ANSI-C */ -struct { - const char *name; - const char **Id; - int numIDs; - } Class[] = { - defineCLASS(Universal), -#define UNIVERSAL 0 - defineCLASS(Application), -#define APPLICATION 1 - defineCLASS(Context), -#define CONTEXT 2 - defineCLASS(Private), -#define PRIVATE 3 - defineCLASS(Exceptions), -#define EXCEPTIONS 4 -}; - -/* - * defined forms for ASN.1 types - */ -const char *Form[] = { - "Primitive", -#define PRIMITIVE 0 - "Constructed", -#define CONSTRUCTED 1 -}; - -/* - * A structure for the OID tree for the compiled-in MIB. - * This is stored as a general-order tree. - */ -struct obj { - const char *desc; /* name of object */ - u_char oid; /* sub-id following parent */ - u_char type; /* object type (unused) */ - struct obj *child, *next; /* child and next sibling pointers */ -} *objp = NULL; - -/* - * Include the compiled in SNMP MIB. "mib.h" is produced by feeding - * RFC-1156 format files into "makemib". "mib.h" MUST define at least - * a value for `mibroot'. - * - * In particular, this is gross, as this is including initialized structures, - * and by right shouldn't be an "include" file. - */ -#include "mib.h" - -/* - * This defines a list of OIDs which will be abbreviated on output. - * Currently, this includes the prefixes for the Internet MIB, the - * private enterprises tree, and the experimental tree. - */ -struct obj_abrev { - const char *prefix; /* prefix for this abrev */ - struct obj *node; /* pointer into object table */ - const char *oid; /* ASN.1 encoded OID */ -} obj_abrev_list[] = { -#ifndef NO_ABREV_MIB - /* .iso.org.dod.internet.mgmt.mib */ - { "", &_mib_obj, "\53\6\1\2\1" }, -#endif -#ifndef NO_ABREV_ENTER - /* .iso.org.dod.internet.private.enterprises */ - { "E:", &_enterprises_obj, "\53\6\1\4\1" }, -#endif -#ifndef NO_ABREV_EXPERI - /* .iso.org.dod.internet.experimental */ - { "X:", &_experimental_obj, "\53\6\1\3" }, -#endif -#ifndef NO_ABBREV_SNMPMODS - /* .iso.org.dod.internet.snmpV2.snmpModules */ - { "S:", &_snmpModules_obj, "\53\6\1\6\3" }, -#endif - { 0,0,0 } -}; - -/* - * This is used in the OID print routine to walk down the object tree - * rooted at `mibroot'. - */ -#define OBJ_PRINT(o, suppressdot) \ -{ \ - if (objp) { \ - do { \ - if ((o) == objp->oid) \ - break; \ - } while ((objp = objp->next) != NULL); \ - } \ - if (objp) { \ - printf(suppressdot?"%s":".%s", objp->desc); \ - objp = objp->child; \ - } else \ - printf(suppressdot?"%u":".%u", (o)); \ -} - -/* - * This is the definition for the Any-Data-Type storage used purely for - * temporary internal representation while decoding an ASN.1 data stream. - */ -struct be { - u_int32_t asnlen; - union { - caddr_t raw; - int32_t integer; - u_int32_t uns; - const u_char *str; - struct { - u_int32_t high; - u_int32_t low; - } uns64; - } data; - u_short id; - u_char form, class; /* tag info */ - u_char type; -#define BE_ANY 255 -#define BE_NONE 0 -#define BE_NULL 1 -#define BE_OCTET 2 -#define BE_OID 3 -#define BE_INT 4 -#define BE_UNS 5 -#define BE_STR 6 -#define BE_SEQ 7 -#define BE_INETADDR 8 -#define BE_PDU 9 -#define BE_UNS64 10 -#define BE_NOSUCHOBJECT 128 -#define BE_NOSUCHINST 129 -#define BE_ENDOFMIBVIEW 130 -}; - -/* - * SNMP versions recognized by this module - */ -const char *SnmpVersion[] = { - "SNMPv1", -#define SNMP_VERSION_1 0 - "SNMPv2c", -#define SNMP_VERSION_2 1 - "SNMPv2u", -#define SNMP_VERSION_2U 2 - "SNMPv3" -#define SNMP_VERSION_3 3 -}; - -/* - * Defaults for SNMP PDU components - */ -#define DEF_COMMUNITY "public" - -/* - * constants for ASN.1 decoding - */ -#define OIDMUX 40 -#define ASNLEN_INETADDR 4 -#define ASN_SHIFT7 7 -#define ASN_SHIFT8 8 -#define ASN_BIT8 0x80 -#define ASN_LONGLEN 0x80 - -#define ASN_ID_BITS 0x1f -#define ASN_FORM_BITS 0x20 -#define ASN_FORM_SHIFT 5 -#define ASN_CLASS_BITS 0xc0 -#define ASN_CLASS_SHIFT 6 - -#define ASN_ID_EXT 0x1f /* extension ID in tag field */ - -/* - * This decodes the next ASN.1 object in the stream pointed to by "p" - * (and of real-length "len") and stores the intermediate data in the - * provided BE object. - * - * This returns -l if it fails (i.e., the ASN.1 stream is not valid). - * O/w, this returns the number of bytes parsed from "p". - */ -static int -asn1_parse(register const u_char *p, u_int len, struct be *elem) -{ - u_char form, class, id; - int i, hdr; - - elem->asnlen = 0; - elem->type = BE_ANY; - if (len < 1) { - fputs("[nothing to parse]", stdout); - return -1; - } - TCHECK(*p); - - /* - * it would be nice to use a bit field, but you can't depend on them. - * +---+---+---+---+---+---+---+---+ - * + class |frm| id | - * +---+---+---+---+---+---+---+---+ - * 7 6 5 4 3 2 1 0 - */ - id = *p & ASN_ID_BITS; /* lower 5 bits, range 00-1f */ -#ifdef notdef - form = (*p & 0xe0) >> 5; /* move upper 3 bits to lower 3 */ - class = form >> 1; /* bits 7&6 -> bits 1&0, range 0-3 */ - form &= 0x1; /* bit 5 -> bit 0, range 0-1 */ -#else - form = (u_char)(*p & ASN_FORM_BITS) >> ASN_FORM_SHIFT; - class = (u_char)(*p & ASN_CLASS_BITS) >> ASN_CLASS_SHIFT; -#endif - elem->form = form; - elem->class = class; - elem->id = id; - p++; len--; hdr = 1; - /* extended tag field */ - if (id == ASN_ID_EXT) { - /* - * The ID follows, as a sequence of octets with the - * 8th bit set and the remaining 7 bits being - * the next 7 bits of the value, terminated with - * an octet with the 8th bit not set. - * - * First, assemble all the octets with the 8th - * bit set. XXX - this doesn't handle a value - * that won't fit in 32 bits. - */ - for (id = 0; *p & ASN_BIT8; len--, hdr++, p++) { - if (len < 1) { - fputs("[Xtagfield?]", stdout); - return -1; - } - TCHECK(*p); - id = (id << 7) | (*p & ~ASN_BIT8); - } - if (len < 1) { - fputs("[Xtagfield?]", stdout); - return -1; - } - TCHECK(*p); - elem->id = id = (id << 7) | *p; - --len; - ++hdr; - ++p; - } - if (len < 1) { - fputs("[no asnlen]", stdout); - return -1; - } - TCHECK(*p); - elem->asnlen = *p; - p++; len--; hdr++; - if (elem->asnlen & ASN_BIT8) { - u_int32_t noct = elem->asnlen % ASN_BIT8; - elem->asnlen = 0; - if (len < noct) { - printf("[asnlen? %d<%d]", len, noct); - return -1; - } - TCHECK2(*p, noct); - for (; noct-- > 0; len--, hdr++) - elem->asnlen = (elem->asnlen << ASN_SHIFT8) | *p++; - } - if (len < elem->asnlen) { - printf("[len%d<asnlen%u]", len, elem->asnlen); - return -1; - } - if (form >= sizeof(Form)/sizeof(Form[0])) { - printf("[form?%d]", form); - return -1; - } - if (class >= sizeof(Class)/sizeof(Class[0])) { - printf("[class?%c/%d]", *Form[form], class); - return -1; - } - if ((int)id >= Class[class].numIDs) { - printf("[id?%c/%s/%d]", *Form[form], Class[class].name, id); - return -1; - } - - switch (form) { - case PRIMITIVE: - switch (class) { - case UNIVERSAL: - switch (id) { - case STRING: - elem->type = BE_STR; - elem->data.str = p; - break; - - case INTEGER: { - register int32_t data; - elem->type = BE_INT; - data = 0; - - TCHECK2(*p, elem->asnlen); - if (*p & ASN_BIT8) /* negative */ - data = -1; - for (i = elem->asnlen; i-- > 0; p++) - data = (data << ASN_SHIFT8) | *p; - elem->data.integer = data; - break; - } - - case OBJECTID: - elem->type = BE_OID; - elem->data.raw = (caddr_t)p; - break; - - case ASN_NULL: - elem->type = BE_NULL; - elem->data.raw = NULL; - break; - - default: - elem->type = BE_OCTET; - elem->data.raw = (caddr_t)p; - printf("[P/U/%s]", - Class[class].Id[id]); - break; - } - break; - - case APPLICATION: - switch (id) { - case IPADDR: - elem->type = BE_INETADDR; - elem->data.raw = (caddr_t)p; - break; - - case COUNTER: - case GAUGE: - case TIMETICKS: { - register u_int32_t data; - TCHECK2(*p, elem->asnlen); - elem->type = BE_UNS; - data = 0; - for (i = elem->asnlen; i-- > 0; p++) - data = (data << 8) + *p; - elem->data.uns = data; - break; - } - - case COUNTER64: { - register u_int32_t high, low; - TCHECK2(*p, elem->asnlen); - elem->type = BE_UNS64; - high = 0, low = 0; - for (i = elem->asnlen; i-- > 0; p++) { - high = (high << 8) | - ((low & 0xFF000000) >> 24); - low = (low << 8) | *p; - } - elem->data.uns64.high = high; - elem->data.uns64.low = low; - break; - } - - default: - elem->type = BE_OCTET; - elem->data.raw = (caddr_t)p; - printf("[P/A/%s]", - Class[class].Id[id]); - break; - } - break; - - case CONTEXT: - switch (id) { - case NOSUCHOBJECT: - elem->type = BE_NOSUCHOBJECT; - elem->data.raw = NULL; - break; - - case NOSUCHINSTANCE: - elem->type = BE_NOSUCHINST; - elem->data.raw = NULL; - break; - - case ENDOFMIBVIEW: - elem->type = BE_ENDOFMIBVIEW; - elem->data.raw = NULL; - break; - } - break; - - default: - printf("[P/%s/%s]", - Class[class].name, Class[class].Id[id]); - TCHECK2(*p, elem->asnlen); - elem->type = BE_OCTET; - elem->data.raw = (caddr_t)p; - break; - } - break; - - case CONSTRUCTED: - switch (class) { - case UNIVERSAL: - switch (id) { - case SEQUENCE: - elem->type = BE_SEQ; - elem->data.raw = (caddr_t)p; - break; - - default: - elem->type = BE_OCTET; - elem->data.raw = (caddr_t)p; - printf("C/U/%s", Class[class].Id[id]); - break; - } - break; - - case CONTEXT: - elem->type = BE_PDU; - elem->data.raw = (caddr_t)p; - break; - - default: - elem->type = BE_OCTET; - elem->data.raw = (caddr_t)p; - printf("C/%s/%s", - Class[class].name, Class[class].Id[id]); - break; - } - break; - } - p += elem->asnlen; - len -= elem->asnlen; - return elem->asnlen + hdr; - -trunc: - fputs("[|snmp]", stdout); - return -1; -} - -/* - * Display the ASN.1 object represented by the BE object. - * This used to be an integral part of asn1_parse() before the intermediate - * BE form was added. - */ -static int -asn1_print(struct be *elem) -{ - u_char *p = (u_char *)elem->data.raw; - u_int32_t asnlen = elem->asnlen; - u_int32_t i; - - switch (elem->type) { - - case BE_OCTET: - TCHECK2(*p, asnlen); - for (i = asnlen; i-- > 0; p++) - printf("_%.2x", *p); - break; - - case BE_NULL: - break; - - case BE_OID: { - int o = 0, first = -1, i = asnlen; - - if (!sflag && !nflag && asnlen > 2) { - struct obj_abrev *a = &obj_abrev_list[0]; - size_t a_len = strlen(a->oid); - for (; a->node; a++) { - TCHECK2(*p, a_len); - if (memcmp(a->oid, (char *)p, a_len) == 0) { - objp = a->node->child; - i -= strlen(a->oid); - p += strlen(a->oid); - fputs(a->prefix, stdout); - first = 1; - break; - } - } - } - - for (; !sflag && i-- > 0; p++) { - TCHECK(*p); - o = (o << ASN_SHIFT7) + (*p & ~ASN_BIT8); - if (*p & ASN_LONGLEN) - continue; - - /* - * first subitem encodes two items with 1st*OIDMUX+2nd - * (see X.690:1997 clause 8.19 for the details) - */ - if (first < 0) { - int s; - if (!nflag) - objp = mibroot; - first = 0; - s = o / OIDMUX; - if (s > 2) s = 2; - OBJ_PRINT(s, first); - o -= s * OIDMUX; - } - OBJ_PRINT(o, first); - if (--first < 0) - first = 0; - o = 0; - } - break; - } - - case BE_INT: - printf("%d", elem->data.integer); - break; - - case BE_UNS: - printf("%u", elem->data.uns); - break; - - case BE_UNS64: { /* idea borrowed from by Marshall Rose */ - double d; - int j, carry; - char *cpf, *cpl, last[6], first[30]; - if (elem->data.uns64.high == 0) { - printf("%u", elem->data.uns64.low); - break; - } - d = elem->data.uns64.high * 4294967296.0; /* 2^32 */ - if (elem->data.uns64.high <= 0x1fffff) { - d += elem->data.uns64.low; -#if 0 /*is looks illegal, but what is the intention?*/ - printf("%.f", d); -#else - printf("%f", d); -#endif - break; - } - d += (elem->data.uns64.low & 0xfffff000); -#if 0 /*is looks illegal, but what is the intention?*/ - snprintf(first, sizeof(first), "%.f", d); -#else - snprintf(first, sizeof(first), "%f", d); -#endif - snprintf(last, sizeof(last), "%5.5d", - elem->data.uns64.low & 0xfff); - for (carry = 0, cpf = first+strlen(first)-1, cpl = last+4; - cpl >= last; - cpf--, cpl--) { - j = carry + (*cpf - '0') + (*cpl - '0'); - if (j > 9) { - j -= 10; - carry = 1; - } else { - carry = 0; - } - *cpf = j + '0'; - } - fputs(first, stdout); - break; - } - - case BE_STR: { - register int printable = 1, first = 1; - const u_char *p = elem->data.str; - TCHECK2(*p, asnlen); - for (i = asnlen; printable && i-- > 0; p++) - printable = isprint(*p) || isspace(*p); - p = elem->data.str; - if (printable) { - putchar('"'); - if (fn_printn(p, asnlen, snapend)) { - putchar('"'); - goto trunc; - } - putchar('"'); - } else - for (i = asnlen; i-- > 0; p++) { - printf(first ? "%.2x" : "_%.2x", *p); - first = 0; - } - break; - } - - case BE_SEQ: - printf("Seq(%u)", elem->asnlen); - break; - - case BE_INETADDR: - if (asnlen != ASNLEN_INETADDR) - printf("[inetaddr len!=%d]", ASNLEN_INETADDR); - TCHECK2(*p, asnlen); - for (i = asnlen; i-- != 0; p++) { - printf((i == asnlen-1) ? "%u" : ".%u", *p); - } - break; - - case BE_NOSUCHOBJECT: - case BE_NOSUCHINST: - case BE_ENDOFMIBVIEW: - printf("[%s]", Class[EXCEPTIONS].Id[elem->id]); - break; - - case BE_PDU: - printf("%s(%u)", - Class[CONTEXT].Id[elem->id], elem->asnlen); - break; - - case BE_ANY: - fputs("[BE_ANY!?]", stdout); - break; - - default: - fputs("[be!?]", stdout); - break; - } - return 0; - -trunc: - fputs("[|snmp]", stdout); - return -1; -} - -#ifdef notdef -/* - * This is a brute force ASN.1 printer: recurses to dump an entire structure. - * This will work for any ASN.1 stream, not just an SNMP PDU. - * - * By adding newlines and spaces at the correct places, this would print in - * Rose-Normal-Form. - * - * This is not currently used. - */ -static void -asn1_decode(u_char *p, u_int length) -{ - struct be elem; - int i = 0; - - while (i >= 0 && length > 0) { - i = asn1_parse(p, length, &elem); - if (i >= 0) { - fputs(" ", stdout); - if (asn1_print(&elem) < 0) - return; - if (elem.type == BE_SEQ || elem.type == BE_PDU) { - fputs(" {", stdout); - asn1_decode(elem.data.raw, elem.asnlen); - fputs(" }", stdout); - } - length -= i; - p += i; - } - } -} -#endif - -#ifdef LIBSMI - -struct smi2be { - SmiBasetype basetype; - int be; -}; - -static struct smi2be smi2betab[] = { - { SMI_BASETYPE_INTEGER32, BE_INT }, - { SMI_BASETYPE_OCTETSTRING, BE_STR }, - { SMI_BASETYPE_OCTETSTRING, BE_INETADDR }, - { SMI_BASETYPE_OBJECTIDENTIFIER, BE_OID }, - { SMI_BASETYPE_UNSIGNED32, BE_UNS }, - { SMI_BASETYPE_INTEGER64, BE_NONE }, - { SMI_BASETYPE_UNSIGNED64, BE_UNS64 }, - { SMI_BASETYPE_FLOAT32, BE_NONE }, - { SMI_BASETYPE_FLOAT64, BE_NONE }, - { SMI_BASETYPE_FLOAT128, BE_NONE }, - { SMI_BASETYPE_ENUM, BE_INT }, - { SMI_BASETYPE_BITS, BE_STR }, - { SMI_BASETYPE_UNKNOWN, BE_NONE } -}; - -static int -smi_decode_oid(struct be *elem, unsigned int *oid, - unsigned int oidsize, unsigned int *oidlen) -{ - u_char *p = (u_char *)elem->data.raw; - u_int32_t asnlen = elem->asnlen; - int o = 0, first = -1, i = asnlen; - - for (*oidlen = 0; sflag && i-- > 0; p++) { - TCHECK(*p); - o = (o << ASN_SHIFT7) + (*p & ~ASN_BIT8); - if (*p & ASN_LONGLEN) - continue; - - /* - * first subitem encodes two items with 1st*OIDMUX+2nd - * (see X.690:1997 clause 8.19 for the details) - */ - if (first < 0) { - first = 0; - if (*oidlen < oidsize) { - oid[*oidlen] = o / OIDMUX; - if (oid[*oidlen] > 2) oid[*oidlen] = 2; - } - o -= oid[*oidlen] * OIDMUX; - if (*oidlen < oidsize) (*oidlen)++; - } - if (*oidlen < oidsize) { - oid[(*oidlen)++] = o; - } - o = 0; - } - return 0; - -trunc: - fputs("[|snmp]", stdout); - return -1; -} - -static int smi_check_type(SmiBasetype basetype, int be) -{ - int i; - - for (i = 0; smi2betab[i].basetype != SMI_BASETYPE_UNKNOWN; i++) { - if (smi2betab[i].basetype == basetype && smi2betab[i].be == be) { - return 1; - } - } - - return 0; -} - -static int smi_check_a_range(SmiType *smiType, SmiRange *smiRange, - struct be *elem) -{ - int ok = 1; - - switch (smiType->basetype) { - case SMI_BASETYPE_OBJECTIDENTIFIER: - case SMI_BASETYPE_OCTETSTRING: - if (smiRange->minValue.value.unsigned32 - == smiRange->maxValue.value.unsigned32) { - ok = (elem->asnlen == smiRange->minValue.value.unsigned32); - } else { - ok = (elem->asnlen >= smiRange->minValue.value.unsigned32 - && elem->asnlen <= smiRange->maxValue.value.unsigned32); - } - break; - - case SMI_BASETYPE_INTEGER32: - ok = (elem->data.integer >= smiRange->minValue.value.integer32 - && elem->data.integer <= smiRange->maxValue.value.integer32); - break; - - case SMI_BASETYPE_UNSIGNED32: - ok = (elem->data.uns >= smiRange->minValue.value.unsigned32 - && elem->data.uns <= smiRange->maxValue.value.unsigned32); - break; - - case SMI_BASETYPE_UNSIGNED64: - /* XXX */ - break; - - /* case SMI_BASETYPE_INTEGER64: SMIng */ - /* case SMI_BASETYPE_FLOAT32: SMIng */ - /* case SMI_BASETYPE_FLOAT64: SMIng */ - /* case SMI_BASETYPE_FLOAT128: SMIng */ - - case SMI_BASETYPE_ENUM: - case SMI_BASETYPE_BITS: - case SMI_BASETYPE_UNKNOWN: - ok = 1; - break; - - default: - ok = 0; - break; - } - - return ok; -} - -static int smi_check_range(SmiType *smiType, struct be *elem) -{ - SmiRange *smiRange; - int ok = 1; - - for (smiRange = smiGetFirstRange(smiType); - smiRange; - smiRange = smiGetNextRange(smiRange)) { - - ok = smi_check_a_range(smiType, smiRange, elem); - - if (ok) { - break; - } - } - - if (ok) { - SmiType *parentType; - parentType = smiGetParentType(smiType); - if (parentType) { - ok = smi_check_range(parentType, elem); - } - } - - return ok; -} - -static SmiNode *smi_print_variable(struct be *elem, int *status) -{ - unsigned int oid[128], oidlen; - SmiNode *smiNode = NULL; - unsigned int i; - - *status = smi_decode_oid(elem, oid, sizeof(oid)/sizeof(unsigned int), - &oidlen); - if (*status < 0) - return NULL; - smiNode = smiGetNodeByOID(oidlen, oid); - if (! smiNode) { - *status = asn1_print(elem); - return NULL; - } - if (vflag) { - fputs(smiGetNodeModule(smiNode)->name, stdout); - fputs("::", stdout); - } - fputs(smiNode->name, stdout); - if (smiNode->oidlen < oidlen) { - for (i = smiNode->oidlen; i < oidlen; i++) { - printf(".%u", oid[i]); - } - } - *status = 0; - return smiNode; -} - -static int -smi_print_value(SmiNode *smiNode, u_char pduid, struct be *elem) -{ - unsigned int i, oid[128], oidlen; - SmiType *smiType; - SmiNamedNumber *nn; - int done = 0; - - if (! smiNode || ! (smiNode->nodekind - & (SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN))) { - return asn1_print(elem); - } - - if (elem->type == BE_NOSUCHOBJECT - || elem->type == BE_NOSUCHINST - || elem->type == BE_ENDOFMIBVIEW) { - return asn1_print(elem); - } - - if (NOTIFY_CLASS(pduid) && smiNode->access < SMI_ACCESS_NOTIFY) { - fputs("[notNotifyable]", stdout); - } - - if (READ_CLASS(pduid) && smiNode->access < SMI_ACCESS_READ_ONLY) { - fputs("[notReadable]", stdout); - } - - if (WRITE_CLASS(pduid) && smiNode->access < SMI_ACCESS_READ_WRITE) { - fputs("[notWritable]", stdout); - } - - if (RESPONSE_CLASS(pduid) - && smiNode->access == SMI_ACCESS_NOT_ACCESSIBLE) { - fputs("[noAccess]", stdout); - } - - smiType = smiGetNodeType(smiNode); - if (! smiType) { - return asn1_print(elem); - } - - if (! smi_check_type(smiType->basetype, elem->type)) { - fputs("[wrongType]", stdout); - } - - if (! smi_check_range(smiType, elem)) { - fputs("[outOfRange]", stdout); - } - - /* resolve bits to named bits */ - - /* check whether instance identifier is valid */ - - /* apply display hints (integer, octetstring) */ - - /* convert instance identifier to index type values */ - - switch (elem->type) { - case BE_OID: - if (smiType->basetype == SMI_BASETYPE_BITS) { - /* print bit labels */ - } else { - smi_decode_oid(elem, oid, - sizeof(oid)/sizeof(unsigned int), - &oidlen); - smiNode = smiGetNodeByOID(oidlen, oid); - if (smiNode) { - if (vflag) { - fputs(smiGetNodeModule(smiNode)->name, stdout); - fputs("::", stdout); - } - fputs(smiNode->name, stdout); - if (smiNode->oidlen < oidlen) { - for (i = smiNode->oidlen; - i < oidlen; i++) { - printf(".%u", oid[i]); - } - } - done++; - } - } - break; - - case BE_INT: - if (smiType->basetype == SMI_BASETYPE_ENUM) { - for (nn = smiGetFirstNamedNumber(smiType); - nn; - nn = smiGetNextNamedNumber(nn)) { - if (nn->value.value.integer32 - == elem->data.integer) { - fputs(nn->name, stdout); - printf("(%d)", elem->data.integer); - done++; - break; - } - } - } - break; - } - - if (! done) { - return asn1_print(elem); - } - return 0; -} -#endif - -/* - * General SNMP header - * SEQUENCE { - * version INTEGER {version-1(0)}, - * community OCTET STRING, - * data ANY -- PDUs - * } - * PDUs for all but Trap: (see rfc1157 from page 15 on) - * SEQUENCE { - * request-id INTEGER, - * error-status INTEGER, - * error-index INTEGER, - * varbindlist SEQUENCE OF - * SEQUENCE { - * name ObjectName, - * value ObjectValue - * } - * } - * PDU for Trap: - * SEQUENCE { - * enterprise OBJECT IDENTIFIER, - * agent-addr NetworkAddress, - * generic-trap INTEGER, - * specific-trap INTEGER, - * time-stamp TimeTicks, - * varbindlist SEQUENCE OF - * SEQUENCE { - * name ObjectName, - * value ObjectValue - * } - * } - */ - -/* - * Decode SNMP varBind - */ -static void -varbind_print(u_char pduid, const u_char *np, u_int length) -{ - struct be elem; - int count = 0, ind; -#ifdef LIBSMI - SmiNode *smiNode = NULL; -#endif - int status; - - /* Sequence of varBind */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_SEQ) { - fputs("[!SEQ of varbind]", stdout); - asn1_print(&elem); - return; - } - if ((u_int)count < length) - printf("[%d extra after SEQ of varbind]", length - count); - /* descend */ - length = elem.asnlen; - np = (u_char *)elem.data.raw; - - for (ind = 1; length > 0; ind++) { - const u_char *vbend; - u_int vblength; - - fputs(" ", stdout); - - /* Sequence */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_SEQ) { - fputs("[!varbind]", stdout); - asn1_print(&elem); - return; - } - vbend = np + count; - vblength = length - count; - /* descend */ - length = elem.asnlen; - np = (u_char *)elem.data.raw; - - /* objName (OID) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_OID) { - fputs("[objName!=OID]", stdout); - asn1_print(&elem); - return; - } -#ifdef LIBSMI - smiNode = smi_print_variable(&elem, &status); -#else - status = asn1_print(&elem); -#endif - if (status < 0) - return; - length -= count; - np += count; - - if (pduid != GETREQ && pduid != GETNEXTREQ - && pduid != GETBULKREQ) - fputs("=", stdout); - - /* objVal (ANY) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (pduid == GETREQ || pduid == GETNEXTREQ - || pduid == GETBULKREQ) { - if (elem.type != BE_NULL) { - fputs("[objVal!=NULL]", stdout); - if (asn1_print(&elem) < 0) - return; - } - } else { - if (elem.type != BE_NULL) { -#ifdef LIBSMI - status = smi_print_value(smiNode, pduid, &elem); -#else - status = asn1_print(&elem); -#endif - } - if (status < 0) - return; - } - length = vblength; - np = vbend; - } -} - -/* - * Decode SNMP PDUs: GetRequest, GetNextRequest, GetResponse, SetRequest, - * GetBulk, Inform, V2Trap, and Report - */ -static void -snmppdu_print(u_short pduid, const u_char *np, u_int length) -{ - struct be elem; - int count = 0, error; - - /* reqId (Integer) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_INT) { - fputs("[reqId!=INT]", stdout); - asn1_print(&elem); - return; - } - if (vflag) - printf("R=%d ", elem.data.integer); - length -= count; - np += count; - - /* errorStatus (Integer) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_INT) { - fputs("[errorStatus!=INT]", stdout); - asn1_print(&elem); - return; - } - error = 0; - if ((pduid == GETREQ || pduid == GETNEXTREQ || pduid == SETREQ - || pduid == INFORMREQ || pduid == V2TRAP || pduid == REPORT) - && elem.data.integer != 0) { - char errbuf[20]; - printf("[errorStatus(%s)!=0]", - DECODE_ErrorStatus(elem.data.integer)); - } else if (pduid == GETBULKREQ) { - printf(" N=%d", elem.data.integer); - } else if (elem.data.integer != 0) { - char errbuf[20]; - printf(" %s", DECODE_ErrorStatus(elem.data.integer)); - error = elem.data.integer; - } - length -= count; - np += count; - - /* errorIndex (Integer) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_INT) { - fputs("[errorIndex!=INT]", stdout); - asn1_print(&elem); - return; - } - if ((pduid == GETREQ || pduid == GETNEXTREQ || pduid == SETREQ - || pduid == INFORMREQ || pduid == V2TRAP || pduid == REPORT) - && elem.data.integer != 0) - printf("[errorIndex(%d)!=0]", elem.data.integer); - else if (pduid == GETBULKREQ) - printf(" M=%d", elem.data.integer); - else if (elem.data.integer != 0) { - if (!error) - printf("[errorIndex(%d) w/o errorStatus]", - elem.data.integer); - else { - printf("@%d", elem.data.integer); - error = elem.data.integer; - } - } else if (error) { - fputs("[errorIndex==0]", stdout); - error = 0; - } - length -= count; - np += count; - - varbind_print(pduid, np, length); - return; -} - -/* - * Decode SNMP Trap PDU - */ -static void -trappdu_print(const u_char *np, u_int length) -{ - struct be elem; - int count = 0, generic; - - putchar(' '); - - /* enterprise (oid) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_OID) { - fputs("[enterprise!=OID]", stdout); - asn1_print(&elem); - return; - } - if (asn1_print(&elem) < 0) - return; - length -= count; - np += count; - - putchar(' '); - - /* agent-addr (inetaddr) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_INETADDR) { - fputs("[agent-addr!=INETADDR]", stdout); - asn1_print(&elem); - return; - } - if (asn1_print(&elem) < 0) - return; - length -= count; - np += count; - - /* generic-trap (Integer) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_INT) { - fputs("[generic-trap!=INT]", stdout); - asn1_print(&elem); - return; - } - generic = elem.data.integer; - { - char buf[20]; - printf(" %s", DECODE_GenericTrap(generic)); - } - length -= count; - np += count; - - /* specific-trap (Integer) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_INT) { - fputs("[specific-trap!=INT]", stdout); - asn1_print(&elem); - return; - } - if (generic != GT_ENTERPRISE) { - if (elem.data.integer != 0) - printf("[specific-trap(%d)!=0]", elem.data.integer); - } else - printf(" s=%d", elem.data.integer); - length -= count; - np += count; - - putchar(' '); - - /* time-stamp (TimeTicks) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_UNS) { /* XXX */ - fputs("[time-stamp!=TIMETICKS]", stdout); - asn1_print(&elem); - return; - } - if (asn1_print(&elem) < 0) - return; - length -= count; - np += count; - - varbind_print (TRAP, np, length); - return; -} - -/* - * Decode arbitrary SNMP PDUs. - */ -static void -pdu_print(const u_char *np, u_int length, int version) -{ - struct be pdu; - int count = 0; - - /* PDU (Context) */ - if ((count = asn1_parse(np, length, &pdu)) < 0) - return; - if (pdu.type != BE_PDU) { - fputs("[no PDU]", stdout); - return; - } - if ((u_int)count < length) - printf("[%d extra after PDU]", length - count); - if (vflag) { - fputs("{ ", stdout); - } - if (asn1_print(&pdu) < 0) - return; - fputs(" ", stdout); - /* descend into PDU */ - length = pdu.asnlen; - np = (u_char *)pdu.data.raw; - - if (version == SNMP_VERSION_1 && - (pdu.id == GETBULKREQ || pdu.id == INFORMREQ || - pdu.id == V2TRAP || pdu.id == REPORT)) { - printf("[v2 PDU in v1 message]"); - return; - } - - if (version == SNMP_VERSION_2 && pdu.id == TRAP) { - printf("[v1 PDU in v2 message]"); - return; - } - - switch (pdu.id) { - case TRAP: - trappdu_print(np, length); - break; - case GETREQ: - case GETNEXTREQ: - case GETRESP: - case SETREQ: - case GETBULKREQ: - case INFORMREQ: - case V2TRAP: - case REPORT: - snmppdu_print(pdu.id, np, length); - break; - } - - if (vflag) { - fputs(" } ", stdout); - } -} - -/* - * Decode a scoped SNMP PDU. - */ -static void -scopedpdu_print(const u_char *np, u_int length, int version) -{ - struct be elem; - int i, count = 0; - - /* Sequence */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_SEQ) { - fputs("[!scoped PDU]", stdout); - asn1_print(&elem); - return; - } - length = elem.asnlen; - np = (u_char *)elem.data.raw; - - /* contextEngineID (OCTET STRING) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_STR) { - fputs("[contextEngineID!=STR]", stdout); - asn1_print(&elem); - return; - } - length -= count; - np += count; - - fputs("E= ", stdout); - for (i = 0; i < (int)elem.asnlen; i++) { - printf("0x%02X", elem.data.str[i]); - } - fputs(" ", stdout); - - /* contextName (OCTET STRING) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_STR) { - fputs("[contextName!=STR]", stdout); - asn1_print(&elem); - return; - } - length -= count; - np += count; - - printf("C=%.*s ", (int)elem.asnlen, elem.data.str); - - pdu_print(np, length, version); -} - -/* - * Decode SNMP Community Header (SNMPv1 and SNMPv2c) - */ -static void -community_print(const u_char *np, u_int length, int version) -{ - struct be elem; - int count = 0; - - /* Community (String) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_STR) { - fputs("[comm!=STR]", stdout); - asn1_print(&elem); - return; - } - /* default community */ - if (!(elem.asnlen == sizeof(DEF_COMMUNITY) - 1 && - strncmp((char *)elem.data.str, DEF_COMMUNITY, - sizeof(DEF_COMMUNITY) - 1) == 0)) - /* ! "public" */ - printf("C=%.*s ", (int)elem.asnlen, elem.data.str); - length -= count; - np += count; - - pdu_print(np, length, version); -} - -/* - * Decode SNMPv3 User-based Security Message Header (SNMPv3) - */ -static void -usm_print(const u_char *np, u_int length) -{ - struct be elem; - int count = 0; - - /* Sequence */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_SEQ) { - fputs("[!usm]", stdout); - asn1_print(&elem); - return; - } - length = elem.asnlen; - np = (u_char *)elem.data.raw; - - /* msgAuthoritativeEngineID (OCTET STRING) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_STR) { - fputs("[msgAuthoritativeEngineID!=STR]", stdout); - asn1_print(&elem); - return; - } - length -= count; - np += count; - - /* msgAuthoritativeEngineBoots (INTEGER) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_INT) { - fputs("[msgAuthoritativeEngineBoots!=INT]", stdout); - asn1_print(&elem); - return; - } - if (vflag) - printf("B=%d ", elem.data.integer); - length -= count; - np += count; - - /* msgAuthoritativeEngineTime (INTEGER) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_INT) { - fputs("[msgAuthoritativeEngineTime!=INT]", stdout); - asn1_print(&elem); - return; - } - if (vflag) - printf("T=%d ", elem.data.integer); - length -= count; - np += count; - - /* msgUserName (OCTET STRING) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_STR) { - fputs("[msgUserName!=STR]", stdout); - asn1_print(&elem); - return; - } - length -= count; - np += count; - - printf("U=%.*s ", (int)elem.asnlen, elem.data.str); - - /* msgAuthenticationParameters (OCTET STRING) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_STR) { - fputs("[msgAuthenticationParameters!=STR]", stdout); - asn1_print(&elem); - return; - } - length -= count; - np += count; - - /* msgPrivacyParameters (OCTET STRING) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_STR) { - fputs("[msgPrivacyParameters!=STR]", stdout); - asn1_print(&elem); - return; - } - length -= count; - np += count; - - if ((u_int)count < length) - printf("[%d extra after usm SEQ]", length - count); -} - -/* - * Decode SNMPv3 Message Header (SNMPv3) - */ -static void -v3msg_print(const u_char *np, u_int length) -{ - struct be elem; - int count = 0; - u_char flags; - int model; - const u_char *xnp = np; - int xlength = length; - - /* Sequence */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_SEQ) { - fputs("[!message]", stdout); - asn1_print(&elem); - return; - } - length = elem.asnlen; - np = (u_char *)elem.data.raw; - - if (vflag) { - fputs("{ ", stdout); - } - - /* msgID (INTEGER) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_INT) { - fputs("[msgID!=INT]", stdout); - asn1_print(&elem); - return; - } - length -= count; - np += count; - - /* msgMaxSize (INTEGER) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_INT) { - fputs("[msgMaxSize!=INT]", stdout); - asn1_print(&elem); - return; - } - length -= count; - np += count; - - /* msgFlags (OCTET STRING) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_STR) { - fputs("[msgFlags!=STR]", stdout); - asn1_print(&elem); - return; - } - if (elem.asnlen != 1) { - printf("[msgFlags size %d]", elem.asnlen); - return; - } - flags = elem.data.str[0]; - if (flags != 0x00 && flags != 0x01 && flags != 0x03 - && flags != 0x04 && flags != 0x05 && flags != 0x07) { - printf("[msgFlags=0x%02X]", flags); - return; - } - length -= count; - np += count; - - fputs("F=", stdout); - if (flags & 0x01) fputs("a", stdout); - if (flags & 0x02) fputs("p", stdout); - if (flags & 0x04) fputs("r", stdout); - fputs(" ", stdout); - - /* msgSecurityModel (INTEGER) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_INT) { - fputs("[msgSecurityModel!=INT]", stdout); - asn1_print(&elem); - return; - } - model = elem.data.integer; - length -= count; - np += count; - - if ((u_int)count < length) - printf("[%d extra after message SEQ]", length - count); - - if (vflag) { - fputs("} ", stdout); - } - - if (model == 3) { - if (vflag) { - fputs("{ USM ", stdout); - } - } else { - printf("[security model %d]", model); - return; - } - - np = xnp + (np - xnp); - length = xlength - (np - xnp); - - /* msgSecurityParameters (OCTET STRING) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_STR) { - fputs("[msgSecurityParameters!=STR]", stdout); - asn1_print(&elem); - return; - } - length -= count; - np += count; - - if (model == 3) { - usm_print(elem.data.str, elem.asnlen); - if (vflag) { - fputs("} ", stdout); - } - } - - if (vflag) { - fputs("{ ScopedPDU ", stdout); - } - - scopedpdu_print(np, length, 3); - - if (vflag) { - fputs("} ", stdout); - } -} - -/* - * Decode SNMP header and pass on to PDU printing routines - */ -void -snmp_print(const u_char *np, u_int length) -{ - struct be elem; - int count = 0; - int version = 0; - - putchar(' '); - - /* initial Sequence */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_SEQ) { - fputs("[!init SEQ]", stdout); - asn1_print(&elem); - return; - } - if ((u_int)count < length) - printf("[%d extra after iSEQ]", length - count); - /* descend */ - length = elem.asnlen; - np = (u_char *)elem.data.raw; - - /* Version (INTEGER) */ - if ((count = asn1_parse(np, length, &elem)) < 0) - return; - if (elem.type != BE_INT) { - fputs("[version!=INT]", stdout); - asn1_print(&elem); - return; - } - - switch (elem.data.integer) { - case SNMP_VERSION_1: - case SNMP_VERSION_2: - case SNMP_VERSION_3: - if (vflag) - printf("{ %s ", SnmpVersion[elem.data.integer]); - break; - default: - printf("[version = %d]", elem.data.integer); - return; - } - version = elem.data.integer; - length -= count; - np += count; - - switch (version) { - case SNMP_VERSION_1: - case SNMP_VERSION_2: - community_print(np, length, version); - break; - case SNMP_VERSION_3: - v3msg_print(np, length); - break; - default: - printf("[version = %d]", elem.data.integer); - break; - } - - if (vflag) { - fputs("} ", stdout); - } -} diff --git a/contrib/tcpdump/print-sunatm.c b/contrib/tcpdump/print-sunatm.c deleted file mode 100644 index acd38bf7eeb8b..0000000000000 --- a/contrib/tcpdump/print-sunatm.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (c) 1997 Yen Yen Lim and North Dakota State University - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Yen Yen Lim and - North Dakota State University - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-sunatm.c,v 1.8 2004/03/17 23:24:38 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -struct mbuf; -struct rtentry; - -#include <stdio.h> -#include <pcap.h> - -#include "interface.h" -#include "extract.h" -#include "addrtoname.h" - -#include "atm.h" -#include "atmuni31.h" - -/* SunATM header for ATM packet */ -#define DIR_POS 0 /* Direction (0x80 = transmit, 0x00 = receive) */ -#define VPI_POS 1 /* VPI */ -#define VCI_POS 2 /* VCI */ -#define PKT_BEGIN_POS 4 /* Start of the ATM packet */ - -/* Protocol type values in the bottom for bits of the byte at SUNATM_DIR_POS. */ -#define PT_LANE 0x01 /* LANE */ -#define PT_LLC 0x02 /* LLC encapsulation */ - -/* - * This is the top level routine of the printer. 'p' points - * to the SunATM pseudo-header for the packet, 'h->ts' is the timestamp, - * 'h->len' is the length of the packet off the wire, and 'h->caplen' - * is the number of bytes actually captured. - */ -u_int -sunatm_if_print(const struct pcap_pkthdr *h, const u_char *p) -{ - u_int caplen = h->caplen; - u_int length = h->len; - u_short vci; - u_char vpi; - u_int traftype; - - if (caplen < PKT_BEGIN_POS) { - printf("[|atm]"); - return (caplen); - } - - if (eflag) { - if (p[DIR_POS] & 0x80) - printf("Tx: "); - else - printf("Rx: "); - } - - switch (p[DIR_POS] & 0x0f) { - - case PT_LANE: - traftype = ATM_LANE; - break; - - case PT_LLC: - traftype = ATM_LLC; - break; - - default: - traftype = ATM_UNKNOWN; - break; - } - - vci = EXTRACT_16BITS(&p[VCI_POS]); - vpi = p[VPI_POS]; - - p += PKT_BEGIN_POS; - caplen -= PKT_BEGIN_POS; - length -= PKT_BEGIN_POS; - atm_print(vpi, vci, traftype, p, length, caplen); - - return (PKT_BEGIN_POS); -} diff --git a/contrib/tcpdump/print-sunrpc.c b/contrib/tcpdump/print-sunrpc.c deleted file mode 100644 index 03e28a489b0ea..0000000000000 --- a/contrib/tcpdump/print-sunrpc.c +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (c) 1992, 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-sunrpc.c,v 1.46.2.1 2005/04/27 21:44:06 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#ifdef HAVE_GETRPCBYNUMBER -#include <rpc/rpc.h> -#ifdef HAVE_RPC_RPCENT_H -#include <rpc/rpcent.h> -#endif /* HAVE_RPC_RPCENT_H */ -#endif /* HAVE_GETRPCBYNUMBER */ - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -#include "ip.h" -#ifdef INET6 -#include "ip6.h" -#endif - -#include "rpc_auth.h" -#include "rpc_msg.h" -#include "pmap_prot.h" - -static struct tok proc2str[] = { - { SUNRPC_PMAPPROC_NULL, "null" }, - { SUNRPC_PMAPPROC_SET, "set" }, - { SUNRPC_PMAPPROC_UNSET, "unset" }, - { SUNRPC_PMAPPROC_GETPORT, "getport" }, - { SUNRPC_PMAPPROC_DUMP, "dump" }, - { SUNRPC_PMAPPROC_CALLIT, "call" }, - { 0, NULL } -}; - -/* Forwards */ -static char *progstr(u_int32_t); - -void -sunrpcrequest_print(register const u_char *bp, register u_int length, - register const u_char *bp2) -{ - register const struct sunrpc_msg *rp; - register const struct ip *ip; -#ifdef INET6 - register const struct ip6_hdr *ip6; -#endif - u_int32_t x; - char srcid[20], dstid[20]; /*fits 32bit*/ - - rp = (struct sunrpc_msg *)bp; - - if (!nflag) { - snprintf(srcid, sizeof(srcid), "0x%x", - EXTRACT_32BITS(&rp->rm_xid)); - strlcpy(dstid, "sunrpc", sizeof(dstid)); - } else { - snprintf(srcid, sizeof(srcid), "0x%x", - EXTRACT_32BITS(&rp->rm_xid)); - snprintf(dstid, sizeof(dstid), "0x%x", SUNRPC_PMAPPORT); - } - - switch (IP_V((struct ip *)bp2)) { - case 4: - ip = (struct ip *)bp2; - printf("%s.%s > %s.%s: %d", - ipaddr_string(&ip->ip_src), srcid, - ipaddr_string(&ip->ip_dst), dstid, length); - break; -#ifdef INET6 - case 6: - ip6 = (struct ip6_hdr *)bp2; - printf("%s.%s > %s.%s: %d", - ip6addr_string(&ip6->ip6_src), srcid, - ip6addr_string(&ip6->ip6_dst), dstid, length); - break; -#endif - default: - printf("%s.%s > %s.%s: %d", "?", srcid, "?", dstid, length); - break; - } - - printf(" %s", tok2str(proc2str, " proc #%u", - EXTRACT_32BITS(&rp->rm_call.cb_proc))); - x = EXTRACT_32BITS(&rp->rm_call.cb_rpcvers); - if (x != 2) - printf(" [rpcver %u]", x); - - switch (EXTRACT_32BITS(&rp->rm_call.cb_proc)) { - - case SUNRPC_PMAPPROC_SET: - case SUNRPC_PMAPPROC_UNSET: - case SUNRPC_PMAPPROC_GETPORT: - case SUNRPC_PMAPPROC_CALLIT: - x = EXTRACT_32BITS(&rp->rm_call.cb_prog); - if (!nflag) - printf(" %s", progstr(x)); - else - printf(" %u", x); - printf(".%u", EXTRACT_32BITS(&rp->rm_call.cb_vers)); - break; - } -} - -static char * -progstr(prog) - u_int32_t prog; -{ -#ifdef HAVE_GETRPCBYNUMBER - register struct rpcent *rp; -#endif - static char buf[32]; - static u_int32_t lastprog = 0; - - if (lastprog != 0 && prog == lastprog) - return (buf); -#ifdef HAVE_GETRPCBYNUMBER - rp = getrpcbynumber(prog); - if (rp == NULL) -#endif - (void) snprintf(buf, sizeof(buf), "#%u", prog); -#ifdef HAVE_GETRPCBYNUMBER - else - strlcpy(buf, rp->r_name, sizeof(buf)); -#endif - return (buf); -} diff --git a/contrib/tcpdump/print-symantec.c b/contrib/tcpdump/print-symantec.c deleted file mode 100644 index eb72180850f19..0000000000000 --- a/contrib/tcpdump/print-symantec.c +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-symantec.c,v 1.4.2.1 2005/07/07 01:24:39 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <pcap.h> - -#include "interface.h" -#include "addrtoname.h" -#include "ethertype.h" - -#include "ether.h" - -struct symantec_header { - u_int8_t stuff1[6]; - u_int16_t ether_type; - u_int8_t stuff2[36]; -}; - -static inline void -symantec_hdr_print(register const u_char *bp, u_int length) -{ - register const struct symantec_header *sp; - u_int16_t etype; - - sp = (const struct symantec_header *)bp; - - etype = ntohs(sp->ether_type); - if (!qflag) { - if (etype <= ETHERMTU) - (void)printf("invalid ethertype %u", etype); - else - (void)printf("ethertype %s (0x%04x)", - tok2str(ethertype_values,"Unknown", etype), - etype); - } else { - if (etype <= ETHERMTU) - (void)printf("invalid ethertype %u", etype); - else - (void)printf("%s", tok2str(ethertype_values,"Unknown Ethertype (0x%04x)", etype)); - } - - (void)printf(", length %u: ", length); -} - -/* - * This is the top level routine of the printer. 'p' points - * to the ether header of the packet, 'h->ts' is the timestamp, - * 'h->len' is the length of the packet off the wire, and 'h->caplen' - * is the number of bytes actually captured. - */ -u_int -symantec_if_print(const struct pcap_pkthdr *h, const u_char *p) -{ - u_int length = h->len; - u_int caplen = h->caplen; - struct symantec_header *sp; - u_short ether_type; - u_short extracted_ether_type; - - if (caplen < sizeof (struct symantec_header)) { - printf("[|symantec]"); - return caplen; - } - - if (eflag) - symantec_hdr_print(p, length); - - length -= sizeof (struct symantec_header); - caplen -= sizeof (struct symantec_header); - sp = (struct symantec_header *)p; - p += sizeof (struct symantec_header); - - ether_type = ntohs(sp->ether_type); - - if (ether_type <= ETHERMTU) { - /* ether_type not known, print raw packet */ - if (!eflag) - symantec_hdr_print((u_char *)sp, length + sizeof (struct symantec_header)); - - if (!suppress_default_print) - default_print(p, caplen); - } else if (ether_encap_print(ether_type, p, length, caplen, - &extracted_ether_type) == 0) { - /* ether_type not known, print raw packet */ - if (!eflag) - symantec_hdr_print((u_char *)sp, length + sizeof (struct symantec_header)); - - if (!suppress_default_print) - default_print(p, caplen); - } - - return (sizeof (struct symantec_header)); -} diff --git a/contrib/tcpdump/print-syslog.c b/contrib/tcpdump/print-syslog.c deleted file mode 100755 index 099d027b2580c..0000000000000 --- a/contrib/tcpdump/print-syslog.c +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright (c) 1998-2004 Hannes Gredler <hannes@tcpdump.org> - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-syslog.c,v 1.1 2004/10/29 11:42:53 hannes Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <stdlib.h> - -#include "interface.h" -#include "extract.h" -#include "addrtoname.h" - -/* - * tokenlists and #defines taken from Ethereal - Network traffic analyzer - * by Gerald Combs <gerald@ethereal.com> - */ - -#define SYSLOG_SEVERITY_MASK 0x0007 /* 0000 0000 0000 0111 */ -#define SYSLOG_FACILITY_MASK 0x03f8 /* 0000 0011 1111 1000 */ -#define SYSLOG_MAX_DIGITS 3 /* The maximum number if priority digits to read in. */ - -static const struct tok syslog_severity_values[] = { - { 0, "emergency" }, - { 1, "alert" }, - { 2, "critical" }, - { 3, "error" }, - { 4, "warning" }, - { 5, "notice" }, - { 6, "info" }, - { 7, "debug" }, - { 0, NULL }, -}; - -static const struct tok syslog_facility_values[] = { - { 0, "kernel" }, - { 1, "user" }, - { 2, "mail" }, - { 3, "daemon" }, - { 4, "auth" }, - { 5, "syslog" }, - { 6, "lpr" }, - { 7, "news" }, - { 8, "uucp" }, - { 9, "cron" }, - { 10, "authpriv" }, - { 11, "ftp" }, - { 12, "ntp" }, - { 13, "security" }, - { 14, "console" }, - { 15, "cron" }, - { 16, "local0" }, - { 17, "local1" }, - { 18, "local2" }, - { 19, "local3" }, - { 20, "local4" }, - { 21, "local5" }, - { 22, "local6" }, - { 23, "local7" }, - { 0, NULL }, -}; - -void -syslog_print(register const u_char *pptr, register u_int len) -{ - u_int16_t msg_off = 0; - u_int16_t pri = 0; - u_int16_t facility,severity; - - /* extract decimal figures that are - * encapsulated within < > tags - * based on this decimal figure extract the - * severity and facility values - */ - - if (!TTEST2(*pptr, 1)) - goto trunc; - - if (*(pptr+msg_off) == '<') { - msg_off++; - - if (!TTEST2(*(pptr+msg_off), 1)) - goto trunc; - - while ( *(pptr+msg_off) >= '0' && - *(pptr+msg_off) <= '9' && - msg_off <= SYSLOG_MAX_DIGITS) { - - if (!TTEST2(*(pptr+msg_off), 1)) - goto trunc; - - pri = pri * 10 + (*(pptr+msg_off) - '0'); - msg_off++; - - if (!TTEST2(*(pptr+msg_off), 1)) - goto trunc; - - if (*(pptr+msg_off) == '>') - msg_off++; - } - } else { - printf("[|syslog]"); - return; - } - - facility = (pri & SYSLOG_FACILITY_MASK) >> 3; - severity = pri & SYSLOG_SEVERITY_MASK; - - - if (vflag < 1 ) - { - printf("SYSLOG %s.%s, length: %u", - tok2str(syslog_facility_values, "unknown (%u)", facility), - tok2str(syslog_severity_values, "unknown (%u)", severity), - len); - return; - } - - printf("SYSLOG, length: %u\n\tFacility %s (%u), Severity %s (%u)\n\tMsg: ", - len, - tok2str(syslog_facility_values, "unknown (%u)", facility), - facility, - tok2str(syslog_severity_values, "unknown (%u)", severity), - severity); - - /* print the syslog text in verbose mode */ - for (; msg_off < len; msg_off++) { - if (!TTEST2(*(pptr+msg_off), 1)) - goto trunc; - safeputchar(*(pptr+msg_off)); - } - - if (vflag > 1) { - if(!print_unknown_data(pptr,"\n\t",len)) - return; - } - - return; - -trunc: - printf("[|syslog]"); -} diff --git a/contrib/tcpdump/print-tcp.c b/contrib/tcpdump/print-tcp.c deleted file mode 100644 index ab736a060e5e9..0000000000000 --- a/contrib/tcpdump/print-tcp.c +++ /dev/null @@ -1,807 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * Copyright (c) 1999-2004 The tcpdump.org 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-tcp.c,v 1.120.2.2 2005/04/21 06:36:05 guy Exp $ (LBL)"; -#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 "addrtoname.h" -#include "extract.h" - -#include "tcp.h" - -#include "ip.h" -#ifdef INET6 -#include "ip6.h" -#endif -#include "ipproto.h" -#include "rpc_auth.h" -#include "rpc_msg.h" - -#include "nameser.h" - -#ifdef HAVE_LIBCRYPTO -#include <openssl/md5.h> - -#define SIGNATURE_VALID 0 -#define SIGNATURE_INVALID 1 -#define CANT_CHECK_SIGNATURE 2 - -static int tcp_verify_signature(const struct ip *ip, const struct tcphdr *tp, - const u_char *data, int length, const u_char *rcvsig); -#endif - -static void print_tcp_rst_data(register const u_char *sp, u_int length); - -#define MAX_RST_DATA_LEN 30 - - -struct tha { -#ifndef INET6 - struct in_addr src; - struct in_addr dst; -#else - struct in6_addr src; - struct in6_addr dst; -#endif /*INET6*/ - u_int port; -}; - -struct tcp_seq_hash { - struct tcp_seq_hash *nxt; - struct tha addr; - tcp_seq seq; - tcp_seq ack; -}; - -#define TSEQ_HASHSIZE 919 - -/* These tcp optinos do not have the size octet */ -#define ZEROLENOPT(o) ((o) == TCPOPT_EOL || (o) == TCPOPT_NOP) - -static struct tcp_seq_hash tcp_seq_hash[TSEQ_HASHSIZE]; - - -#ifndef TELNET_PORT -#define TELNET_PORT 23 -#endif -#ifndef BGP_PORT -#define BGP_PORT 179 -#endif -#define NETBIOS_SSN_PORT 139 -#ifndef PPTP_PORT -#define PPTP_PORT 1723 -#endif -#define BEEP_PORT 10288 -#ifndef NFS_PORT -#define NFS_PORT 2049 -#endif -#define MSDP_PORT 639 -#define LDP_PORT 646 - -static int tcp_cksum(register const struct ip *ip, - register const struct tcphdr *tp, - register 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.len = htons((u_int16_t)len); - phu.ph.mbz = 0; - phu.ph.proto = IPPROTO_TCP; - 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 *)tp, len, - sp[0]+sp[1]+sp[2]+sp[3]+sp[4]+sp[5]); -} - -#ifdef INET6 -static int tcp6_cksum(const struct ip6_hdr *ip6, const struct tcphdr *tp, - u_int len) -{ - size_t i; - register 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_TCP; - - sum = 0; - for (i = 0; i < sizeof(phu.pa) / sizeof(phu.pa[0]); i++) - sum += phu.pa[i]; - - sp = (const u_int16_t *)tp; - - 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 - -void -tcp_print(register const u_char *bp, register u_int length, - register const u_char *bp2, int fragmented) -{ - register const struct tcphdr *tp; - register const struct ip *ip; - register u_char flags; - register u_int hlen; - register char ch; - u_int16_t sport, dport, win, urp; - u_int32_t seq, ack, thseq, thack; - int threv; -#ifdef INET6 - register const struct ip6_hdr *ip6; -#endif - - tp = (struct tcphdr *)bp; - ip = (struct ip *)bp2; -#ifdef INET6 - if (IP_V(ip) == 6) - ip6 = (struct ip6_hdr *)bp2; - else - ip6 = NULL; -#endif /*INET6*/ - ch = '\0'; - if (!TTEST(tp->th_dport)) { - (void)printf("%s > %s: [|tcp]", - ipaddr_string(&ip->ip_src), - ipaddr_string(&ip->ip_dst)); - return; - } - - sport = EXTRACT_16BITS(&tp->th_sport); - dport = EXTRACT_16BITS(&tp->th_dport); - - hlen = TH_OFF(tp) * 4; - - /* - * If data present, header length valid, and NFS port used, - * assume NFS. - * Pass offset of data plus 4 bytes for RPC TCP msg length - * to NFS print routines. - */ - if (!qflag && hlen >= sizeof(*tp) && hlen <= length) { - if ((u_char *)tp + 4 + sizeof(struct sunrpc_msg) <= snapend && - dport == NFS_PORT) { - nfsreq_print((u_char *)tp + hlen + 4, length - hlen, - (u_char *)ip); - return; - } else if ((u_char *)tp + 4 + sizeof(struct sunrpc_msg) - <= snapend && - sport == NFS_PORT) { - nfsreply_print((u_char *)tp + hlen + 4, length - hlen, - (u_char *)ip); - return; - } - } -#ifdef INET6 - if (ip6) { - if (ip6->ip6_nxt == IPPROTO_TCP) { - (void)printf("%s.%s > %s.%s: ", - ip6addr_string(&ip6->ip6_src), - tcpport_string(sport), - ip6addr_string(&ip6->ip6_dst), - tcpport_string(dport)); - } else { - (void)printf("%s > %s: ", - tcpport_string(sport), tcpport_string(dport)); - } - } else -#endif /*INET6*/ - { - if (ip->ip_p == IPPROTO_TCP) { - (void)printf("%s.%s > %s.%s: ", - ipaddr_string(&ip->ip_src), - tcpport_string(sport), - ipaddr_string(&ip->ip_dst), - tcpport_string(dport)); - } else { - (void)printf("%s > %s: ", - tcpport_string(sport), tcpport_string(dport)); - } - } - - if (hlen < sizeof(*tp)) { - (void)printf(" tcp %d [bad hdr length %u - too short, < %lu]", - length - hlen, hlen, (unsigned long)sizeof(*tp)); - return; - } - - TCHECK(*tp); - - seq = EXTRACT_32BITS(&tp->th_seq); - ack = EXTRACT_32BITS(&tp->th_ack); - win = EXTRACT_16BITS(&tp->th_win); - urp = EXTRACT_16BITS(&tp->th_urp); - - if (qflag) { - (void)printf("tcp %d", length - hlen); - if (hlen > length) { - (void)printf(" [bad hdr length %u - too long, > %u]", - hlen, length); - } - return; - } - if ((flags = tp->th_flags) & (TH_SYN|TH_FIN|TH_RST|TH_PUSH| - TH_ECNECHO|TH_CWR)) { - if (flags & TH_SYN) - putchar('S'); - if (flags & TH_FIN) - putchar('F'); - if (flags & TH_RST) - putchar('R'); - if (flags & TH_PUSH) - putchar('P'); - if (flags & TH_CWR) - putchar('W'); /* congestion _W_indow reduced (ECN) */ - if (flags & TH_ECNECHO) - putchar('E'); /* ecn _E_cho sent (ECN) */ - } else - putchar('.'); - - if (!Sflag && (flags & TH_ACK)) { - register struct tcp_seq_hash *th; - const void *src, *dst; - register int rev; - struct tha tha; - /* - * Find (or record) the initial sequence numbers for - * this conversation. (we pick an arbitrary - * collating order so there's only one entry for - * both directions). - */ -#ifdef INET6 - memset(&tha, 0, sizeof(tha)); - rev = 0; - if (ip6) { - src = &ip6->ip6_src; - dst = &ip6->ip6_dst; - if (sport > dport) - rev = 1; - else if (sport == dport) { - if (memcmp(src, dst, sizeof ip6->ip6_dst) > 0) - rev = 1; - } - if (rev) { - memcpy(&tha.src, dst, sizeof ip6->ip6_dst); - memcpy(&tha.dst, src, sizeof ip6->ip6_src); - tha.port = dport << 16 | sport; - } else { - memcpy(&tha.dst, dst, sizeof ip6->ip6_dst); - memcpy(&tha.src, src, sizeof ip6->ip6_src); - tha.port = sport << 16 | dport; - } - } else { - src = &ip->ip_src; - dst = &ip->ip_dst; - if (sport > dport) - rev = 1; - else if (sport == dport) { - if (memcmp(src, dst, sizeof ip->ip_dst) > 0) - rev = 1; - } - if (rev) { - memcpy(&tha.src, dst, sizeof ip->ip_dst); - memcpy(&tha.dst, src, sizeof ip->ip_src); - tha.port = dport << 16 | sport; - } else { - memcpy(&tha.dst, dst, sizeof ip->ip_dst); - memcpy(&tha.src, src, sizeof ip->ip_src); - tha.port = sport << 16 | dport; - } - } -#else - rev = 0; - src = &ip->ip_src; - dst = &ip->ip_dst; - if (sport > dport) - rev = 1; - else if (sport == dport) { - if (memcmp(src, dst, sizeof ip->ip_dst) > 0) - rev = 1; - } - if (rev) { - memcpy(&tha.src, dst, sizeof ip->ip_dst); - memcpy(&tha.dst, src, sizeof ip->ip_src); - tha.port = dport << 16 | sport; - } else { - memcpy(&tha.dst, dst, sizeof ip->ip_dst); - memcpy(&tha.src, src, sizeof ip->ip_src); - tha.port = sport << 16 | dport; - } -#endif - - threv = rev; - for (th = &tcp_seq_hash[tha.port % TSEQ_HASHSIZE]; - th->nxt; th = th->nxt) - if (memcmp((char *)&tha, (char *)&th->addr, - sizeof(th->addr)) == 0) - break; - - if (!th->nxt || (flags & TH_SYN)) { - /* didn't find it or new conversation */ - if (th->nxt == NULL) { - th->nxt = (struct tcp_seq_hash *) - calloc(1, sizeof(*th)); - if (th->nxt == NULL) - error("tcp_print: calloc"); - } - th->addr = tha; - if (rev) - th->ack = seq, th->seq = ack - 1; - else - th->seq = seq, th->ack = ack - 1; - } else { - if (rev) - seq -= th->ack, ack -= th->seq; - else - seq -= th->seq, ack -= th->ack; - } - - thseq = th->seq; - thack = th->ack; - } else { - /*fool gcc*/ - thseq = thack = threv = 0; - } - if (hlen > length) { - (void)printf(" [bad hdr length %u - too long, > %u]", - hlen, length); - return; - } - - if (IP_V(ip) == 4 && vflag && !fragmented) { - u_int16_t sum, tcp_sum; - if (TTEST2(tp->th_sport, length)) { - sum = tcp_cksum(ip, tp, length); - - (void)printf(", cksum 0x%04x",EXTRACT_16BITS(&tp->th_sum)); - if (sum != 0) { - tcp_sum = EXTRACT_16BITS(&tp->th_sum); - (void)printf(" (incorrect (-> 0x%04x),",in_cksum_shouldbe(tcp_sum, sum)); - } else - (void)printf(" (correct),"); - } - } -#ifdef INET6 - if (IP_V(ip) == 6 && ip6->ip6_plen && vflag && !fragmented) { - u_int16_t sum,tcp_sum; - if (TTEST2(tp->th_sport, length)) { - sum = tcp6_cksum(ip6, tp, length); - (void)printf(", cksum 0x%04x",EXTRACT_16BITS(&tp->th_sum)); - if (sum != 0) { - tcp_sum = EXTRACT_16BITS(&tp->th_sum); - (void)printf(" (incorrect (-> 0x%04x),",in_cksum_shouldbe(tcp_sum, sum)); - } else - (void)printf(" (correct),"); - - } - } -#endif - - length -= hlen; - if (vflag > 1 || length > 0 || flags & (TH_SYN | TH_FIN | TH_RST)) - (void)printf(" %u:%u(%u)", seq, seq + length, length); - if (flags & TH_ACK) - (void)printf(" ack %u", ack); - - (void)printf(" win %d", win); - - if (flags & TH_URG) - (void)printf(" urg %d", urp); - /* - * Handle any options. - */ - if (hlen > sizeof(*tp)) { - register const u_char *cp; - register u_int i, opt, datalen; - register u_int len; - - hlen -= sizeof(*tp); - cp = (const u_char *)tp + sizeof(*tp); - putchar(' '); - ch = '<'; - while (hlen > 0) { - putchar(ch); - TCHECK(*cp); - opt = *cp++; - if (ZEROLENOPT(opt)) - len = 1; - else { - TCHECK(*cp); - len = *cp++; /* total including type, len */ - if (len < 2 || len > hlen) - goto bad; - --hlen; /* account for length byte */ - } - --hlen; /* account for type byte */ - datalen = 0; - -/* Bail if "l" bytes of data are not left or were not captured */ -#define LENCHECK(l) { if ((l) > hlen) goto bad; TCHECK2(*cp, l); } - - switch (opt) { - - case TCPOPT_MAXSEG: - (void)printf("mss"); - datalen = 2; - LENCHECK(datalen); - (void)printf(" %u", EXTRACT_16BITS(cp)); - - break; - - case TCPOPT_EOL: - (void)printf("eol"); - break; - - case TCPOPT_NOP: - (void)printf("nop"); - break; - - case TCPOPT_WSCALE: - (void)printf("wscale"); - datalen = 1; - LENCHECK(datalen); - (void)printf(" %u", *cp); - break; - - case TCPOPT_SACKOK: - (void)printf("sackOK"); - break; - - case TCPOPT_SACK: - datalen = len - 2; - if (datalen % 8 != 0) { - (void)printf("malformed sack"); - } else { - u_int32_t s, e; - - (void)printf("sack %d ", datalen / 8); - for (i = 0; i < datalen; i += 8) { - LENCHECK(i + 4); - s = EXTRACT_32BITS(cp + i); - LENCHECK(i + 8); - e = EXTRACT_32BITS(cp + i + 4); - if (threv) { - s -= thseq; - e -= thseq; - } else { - s -= thack; - e -= thack; - } - (void)printf("{%u:%u}", s, e); - } - } - break; - - case TCPOPT_ECHO: - (void)printf("echo"); - datalen = 4; - LENCHECK(datalen); - (void)printf(" %u", EXTRACT_32BITS(cp)); - break; - - case TCPOPT_ECHOREPLY: - (void)printf("echoreply"); - datalen = 4; - LENCHECK(datalen); - (void)printf(" %u", EXTRACT_32BITS(cp)); - break; - - case TCPOPT_TIMESTAMP: - (void)printf("timestamp"); - datalen = 8; - LENCHECK(4); - (void)printf(" %u", EXTRACT_32BITS(cp)); - LENCHECK(datalen); - (void)printf(" %u", EXTRACT_32BITS(cp + 4)); - break; - - case TCPOPT_CC: - (void)printf("cc"); - datalen = 4; - LENCHECK(datalen); - (void)printf(" %u", EXTRACT_32BITS(cp)); - break; - - case TCPOPT_CCNEW: - (void)printf("ccnew"); - datalen = 4; - LENCHECK(datalen); - (void)printf(" %u", EXTRACT_32BITS(cp)); - break; - - case TCPOPT_CCECHO: - (void)printf("ccecho"); - datalen = 4; - LENCHECK(datalen); - (void)printf(" %u", EXTRACT_32BITS(cp)); - break; - - case TCPOPT_SIGNATURE: - (void)printf("md5:"); - datalen = TCP_SIGLEN; - LENCHECK(datalen); -#ifdef HAVE_LIBCRYPTO - switch (tcp_verify_signature(ip, tp, - bp + TH_OFF(tp) * 4, length, cp)) { - - case SIGNATURE_VALID: - (void)printf("valid"); - break; - - case SIGNATURE_INVALID: - (void)printf("invalid"); - break; - - case CANT_CHECK_SIGNATURE: - (void)printf("can't check - "); - for (i = 0; i < TCP_SIGLEN; ++i) - (void)printf("%02x", cp[i]); - break; - } -#else - for (i = 0; i < TCP_SIGLEN; ++i) - (void)printf("%02x", cp[i]); -#endif - break; - - default: - (void)printf("opt-%u:", opt); - datalen = len - 2; - for (i = 0; i < datalen; ++i) { - LENCHECK(i); - (void)printf("%02x", cp[i]); - } - break; - } - - /* Account for data printed */ - cp += datalen; - hlen -= datalen; - - /* Check specification against observed length */ - ++datalen; /* option octet */ - if (!ZEROLENOPT(opt)) - ++datalen; /* size octet */ - if (datalen != len) - (void)printf("[len %d]", len); - ch = ','; - if (opt == TCPOPT_EOL) - break; - } - putchar('>'); - } - - if (length <= 0) - return; - - /* - * Decode payload if necessary. - */ - bp += TH_OFF(tp) * 4; - if (flags & TH_RST) { - if (vflag) - print_tcp_rst_data(bp, length); - } else { - if (sport == TELNET_PORT || dport == TELNET_PORT) { - if (!qflag && vflag) - telnet_print(bp, length); - } else if (sport == BGP_PORT || dport == BGP_PORT) - bgp_print(bp, length); - else if (sport == PPTP_PORT || dport == PPTP_PORT) - pptp_print(bp); -#ifdef TCPDUMP_DO_SMB - else if (sport == NETBIOS_SSN_PORT || dport == NETBIOS_SSN_PORT) - nbt_tcp_print(bp, length); -#endif - else if (sport == BEEP_PORT || dport == BEEP_PORT) - beep_print(bp, length); - else if (length > 2 && - (sport == NAMESERVER_PORT || dport == NAMESERVER_PORT || - sport == MULTICASTDNS_PORT || dport == MULTICASTDNS_PORT)) { - /* - * TCP DNS query has 2byte length at the head. - * XXX packet could be unaligned, it can go strange - */ - ns_print(bp + 2, length - 2, 0); - } else if (sport == MSDP_PORT || dport == MSDP_PORT) { - msdp_print(bp, length); - } - else if (length > 0 && (sport == LDP_PORT || dport == LDP_PORT)) { - ldp_print(bp, length); - } - } - return; -bad: - fputs("[bad opt]", stdout); - if (ch != '\0') - putchar('>'); - return; -trunc: - fputs("[|tcp]", stdout); - if (ch != '\0') - putchar('>'); -} - -/* - * RFC1122 says the following on data in RST segments: - * - * 4.2.2.12 RST Segment: RFC-793 Section 3.4 - * - * A TCP SHOULD allow a received RST segment to include data. - * - * DISCUSSION - * It has been suggested that a RST segment could contain - * ASCII text that encoded and explained the cause of the - * RST. No standard has yet been established for such - * data. - * - */ - -static void -print_tcp_rst_data(register const u_char *sp, u_int length) -{ - int c; - - if (TTEST2(*sp, length)) - printf(" [RST"); - else - printf(" [!RST"); - if (length > MAX_RST_DATA_LEN) { - length = MAX_RST_DATA_LEN; /* can use -X for longer */ - putchar('+'); /* indicate we truncate */ - } - putchar(' '); - while (length-- && sp <= snapend) { - c = *sp++; - safeputchar(c); - } - putchar(']'); -} - -#ifdef HAVE_LIBCRYPTO -static int -tcp_verify_signature(const struct ip *ip, const struct tcphdr *tp, - const u_char *data, int length, const u_char *rcvsig) -{ - struct tcphdr tp1; - u_char sig[TCP_SIGLEN]; - char zero_proto = 0; - MD5_CTX ctx; - u_int16_t savecsum, tlen; -#ifdef INET6 - struct ip6_hdr *ip6; -#endif - u_int32_t len32; - u_int8_t nxt; - - tp1 = *tp; - - if (tcpmd5secret == NULL) - return (CANT_CHECK_SIGNATURE); - - MD5_Init(&ctx); - /* - * Step 1: Update MD5 hash with IP pseudo-header. - */ - if (IP_V(ip) == 4) { - MD5_Update(&ctx, (char *)&ip->ip_src, sizeof(ip->ip_src)); - MD5_Update(&ctx, (char *)&ip->ip_dst, sizeof(ip->ip_dst)); - MD5_Update(&ctx, (char *)&zero_proto, sizeof(zero_proto)); - MD5_Update(&ctx, (char *)&ip->ip_p, sizeof(ip->ip_p)); - tlen = EXTRACT_16BITS(&ip->ip_len) - IP_HL(ip) * 4; - tlen = htons(tlen); - MD5_Update(&ctx, (char *)&tlen, sizeof(tlen)); -#ifdef INET6 - } else if (IP_V(ip) == 6) { - ip6 = (struct ip6_hdr *)ip; - MD5_Update(&ctx, (char *)&ip6->ip6_src, sizeof(ip6->ip6_src)); - MD5_Update(&ctx, (char *)&ip6->ip6_dst, sizeof(ip6->ip6_dst)); - len32 = htonl(ntohs(ip6->ip6_plen)); - MD5_Update(&ctx, (char *)&len32, sizeof(len32)); - nxt = 0; - MD5_Update(&ctx, (char *)&nxt, sizeof(nxt)); - MD5_Update(&ctx, (char *)&nxt, sizeof(nxt)); - MD5_Update(&ctx, (char *)&nxt, sizeof(nxt)); - nxt = IPPROTO_TCP; - MD5_Update(&ctx, (char *)&nxt, sizeof(nxt)); -#endif - } else - return (CANT_CHECK_SIGNATURE); - - /* - * Step 2: Update MD5 hash with TCP header, excluding options. - * The TCP checksum must be set to zero. - */ - savecsum = tp1.th_sum; - tp1.th_sum = 0; - MD5_Update(&ctx, (char *)&tp1, sizeof(struct tcphdr)); - tp1.th_sum = savecsum; - /* - * Step 3: Update MD5 hash with TCP segment data, if present. - */ - if (length > 0) - MD5_Update(&ctx, data, length); - /* - * Step 4: Update MD5 hash with shared secret. - */ - MD5_Update(&ctx, tcpmd5secret, strlen(tcpmd5secret)); - MD5_Final(sig, &ctx); - - if (memcmp(rcvsig, sig, 16)) - return (SIGNATURE_VALID); - else - return (SIGNATURE_INVALID); -} -#endif /* HAVE_LIBCRYPTO */ diff --git a/contrib/tcpdump/print-telnet.c b/contrib/tcpdump/print-telnet.c deleted file mode 100644 index 78887278bfa20..0000000000000 --- a/contrib/tcpdump/print-telnet.c +++ /dev/null @@ -1,267 +0,0 @@ -/* $NetBSD: print-telnet.c,v 1.2 1999/10/11 12:40:12 sjg Exp $ */ - -/*- - * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Simon J. Gerraty. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the NetBSD - * Foundation, Inc. and its contributors. - * 4. Neither the name of The NetBSD Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/* - * @(#)Copyright (c) 1994, Simon J. Gerraty. - * - * This is free software. It comes with NO WARRANTY. - * Permission to use, modify and distribute this source code - * is granted subject to the following conditions. - * 1/ that the above copyright notice and this notice - * are preserved in all copies. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-telnet.c,v 1.24 2003/12/29 11:05:10 hannes Exp $"; -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" - -#define TELCMDS -#define TELOPTS -#include "telnet.h" - -/* normal */ -static const char *cmds[] = { - "IS", "SEND", "INFO", -}; - -/* 37: Authentication */ -static const char *authcmd[] = { - "IS", "SEND", "REPLY", "NAME", -}; -static const char *authtype[] = { - "NULL", "KERBEROS_V4", "KERBEROS_V5", "SPX", "MINK", - "SRP", "RSA", "SSL", NULL, NULL, - "LOKI", "SSA", "KEA_SJ", "KEA_SJ_INTEG", "DSS", - "NTLM", -}; - -/* 38: Encryption */ -static const char *enccmd[] = { - "IS", "SUPPORT", "REPLY", "START", "END", - "REQUEST-START", "REQUEST-END", "END_KEYID", "DEC_KEYID", -}; -static const char *enctype[] = { - "NULL", "DES_CFB64", "DES_OFB64", "DES3_CFB64", "DES3_OFB64", - NULL, "CAST5_40_CFB64", "CAST5_40_OFB64", "CAST128_CFB64", "CAST128_OFB64", -}; - -#define STR_OR_ID(x, tab) \ - (((x) < sizeof(tab)/sizeof(tab[0]) && tab[(x)]) ? tab[(x)] : numstr(x)) - -static char * -numstr(int x) -{ - static char buf[20]; - - snprintf(buf, sizeof(buf), "%#x", x); - return buf; -} - -/* sp points to IAC byte */ -static int -telnet_parse(const u_char *sp, u_int length, int print) -{ - int i, x; - u_int c; - const u_char *osp, *p; -#define FETCH(c, sp, length) \ - do { \ - if (length < 1) \ - goto pktend; \ - TCHECK(*sp); \ - c = *sp++; \ - length--; \ - } while (0) - - osp = sp; - - FETCH(c, sp, length); - if (c != IAC) - goto pktend; - FETCH(c, sp, length); - if (c == IAC) { /* <IAC><IAC>! */ - if (print) - printf("IAC IAC"); - goto done; - } - - i = c - TELCMD_FIRST; - if (i < 0 || i > IAC - TELCMD_FIRST) - goto pktend; - - switch (c) { - case DONT: - case DO: - case WONT: - case WILL: - case SB: - /* DONT/DO/WONT/WILL x */ - FETCH(x, sp, length); - if (x >= 0 && x < NTELOPTS) { - if (print) - (void)printf("%s %s", telcmds[i], telopts[x]); - } else { - if (print) - (void)printf("%s %#x", telcmds[i], x); - } - if (c != SB) - break; - /* IAC SB .... IAC SE */ - p = sp; - while (length > (u_int)(p + 1 - sp)) { - if (p[0] == IAC && p[1] == SE) - break; - p++; - } - if (*p != IAC) - goto pktend; - - switch (x) { - case TELOPT_AUTHENTICATION: - if (p <= sp) - break; - FETCH(c, sp, length); - if (print) - (void)printf(" %s", STR_OR_ID(c, authcmd)); - if (p <= sp) - break; - FETCH(c, sp, length); - if (print) - (void)printf(" %s", STR_OR_ID(c, authtype)); - break; - case TELOPT_ENCRYPT: - if (p <= sp) - break; - FETCH(c, sp, length); - if (print) - (void)printf(" %s", STR_OR_ID(c, enccmd)); - if (p <= sp) - break; - FETCH(c, sp, length); - if (print) - (void)printf(" %s", STR_OR_ID(c, enctype)); - break; - default: - if (p <= sp) - break; - FETCH(c, sp, length); - if (print) - (void)printf(" %s", STR_OR_ID(c, cmds)); - break; - } - while (p > sp) { - FETCH(x, sp, length); - if (print) - (void)printf(" %#x", x); - } - /* terminating IAC SE */ - if (print) - (void)printf(" SE"); - sp += 2; - length -= 2; - break; - default: - if (print) - (void)printf("%s", telcmds[i]); - goto done; - } - -done: - return sp - osp; - -trunc: - (void)printf("[|telnet]"); -pktend: - return -1; -#undef FETCH -} - -void -telnet_print(const u_char *sp, u_int length) -{ - int first = 1; - const u_char *osp; - int l; - - osp = sp; - - while (length > 0 && *sp == IAC) { - l = telnet_parse(sp, length, 0); - if (l < 0) - break; - - /* - * now print it - */ - if (Xflag && 2 < vflag) { - if (first) - printf("\nTelnet:"); - hex_print_with_offset("\n", sp, l, sp - osp); - if (l > 8) - printf("\n\t\t\t\t"); - else - printf("%*s\t", (8 - l) * 3, ""); - } else - printf("%s", (first) ? " [telnet " : ", "); - - (void)telnet_parse(sp, length, 1); - first = 0; - - sp += l; - length -= l; - } - if (!first) { - if (Xflag && 2 < vflag) - printf("\n"); - else - printf("]"); - } -} diff --git a/contrib/tcpdump/print-tftp.c b/contrib/tcpdump/print-tftp.c deleted file mode 100644 index 9efc0dac0ad59..0000000000000 --- a/contrib/tcpdump/print-tftp.c +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * Format and print trivial file transfer protocol packets. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-tftp.c,v 1.37 2003/11/16 09:36:40 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#ifdef SEGSIZE -#undef SEGSIZE /* SINIX sucks */ -#endif -#include <arpa/tftp.h> - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -/* op code to string mapping */ -static struct tok op2str[] = { - { RRQ, "RRQ" }, /* read request */ - { WRQ, "WRQ" }, /* write request */ - { DATA, "DATA" }, /* data packet */ - { ACK, "ACK" }, /* acknowledgement */ - { ERROR, "ERROR" }, /* error code */ - { 0, NULL } -}; - -/* error code to string mapping */ -static struct tok err2str[] = { - { EUNDEF, "EUNDEF" }, /* not defined */ - { ENOTFOUND, "ENOTFOUND" }, /* file not found */ - { EACCESS, "EACCESS" }, /* access violation */ - { ENOSPACE, "ENOSPACE" }, /* disk full or allocation exceeded */ - { EBADOP, "EBADOP" }, /* illegal TFTP operation */ - { EBADID, "EBADID" }, /* unknown transfer ID */ - { EEXISTS, "EEXISTS" }, /* file already exists */ - { ENOUSER, "ENOUSER" }, /* no such user */ - { 0, NULL } -}; - -/* - * Print trivial file transfer program requests - */ -void -tftp_print(register const u_char *bp, u_int length) -{ - register const struct tftphdr *tp; - register const char *cp; - register const u_char *p; - register int opcode, i; - static char tstr[] = " [|tftp]"; - - tp = (const struct tftphdr *)bp; - - /* Print length */ - printf(" %d", length); - - /* Print tftp request type */ - TCHECK(tp->th_opcode); - opcode = EXTRACT_16BITS(&tp->th_opcode); - cp = tok2str(op2str, "tftp-#%d", opcode); - printf(" %s", cp); - /* Bail if bogus opcode */ - if (*cp == 't') - return; - - switch (opcode) { - - case RRQ: - case WRQ: - /* - * XXX Not all arpa/tftp.h's specify th_stuff as any - * array; use address of th_block instead - */ -#ifdef notdef - p = (u_char *)tp->th_stuff; -#else - p = (u_char *)&tp->th_block; -#endif - fputs(" \"", stdout); - i = fn_print(p, snapend); - putchar('"'); - - /* Print the mode and any options */ - while ((p = (const u_char *)strchr((const char *)p, '\0')) != NULL) { - if (length <= (u_int)(p - (const u_char *)&tp->th_block)) - break; - p++; - if (*p != '\0') { - putchar(' '); - fn_print(p, snapend); - } - } - - if (i) - goto trunc; - break; - - case ACK: - case DATA: - TCHECK(tp->th_block); - printf(" block %d", EXTRACT_16BITS(&tp->th_block)); - break; - - case ERROR: - /* Print error code string */ - TCHECK(tp->th_code); - printf(" %s ", tok2str(err2str, "tftp-err-#%d \"", - EXTRACT_16BITS(&tp->th_code))); - /* Print error message string */ - i = fn_print((const u_char *)tp->th_data, snapend); - putchar('"'); - if (i) - goto trunc; - break; - - default: - /* We shouldn't get here */ - printf("(unknown #%d)", opcode); - break; - } - return; -trunc: - fputs(tstr, stdout); - return; -} diff --git a/contrib/tcpdump/print-timed.c b/contrib/tcpdump/print-timed.c deleted file mode 100644 index 3df224129f74f..0000000000000 --- a/contrib/tcpdump/print-timed.c +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2000 Ben Smithurst <ben@scientia.demon.co.uk> - * All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-timed.c,v 1.9 2003/11/16 09:36:40 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> - -#include "timed.h" -#include "interface.h" -#include "extract.h" - -static const char *tsptype[TSPTYPENUMBER] = - { "ANY", "ADJTIME", "ACK", "MASTERREQ", "MASTERACK", "SETTIME", "MASTERUP", - "SLAVEUP", "ELECTION", "ACCEPT", "REFUSE", "CONFLICT", "RESOLVE", "QUIT", - "DATE", "DATEREQ", "DATEACK", "TRACEON", "TRACEOFF", "MSITE", "MSITEREQ", - "TEST", "SETDATE", "SETDATEREQ", "LOOP" }; - -void -timed_print(register const u_char *bp) -{ -#define endof(x) ((u_char *)&(x) + sizeof (x)) - struct tsp *tsp = (struct tsp *)bp; - long sec, usec; - const u_char *end; - - if (endof(tsp->tsp_type) > snapend) { - fputs("[|timed]", stdout); - return; - } - if (tsp->tsp_type < TSPTYPENUMBER) - printf("TSP_%s", tsptype[tsp->tsp_type]); - else - printf("(tsp_type %#x)", tsp->tsp_type); - - if (endof(tsp->tsp_vers) > snapend) { - fputs(" [|timed]", stdout); - return; - } - printf(" vers %d", tsp->tsp_vers); - - if (endof(tsp->tsp_seq) > snapend) { - fputs(" [|timed]", stdout); - return; - } - printf(" seq %d", tsp->tsp_seq); - - if (tsp->tsp_type == TSP_LOOP) { - if (endof(tsp->tsp_hopcnt) > snapend) { - fputs(" [|timed]", stdout); - return; - } - printf(" hopcnt %d", tsp->tsp_hopcnt); - } else if (tsp->tsp_type == TSP_SETTIME || - tsp->tsp_type == TSP_ADJTIME || - tsp->tsp_type == TSP_SETDATE || - tsp->tsp_type == TSP_SETDATEREQ) { - if (endof(tsp->tsp_time) > snapend) { - fputs(" [|timed]", stdout); - return; - } - sec = EXTRACT_32BITS(&tsp->tsp_time.tv_sec); - usec = EXTRACT_32BITS(&tsp->tsp_time.tv_usec); - if (usec < 0) - /* corrupt, skip the rest of the packet */ - return; - fputs(" time ", stdout); - if (sec < 0 && usec != 0) { - sec++; - if (sec == 0) - fputc('-', stdout); - usec = 1000000 - usec; - } - printf("%ld.%06ld", sec, usec); - } - - end = memchr(tsp->tsp_name, '\0', snapend - (u_char *)tsp->tsp_name); - if (end == NULL) - fputs(" [|timed]", stdout); - else { - fputs(" name ", stdout); - fwrite(tsp->tsp_name, end - (u_char *)tsp->tsp_name, 1, stdout); - } -} diff --git a/contrib/tcpdump/print-token.c b/contrib/tcpdump/print-token.c deleted file mode 100644 index a2b3d0ffe57aa..0000000000000 --- a/contrib/tcpdump/print-token.c +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * Hacked version of print-ether.c Larry Lile <lile@stdio.com> - * - * Further tweaked to more closely resemble print-fddi.c - * Guy Harris <guy@alum.mit.edu> - */ -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-token.c,v 1.25.2.1 2005/07/07 01:24:40 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <pcap.h> -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "ethertype.h" - -#include "ether.h" -#include "token.h" - -/* Extract src, dst addresses */ -static inline void -extract_token_addrs(const struct token_header *trp, char *fsrc, char *fdst) -{ - memcpy(fdst, (const char *)trp->token_dhost, 6); - memcpy(fsrc, (const char *)trp->token_shost, 6); -} - -/* - * Print the TR MAC header - */ -static inline void -token_hdr_print(register const struct token_header *trp, register u_int length, - register const u_char *fsrc, register const u_char *fdst) -{ - const char *srcname, *dstname; - - srcname = etheraddr_string(fsrc); - dstname = etheraddr_string(fdst); - - if (vflag) - (void) printf("%02x %02x %s %s %d: ", - trp->token_ac, - trp->token_fc, - srcname, dstname, - length); - else - printf("%s %s %d: ", srcname, dstname, length); -} - -static const char *broadcast_indicator[] = { - "Non-Broadcast", "Non-Broadcast", - "Non-Broadcast", "Non-Broadcast", - "All-routes", "All-routes", - "Single-route", "Single-route" -}; - -static const char *direction[] = { - "Forward", "Backward" -}; - -static const char *largest_frame[] = { - "516", - "1500", - "2052", - "4472", - "8144", - "11407", - "17800", - "??" -}; - -u_int -token_print(const u_char *p, u_int length, u_int caplen) -{ - const struct token_header *trp; - u_short extracted_ethertype; - struct ether_header ehdr; - u_int route_len = 0, hdr_len = TOKEN_HDRLEN; - int seg; - - trp = (const struct token_header *)p; - - if (caplen < TOKEN_HDRLEN) { - printf("[|token-ring]"); - return hdr_len; - } - - /* - * Get the TR addresses into a canonical form - */ - extract_token_addrs(trp, (char*)ESRC(&ehdr), (char*)EDST(&ehdr)); - - /* Adjust for source routing information in the MAC header */ - if (IS_SOURCE_ROUTED(trp)) { - /* Clear source-routed bit */ - *ESRC(&ehdr) &= 0x7f; - - if (eflag) - token_hdr_print(trp, length, ESRC(&ehdr), EDST(&ehdr)); - - route_len = RIF_LENGTH(trp); - if (vflag) { - printf("%s ", broadcast_indicator[BROADCAST(trp)]); - printf("%s", direction[DIRECTION(trp)]); - - for (seg = 0; seg < SEGMENT_COUNT(trp); seg++) - printf(" [%d:%d]", RING_NUMBER(trp, seg), - BRIDGE_NUMBER(trp, seg)); - } else { - printf("rt = %x", ntohs(trp->token_rcf)); - - for (seg = 0; seg < SEGMENT_COUNT(trp); seg++) - printf(":%x", ntohs(trp->token_rseg[seg])); - } - printf(" (%s) ", largest_frame[LARGEST_FRAME(trp)]); - } else { - if (eflag) - token_hdr_print(trp, length, ESRC(&ehdr), EDST(&ehdr)); - } - - /* Skip over token ring MAC header and routing information */ - hdr_len += route_len; - length -= hdr_len; - p += hdr_len; - caplen -= hdr_len; - - /* Frame Control field determines interpretation of packet */ - extracted_ethertype = 0; - if (FRAME_TYPE(trp) == TOKEN_FC_LLC) { - /* Try to print the LLC-layer header & higher layers */ - if (llc_print(p, length, caplen, ESRC(&ehdr), EDST(&ehdr), - &extracted_ethertype) == 0) { - /* ether_type not known, print raw packet */ - if (!eflag) - token_hdr_print(trp, - length + TOKEN_HDRLEN + route_len, - ESRC(&ehdr), EDST(&ehdr)); - if (extracted_ethertype) { - printf("(LLC %s) ", - etherproto_string(htons(extracted_ethertype))); - } - if (!suppress_default_print) - default_print(p, caplen); - } - } else { - /* Some kinds of TR packet we cannot handle intelligently */ - /* XXX - dissect MAC packets if frame type is 0 */ - if (!eflag) - token_hdr_print(trp, length + TOKEN_HDRLEN + route_len, - ESRC(&ehdr), EDST(&ehdr)); - if (!suppress_default_print) - default_print(p, caplen); - } - return (hdr_len); -} - -/* - * This is the top level routine of the printer. 'p' points - * to the TR header of the packet, 'h->ts' is the timestamp, - * 'h->len' is the length of the packet off the wire, and 'h->caplen' - * is the number of bytes actually captured. - */ -u_int -token_if_print(const struct pcap_pkthdr *h, const u_char *p) -{ - return (token_print(p, h->len, h->caplen)); -} diff --git a/contrib/tcpdump/print-udp.c b/contrib/tcpdump/print-udp.c deleted file mode 100644 index 87da886c64433..0000000000000 --- a/contrib/tcpdump/print-udp.c +++ /dev/null @@ -1,703 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-udp.c,v 1.138 2005/04/07 00:28:17 mcr Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#ifdef SEGSIZE -#undef SEGSIZE -#endif -#include <arpa/tftp.h> - -#include <stdio.h> -#include <string.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" -#include "appletalk.h" - -#include "udp.h" - -#include "ip.h" -#ifdef INET6 -#include "ip6.h" -#endif -#include "ipproto.h" -#include "rpc_auth.h" -#include "rpc_msg.h" - -#include "nameser.h" -#include "nfs.h" -#include "bootp.h" - -struct rtcphdr { - u_int16_t rh_flags; /* T:2 P:1 CNT:5 PT:8 */ - u_int16_t rh_len; /* length of message (in words) */ - u_int32_t rh_ssrc; /* synchronization src id */ -}; - -typedef struct { - u_int32_t upper; /* more significant 32 bits */ - u_int32_t lower; /* less significant 32 bits */ -} ntp64; - -/* - * Sender report. - */ -struct rtcp_sr { - ntp64 sr_ntp; /* 64-bit ntp timestamp */ - u_int32_t sr_ts; /* reference media timestamp */ - u_int32_t sr_np; /* no. packets sent */ - u_int32_t sr_nb; /* no. bytes sent */ -}; - -/* - * Receiver report. - * Time stamps are middle 32-bits of ntp timestamp. - */ -struct rtcp_rr { - u_int32_t rr_srcid; /* sender being reported */ - u_int32_t rr_nl; /* no. packets lost */ - u_int32_t rr_ls; /* extended last seq number received */ - u_int32_t rr_dv; /* jitter (delay variance) */ - u_int32_t rr_lsr; /* orig. ts from last rr from this src */ - u_int32_t rr_dlsr; /* time from recpt of last rr to xmit time */ -}; - -/*XXX*/ -#define RTCP_PT_SR 200 -#define RTCP_PT_RR 201 -#define RTCP_PT_SDES 202 -#define RTCP_SDES_CNAME 1 -#define RTCP_SDES_NAME 2 -#define RTCP_SDES_EMAIL 3 -#define RTCP_SDES_PHONE 4 -#define RTCP_SDES_LOC 5 -#define RTCP_SDES_TOOL 6 -#define RTCP_SDES_NOTE 7 -#define RTCP_SDES_PRIV 8 -#define RTCP_PT_BYE 203 -#define RTCP_PT_APP 204 - -static void -vat_print(const void *hdr, register const struct udphdr *up) -{ - /* vat/vt audio */ - u_int ts = *(u_int16_t *)hdr; - if ((ts & 0xf060) != 0) { - /* probably vt */ - (void)printf("udp/vt %u %d / %d", - (u_int32_t)(EXTRACT_16BITS(&up->uh_ulen) - sizeof(*up)), - ts & 0x3ff, ts >> 10); - } else { - /* probably vat */ - u_int32_t i0 = EXTRACT_32BITS(&((u_int *)hdr)[0]); - u_int32_t i1 = EXTRACT_32BITS(&((u_int *)hdr)[1]); - printf("udp/vat %u c%d %u%s", - (u_int32_t)(EXTRACT_16BITS(&up->uh_ulen) - sizeof(*up) - 8), - i0 & 0xffff, - i1, i0 & 0x800000? "*" : ""); - /* audio format */ - if (i0 & 0x1f0000) - printf(" f%d", (i0 >> 16) & 0x1f); - if (i0 & 0x3f000000) - printf(" s%d", (i0 >> 24) & 0x3f); - } -} - -static void -rtp_print(const void *hdr, u_int len, register const struct udphdr *up) -{ - /* rtp v1 or v2 */ - u_int *ip = (u_int *)hdr; - u_int hasopt, hasext, contype, hasmarker; - u_int32_t i0 = EXTRACT_32BITS(&((u_int *)hdr)[0]); - u_int32_t i1 = EXTRACT_32BITS(&((u_int *)hdr)[1]); - u_int dlen = EXTRACT_16BITS(&up->uh_ulen) - sizeof(*up) - 8; - const char * ptype; - - ip += 2; - len >>= 2; - len -= 2; - hasopt = 0; - hasext = 0; - if ((i0 >> 30) == 1) { - /* rtp v1 */ - hasopt = i0 & 0x800000; - contype = (i0 >> 16) & 0x3f; - hasmarker = i0 & 0x400000; - ptype = "rtpv1"; - } else { - /* rtp v2 */ - hasext = i0 & 0x10000000; - contype = (i0 >> 16) & 0x7f; - hasmarker = i0 & 0x800000; - dlen -= 4; - ptype = "rtp"; - ip += 1; - len -= 1; - } - printf("udp/%s %d c%d %s%s %d %u", - ptype, - dlen, - contype, - (hasopt || hasext)? "+" : "", - hasmarker? "*" : "", - i0 & 0xffff, - i1); - if (vflag) { - printf(" %u", EXTRACT_32BITS(&((u_int *)hdr)[2])); - if (hasopt) { - u_int i2, optlen; - do { - i2 = ip[0]; - optlen = (i2 >> 16) & 0xff; - if (optlen == 0 || optlen > len) { - printf(" !opt"); - return; - } - ip += optlen; - len -= optlen; - } while ((int)i2 >= 0); - } - if (hasext) { - u_int i2, extlen; - i2 = ip[0]; - extlen = (i2 & 0xffff) + 1; - if (extlen > len) { - printf(" !ext"); - return; - } - ip += extlen; - } - if (contype == 0x1f) /*XXX H.261 */ - printf(" 0x%04x", ip[0] >> 16); - } -} - -static const u_char * -rtcp_print(const u_char *hdr, const u_char *ep) -{ - /* rtp v2 control (rtcp) */ - struct rtcp_rr *rr = 0; - struct rtcp_sr *sr; - struct rtcphdr *rh = (struct rtcphdr *)hdr; - u_int len; - u_int16_t flags; - int cnt; - double ts, dts; - if ((u_char *)(rh + 1) > ep) { - printf(" [|rtcp]"); - return (ep); - } - len = (EXTRACT_16BITS(&rh->rh_len) + 1) * 4; - flags = EXTRACT_16BITS(&rh->rh_flags); - cnt = (flags >> 8) & 0x1f; - switch (flags & 0xff) { - case RTCP_PT_SR: - sr = (struct rtcp_sr *)(rh + 1); - printf(" sr"); - if (len != cnt * sizeof(*rr) + sizeof(*sr) + sizeof(*rh)) - printf(" [%d]", len); - if (vflag) - printf(" %u", EXTRACT_32BITS(&rh->rh_ssrc)); - if ((u_char *)(sr + 1) > ep) { - printf(" [|rtcp]"); - return (ep); - } - ts = (double)(EXTRACT_32BITS(&sr->sr_ntp.upper)) + - ((double)(EXTRACT_32BITS(&sr->sr_ntp.lower)) / - 4294967296.0); - printf(" @%.2f %u %up %ub", ts, EXTRACT_32BITS(&sr->sr_ts), - EXTRACT_32BITS(&sr->sr_np), EXTRACT_32BITS(&sr->sr_nb)); - rr = (struct rtcp_rr *)(sr + 1); - break; - case RTCP_PT_RR: - printf(" rr"); - if (len != cnt * sizeof(*rr) + sizeof(*rh)) - printf(" [%d]", len); - rr = (struct rtcp_rr *)(rh + 1); - if (vflag) - printf(" %u", EXTRACT_32BITS(&rh->rh_ssrc)); - break; - case RTCP_PT_SDES: - printf(" sdes %d", len); - if (vflag) - printf(" %u", EXTRACT_32BITS(&rh->rh_ssrc)); - cnt = 0; - break; - case RTCP_PT_BYE: - printf(" bye %d", len); - if (vflag) - printf(" %u", EXTRACT_32BITS(&rh->rh_ssrc)); - cnt = 0; - break; - default: - printf(" type-0x%x %d", flags & 0xff, len); - cnt = 0; - break; - } - if (cnt > 1) - printf(" c%d", cnt); - while (--cnt >= 0) { - if ((u_char *)(rr + 1) > ep) { - printf(" [|rtcp]"); - return (ep); - } - if (vflag) - printf(" %u", EXTRACT_32BITS(&rr->rr_srcid)); - ts = (double)(EXTRACT_32BITS(&rr->rr_lsr)) / 65536.; - dts = (double)(EXTRACT_32BITS(&rr->rr_dlsr)) / 65536.; - printf(" %ul %us %uj @%.2f+%.2f", - EXTRACT_32BITS(&rr->rr_nl) & 0x00ffffff, - EXTRACT_32BITS(&rr->rr_ls), - EXTRACT_32BITS(&rr->rr_dv), ts, dts); - } - return (hdr + len); -} - -static int udp_cksum(register const struct ip *ip, - register const struct udphdr *up, - register 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; - register const u_int16_t *sp; - - /* pseudo-header.. */ - phu.ph.len = htons((u_int16_t)len); - phu.ph.mbz = 0; - phu.ph.proto = IPPROTO_UDP; - 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 *)up, len, - sp[0]+sp[1]+sp[2]+sp[3]+sp[4]+sp[5]); -} - -#ifdef INET6 -static int udp6_cksum(const struct ip6_hdr *ip6, const struct udphdr *up, - u_int len) -{ - size_t i; - register 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_UDP; - - sum = 0; - for (i = 0; i < sizeof(phu.pa) / sizeof(phu.pa[0]); i++) - sum += phu.pa[i]; - - sp = (const u_int16_t *)up; - - 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 void -udpipaddr_print(const struct ip *ip, int sport, int dport) -{ -#ifdef INET6 - const struct ip6_hdr *ip6; - - if (IP_V(ip) == 6) - ip6 = (const struct ip6_hdr *)ip; - else - ip6 = NULL; - - if (ip6) { - if (ip6->ip6_nxt == IPPROTO_UDP) { - if (sport == -1) { - (void)printf("%s > %s: ", - ip6addr_string(&ip6->ip6_src), - ip6addr_string(&ip6->ip6_dst)); - } else { - (void)printf("%s.%s > %s.%s: ", - ip6addr_string(&ip6->ip6_src), - udpport_string(sport), - ip6addr_string(&ip6->ip6_dst), - udpport_string(dport)); - } - } else { - if (sport != -1) { - (void)printf("%s > %s: ", - udpport_string(sport), - udpport_string(dport)); - } - } - } else -#endif /*INET6*/ - { - if (ip->ip_p == IPPROTO_UDP) { - if (sport == -1) { - (void)printf("%s > %s: ", - ipaddr_string(&ip->ip_src), - ipaddr_string(&ip->ip_dst)); - } else { - (void)printf("%s.%s > %s.%s: ", - ipaddr_string(&ip->ip_src), - udpport_string(sport), - ipaddr_string(&ip->ip_dst), - udpport_string(dport)); - } - } else { - if (sport != -1) { - (void)printf("%s > %s: ", - udpport_string(sport), - udpport_string(dport)); - } - } - } -} - -void -udp_print(register const u_char *bp, u_int length, - register const u_char *bp2, int fragmented) -{ - register const struct udphdr *up; - register const struct ip *ip; - register const u_char *cp; - register const u_char *ep = bp + length; - u_int16_t sport, dport, ulen; -#ifdef INET6 - register const struct ip6_hdr *ip6; -#endif - - if (ep > snapend) - ep = snapend; - up = (struct udphdr *)bp; - ip = (struct ip *)bp2; -#ifdef INET6 - if (IP_V(ip) == 6) - ip6 = (struct ip6_hdr *)bp2; - else - ip6 = NULL; -#endif /*INET6*/ - cp = (u_char *)(up + 1); - if (!TTEST(up->uh_dport)) { - udpipaddr_print(ip, -1, -1); - (void)printf("[|udp]"); - return; - } - - sport = EXTRACT_16BITS(&up->uh_sport); - dport = EXTRACT_16BITS(&up->uh_dport); - - if (length < sizeof(struct udphdr)) { - udpipaddr_print(ip, sport, dport); - (void)printf("truncated-udp %d", length); - return; - } - length -= sizeof(struct udphdr); - - if (cp > snapend) { - udpipaddr_print(ip, sport, dport); - (void)printf("[|udp]"); - return; - } - - ulen = EXTRACT_16BITS(&up->uh_ulen); - if (ulen < 8) { - udpipaddr_print(ip, sport, dport); - (void)printf("truncated-udplength %d", ulen); - return; - } - if (packettype) { - register struct sunrpc_msg *rp; - enum sunrpc_msg_type direction; - - switch (packettype) { - - case PT_VAT: - udpipaddr_print(ip, sport, dport); - vat_print((void *)(up + 1), up); - break; - - case PT_WB: - udpipaddr_print(ip, sport, dport); - wb_print((void *)(up + 1), length); - break; - - case PT_RPC: - rp = (struct sunrpc_msg *)(up + 1); - direction = (enum sunrpc_msg_type)EXTRACT_32BITS(&rp->rm_direction); - if (direction == SUNRPC_CALL) - sunrpcrequest_print((u_char *)rp, length, - (u_char *)ip); - else - nfsreply_print((u_char *)rp, length, - (u_char *)ip); /*XXX*/ - break; - - case PT_RTP: - udpipaddr_print(ip, sport, dport); - rtp_print((void *)(up + 1), length, up); - break; - - case PT_RTCP: - udpipaddr_print(ip, sport, dport); - while (cp < ep) - cp = rtcp_print(cp, ep); - break; - - case PT_SNMP: - udpipaddr_print(ip, sport, dport); - snmp_print((const u_char *)(up + 1), length); - break; - - case PT_CNFP: - udpipaddr_print(ip, sport, dport); - cnfp_print(cp, (const u_char *)ip); - break; - - case PT_TFTP: - udpipaddr_print(ip, sport, dport); - tftp_print(cp, length); - break; - - case PT_AODV: - udpipaddr_print(ip, sport, dport); - aodv_print((const u_char *)(up + 1), length, -#ifdef INET6 - ip6 != NULL); -#else - 0); -#endif - break; - } - return; - } - - if (!qflag) { - register struct sunrpc_msg *rp; - enum sunrpc_msg_type direction; - - rp = (struct sunrpc_msg *)(up + 1); - if (TTEST(rp->rm_direction)) { - direction = (enum sunrpc_msg_type)EXTRACT_32BITS(&rp->rm_direction); - if (dport == NFS_PORT && direction == SUNRPC_CALL) { - nfsreq_print((u_char *)rp, length, - (u_char *)ip); - return; - } - if (sport == NFS_PORT && direction == SUNRPC_REPLY) { - nfsreply_print((u_char *)rp, length, - (u_char *)ip); - return; - } -#ifdef notdef - if (dport == SUNRPC_PORT && direction == SUNRPC_CALL) { - sunrpcrequest_print((u_char *)rp, length, (u_char *)ip); - return; - } -#endif - } - if (TTEST(((struct LAP *)cp)->type) && - ((struct LAP *)cp)->type == lapDDP && - (atalk_port(sport) || atalk_port(dport))) { - if (vflag) - fputs("kip ", stdout); - llap_print(cp, length); - return; - } - } - udpipaddr_print(ip, sport, dport); - - if (IP_V(ip) == 4 && (vflag > 1) && !fragmented) { - int sum = up->uh_sum; - if (sum == 0) { - (void)printf("[no cksum] "); - } else if (TTEST2(cp[0], length)) { - sum = udp_cksum(ip, up, length + sizeof(struct udphdr)); - if (sum != 0) - (void)printf("[bad udp cksum %x!] ", sum); - else - (void)printf("[udp sum ok] "); - } - } -#ifdef INET6 - if (IP_V(ip) == 6 && ip6->ip6_plen && vflag && !fragmented) { - int sum = up->uh_sum; - /* for IPv6, UDP checksum is mandatory */ - if (TTEST2(cp[0], length)) { - sum = udp6_cksum(ip6, up, length + sizeof(struct udphdr)); - if (sum != 0) - (void)printf("[bad udp cksum %x!] ", sum); - else - (void)printf("[udp sum ok] "); - } - } -#endif - - if (!qflag) { -#define ISPORT(p) (dport == (p) || sport == (p)) - if (ISPORT(NAMESERVER_PORT)) - ns_print((const u_char *)(up + 1), length, 0); - else if (ISPORT(MULTICASTDNS_PORT)) - ns_print((const u_char *)(up + 1), length, 1); - else if (ISPORT(TIMED_PORT)) - timed_print((const u_char *)(up + 1)); - else if (ISPORT(TFTP_PORT)) - tftp_print((const u_char *)(up + 1), length); - else if (ISPORT(IPPORT_BOOTPC) || ISPORT(IPPORT_BOOTPS)) - bootp_print((const u_char *)(up + 1), length); - else if (ISPORT(RIP_PORT)) - rip_print((const u_char *)(up + 1), length); - else if (ISPORT(AODV_PORT)) - aodv_print((const u_char *)(up + 1), length, -#ifdef INET6 - ip6 != NULL); -#else - 0); -#endif - else if (ISPORT(ISAKMP_PORT)) - isakmp_print(gndo, (const u_char *)(up + 1), length, bp2); - else if (ISPORT(ISAKMP_PORT_NATT)) - isakmp_rfc3948_print(gndo, (const u_char *)(up + 1), length, bp2); -#if 1 /*???*/ - else if (ISPORT(ISAKMP_PORT_USER1) || ISPORT(ISAKMP_PORT_USER2)) - isakmp_print(gndo, (const u_char *)(up + 1), length, bp2); -#endif - else if (ISPORT(SNMP_PORT) || ISPORT(SNMPTRAP_PORT)) - snmp_print((const u_char *)(up + 1), length); - else if (ISPORT(NTP_PORT)) - ntp_print((const u_char *)(up + 1), length); - else if (ISPORT(KERBEROS_PORT) || ISPORT(KERBEROS_SEC_PORT)) - krb_print((const void *)(up + 1)); - else if (ISPORT(L2TP_PORT)) - l2tp_print((const u_char *)(up + 1), length); -#ifdef TCPDUMP_DO_SMB - else if (ISPORT(NETBIOS_NS_PORT)) - nbt_udp137_print((const u_char *)(up + 1), length); - else if (ISPORT(NETBIOS_DGRAM_PORT)) - nbt_udp138_print((const u_char *)(up + 1), length); -#endif - else if (dport == 3456) - vat_print((const void *)(up + 1), up); - else if (ISPORT(ZEPHYR_SRV_PORT) || ISPORT(ZEPHYR_CLT_PORT)) - zephyr_print((const void *)(up + 1), length); - /* - * Since there are 10 possible ports to check, I think - * a <> test would be more efficient - */ - else if ((sport >= RX_PORT_LOW && sport <= RX_PORT_HIGH) || - (dport >= RX_PORT_LOW && dport <= RX_PORT_HIGH)) - rx_print((const void *)(up + 1), length, sport, dport, - (u_char *) ip); -#ifdef INET6 - else if (ISPORT(RIPNG_PORT)) - ripng_print((const u_char *)(up + 1), length); - else if (ISPORT(DHCP6_SERV_PORT) || ISPORT(DHCP6_CLI_PORT)) { - dhcp6_print((const u_char *)(up + 1), length); - } -#endif /*INET6*/ - /* - * Kludge in test for whiteboard packets. - */ - else if (dport == 4567) - wb_print((const void *)(up + 1), length); - else if (ISPORT(CISCO_AUTORP_PORT)) - cisco_autorp_print((const void *)(up + 1), length); - else if (ISPORT(RADIUS_PORT) || - ISPORT(RADIUS_NEW_PORT) || - ISPORT(RADIUS_ACCOUNTING_PORT) || - ISPORT(RADIUS_NEW_ACCOUNTING_PORT) ) - radius_print((const u_char *)(up+1), length); - else if (dport == HSRP_PORT) - hsrp_print((const u_char *)(up + 1), length); - else if (ISPORT(LWRES_PORT)) - lwres_print((const u_char *)(up + 1), length); - else if (ISPORT(LDP_PORT)) - ldp_print((const u_char *)(up + 1), length); - else if (ISPORT(MPLS_LSP_PING_PORT)) - lspping_print((const u_char *)(up + 1), length); - else if (dport == BFD_CONTROL_PORT || - dport == BFD_ECHO_PORT ) - bfd_print((const u_char *)(up+1), length, dport); - else if (ISPORT(LMP_PORT)) - lmp_print((const u_char *)(up + 1), length); - else if (ISPORT(SIP_PORT)) - sip_print((const u_char *)(up + 1), length); - else if (ISPORT(SYSLOG_PORT)) - syslog_print((const u_char *)(up + 1), length); - else - (void)printf("UDP, length %u", - (u_int32_t)(ulen - sizeof(*up))); -#undef ISPORT - } else - (void)printf("UDP, length %u", (u_int32_t)(ulen - sizeof(*up))); -} - - -/* - * Local Variables: - * c-style: whitesmith - * c-basic-offset: 8 - * End: - */ - diff --git a/contrib/tcpdump/print-vjc.c b/contrib/tcpdump/print-vjc.c deleted file mode 100644 index 55b7d08b26f97..0000000000000 --- a/contrib/tcpdump/print-vjc.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-vjc.c,v 1.15 2004/03/25 03:31:17 mcr Exp $ (LBL)"; -#endif - -#include <tcpdump-stdinc.h> - -#include <pcap.h> -#include <stdio.h> - -#include "interface.h" -#include "addrtoname.h" - -#include "slcompress.h" -#include "ppp.h" - -/* - * XXX - for BSD/OS PPP, what packets get supplied with a PPP header type - * of PPP_VJC and what packets get supplied with a PPP header type of - * PPP_VJNC? PPP_VJNC is for "UNCOMPRESSED_TCP" packets, and PPP_VJC - * is for COMPRESSED_TCP packets (PPP_IP is used for TYPE_IP packets). - * - * RFC 1144 implies that, on the wire, the packet type is *not* needed - * for PPP, as different PPP protocol types can be used; it only needs - * to be put on the wire for SLIP. - * - * It also indicates that, for compressed SLIP: - * - * If the COMPRESSED_TCP bit is set in the first byte, it's - * a COMPRESSED_TCP packet; that byte is the change byte, and - * the COMPRESSED_TCP bit, 0x80, isn't used in the change byte. - * - * If the upper 4 bits of the first byte are 7, it's an - * UNCOMPRESSED_TCP packet; that byte is the first byte of - * the UNCOMPRESSED_TCP modified IP header, with a connection - * number in the protocol field, and with the version field - * being 7, not 4. - * - * Otherwise, the packet is an IPv4 packet (where the upper 4 bits - * of the packet are 4). - * - * So this routine looks as if it's sort-of intended to handle - * compressed SLIP, although it doesn't handle UNCOMPRESSED_TCP - * correctly for that (it doesn't fix the version number and doesn't - * do anything to the protocol field), and doesn't check for COMPRESSED_TCP - * packets correctly for that (you only check the first bit - see - * B.1 in RFC 1144). - * - * But it's called for BSD/OS PPP, not SLIP - perhaps BSD/OS does weird - * things with the headers? - * - * Without a BSD/OS VJC-compressed PPP trace, or knowledge of what the - * BSD/OS VJC code does, we can't say what's the case. - * - * We therefore leave "proto" - which is the PPP protocol type - in place, - * *not* marked as unused, for now, so that GCC warnings about the - * unused argument remind us that we should fix this some day. - */ -int -vjc_print(register const char *bp, u_short proto _U_) -{ - int i; - - switch (bp[0] & 0xf0) { - case TYPE_IP: - if (eflag) - printf("(vjc type=IP) "); - return PPP_IP; - case TYPE_UNCOMPRESSED_TCP: - if (eflag) - printf("(vjc type=raw TCP) "); - return PPP_IP; - case TYPE_COMPRESSED_TCP: - if (eflag) - printf("(vjc type=compressed TCP) "); - for (i = 0; i < 8; i++) { - if (bp[1] & (0x80 >> i)) - printf("%c", "?CI?SAWU"[i]); - } - if (bp[1]) - printf(" "); - printf("C=0x%02x ", bp[2]); - printf("sum=0x%04x ", *(u_short *)&bp[3]); - return -1; - case TYPE_ERROR: - if (eflag) - printf("(vjc type=error) "); - return -1; - default: - if (eflag) - printf("(vjc type=0x%02x) ", bp[0] & 0xf0); - return -1; - } -} diff --git a/contrib/tcpdump/print-vrrp.c b/contrib/tcpdump/print-vrrp.c deleted file mode 100644 index 1e87a5003a170..0000000000000 --- a/contrib/tcpdump/print-vrrp.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) 2000 William C. Fenner. - * All rights reserved. - * - * Kevin Steves <ks@hp.se> July 2000 - * Modified to: - * - print version, type string and packet length - * - print IP address count if > 1 (-v) - * - verify checksum (-v) - * - print authentication string (-v) - * - * 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. - * The name of William C. Fenner may not be used to endorse or - * promote products derived from this software without specific prior - * written permission. 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-vrrp.c,v 1.9.2.1 2005/05/06 07:57:20 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <stdlib.h> - -#include "interface.h" -#include "extract.h" -#include "addrtoname.h" - -/* - * RFC 2338: - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * |Version| Type | Virtual Rtr ID| Priority | Count IP Addrs| - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Auth Type | Adver Int | Checksum | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | IP Address (1) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | . | - * | . | - * | . | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | IP Address (n) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Authentication Data (1) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Authentication Data (2) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -/* Type */ -#define VRRP_TYPE_ADVERTISEMENT 1 - -static const struct tok type2str[] = { - { VRRP_TYPE_ADVERTISEMENT, "Advertisement" }, - { 0, NULL } -}; - -/* Auth Type */ -#define VRRP_AUTH_NONE 0 -#define VRRP_AUTH_SIMPLE 1 -#define VRRP_AUTH_AH 2 - -static const struct tok auth2str[] = { - { VRRP_AUTH_NONE, "none" }, - { VRRP_AUTH_SIMPLE, "simple" }, - { VRRP_AUTH_AH, "ah" }, - { 0, NULL } -}; - -void -vrrp_print(register const u_char *bp, register u_int len, int ttl) -{ - int version, type, auth_type; - const char *type_s; - - TCHECK(bp[0]); - version = (bp[0] & 0xf0) >> 4; - type = bp[0] & 0x0f; - type_s = tok2str(type2str, "unknown type (%u)", type); - printf("VRRPv%u, %s", version, type_s); - if (ttl != 255) - printf(", (ttl %u)", ttl); - if (version != 2 || type != VRRP_TYPE_ADVERTISEMENT) - return; - TCHECK(bp[2]); - printf(", vrid %u, prio %u", bp[1], bp[2]); - TCHECK(bp[5]); - auth_type = bp[4]; - printf(", authtype %s", tok2str(auth2str, NULL, auth_type)); - printf(", intvl %us, length %u", bp[5],len); - if (vflag) { - int naddrs = bp[3]; - int i; - char c; - - if (TTEST2(bp[0], len) && in_cksum((const u_short*)bp, len, 0)) - printf(", (bad vrrp cksum %x)", - EXTRACT_16BITS(&bp[6])); - printf(", addrs"); - if (naddrs > 1) - printf("(%d)", naddrs); - printf(":"); - c = ' '; - bp += 8; - for (i = 0; i < naddrs; i++) { - TCHECK(bp[3]); - printf("%c%s", c, ipaddr_string(bp)); - c = ','; - bp += 4; - } - if (auth_type == VRRP_AUTH_SIMPLE) { /* simple text password */ - TCHECK(bp[7]); - printf(" auth \""); - if (fn_printn(bp, 8, snapend)) { - printf("\""); - goto trunc; - } - printf("\""); - } - } - return; -trunc: - printf("[|vrrp]"); -} diff --git a/contrib/tcpdump/print-wb.c b/contrib/tcpdump/print-wb.c deleted file mode 100644 index e28697a6bb3a7..0000000000000 --- a/contrib/tcpdump/print-wb.c +++ /dev/null @@ -1,444 +0,0 @@ -/* - * Copyright (c) 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-wb.c,v 1.33 2004/03/24 04:06:28 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> - -#include "interface.h" -#include "addrtoname.h" -#include "extract.h" - -/* XXX need to add byte-swapping macros! */ -/* XXX - you mean like the ones in "extract.h"? */ - -/* - * Largest packet size. Everything should fit within this space. - * For instance, multiline objects are sent piecewise. - */ -#define MAXFRAMESIZE 1024 - -/* - * Multiple drawing ops can be sent in one packet. Each one starts on a - * an even multiple of DOP_ALIGN bytes, which must be a power of two. - */ -#define DOP_ALIGN 4 -#define DOP_ROUNDUP(x) ((((int)(x)) + (DOP_ALIGN - 1)) & ~(DOP_ALIGN - 1)) -#define DOP_NEXT(d)\ - ((struct dophdr *)((u_char *)(d) + \ - DOP_ROUNDUP(EXTRACT_16BITS(&(d)->dh_len) + sizeof(*(d))))) - -/* - * Format of the whiteboard packet header. - * The transport level header. - */ -struct pkt_hdr { - u_int32_t ph_src; /* site id of source */ - u_int32_t ph_ts; /* time stamp (for skew computation) */ - u_int16_t ph_version; /* version number */ - u_char ph_type; /* message type */ - u_char ph_flags; /* message flags */ -}; - -/* Packet types */ -#define PT_DRAWOP 0 /* drawing operation */ -#define PT_ID 1 /* announcement packet */ -#define PT_RREQ 2 /* repair request */ -#define PT_RREP 3 /* repair reply */ -#define PT_KILL 4 /* terminate participation */ -#define PT_PREQ 5 /* page vector request */ -#define PT_PREP 7 /* page vector reply */ - -#ifdef PF_USER -#undef PF_USER /* {Digital,Tru64} UNIX define this, alas */ -#endif - -/* flags */ -#define PF_USER 0x01 /* hint that packet has interactive data */ -#define PF_VIS 0x02 /* only visible ops wanted */ - -struct PageID { - u_int32_t p_sid; /* session id of initiator */ - u_int32_t p_uid; /* page number */ -}; - -struct dophdr { - u_int32_t dh_ts; /* sender's timestamp */ - u_int16_t dh_len; /* body length */ - u_char dh_flags; - u_char dh_type; /* body type */ - /* body follows */ -}; -/* - * Drawing op sub-types. - */ -#define DT_RECT 2 -#define DT_LINE 3 -#define DT_ML 4 -#define DT_DEL 5 -#define DT_XFORM 6 -#define DT_ELL 7 -#define DT_CHAR 8 -#define DT_STR 9 -#define DT_NOP 10 -#define DT_PSCODE 11 -#define DT_PSCOMP 12 -#define DT_REF 13 -#define DT_SKIP 14 -#define DT_HOLE 15 -#define DT_MAXTYPE 15 - -/* - * A drawing operation. - */ -struct pkt_dop { - struct PageID pd_page; /* page that operations apply to */ - u_int32_t pd_sseq; /* start sequence number */ - u_int32_t pd_eseq; /* end sequence number */ - /* drawing ops follow */ -}; - -/* - * A repair request. - */ -struct pkt_rreq { - u_int32_t pr_id; /* source id of drawops to be repaired */ - struct PageID pr_page; /* page of drawops */ - u_int32_t pr_sseq; /* start seqno */ - u_int32_t pr_eseq; /* end seqno */ -}; - -/* - * A repair reply. - */ -struct pkt_rrep { - u_int32_t pr_id; /* original site id of ops */ - struct pkt_dop pr_dop; - /* drawing ops follow */ -}; - -struct id_off { - u_int32_t id; - u_int32_t off; -}; - -struct pgstate { - u_int32_t slot; - struct PageID page; - u_int16_t nid; - u_int16_t rsvd; - /* seqptr's */ -}; - -/* - * An announcement packet. - */ -struct pkt_id { - u_int32_t pi_mslot; - struct PageID pi_mpage; /* current page */ - struct pgstate pi_ps; - /* seqptr's */ - /* null-terminated site name */ -}; - -struct pkt_preq { - struct PageID pp_page; - u_int32_t pp_low; - u_int32_t pp_high; -}; - -struct pkt_prep { - u_int32_t pp_n; /* size of pageid array */ - /* pgstate's follow */ -}; - -static int -wb_id(const struct pkt_id *id, u_int len) -{ - int i; - const char *cp; - const struct id_off *io; - char c; - int nid; - - printf(" wb-id:"); - if (len < sizeof(*id) || (u_char *)(id + 1) > snapend) - return (-1); - len -= sizeof(*id); - - printf(" %u/%s:%u (max %u/%s:%u) ", - EXTRACT_32BITS(&id->pi_ps.slot), - ipaddr_string(&id->pi_ps.page.p_sid), - EXTRACT_32BITS(&id->pi_ps.page.p_uid), - EXTRACT_32BITS(&id->pi_mslot), - ipaddr_string(&id->pi_mpage.p_sid), - EXTRACT_32BITS(&id->pi_mpage.p_uid)); - - nid = EXTRACT_16BITS(&id->pi_ps.nid); - len -= sizeof(*io) * nid; - io = (struct id_off *)(id + 1); - cp = (char *)(io + nid); - if ((u_char *)cp + len <= snapend) { - putchar('"'); - (void)fn_print((u_char *)cp, (u_char *)cp + len); - putchar('"'); - } - - c = '<'; - for (i = 0; i < nid && (u_char *)(io + 1) <= snapend; ++io, ++i) { - printf("%c%s:%u", - c, ipaddr_string(&io->id), EXTRACT_32BITS(&io->off)); - c = ','; - } - if (i >= nid) { - printf(">"); - return (0); - } - return (-1); -} - -static int -wb_rreq(const struct pkt_rreq *rreq, u_int len) -{ - printf(" wb-rreq:"); - if (len < sizeof(*rreq) || (u_char *)(rreq + 1) > snapend) - return (-1); - - printf(" please repair %s %s:%u<%u:%u>", - ipaddr_string(&rreq->pr_id), - ipaddr_string(&rreq->pr_page.p_sid), - EXTRACT_32BITS(&rreq->pr_page.p_uid), - EXTRACT_32BITS(&rreq->pr_sseq), - EXTRACT_32BITS(&rreq->pr_eseq)); - return (0); -} - -static int -wb_preq(const struct pkt_preq *preq, u_int len) -{ - printf(" wb-preq:"); - if (len < sizeof(*preq) || (u_char *)(preq + 1) > snapend) - return (-1); - - printf(" need %u/%s:%u", - EXTRACT_32BITS(&preq->pp_low), - ipaddr_string(&preq->pp_page.p_sid), - EXTRACT_32BITS(&preq->pp_page.p_uid)); - return (0); -} - -static int -wb_prep(const struct pkt_prep *prep, u_int len) -{ - int n; - const struct pgstate *ps; - const u_char *ep = snapend; - - printf(" wb-prep:"); - if (len < sizeof(*prep)) { - return (-1); - } - n = EXTRACT_32BITS(&prep->pp_n); - ps = (const struct pgstate *)(prep + 1); - while (--n >= 0 && (u_char *)(ps + 1) <= ep) { - const struct id_off *io, *ie; - char c = '<'; - - printf(" %u/%s:%u", - EXTRACT_32BITS(&ps->slot), - ipaddr_string(&ps->page.p_sid), - EXTRACT_32BITS(&ps->page.p_uid)); - io = (struct id_off *)(ps + 1); - for (ie = io + ps->nid; io < ie && (u_char *)(io + 1) <= ep; ++io) { - printf("%c%s:%u", c, ipaddr_string(&io->id), - EXTRACT_32BITS(&io->off)); - c = ','; - } - printf(">"); - ps = (struct pgstate *)io; - } - return ((u_char *)ps <= ep? 0 : -1); -} - - -const char *dopstr[] = { - "dop-0!", - "dop-1!", - "RECT", - "LINE", - "ML", - "DEL", - "XFORM", - "ELL", - "CHAR", - "STR", - "NOP", - "PSCODE", - "PSCOMP", - "REF", - "SKIP", - "HOLE", -}; - -static int -wb_dops(const struct dophdr *dh, u_int32_t ss, u_int32_t es) -{ - printf(" <"); - for ( ; ss <= es; ++ss) { - register int t = dh->dh_type; - - if (t > DT_MAXTYPE) - printf(" dop-%d!", t); - else { - printf(" %s", dopstr[t]); - if (t == DT_SKIP || t == DT_HOLE) { - u_int32_t ts = EXTRACT_32BITS(&dh->dh_ts); - printf("%d", ts - ss + 1); - if (ss > ts || ts > es) { - printf("[|]"); - if (ts < ss) - return (0); - } - ss = ts; - } - } - dh = DOP_NEXT(dh); - if ((u_char *)dh > snapend) { - printf("[|wb]"); - break; - } - } - printf(" >"); - return (0); -} - -static int -wb_rrep(const struct pkt_rrep *rrep, u_int len) -{ - const struct pkt_dop *dop = &rrep->pr_dop; - - printf(" wb-rrep:"); - if (len < sizeof(*rrep) || (u_char *)(rrep + 1) > snapend) - return (-1); - len -= sizeof(*rrep); - - printf(" for %s %s:%u<%u:%u>", - ipaddr_string(&rrep->pr_id), - ipaddr_string(&dop->pd_page.p_sid), - EXTRACT_32BITS(&dop->pd_page.p_uid), - EXTRACT_32BITS(&dop->pd_sseq), - EXTRACT_32BITS(&dop->pd_eseq)); - - if (vflag) - return (wb_dops((const struct dophdr *)(dop + 1), - EXTRACT_32BITS(&dop->pd_sseq), - EXTRACT_32BITS(&dop->pd_eseq))); - return (0); -} - -static int -wb_drawop(const struct pkt_dop *dop, u_int len) -{ - printf(" wb-dop:"); - if (len < sizeof(*dop) || (u_char *)(dop + 1) > snapend) - return (-1); - len -= sizeof(*dop); - - printf(" %s:%u<%u:%u>", - ipaddr_string(&dop->pd_page.p_sid), - EXTRACT_32BITS(&dop->pd_page.p_uid), - EXTRACT_32BITS(&dop->pd_sseq), - EXTRACT_32BITS(&dop->pd_eseq)); - - if (vflag) - return (wb_dops((const struct dophdr *)(dop + 1), - EXTRACT_32BITS(&dop->pd_sseq), - EXTRACT_32BITS(&dop->pd_eseq))); - return (0); -} - -/* - * Print whiteboard multicast packets. - */ -void -wb_print(register const void *hdr, register u_int len) -{ - register const struct pkt_hdr *ph; - - ph = (const struct pkt_hdr *)hdr; - if (len < sizeof(*ph) || (u_char *)(ph + 1) > snapend) { - printf("[|wb]"); - return; - } - len -= sizeof(*ph); - - if (ph->ph_flags) - printf("*"); - switch (ph->ph_type) { - - case PT_KILL: - printf(" wb-kill"); - return; - - case PT_ID: - if (wb_id((struct pkt_id *)(ph + 1), len) >= 0) - return; - break; - - case PT_RREQ: - if (wb_rreq((struct pkt_rreq *)(ph + 1), len) >= 0) - return; - break; - - case PT_RREP: - if (wb_rrep((struct pkt_rrep *)(ph + 1), len) >= 0) - return; - break; - - case PT_DRAWOP: - if (wb_drawop((struct pkt_dop *)(ph + 1), len) >= 0) - return; - break; - - case PT_PREQ: - if (wb_preq((struct pkt_preq *)(ph + 1), len) >= 0) - return; - break; - - case PT_PREP: - if (wb_prep((struct pkt_prep *)(ph + 1), len) >= 0) - return; - break; - - default: - printf(" wb-%d!", ph->ph_type); - return; - } -} diff --git a/contrib/tcpdump/print-zephyr.c b/contrib/tcpdump/print-zephyr.c deleted file mode 100644 index 698faa2f5b46b..0000000000000 --- a/contrib/tcpdump/print-zephyr.c +++ /dev/null @@ -1,313 +0,0 @@ -/* - * Decode and print Zephyr packets. - * - * http://web.mit.edu/zephyr/doc/protocol - * - * Copyright (c) 2001 Nickolai Zeldovich <kolya@MIT.EDU> - * All rights reserved. - * - * 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. - * The name of the author(s) may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-zephyr.c,v 1.8.2.1 2005/04/21 06:51:24 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> - -#include "interface.h" - -struct z_packet { - char *version; - int numfields; - int kind; - char *uid; - int port; - int auth; - int authlen; - char *authdata; - char *class; - char *inst; - char *opcode; - char *sender; - const char *recipient; - char *format; - int cksum; - int multi; - char *multi_uid; - /* Other fields follow here.. */ -}; - -enum z_packet_type { - Z_PACKET_UNSAFE = 0, - Z_PACKET_UNACKED, - Z_PACKET_ACKED, - Z_PACKET_HMACK, - Z_PACKET_HMCTL, - Z_PACKET_SERVACK, - Z_PACKET_SERVNAK, - Z_PACKET_CLIENTACK, - Z_PACKET_STAT -}; - -static struct tok z_types[] = { - { Z_PACKET_UNSAFE, "unsafe" }, - { Z_PACKET_UNACKED, "unacked" }, - { Z_PACKET_ACKED, "acked" }, - { Z_PACKET_HMACK, "hm-ack" }, - { Z_PACKET_HMCTL, "hm-ctl" }, - { Z_PACKET_SERVACK, "serv-ack" }, - { Z_PACKET_SERVNAK, "serv-nak" }, - { Z_PACKET_CLIENTACK, "client-ack" }, - { Z_PACKET_STAT, "stat" } -}; - -char z_buf[256]; - -static char * -parse_field(char **pptr, int *len) -{ - char *s; - - if (*len <= 0 || !pptr || !*pptr) - return NULL; - if (*pptr > (char *) snapend) - return NULL; - - s = *pptr; - while (*pptr <= (char *) snapend && *len >= 0 && **pptr) { - (*pptr)++; - (*len)--; - } - (*pptr)++; - (*len)--; - if (*len < 0 || *pptr > (char *) snapend) - return NULL; - return s; -} - -static const char * -z_triple(char *class, char *inst, const char *recipient) -{ - if (!*recipient) - recipient = "*"; - snprintf(z_buf, sizeof(z_buf), "<%s,%s,%s>", class, inst, recipient); - z_buf[sizeof(z_buf)-1] = '\0'; - return z_buf; -} - -static const char * -str_to_lower(char *string) -{ - strncpy(z_buf, string, sizeof(z_buf)); - z_buf[sizeof(z_buf)-1] = '\0'; - - string = z_buf; - while (*string) { - *string = tolower((unsigned char)(*string)); - string++; - } - - return z_buf; -} - -void -zephyr_print(const u_char *cp, int length) -{ - struct z_packet z; - char *parse = (char *) cp; - int parselen = length; - char *s; - int lose = 0; - -#define PARSE_STRING \ - s = parse_field(&parse, &parselen); \ - if (!s) lose = 1; - -#define PARSE_FIELD_INT(field) \ - PARSE_STRING \ - if (!lose) field = strtol(s, 0, 16); - -#define PARSE_FIELD_STR(field) \ - PARSE_STRING \ - if (!lose) field = s; - - PARSE_FIELD_STR(z.version); - if (lose) return; - if (strncmp(z.version, "ZEPH", 4)) - return; - - PARSE_FIELD_INT(z.numfields); - PARSE_FIELD_INT(z.kind); - PARSE_FIELD_STR(z.uid); - PARSE_FIELD_INT(z.port); - PARSE_FIELD_INT(z.auth); - PARSE_FIELD_INT(z.authlen); - PARSE_FIELD_STR(z.authdata); - PARSE_FIELD_STR(z.class); - PARSE_FIELD_STR(z.inst); - PARSE_FIELD_STR(z.opcode); - PARSE_FIELD_STR(z.sender); - PARSE_FIELD_STR(z.recipient); - PARSE_FIELD_STR(z.format); - PARSE_FIELD_INT(z.cksum); - PARSE_FIELD_INT(z.multi); - PARSE_FIELD_STR(z.multi_uid); - - if (lose) { - printf(" [|zephyr] (%d)", length); - return; - } - - printf(" zephyr"); - if (strncmp(z.version+4, "0.2", 3)) { - printf(" v%s", z.version+4); - return; - } - - printf(" %s", tok2str(z_types, "type %d", z.kind)); - if (z.kind == Z_PACKET_SERVACK) { - /* Initialization to silence warnings */ - char *ackdata = NULL; - PARSE_FIELD_STR(ackdata); - if (!lose && strcmp(ackdata, "SENT")) - printf("/%s", str_to_lower(ackdata)); - } - if (*z.sender) printf(" %s", z.sender); - - if (!strcmp(z.class, "USER_LOCATE")) { - if (!strcmp(z.opcode, "USER_HIDE")) - printf(" hide"); - else if (!strcmp(z.opcode, "USER_UNHIDE")) - printf(" unhide"); - else - printf(" locate %s", z.inst); - return; - } - - if (!strcmp(z.class, "ZEPHYR_ADMIN")) { - printf(" zephyr-admin %s", str_to_lower(z.opcode)); - return; - } - - if (!strcmp(z.class, "ZEPHYR_CTL")) { - if (!strcmp(z.inst, "CLIENT")) { - if (!strcmp(z.opcode, "SUBSCRIBE") || - !strcmp(z.opcode, "SUBSCRIBE_NODEFS") || - !strcmp(z.opcode, "UNSUBSCRIBE")) { - - printf(" %ssub%s", strcmp(z.opcode, "SUBSCRIBE") ? "un" : "", - strcmp(z.opcode, "SUBSCRIBE_NODEFS") ? "" : - "-nodefs"); - if (z.kind != Z_PACKET_SERVACK) { - /* Initialization to silence warnings */ - char *c = NULL, *i = NULL, *r = NULL; - PARSE_FIELD_STR(c); - PARSE_FIELD_STR(i); - PARSE_FIELD_STR(r); - if (!lose) printf(" %s", z_triple(c, i, r)); - } - return; - } - - if (!strcmp(z.opcode, "GIMME")) { - printf(" ret"); - return; - } - - if (!strcmp(z.opcode, "GIMMEDEFS")) { - printf(" gimme-defs"); - return; - } - - if (!strcmp(z.opcode, "CLEARSUB")) { - printf(" clear-subs"); - return; - } - - printf(" %s", str_to_lower(z.opcode)); - return; - } - - if (!strcmp(z.inst, "HM")) { - printf(" %s", str_to_lower(z.opcode)); - return; - } - - if (!strcmp(z.inst, "REALM")) { - if (!strcmp(z.opcode, "ADD_SUBSCRIBE")) - printf(" realm add-subs"); - if (!strcmp(z.opcode, "REQ_SUBSCRIBE")) - printf(" realm req-subs"); - if (!strcmp(z.opcode, "RLM_SUBSCRIBE")) - printf(" realm rlm-sub"); - if (!strcmp(z.opcode, "RLM_UNSUBSCRIBE")) - printf(" realm rlm-unsub"); - return; - } - } - - if (!strcmp(z.class, "HM_CTL")) { - printf(" hm_ctl %s", str_to_lower(z.inst)); - printf(" %s", str_to_lower(z.opcode)); - return; - } - - if (!strcmp(z.class, "HM_STAT")) { - if (!strcmp(z.inst, "HMST_CLIENT") && !strcmp(z.opcode, "GIMMESTATS")) { - printf(" get-client-stats"); - return; - } - } - - if (!strcmp(z.class, "WG_CTL")) { - printf(" wg_ctl %s", str_to_lower(z.inst)); - printf(" %s", str_to_lower(z.opcode)); - return; - } - - if (!strcmp(z.class, "LOGIN")) { - if (!strcmp(z.opcode, "USER_FLUSH")) { - printf(" flush_locs"); - return; - } - - if (!strcmp(z.opcode, "NONE") || - !strcmp(z.opcode, "OPSTAFF") || - !strcmp(z.opcode, "REALM-VISIBLE") || - !strcmp(z.opcode, "REALM-ANNOUNCED") || - !strcmp(z.opcode, "NET-VISIBLE") || - !strcmp(z.opcode, "NET-ANNOUNCED")) { - printf(" set-exposure %s", str_to_lower(z.opcode)); - return; - } - } - - if (!*z.recipient) - z.recipient = "*"; - - printf(" to %s", z_triple(z.class, z.inst, z.recipient)); - if (*z.opcode) - printf(" op %s", z.opcode); - return; -} diff --git a/contrib/tcpdump/route6d.h b/contrib/tcpdump/route6d.h deleted file mode 100644 index ee0033148c0cd..0000000000000 --- a/contrib/tcpdump/route6d.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (C) 1995, 1996, 1997 and 1998 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -/* - * $Header: /tcpdump/master/tcpdump/route6d.h,v 1.5 2002/12/11 07:14:10 guy Exp $ - */ - -#define RIP6_VERSION 1 - -#define RIP6_REQUEST 1 -#define RIP6_RESPONSE 2 - -struct netinfo6 { - struct in6_addr rip6_dest; - u_int16_t rip6_tag; - u_int8_t rip6_plen; - u_int8_t rip6_metric; -}; - -struct rip6 { - u_int8_t rip6_cmd; - u_int8_t rip6_vers; - u_int8_t rip6_res1[2]; - union { - struct netinfo6 ru6_nets[1]; - char ru6_tracefile[1]; - } rip6un; -#define rip6_nets rip6un.ru6_nets -#define rip6_tracefile rip6un.ru6_tracefile -}; - -#define HOPCNT_INFINITY6 16 -#define MAXRTE 24 -#define NEXTHOP_METRIC 0xff - -#ifndef DEBUG -#define SUPPLY_INTERVAL6 30 -#define RIP_LIFETIME 180 -#define RIP_HOLDDOWN 120 -#define RIP_TRIG_INTERVAL6 5 -#define RIP_TRIG_INTERVAL6_MIN 1 -#else -/* only for debugging; can not wait for 30sec to appear a bug */ -#define SUPPLY_INTERVAL6 10 -#define RIP_LIFETIME 60 -#define RIP_HOLDDOWN 40 -#define RIP_TRIG_INTERVAL6 5 -#define RIP_TRIG_INTERVAL6_MIN 1 -#endif - -#define RIP6_PORT 521 -#define RIP6_DEST "ff02::9" diff --git a/contrib/tcpdump/rpc_auth.h b/contrib/tcpdump/rpc_auth.h deleted file mode 100644 index 2b8ddc10164bc..0000000000000 --- a/contrib/tcpdump/rpc_auth.h +++ /dev/null @@ -1,79 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/rpc_auth.h,v 1.1.2.1 2005/04/27 21:44:07 guy Exp $ (LBL) */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - * - * from: @(#)auth.h 1.17 88/02/08 SMI - * from: @(#)auth.h 2.3 88/08/07 4.0 RPCSRC - * $FreeBSD$ - */ - -/* - * auth.h, Authentication interface. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * The data structures are completely opaque to the client. The client - * is required to pass a AUTH * to routines that create rpc - * "sessions". - */ - -/* - * Status returned from authentication check - */ -enum sunrpc_auth_stat { - SUNRPC_AUTH_OK=0, - /* - * failed at remote end - */ - SUNRPC_AUTH_BADCRED=1, /* bogus credentials (seal broken) */ - SUNRPC_AUTH_REJECTEDCRED=2, /* client should begin new session */ - SUNRPC_AUTH_BADVERF=3, /* bogus verifier (seal broken) */ - SUNRPC_AUTH_REJECTEDVERF=4, /* verifier expired or was replayed */ - SUNRPC_AUTH_TOOWEAK=5, /* rejected due to security reasons */ - /* - * failed locally - */ - SUNRPC_AUTH_INVALIDRESP=6, /* bogus response verifier */ - SUNRPC_AUTH_FAILED=7 /* some unknown reason */ -}; - -/* - * Authentication info. Opaque to client. - */ -struct sunrpc_opaque_auth { - u_int32_t oa_flavor; /* flavor of auth */ - u_int32_t oa_len; /* length of opaque body */ - /* zero or more bytes of body */ -}; - -#define SUNRPC_AUTH_NONE 0 /* no authentication */ -#define SUNRPC_AUTH_NULL 0 /* backward compatibility */ -#define SUNRPC_AUTH_UNIX 1 /* unix style (uid, gids) */ -#define SUNRPC_AUTH_SYS 1 /* forward compatibility */ -#define SUNRPC_AUTH_SHORT 2 /* short hand unix style */ -#define SUNRPC_AUTH_DES 3 /* des style (encrypted timestamps) */ diff --git a/contrib/tcpdump/rpc_msg.h b/contrib/tcpdump/rpc_msg.h deleted file mode 100644 index 01185de1ca150..0000000000000 --- a/contrib/tcpdump/rpc_msg.h +++ /dev/null @@ -1,128 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/rpc_msg.h,v 1.1.2.1 2005/04/27 21:44:07 guy Exp $ (LBL) */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - * - * from: @(#)rpc_msg.h 1.7 86/07/16 SMI - * from: @(#)rpc_msg.h 2.1 88/07/29 4.0 RPCSRC - * $FreeBSD$ - */ - -/* - * rpc_msg.h - * rpc message definition - * - * Copyright (C) 1984, Sun Microsystems, Inc. - */ - -#define SUNRPC_MSG_VERSION ((u_int32_t) 2) - -/* - * Bottom up definition of an rpc message. - * NOTE: call and reply use the same overall stuct but - * different parts of unions within it. - */ - -enum sunrpc_msg_type { - SUNRPC_CALL=0, - SUNRPC_REPLY=1 -}; - -enum sunrpc_reply_stat { - SUNRPC_MSG_ACCEPTED=0, - SUNRPC_MSG_DENIED=1 -}; - -enum sunrpc_accept_stat { - SUNRPC_SUCCESS=0, - SUNRPC_PROG_UNAVAIL=1, - SUNRPC_PROG_MISMATCH=2, - SUNRPC_PROC_UNAVAIL=3, - SUNRPC_GARBAGE_ARGS=4, - SUNRPC_SYSTEM_ERR=5 -}; - -enum sunrpc_reject_stat { - SUNRPC_RPC_MISMATCH=0, - SUNRPC_AUTH_ERROR=1 -}; - -/* - * Reply part of an rpc exchange - */ - -/* - * Reply to an rpc request that was rejected by the server. - */ -struct sunrpc_rejected_reply { - u_int32_t rj_stat; /* enum reject_stat */ - union { - struct { - u_int32_t low; - u_int32_t high; - } RJ_versions; - u_int32_t RJ_why; /* enum auth_stat - why authentication did not work */ - } ru; -#define rj_vers ru.RJ_versions -#define rj_why ru.RJ_why -}; - -/* - * Body of a reply to an rpc request. - */ -struct sunrpc_reply_body { - u_int32_t rp_stat; /* enum reply_stat */ - struct sunrpc_rejected_reply rp_reject; /* if rejected */ -}; - -/* - * Body of an rpc request call. - */ -struct sunrpc_call_body { - u_int32_t cb_rpcvers; /* must be equal to two */ - u_int32_t cb_prog; - u_int32_t cb_vers; - u_int32_t cb_proc; - struct sunrpc_opaque_auth cb_cred; - /* followed by opaque verifier */ -}; - -/* - * The rpc message - */ -struct sunrpc_msg { - u_int32_t rm_xid; - u_int32_t rm_direction; /* enum msg_type */ - union { - struct sunrpc_call_body RM_cmb; - struct sunrpc_reply_body RM_rmb; - } ru; -#define rm_call ru.RM_cmb -#define rm_reply ru.RM_rmb -}; -#define acpted_rply ru.RM_rmb.ru.RP_ar -#define rjcted_rply ru.RM_rmb.ru.RP_dr diff --git a/contrib/tcpdump/rx.h b/contrib/tcpdump/rx.h deleted file mode 100644 index 1912e51ae33ca..0000000000000 --- a/contrib/tcpdump/rx.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright: (c) 2000 United States Government as represented by the - * Secretary of the Navy. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. The names of the authors may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * 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. - */ -/* - * Rx protocol format - * - * $Id: rx.h,v 1.8 2002/12/11 07:14:11 guy Exp $ - */ - -#define FS_RX_PORT 7000 -#define CB_RX_PORT 7001 -#define PROT_RX_PORT 7002 -#define VLDB_RX_PORT 7003 -#define KAUTH_RX_PORT 7004 -#define VOL_RX_PORT 7005 -#define ERROR_RX_PORT 7006 /* Doesn't seem to be used */ -#define BOS_RX_PORT 7007 - -#ifndef AFSNAMEMAX -#define AFSNAMEMAX 256 -#endif - -#ifndef AFSOPAQUEMAX -#define AFSOPAQUEMAX 1024 -#endif - -#define PRNAMEMAX 64 -#define VLNAMEMAX 65 -#define KANAMEMAX 64 -#define BOSNAMEMAX 256 - -#define PRSFS_READ 1 /* Read files */ -#define PRSFS_WRITE 2 /* Write files */ -#define PRSFS_INSERT 4 /* Insert files into a directory */ -#define PRSFS_LOOKUP 8 /* Lookup files into a directory */ -#define PRSFS_DELETE 16 /* Delete files */ -#define PRSFS_LOCK 32 /* Lock files */ -#define PRSFS_ADMINISTER 64 /* Change ACL's */ - -struct rx_header { - u_int32_t epoch; - u_int32_t cid; - u_int32_t callNumber; - u_int32_t seq; - u_int32_t serial; - u_int8_t type; -#define RX_PACKET_TYPE_DATA 1 -#define RX_PACKET_TYPE_ACK 2 -#define RX_PACKET_TYPE_BUSY 3 -#define RX_PACKET_TYPE_ABORT 4 -#define RX_PACKET_TYPE_ACKALL 5 -#define RX_PACKET_TYPE_CHALLENGE 6 -#define RX_PACKET_TYPE_RESPONSE 7 -#define RX_PACKET_TYPE_DEBUG 8 -#define RX_PACKET_TYPE_PARAMS 9 -#define RX_PACKET_TYPE_VERSION 13 - u_int8_t flags; -#define RX_CLIENT_INITIATED 1 -#define RX_REQUEST_ACK 2 -#define RX_LAST_PACKET 4 -#define RX_MORE_PACKETS 8 -#define RX_FREE_PACKET 16 -#define RX_SLOW_START_OK 32 -#define RX_JUMBO_PACKET 32 - u_int8_t userStatus; - u_int8_t securityIndex; - u_int16_t spare; /* How clever: even though the AFS */ - u_int16_t serviceId; /* header files indicate that the */ -}; /* serviceId is first, it's really */ - /* encoded _after_ the spare field */ - /* I wasted a day figuring that out! */ - -#define NUM_RX_FLAGS 7 - -#define RX_MAXACKS 255 - -struct rx_ackPacket { - u_int16_t bufferSpace; /* Number of packet buffers available */ - u_int16_t maxSkew; /* Max diff between ack'd packet and */ - /* highest packet received */ - u_int32_t firstPacket; /* The first packet in ack list */ - u_int32_t previousPacket; /* Previous packet recv'd (obsolete) */ - u_int32_t serial; /* # of packet that prompted the ack */ - u_int8_t reason; /* Reason for acknowledgement */ - u_int8_t nAcks; /* Number of acknowledgements */ - u_int8_t acks[RX_MAXACKS]; /* Up to RX_MAXACKS acknowledgements */ -}; - -/* - * Values for the acks array - */ - -#define RX_ACK_TYPE_NACK 0 /* Don't have this packet */ -#define RX_ACK_TYPE_ACK 1 /* I have this packet */ diff --git a/contrib/tcpdump/savestr.c b/contrib/tcpdump/savestr.c deleted file mode 100644 index a81227c9e6d00..0000000000000 --- a/contrib/tcpdump/savestr.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] = - "@(#) $Header: /tcpdump/master/tcpdump/Attic/savestr.c,v 1.6 2000/07/11 00:49:02 assar Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <sys/types.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#ifdef HAVE_OS_PROTO_H -#include "os-proto.h" -#endif - -#include "savestr.h" - -/* A replacement for strdup() that cuts down on malloc() overhead */ -char * -savestr(register const char *str) -{ - register u_int size; - register char *p; - static char *strptr = NULL; - static u_int strsize = 0; - - size = strlen(str) + 1; - if (size > strsize) { - strsize = 1024; - if (strsize < size) - strsize = size; - strptr = (char *)malloc(strsize); - if (strptr == NULL) { - fprintf(stderr, "savestr: malloc\n"); - exit(1); - } - } - (void)strcpy(strptr, str); - p = strptr; - strptr += size; - strsize -= size; - return (p); -} diff --git a/contrib/tcpdump/savestr.h b/contrib/tcpdump/savestr.h deleted file mode 100644 index 8fe995eb21fbc..0000000000000 --- a/contrib/tcpdump/savestr.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * @(#) $Header: /tcpdump/master/tcpdump/Attic/savestr.h,v 1.1.1.1 1999/10/07 23:47:12 mcr Exp $ (LBL) - */ - -extern char *savestr(const char *); diff --git a/contrib/tcpdump/sctpConstants.h b/contrib/tcpdump/sctpConstants.h deleted file mode 100644 index f70226b624022..0000000000000 --- a/contrib/tcpdump/sctpConstants.h +++ /dev/null @@ -1,571 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/sctpConstants.h,v 1.4 2003/06/03 23:49:23 guy Exp $ (LBL) */ - -/* SCTP reference Implementation Copyright (C) 1999 Cisco And Motorola - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of Cisco nor of Motorola may be used - * to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the SCTP reference Implementation - * - * - * Please send any bug reports or fixes you make to one of the following email - * addresses: - * - * rstewar1@email.mot.com - * kmorneau@cisco.com - * qxie1@email.mot.com - * - * Any bugs reported given to us we will try to fix... any fixes shared will - * be incorperated into the next SCTP release. - */ - - -#ifndef __sctpConstants_h__ -#define __sctpConstants_h__ - - - /* If you wish to use MD5 instead of SLA uncomment the line - * below. Why you would like to do this: - * a) There may be IPR on SHA-1, or so the FIP-180-1 page says, - * b) MD5 is 3 times faster (has coded here). - * - * The disadvantage is, it is thought that MD5 has been - * cracked... see RFC2104. - */ -/*#define USE_MD5 1*/ - -/* the SCTP protocol signature - * this includes the version number - * encoded in the last 4 bits of the - * signature. - */ -#define PROTO_SIGNATURE_A 0x30000000 - -#define SCTP_VERSION_NUMBER 0x3 - -#define MAX_TSN 0xffffffff -#define MAX_SEQ 0xffff - -/* option: - * If you comment out the following you will - * receive the old behavior of obeying cwnd for - * the fast retransmit algorithm. With this defined - * a FR happens right away with-out waiting for the - * flightsize to drop below the cwnd value (which - * is reduced by the FR to 1/2 the inflight packets). - */ -#define SCTP_IGNORE_CWND_ON_FR 1 -/* default max I can burst out after a fast retransmit */ -#define SCTP_DEF_MAX_BURST 4 - -/* Packet transmit states in the sent - * field in the SCTP_transmitOnQueue struct - */ -#define SCTP_DATAGRAM_UNSENT 0 -#define SCTP_DATAGRAM_SENT 1 -#define SCTP_DATAGRAM_RESEND1 2 /* not used */ -#define SCTP_DATAGRAM_RESEND2 3 /* not used */ -#define SCTP_DATAGRAM_RESEND3 4 /* not used */ -#define SCTP_DATAGRAM_RESEND 5 -#define SCTP_DATAGRAM_ACKED 10010 -#define SCTP_DATAGRAM_INBOUND 10011 -#define SCTP_READY_TO_TRANSMIT 10012 -#define SCTP_DATAGRAM_MARKED 20010 - -#define MAX_FSID 64 /* debug 5 ints used for cc dynamic tracking */ - -/* The valid defines for all message - * types know to SCTP. 0 is reserved - */ -#define SCTP_MSGTYPE_MASK 0xff - -#define SCTP_DATA 0x00 -#define SCTP_INITIATION 0x01 -#define SCTP_INITIATION_ACK 0x02 -#define SCTP_SELECTIVE_ACK 0x03 -#define SCTP_HEARTBEAT_REQUEST 0x04 -#define SCTP_HEARTBEAT_ACK 0x05 -#define SCTP_ABORT_ASSOCIATION 0x06 -#define SCTP_SHUTDOWN 0x07 -#define SCTP_SHUTDOWN_ACK 0x08 -#define SCTP_OPERATION_ERR 0x09 -#define SCTP_COOKIE_ECHO 0x0a -#define SCTP_COOKIE_ACK 0x0b -#define SCTP_ECN_ECHO 0x0c -#define SCTP_ECN_CWR 0x0d -#define SCTP_SHUTDOWN_COMPLETE 0x0e -#define SCTP_FORWARD_CUM_TSN 0xc0 -#define SCTP_RELIABLE_CNTL 0xc1 -#define SCTP_RELIABLE_CNTL_ACK 0xc2 - -/* ABORT and SHUTDOWN COMPLETE FLAG */ -#define SCTP_HAD_NO_TCB 0x01 - -/* Data Chuck Specific Flags */ -#define SCTP_DATA_FRAG_MASK 0x03 -#define SCTP_DATA_MIDDLE_FRAG 0x00 -#define SCTP_DATA_LAST_FRAG 0x01 -#define SCTP_DATA_FIRST_FRAG 0x02 -#define SCTP_DATA_NOT_FRAG 0x03 -#define SCTP_DATA_UNORDERED 0x04 - -#define SCTP_CRC_ENABLE_BIT 0x01 /* lower bit of reserved */ - -#define isSCTPControl(a) (a->chunkID != SCTP_DATA) -#define isSCTPData(a) (a->chunkID == SCTP_DATA) - -/* sctp parameter types for init/init-ack */ - -#define SCTP_IPV4_PARAM_TYPE 0x0005 -#define SCTP_IPV6_PARAM_TYPE 0x0006 -#define SCTP_RESPONDER_COOKIE 0x0007 -#define SCTP_UNRECOG_PARAM 0x0008 -#define SCTP_COOKIE_PRESERVE 0x0009 -#define SCTP_HOSTNAME_VIA_DNS 0x000b -#define SCTP_RESTRICT_ADDR_TO 0x000c - -#define SCTP_ECN_I_CAN_DO_ECN 0x8000 -#define SCTP_OPERATION_SUCCEED 0x4001 -#define SCTP_ERROR_NOT_EXECUTED 0x4002 - -#define SCTP_UNRELIABLE_STRM 0xc000 -#define SCTP_ADD_IP_ADDRESS 0xc001 -#define SCTP_DEL_IP_ADDRESS 0xc002 -#define SCTP_STRM_FLOW_LIMIT 0xc003 -#define SCTP_PARTIAL_CSUM 0xc004 -#define SCTP_ERROR_CAUSE_TLV 0xc005 -#define SCTP_MIT_STACK_NAME 0xc006 -#define SCTP_SETADDRESS_PRIMARY 0xc007 - -/* bits for TOS field */ -#define SCTP_ECT_BIT 0x02 -#define SCTP_CE_BIT 0x01 - -/* error codes */ -#define SCTP_OP_ERROR_NO_ERROR 0x0000 -#define SCTP_OP_ERROR_INV_STRM 0x0001 -#define SCTP_OP_ERROR_MISS_PARAM 0x0002 -#define SCTP_OP_ERROR_STALE_COOKIE 0x0003 -#define SCTP_OP_ERROR_NO_RESOURCE 0x0004 -#define SCTP_OP_ERROR_DNS_FAILED 0x0005 -#define SCTP_OP_ERROR_UNK_CHUNK 0x0006 -#define SCTP_OP_ERROR_INV_PARAM 0x0007 -#define SCTP_OP_ERROR_UNK_PARAM 0x0008 -#define SCTP_OP_ERROR_NO_USERD 0x0009 -#define SCTP_OP_ERROR_COOKIE_SHUT 0x000a -#define SCTP_OP_ERROR_DELETE_LAST 0x000b -#define SCTP_OP_ERROR_RESOURCE_SHORT 0x000c - -#define SCTP_MAX_ERROR_CAUSE 12 - -/* empty error causes i.e. nothing but the cause - * are SCTP_OP_ERROR_NO_RESOURCE, SCTP_OP_ERROR_INV_PARAM, - * SCTP_OP_ERROR_COOKIE_SHUT. - */ - -/* parameter for Heart Beat */ -#define HEART_BEAT_PARAM 0x0001 - - - -/* send options for SCTP - */ -#define SCTP_ORDERED_DELIVERY 0x01 -#define SCTP_NON_ORDERED_DELIVERY 0x02 -#define SCTP_DO_CRC16 0x08 -#define SCTP_MY_ADDRESS_ONLY 0x10 - -/* below turns off above */ -#define SCTP_FLEXIBLE_ADDRESS 0x20 -#define SCTP_NO_HEARTBEAT 0x40 - -/* mask to get sticky */ -#define SCTP_STICKY_OPTIONS_MASK 0x0c - -/* MTU discovery flags */ -#define SCTP_DONT_FRAGMENT 0x0100 -#define SCTP_FRAGMENT_OK 0x0200 - - -/* SCTP state defines for internal state machine */ -#define SCTP_STATE_EMPTY 0x0000 -#define SCTP_STATE_INUSE 0x0001 -#define SCTP_STATE_COOKIE_WAIT 0x0002 -#define SCTP_STATE_COOKIE_SENT 0x0004 -#define SCTP_STATE_OPEN 0x0008 -#define SCTP_STATE_SHUTDOWN 0x0010 -#define SCTP_STATE_SHUTDOWN_RECV 0x0020 -#define SCTP_STATE_SHUTDOWN_ACK_SENT 0x0040 -#define SCTP_STATE_SHUTDOWN_PEND 0x0080 -#define SCTP_STATE_MASK 0x007f -/* SCTP reachability state for each address */ -#define SCTP_ADDR_NOT_REACHABLE 1 -#define SCTP_ADDR_REACHABLE 2 -#define SCTP_ADDR_NOHB 4 -#define SCTP_ADDR_BEING_DELETED 8 - -/* How long a cookie lives */ -#define SCTP_DEFAULT_COOKIE_LIFE 60 /* seconds */ - -/* resource limit of streams */ -#define MAX_SCTP_STREAMS 2048 - - -/* guess at how big to make the TSN mapping array */ -#define SCTP_STARTING_MAPARRAY 10000 - -/* Here we define the timer types used - * by the implementation has - * arguments in the set/get timer type calls. - */ -#define SCTP_TIMER_INIT 0 -#define SCTP_TIMER_RECV 1 -#define SCTP_TIMER_SEND 2 -#define SCTP_TIMER_SHUTDOWN 3 -#define SCTP_TIMER_HEARTBEAT 4 -#define SCTP_TIMER_PMTU 5 -/* number of timer types in the base SCTP - * structure used in the set/get and has - * the base default. - */ -#define SCTP_NUM_TMRS 6 - - - -#define SCTP_IPV4_ADDRESS 2 -#define SCTP_IPV6_ADDRESS 4 - -/* timer types */ -#define SctpTimerTypeNone 0 -#define SctpTimerTypeSend 1 -#define SctpTimerTypeInit 2 -#define SctpTimerTypeRecv 3 -#define SctpTimerTypeShutdown 4 -#define SctpTimerTypeHeartbeat 5 -#define SctpTimerTypeCookie 6 -#define SctpTimerTypeNewCookie 7 -#define SctpTimerTypePathMtuRaise 8 -#define SctpTimerTypeShutdownAck 9 -#define SctpTimerTypeRelReq 10 - -/* Here are the timer directives given to the - * user provided function - */ -#define SCTP_TIMER_START 1 -#define SCTP_TIMER_STOP 2 - -/* running flag states in timer structure */ -#define SCTP_TIMER_IDLE 0x0 -#define SCTP_TIMER_EXPIRED 0x1 -#define SCTP_TIMER_RUNNING 0x2 - - -/* number of simultaneous timers running */ -#define SCTP_MAX_NET_TIMERS 6 /* base of where net timers start */ -#define SCTP_NUMBER_TIMERS 12 /* allows up to 6 destinations */ - - -/* Of course we really don't collect stale cookies, being - * folks of decerning taste. However we do count them, if - * we get to many before the association comes up.. we - * give up. Below is the constant that dictates when - * we give it up...this is a implemenation dependant - * treatment. In ours we do not ask for a extension of - * time, but just retry this many times... - */ -#define SCTP_MAX_STALE_COOKIES_I_COLLECT 10 - -/* max number of TSN's dup'd that I will hold */ -#define SCTP_MAX_DUP_TSNS 20 - -/* Here we define the types used when - * setting the retry ammounts. - */ -/* constants for type of set */ -#define SCTP_MAXATTEMPT_INIT 2 -#define SCTP_MAXATTEMPT_SEND 3 - -/* Here we define the default timers and the - * default number of attemts we make for - * each respective side (send/init). - */ - -/* init timer def = 3sec */ -#define SCTP_INIT_SEC 3 -#define SCTP_INIT_NSEC 0 - -/* send timer def = 3 seconds */ -#define SCTP_SEND_SEC 1 -#define SCTP_SEND_NSEC 0 - -/* recv timer def = 200ms (in nsec) */ -#define SCTP_RECV_SEC 0 -#define SCTP_RECV_NSEC 200000000 - -/* 30 seconds + RTO */ -#define SCTP_HB_SEC 30 -#define SCTP_HB_NSEC 0 - - -/* 300 ms */ -#define SCTP_SHUTDOWN_SEC 0 -#define SCTP_SHUTDOWN_NSEC 300000000 - -#define SCTP_RTO_UPPER_BOUND 60000000 /* 60 sec in micro-second's */ -#define SCTP_RTO_UPPER_BOUND_SEC 60 /* for the init timer */ -#define SCTP_RTO_LOWER_BOUND 1000000 /* 1 sec in micro-sec's */ - -#define SCTP_DEF_MAX_INIT 8 -#define SCTP_DEF_MAX_SEND 10 - -#define SCTP_DEF_PMTU_RAISE 600 /* 10 Minutes between raise attempts */ -#define SCTP_DEF_PMTU_MIN 600 - -#define SCTP_MSEC_IN_A_SEC 1000 -#define SCTP_USEC_IN_A_SEC 1000000 -#define SCTP_NSEC_IN_A_SEC 1000000000 - - -/* Events that SCTP will look for, these - * are or'd together to declare what SCTP - * wants. Each select mask/poll list should be - * set for the fd, if the bit is on. - */ -#define SCTP_EVENT_READ 0x000001 -#define SCTP_EVENT_WRITE 0x000002 -#define SCTP_EVENT_EXCEPT 0x000004 - -/* The following constant is a value for this - * particular implemenation. It is quite arbitrary and - * is used to limit how much data will be queued up to - * a sender, waiting for cwnd to be larger than flightSize. - * All implementations will need this protection is some - * way due to buffer size constraints. - */ - -#define SCTP_MAX_OUTSTANDING_DG 10000 - - - -/* This constant (SCTP_MAX_READBUFFER) define - * how big the read/write buffer is - * when we enter the fd event notification - * the buffer is put on the stack, so the bigger - * it is the more stack you chew up, however it - * has got to be big enough to handle the bigest - * message this O/S will send you. In solaris - * with sockets (not TLI) we end up at a value - * of 64k. In TLI we could do partial reads to - * get it all in with less hassel.. but we - * write to sockets for generality. - */ -#define SCTP_MAX_READBUFFER 65536 -#define SCTP_ADDRMAX 60 - -/* amount peer is obligated to have in rwnd or - * I will abort - */ -#define SCTP_MIN_RWND 1500 - -#define SCTP_WINDOW_MIN 1500 /* smallest rwnd can be */ -#define SCTP_WINDOW_MAX 1048576 /* biggest I can grow rwnd to - * My playing around suggests a - * value greater than 64k does not - * do much, I guess via the kernel - * limitations on the stream/socket. - */ - -#define SCTP_MAX_BUNDLE_UP 256 /* max number of chunks I can bundle */ - -/* I can handle a 1meg re-assembly */ -#define SCTP_DEFAULT_MAXMSGREASM 1048576 - - -#define SCTP_DEFAULT_MAXWINDOW 32768 /* default rwnd size */ -#define SCTP_DEFAULT_MAXSEGMENT 1500 /* MTU size, this is the default - * to which we set the smallestMTU - * size to. This governs what is the - * largest size we will use, of course - * PMTU will raise this up to - * the largest interface MTU or the - * ceiling below if there is no - * SIOCGIFMTU. - */ -#ifdef LYNX -#define DEFAULT_MTU_CEILING 1500 /* Since Lynx O/S is brain dead - * in the way it handles the - * raw IP socket, insisting - * on makeing its own IP - * header, we limit the growth - * to that of the e-net size - */ -#else -#define DEFAULT_MTU_CEILING 2048 /* If no SIOCGIFMTU, highest value - * to raise the PMTU to, i.e. - * don't try to raise above this - * value. Tune this per your - * largest MTU interface if your - * system does not support the - * SIOCGIFMTU ioctl. - */ -#endif -#define SCTP_DEFAULT_MINSEGMENT 512 /* MTU size ... if no mtu disc */ -#define SCTP_HOW_MANY_SECRETS 2 /* how many secrets I keep */ -/* This is how long a secret lives, NOT how long a cookie lives */ -#define SCTP_HOW_LONG_COOKIE_LIVE 3600 /* how many seconds the current secret will live */ - -#define SCTP_NUMBER_OF_SECRETS 8 /* or 8 * 4 = 32 octets */ -#define SCTP_SECRET_SIZE 32 /* number of octets in a 256 bits */ - -#ifdef USE_MD5 -#define SCTP_SIGNATURE_SIZE 16 /* size of a MD5 signature */ -#else -#define SCTP_SIGNATURE_SIZE 20 /* size of a SLA-1 signature */ -#endif -/* Here are the notification constants - * that the code and upper layer will get - */ - -/* association is up */ -#define SCTP_NOTIFY_ASSOC_UP 1 - -/* association is down */ -#define SCTP_NOTIFY_ASSOC_DOWN 2 - -/* interface on a association is down - * and out of consideration for selection. - */ -#define SCTP_NOTIFY_INTF_DOWN 3 - -/* interface on a association is up - * and now back in consideration for selection. - */ -#define SCTP_NOTIFY_INTF_UP 4 - -/* The given datagram cannot be delivered - * to the peer, this will probably be followed - * by a SCTP_NOTFIY_ASSOC_DOWN. - */ -#define SCTP_NOTIFY_DG_FAIL 5 - -/* Sent dg on non-open stream extreme code error! - */ -#define SCTP_NOTIFY_STRDATA_ERR 6 - -#define SCTP_NOTIFY_ASSOC_ABORTED 7 - -/* The stream ones are not used yet, but could - * be when a association opens. - */ -#define SCTP_NOTIFY_PEER_OPENED_STR 8 -#define SCTP_NOTIFY_STREAM_OPENED_OK 9 - -/* association sees a restart event */ -#define SCTP_NOTIFY_ASSOC_RESTART 10 - -/* a user requested HB returned */ -#define SCTP_NOTIFY_HB_RESP 11 - -/* a result from a REL-REQ */ -#define SCTP_NOTIFY_RELREQ_RESULT_OK 12 -#define SCTP_NOTIFY_RELREQ_RESULT_FAILED 13 - -/* clock variance is 10ms or 10,000 us's */ -#define SCTP_CLOCK_GRAINULARITY 10000 - -#define IP_HDR_SIZE 40 /* we use the size of a IP6 header here - * this detracts a small amount for ipv4 - * but it simplifies the ipv6 addition - */ - -#define SCTP_NUM_FDS 3 - -/* raw IP filedescriptor */ -#define SCTP_FD_IP 0 -/* raw ICMP filedescriptor */ -#define SCTP_FD_ICMP 1 -/* processes contact me for requests here */ -#define SCTP_REQUEST 2 - - -#define SCTP_DEAMON_PORT 9899 - -/* Deamon registration message types/responses */ -#define DEAMON_REGISTER 0x01 -#define DEAMON_REGISTER_ACK 0x02 -#define DEAMON_DEREGISTER 0x03 -#define DEAMON_DEREGISTER_ACK 0x04 -#define DEAMON_CHECKADDR_LIST 0x05 - -#define DEAMON_MAGIC_VER_LEN 0xff - -/* max times I will attempt to send a message to deamon */ -#define SCTP_MAX_ATTEMPTS_AT_DEAMON 5 -#define SCTP_TIMEOUT_IN_POLL_FOR_DEAMON 1500 /* 1.5 seconds */ - -/* modular comparison */ -/* True if a > b (mod = M) */ -#define compare_with_wrap(a, b, M) ((a > b) && ((a - b) < (M >> 1))) || \ - ((b > a) && ((b - a) > (M >> 1))) - -#ifndef TIMEVAL_TO_TIMESPEC -#define TIMEVAL_TO_TIMESPEC(tv, ts) \ -{ \ - (ts)->tv_sec = (tv)->tv_sec; \ - (ts)->tv_nsec = (tv)->tv_usec * 1000; \ -} -#endif - -/* pegs */ -#define SCTP_NUMBER_OF_PEGS 21 -/* peg index's */ -#define SCTP_PEG_SACKS_SEEN 0 -#define SCTP_PEG_SACKS_SENT 1 -#define SCTP_PEG_TSNS_SENT 2 -#define SCTP_PEG_TSNS_RCVD 3 -#define SCTP_DATAGRAMS_SENT 4 -#define SCTP_DATAGRAMS_RCVD 5 -#define SCTP_RETRANTSN_SENT 6 -#define SCTP_DUPTSN_RECVD 7 -#define SCTP_HBR_RECV 8 -#define SCTP_HBA_RECV 9 -#define SCTP_HB_SENT 10 -#define SCTP_DATA_DG_SENT 11 -#define SCTP_DATA_DG_RECV 12 -#define SCTP_TMIT_TIMER 13 -#define SCTP_RECV_TIMER 14 -#define SCTP_HB_TIMER 15 -#define SCTP_FAST_RETRAN 16 -#define SCTP_PEG_TSNS_READ 17 -#define SCTP_NONE_LFT_TO 18 -#define SCTP_NONE_LFT_RWND 19 -#define SCTP_NONE_LFT_CWND 20 - - - -#endif - diff --git a/contrib/tcpdump/sctpHeader.h b/contrib/tcpdump/sctpHeader.h deleted file mode 100644 index 3b26094c1b82d..0000000000000 --- a/contrib/tcpdump/sctpHeader.h +++ /dev/null @@ -1,323 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/sctpHeader.h,v 1.6 2002/12/11 07:14:11 guy Exp $ (LBL) */ - -/* SCTP reference Implementation Copyright (C) 1999 Cisco And Motorola - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 4. Neither the name of Cisco nor of Motorola may be used - * to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the SCTP reference Implementation - * - * - * Please send any bug reports or fixes you make to one of the following email - * addresses: - * - * rstewar1@email.mot.com - * kmorneau@cisco.com - * qxie1@email.mot.com - * - * Any bugs reported given to us we will try to fix... any fixes shared will - * be incorperated into the next SCTP release. - */ - - -#ifndef __sctpHeader_h__ -#define __sctpHeader_h__ - -#include <sctpConstants.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* the sctp common header */ - -#ifdef TRU64 - #define _64BITS 1 -#endif - -struct sctpHeader{ - u_int16_t source; - u_int16_t destination; - u_int32_t verificationTag; - u_int32_t adler32; -}; - -/* various descriptor parsers */ - -struct sctpChunkDesc{ - u_int8_t chunkID; - u_int8_t chunkFlg; - u_int16_t chunkLength; -}; - -struct sctpParamDesc{ - u_int16_t paramType; - u_int16_t paramLength; -}; - - -struct sctpRelChunkDesc{ - struct sctpChunkDesc chk; - u_int32_t serialNumber; -}; - -struct sctpVendorSpecificParam { - struct sctpParamDesc p; /* type must be 0xfffe */ - u_int32_t vendorId; /* vendor ID from RFC 1700 */ - u_int16_t vendorSpecificType; - u_int16_t vendorSpecificLen; -}; - - -/* Structures for the control parts */ - - - -/* Sctp association init request/ack */ - -/* this is used for init ack, too */ -struct sctpInitiation{ - u_int32_t initTag; /* tag of mine */ - u_int32_t rcvWindowCredit; /* rwnd */ - u_int16_t NumPreopenStreams; /* OS */ - u_int16_t MaxInboundStreams; /* MIS */ - u_int32_t initialTSN; - /* optional param's follow in sctpParamDesc form */ -}; - -struct sctpV4IpAddress{ - struct sctpParamDesc p; /* type is set to SCTP_IPV4_PARAM_TYPE, len=10 */ - u_int32_t ipAddress; -}; - - -struct sctpV6IpAddress{ - struct sctpParamDesc p; /* type is set to SCTP_IPV6_PARAM_TYPE, len=22 */ - u_int8_t ipAddress[16]; -}; - -struct sctpDNSName{ - struct sctpParamDesc param; - u_int8_t name[1]; -}; - - -struct sctpCookiePreserve{ - struct sctpParamDesc p; /* type is set to SCTP_COOKIE_PRESERVE, len=8 */ - u_int32_t extraTime; -}; - - -struct sctpTimeStamp{ - u_int32_t ts_sec; - u_int32_t ts_usec; -}; - -/* wire structure of my cookie */ -struct cookieMessage{ - u_int32_t TieTag_curTag; /* copied from assoc if present */ - u_int32_t TieTag_hisTag; /* copied from assoc if present */ - int32_t cookieLife; /* life I will award this cookie */ - struct sctpTimeStamp timeEnteringState; /* the time I built cookie */ - struct sctpInitiation initAckISent; /* the INIT-ACK that I sent to my peer */ - u_int32_t addressWhereISent[4]; /* I make this 4 ints so I get 128bits for future */ - int32_t addrtype; /* address type */ - u_int16_t locScope; /* V6 local scope flag */ - u_int16_t siteScope; /* V6 site scope flag */ - /* at the end is tacked on the INIT chunk sent in - * its entirety and of course our - * signature. - */ -}; - - -/* this guy is for use when - * I have a initiate message gloming the - * things together. - - */ -struct sctpUnifiedInit{ - struct sctpChunkDesc uh; - struct sctpInitiation initm; -}; - -struct sctpSendableInit{ - struct sctpHeader mh; - struct sctpUnifiedInit msg; -}; - - -/* Selective Acknowledgement - * has the following structure with - * a optional ammount of trailing int's - * on the last part (based on the numberOfDesc - * field). - */ - -struct sctpSelectiveAck{ - u_int32_t highestConseqTSN; - u_int32_t updatedRwnd; - u_int16_t numberOfdesc; - u_int16_t numDupTsns; -}; - -struct sctpSelectiveFrag{ - u_int16_t fragmentStart; - u_int16_t fragmentEnd; -}; - - -struct sctpUnifiedSack{ - struct sctpChunkDesc uh; - struct sctpSelectiveAck sack; -}; - -/* for both RTT request/response the - * following is sent - */ - -struct sctpHBrequest { - u_int32_t time_value_1; - u_int32_t time_value_2; -}; - -/* here is what I read and respond with to. */ -struct sctpHBunified{ - struct sctpChunkDesc hdr; - struct sctpParamDesc hb; -}; - - -/* here is what I send */ -struct sctpHBsender{ - struct sctpChunkDesc hdr; - struct sctpParamDesc hb; - struct sctpHBrequest rtt; - int8_t addrFmt[SCTP_ADDRMAX]; - u_int16_t userreq; -}; - - - -/* for the abort and shutdown ACK - * we must carry the init tag in the common header. Just the - * common header is all that is needed with a chunk descriptor. - */ -struct sctpUnifiedAbort{ - struct sctpChunkDesc uh; -}; - -struct sctpUnifiedAbortLight{ - struct sctpHeader mh; - struct sctpChunkDesc uh; -}; - -struct sctpUnifiedAbortHeavy{ - struct sctpHeader mh; - struct sctpChunkDesc uh; - u_int16_t causeCode; - u_int16_t causeLen; -}; - -/* For the graceful shutdown we must carry - * the tag (in common header) and the highest consequitive acking value - */ -struct sctpShutdown { - u_int32_t TSN_Seen; -}; - -struct sctpUnifiedShutdown{ - struct sctpChunkDesc uh; - struct sctpShutdown shut; -}; - -/* in the unified message we add the trailing - * stream id since it is the only message - * that is defined as a operation error. - */ -struct sctpOpErrorCause{ - u_int16_t cause; - u_int16_t causeLen; -}; - -struct sctpUnifiedOpError{ - struct sctpChunkDesc uh; - struct sctpOpErrorCause c; -}; - -struct sctpUnifiedStreamError{ - struct sctpHeader mh; - struct sctpChunkDesc uh; - struct sctpOpErrorCause c; - u_int16_t strmNum; - u_int16_t reserved; -}; - -struct staleCookieMsg{ - struct sctpHeader mh; - struct sctpChunkDesc uh; - struct sctpOpErrorCause c; - u_int32_t moretime; -}; - -/* the following is used in all sends - * where nothing is needed except the - * chunk/type i.e. shutdownAck Abort */ - -struct sctpUnifiedSingleMsg{ - struct sctpHeader mh; - struct sctpChunkDesc uh; -}; - -struct sctpDataPart{ - u_int32_t TSN; - u_int16_t streamId; - u_int16_t sequence; - u_int32_t payloadtype; -}; - -struct sctpUnifiedDatagram{ - struct sctpChunkDesc uh; - struct sctpDataPart dp; -}; - -struct sctpECN_echo{ - struct sctpChunkDesc uh; - u_int32_t Lowest_TSN; -}; - - -struct sctpCWR{ - struct sctpChunkDesc uh; - u_int32_t TSN_reduced_at; -}; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/contrib/tcpdump/send-ack.awk b/contrib/tcpdump/send-ack.awk deleted file mode 100644 index f55b7c2f6d13c..0000000000000 --- a/contrib/tcpdump/send-ack.awk +++ /dev/null @@ -1,68 +0,0 @@ -BEGIN { - # we need the number of bytes in a packet to do the output - # in packet numbers rather than byte numbers. - if (packetsize <= 0) - packetsize = 512 - expectNext = 1 - lastwin = -1 - } - { - # convert tcp trace to send/ack form. - n = split ($1,t,":") - tim = t[1]*3600 + t[2]*60 + t[3] - if (NR <= 1) { - tzero = tim - ltim = tim - OFS = "\t" - } - if ($6 != "ack") { - # we have a data packet record: - # ignore guys with syn, fin or reset 'cause we - # can't handle their sequence numbers. Try to - # detect and add a flag character for 'anomalies': - # * -> re-sent packet - # - -> packet after hole (missing packet(s)) - # # -> odd size packet - if ($5 !~ /[SFR]/) { - i = index($6,":") - j = index($6,"(") - strtSeq = substr($6,1,i-1) - endSeq = substr($6,i+1,j-i-1) - len = endSeq - strtSeq - id = endSeq - if (! timeOf[id]) - timeOf[id] = tim - if (endSeq - expectNext < 0) - flag = "*" - else { - if (strtSeq - expectNext > 0) - flag = "-" - else if (len != packetsize) - flag = "#" - else - flag = " " - expectNext = endSeq - } - printf "%7.2f\t%7.2f\t%s send %s %d", tim-tzero, tim-ltim,\ - flag, $5, strtSeq - if (++timesSent[id] > 1) - printf " (%.2f) [%d]", tim - timeOf[id], timesSent[id] - if (len != packetsize) - printf " <%d>", len - } - } else { - id = $7 - - printf "%7.2f\t%7.2f\t%s ack %s %d", tim-tzero, tim-ltim,\ - flag, $5, id - if ($9 != lastwin) { - printf " win %d", $9 - lastwin = $9 - } - printf " (%.2f)", tim - timeOf[id] - if (++timesAcked[id] > 1) - printf " [%d]", timesAcked[id] - } - printf "\n" - ltim = tim - } diff --git a/contrib/tcpdump/setsignal.c b/contrib/tcpdump/setsignal.c deleted file mode 100644 index dbb8678182fbd..0000000000000 --- a/contrib/tcpdump/setsignal.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/setsignal.c,v 1.11 2003/11/16 09:36:42 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <signal.h> -#ifdef HAVE_SIGACTION -#include <string.h> -#endif - -#ifdef HAVE_OS_PROTO_H -#include "os-proto.h" -#endif - -#include "setsignal.h" - -/* - * An OS-independent signal() with, whenever possible, partial BSD - * semantics, i.e. the signal handler is restored following service - * of the signal, but system calls are *not* restarted, so that if - * "pcap_breakloop()" is called in a signal handler in a live capture, - * the read/recvfrom/whatever in the live capture doesn't get restarted, - * it returns -1 and sets "errno" to EINTR, so we can break out of the - * live capture loop. - * - * We use "sigaction()" if available. We don't specify that the signal - * should restart system calls, so that should always do what we want. - * - * Otherwise, if "sigset()" is available, it probably has BSD semantics - * while "signal()" has traditional semantics, so we use "sigset()"; it - * might cause system calls to be restarted for the signal, however. - * I don't know whether, in any systems where it did cause system calls to - * be restarted, there was a way to ask it not to do so; there may no - * longer be any interesting systems without "sigaction()", however, - * and, if there are, they might have "sigvec()" with SV_INTERRUPT - * (which I think first appeared in 4.3BSD). - * - * Otherwise, we use "signal()" - which means we might get traditional - * semantics, wherein system calls don't get restarted *but* the - * signal handler is reset to SIG_DFL and the signal is not blocked, - * so that a subsequent signal would kill the process immediately. - * - * Did I mention that signals suck? At least in POSIX-compliant systems - * they suck far less, as those systems have "sigaction()". - */ -RETSIGTYPE -(*setsignal (int sig, RETSIGTYPE (*func)(int)))(int) -{ -#ifdef HAVE_SIGACTION - struct sigaction old, new; - - memset(&new, 0, sizeof(new)); - new.sa_handler = func; - if (sigaction(sig, &new, &old) < 0) - return (SIG_ERR); - return (old.sa_handler); - -#else -#ifdef HAVE_SIGSET - return (sigset(sig, func)); -#else - return (signal(sig, func)); -#endif -#endif -} - diff --git a/contrib/tcpdump/setsignal.h b/contrib/tcpdump/setsignal.h deleted file mode 100644 index a7fb2a7481bd5..0000000000000 --- a/contrib/tcpdump/setsignal.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - * - * @(#) $Header: /tcpdump/master/tcpdump/setsignal.h,v 1.2.1.1 1999/10/07 23:47:13 mcr Exp $ (LBL) - */ -#ifndef setsignal_h -#define setsignal_h - -RETSIGTYPE (*setsignal(int, RETSIGTYPE (*)(int)))(int); -#endif diff --git a/contrib/tcpdump/slcompress.h b/contrib/tcpdump/slcompress.h deleted file mode 100644 index d8a596cf52903..0000000000000 --- a/contrib/tcpdump/slcompress.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Definitions for tcp compression routines. - * - * @(#) $Header: /tcpdump/master/tcpdump/slcompress.h,v 1.2 2000/10/09 02:03:44 guy Exp $ (LBL) - * - * Copyright (c) 1989, 1990, 1992, 1993 Regents of the University of - * California. All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the University of California, Berkeley. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * Van Jacobson (van@ee.lbl.gov), Dec 31, 1989: - * - Initial distribution. - */ - -/* - * Compressed packet format: - * - * The first octet contains the packet type (top 3 bits), TCP - * 'push' bit, and flags that indicate which of the 4 TCP sequence - * numbers have changed (bottom 5 bits). The next octet is a - * conversation number that associates a saved IP/TCP header with - * the compressed packet. The next two octets are the TCP checksum - * from the original datagram. The next 0 to 15 octets are - * sequence number changes, one change per bit set in the header - * (there may be no changes and there are two special cases where - * the receiver implicitly knows what changed -- see below). - * - * There are 5 numbers which can change (they are always inserted - * in the following order): TCP urgent pointer, window, - * acknowlegement, sequence number and IP ID. (The urgent pointer - * is different from the others in that its value is sent, not the - * change in value.) Since typical use of SLIP links is biased - * toward small packets (see comments on MTU/MSS below), changes - * use a variable length coding with one octet for numbers in the - * range 1 - 255 and 3 octets (0, MSB, LSB) for numbers in the - * range 256 - 65535 or 0. (If the change in sequence number or - * ack is more than 65535, an uncompressed packet is sent.) - */ - -/* - * Packet types (must not conflict with IP protocol version) - * - * The top nibble of the first octet is the packet type. There are - * three possible types: IP (not proto TCP or tcp with one of the - * control flags set); uncompressed TCP (a normal IP/TCP packet but - * with the 8-bit protocol field replaced by an 8-bit connection id -- - * this type of packet syncs the sender & receiver); and compressed - * TCP (described above). - * - * LSB of 4-bit field is TCP "PUSH" bit (a worthless anachronism) and - * is logically part of the 4-bit "changes" field that follows. Top - * three bits are actual packet type. For backward compatibility - * and in the interest of conserving bits, numbers are chosen so the - * IP protocol version number (4) which normally appears in this nibble - * means "IP packet". - */ - -/* packet types */ -#define TYPE_IP 0x40 -#define TYPE_UNCOMPRESSED_TCP 0x70 -#define TYPE_COMPRESSED_TCP 0x80 -#define TYPE_ERROR 0x00 - -/* Bits in first octet of compressed packet */ -#define NEW_C 0x40 /* flag bits for what changed in a packet */ -#define NEW_I 0x20 -#define NEW_S 0x08 -#define NEW_A 0x04 -#define NEW_W 0x02 -#define NEW_U 0x01 - -/* reserved, special-case values of above */ -#define SPECIAL_I (NEW_S|NEW_W|NEW_U) /* echoed interactive traffic */ -#define SPECIAL_D (NEW_S|NEW_A|NEW_W|NEW_U) /* unidirectional data */ -#define SPECIALS_MASK (NEW_S|NEW_A|NEW_W|NEW_U) - -#define TCP_PUSH_BIT 0x10 diff --git a/contrib/tcpdump/slip.h b/contrib/tcpdump/slip.h deleted file mode 100644 index e64f3015ac3e1..0000000000000 --- a/contrib/tcpdump/slip.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Definitions that user level programs might need to know to interact - * with serial line IP (slip) lines. - * - * @(#) $Header: /tcpdump/master/tcpdump/slip.h,v 1.1 2000/10/09 01:53:21 guy Exp $ - * - * Copyright (c) 1990 Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the University of California, Berkeley. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -/* - * definitions of the pseudo- link-level header attached to slip - * packets grabbed by the packet filter (bpf) traffic monitor. - */ -#define SLIP_HDRLEN 16 - -#define SLX_DIR 0 -#define SLX_CHDR 1 -#define CHDR_LEN 15 - -#define SLIPDIR_IN 0 -#define SLIPDIR_OUT 1 diff --git a/contrib/tcpdump/sll.h b/contrib/tcpdump/sll.h deleted file mode 100644 index 693f05efa4963..0000000000000 --- a/contrib/tcpdump/sll.h +++ /dev/null @@ -1,127 +0,0 @@ -/*- - * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from the Stanford/CMU enet packet filter, - * (net/enet.c) distributed as part of 4.3BSD, and code contributed - * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence - * Berkeley Laboratory. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#) $Header: /tcpdump/master/tcpdump/sll.h,v 1.7 2002/12/11 07:14:11 guy Exp $ (LBL) - */ - -/* - * For captures on Linux cooked sockets, we construct a fake header - * that includes: - * - * a 2-byte "packet type" which is one of: - * - * LINUX_SLL_HOST packet was sent to us - * LINUX_SLL_BROADCAST packet was broadcast - * LINUX_SLL_MULTICAST packet was multicast - * LINUX_SLL_OTHERHOST packet was sent to somebody else - * LINUX_SLL_OUTGOING packet was sent *by* us; - * - * a 2-byte Ethernet protocol field; - * - * a 2-byte link-layer type; - * - * a 2-byte link-layer address length; - * - * an 8-byte source link-layer address, whose actual length is - * specified by the previous value. - * - * All fields except for the link-layer address are in network byte order. - * - * DO NOT change the layout of this structure, or change any of the - * LINUX_SLL_ values below. If you must change the link-layer header - * for a "cooked" Linux capture, introduce a new DLT_ type (ask - * "tcpdump-workers@tcpdump.org" for one, so that you don't give it a - * value that collides with a value already being used), and use the - * new header in captures of that type, so that programs that can - * handle DLT_LINUX_SLL captures will continue to handle them correctly - * without any change, and so that capture files with different headers - * can be told apart and programs that read them can dissect the - * packets in them. - * - * This structure, and the #defines below, must be the same in the - * libpcap and tcpdump versions of "sll.h". - */ - -/* - * A DLT_LINUX_SLL fake link-layer header. - */ -#define SLL_HDR_LEN 16 /* total header length */ -#define SLL_ADDRLEN 8 /* length of address field */ - -struct sll_header { - u_int16_t sll_pkttype; /* packet type */ - u_int16_t sll_hatype; /* link-layer address type */ - u_int16_t sll_halen; /* link-layer address length */ - u_int8_t sll_addr[SLL_ADDRLEN]; /* link-layer address */ - u_int16_t sll_protocol; /* protocol */ -}; - -/* - * The LINUX_SLL_ values for "sll_pkttype"; these correspond to the - * PACKET_ values on Linux, but are defined here so that they're - * available even on systems other than Linux, and so that they - * don't change even if the PACKET_ values change. - */ -#define LINUX_SLL_HOST 0 -#define LINUX_SLL_BROADCAST 1 -#define LINUX_SLL_MULTICAST 2 -#define LINUX_SLL_OTHERHOST 3 -#define LINUX_SLL_OUTGOING 4 - -/* - * The LINUX_SLL_ values for "sll_protocol"; these correspond to the - * ETH_P_ values on Linux, but are defined here so that they're - * available even on systems other than Linux. We assume, for now, - * that the ETH_P_ values won't change in Linux; if they do, then: - * - * if we don't translate them in "pcap-linux.c", capture files - * won't necessarily be readable if captured on a system that - * defines ETH_P_ values that don't match these values; - * - * if we do translate them in "pcap-linux.c", that makes life - * unpleasant for the BPF code generator, as the values you test - * for in the kernel aren't the values that you test for when - * reading a capture file, so the fixup code run on BPF programs - * handed to the kernel ends up having to do more work. - * - * Add other values here as necessary, for handling packet types that - * might show up on non-Ethernet, non-802.x networks. (Not all the ones - * in the Linux "if_ether.h" will, I suspect, actually show up in - * captures.) - */ -#define LINUX_SLL_P_802_3 0x0001 /* Novell 802.3 frames without 802.2 LLC header */ -#define LINUX_SLL_P_802_2 0x0004 /* 802.2 frames (not D/I/X Ethernet) */ diff --git a/contrib/tcpdump/smb.h b/contrib/tcpdump/smb.h deleted file mode 100644 index bb05227f1d52d..0000000000000 --- a/contrib/tcpdump/smb.h +++ /dev/null @@ -1,122 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/smb.h,v 1.9 2004/12/28 22:29:44 guy Exp $ (LBL) */ -/* - * Copyright (C) Andrew Tridgell 1995-1999 - * - * This software may be distributed either under the terms of the - * BSD-style license that accompanies tcpdump or the GNU GPL version 2 - * or later - */ - -#define SMBMIN(a,b) ((a)<(b)?(a):(b)) - -/* the complete */ -#define SMBmkdir 0x00 /* create directory */ -#define SMBrmdir 0x01 /* delete directory */ -#define SMBopen 0x02 /* open file */ -#define SMBcreate 0x03 /* create file */ -#define SMBclose 0x04 /* close file */ -#define SMBflush 0x05 /* flush file */ -#define SMBunlink 0x06 /* delete file */ -#define SMBmv 0x07 /* rename file */ -#define SMBgetatr 0x08 /* get file attributes */ -#define SMBsetatr 0x09 /* set file attributes */ -#define SMBread 0x0A /* read from file */ -#define SMBwrite 0x0B /* write to file */ -#define SMBlock 0x0C /* lock byte range */ -#define SMBunlock 0x0D /* unlock byte range */ -#define SMBctemp 0x0E /* create temporary file */ -#define SMBmknew 0x0F /* make new file */ -#define SMBchkpth 0x10 /* check directory path */ -#define SMBexit 0x11 /* process exit */ -#define SMBlseek 0x12 /* seek */ -#define SMBtcon 0x70 /* tree connect */ -#define SMBtconX 0x75 /* tree connect and X*/ -#define SMBtdis 0x71 /* tree disconnect */ -#define SMBnegprot 0x72 /* negotiate protocol */ -#define SMBdskattr 0x80 /* get disk attributes */ -#define SMBsearch 0x81 /* search directory */ -#define SMBsplopen 0xC0 /* open print spool file */ -#define SMBsplwr 0xC1 /* write to print spool file */ -#define SMBsplclose 0xC2 /* close print spool file */ -#define SMBsplretq 0xC3 /* return print queue */ -#define SMBsends 0xD0 /* send single block message */ -#define SMBsendb 0xD1 /* send broadcast message */ -#define SMBfwdname 0xD2 /* forward user name */ -#define SMBcancelf 0xD3 /* cancel forward */ -#define SMBgetmac 0xD4 /* get machine name */ -#define SMBsendstrt 0xD5 /* send start of multi-block message */ -#define SMBsendend 0xD6 /* send end of multi-block message */ -#define SMBsendtxt 0xD7 /* send text of multi-block message */ - -/* Core+ protocol */ -#define SMBlockread 0x13 /* Lock a range and read */ -#define SMBwriteunlock 0x14 /* Unlock a range then write */ -#define SMBreadbraw 0x1a /* read a block of data with no smb header */ -#define SMBwritebraw 0x1d /* write a block of data with no smb header */ -#define SMBwritec 0x20 /* secondary write request */ -#define SMBwriteclose 0x2c /* write a file then close it */ - -/* dos extended protocol */ -#define SMBreadBraw 0x1A /* read block raw */ -#define SMBreadBmpx 0x1B /* read block multiplexed */ -#define SMBreadBs 0x1C /* read block (secondary response) */ -#define SMBwriteBraw 0x1D /* write block raw */ -#define SMBwriteBmpx 0x1E /* write block multiplexed */ -#define SMBwriteBs 0x1F /* write block (secondary request) */ -#define SMBwriteC 0x20 /* write complete response */ -#define SMBsetattrE 0x22 /* set file attributes expanded */ -#define SMBgetattrE 0x23 /* get file attributes expanded */ -#define SMBlockingX 0x24 /* lock/unlock byte ranges and X */ -#define SMBtrans 0x25 /* transaction - name, bytes in/out */ -#define SMBtranss 0x26 /* transaction (secondary request/response) */ -#define SMBioctl 0x27 /* IOCTL */ -#define SMBioctls 0x28 /* IOCTL (secondary request/response) */ -#define SMBcopy 0x29 /* copy */ -#define SMBmove 0x2A /* move */ -#define SMBecho 0x2B /* echo */ -#define SMBopenX 0x2D /* open and X */ -#define SMBreadX 0x2E /* read and X */ -#define SMBwriteX 0x2F /* write and X */ -#define SMBsesssetupX 0x73 /* Session Set Up & X (including User Logon) */ -#define SMBffirst 0x82 /* find first */ -#define SMBfunique 0x83 /* find unique */ -#define SMBfclose 0x84 /* find close */ -#define SMBinvalid 0xFE /* invalid command */ - -/* Extended 2.0 protocol */ -#define SMBtrans2 0x32 /* TRANS2 protocol set */ -#define SMBtranss2 0x33 /* TRANS2 protocol set, secondary command */ -#define SMBfindclose 0x34 /* Terminate a TRANSACT2_FINDFIRST */ -#define SMBfindnclose 0x35 /* Terminate a TRANSACT2_FINDNOTIFYFIRST */ -#define SMBulogoffX 0x74 /* user logoff */ - -/* NT SMB extensions. */ -#define SMBnttrans 0xA0 /* NT transact */ -#define SMBnttranss 0xA1 /* NT transact secondary */ -#define SMBntcreateX 0xA2 /* NT create and X */ -#define SMBntcancel 0xA4 /* NT cancel */ - -/* pathworks special */ -#define pSETDIR '\377' - - -/* these are the TRANS2 sub commands */ -#define TRANSACT2_OPEN 0 -#define TRANSACT2_FINDFIRST 1 -#define TRANSACT2_FINDNEXT 2 -#define TRANSACT2_QFSINFO 3 -#define TRANSACT2_SETFSINFO 4 -#define TRANSACT2_QPATHINFO 5 -#define TRANSACT2_SETPATHINFO 6 -#define TRANSACT2_QFILEINFO 7 -#define TRANSACT2_SETFILEINFO 8 -#define TRANSACT2_FSCTL 9 -#define TRANSACT2_IOCTL 10 -#define TRANSACT2_FINDNOTIFYFIRST 11 -#define TRANSACT2_FINDNOTIFYNEXT 12 -#define TRANSACT2_MKDIR 13 - -#define PTR_DIFF(p1, p2) ((size_t)(((char *)(p1)) - (char *)(p2))) - -/* some protos */ -const u_char *smb_fdata(const u_char *, const char *, const u_char *, int); diff --git a/contrib/tcpdump/smbutil.c b/contrib/tcpdump/smbutil.c deleted file mode 100644 index b3d4b5f7b2147..0000000000000 --- a/contrib/tcpdump/smbutil.c +++ /dev/null @@ -1,1880 +0,0 @@ -/* - * Copyright (C) Andrew Tridgell 1995-1999 - * - * This software may be distributed either under the terms of the - * BSD-style license that accompanies tcpdump or the GNU GPL version 2 - * or later - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/smbutil.c,v 1.36.2.1 2005/04/21 04:09:58 guy Exp $"; -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "interface.h" -#include "extract.h" -#include "smb.h" - -static u_int32_t stringlen; -extern const u_char *startbuf; - -/* - * interpret a 32 bit dos packed date/time to some parameters - */ -static void -interpret_dos_date(u_int32_t date, struct tm *tp) -{ - u_int32_t p0, p1, p2, p3; - - p0 = date & 0xFF; - p1 = ((date & 0xFF00) >> 8) & 0xFF; - p2 = ((date & 0xFF0000) >> 16) & 0xFF; - p3 = ((date & 0xFF000000) >> 24) & 0xFF; - - tp->tm_sec = 2 * (p0 & 0x1F); - tp->tm_min = ((p0 >> 5) & 0xFF) + ((p1 & 0x7) << 3); - tp->tm_hour = (p1 >> 3) & 0xFF; - tp->tm_mday = (p2 & 0x1F); - tp->tm_mon = ((p2 >> 5) & 0xFF) + ((p3 & 0x1) << 3) - 1; - tp->tm_year = ((p3 >> 1) & 0xFF) + 80; -} - -/* - * common portion: - * create a unix date from a dos date - */ -static time_t -int_unix_date(u_int32_t dos_date) -{ - struct tm t; - - if (dos_date == 0) - return(0); - - interpret_dos_date(dos_date, &t); - t.tm_wday = 1; - t.tm_yday = 1; - t.tm_isdst = 0; - - return (mktime(&t)); -} - -/* - * create a unix date from a dos date - * in network byte order - */ -static time_t -make_unix_date(const u_char *date_ptr) -{ - u_int32_t dos_date = 0; - - dos_date = EXTRACT_LE_32BITS(date_ptr); - - return int_unix_date(dos_date); -} - -/* - * create a unix date from a dos date - * in halfword-swapped network byte order! - */ -static time_t -make_unix_date2(const u_char *date_ptr) -{ - u_int32_t x, x2; - - x = EXTRACT_LE_32BITS(date_ptr); - x2 = ((x & 0xFFFF) << 16) | ((x & 0xFFFF0000) >> 16); - return int_unix_date(x2); -} - -/* - * interpret an 8 byte "filetime" structure to a time_t - * It's originally in "100ns units since jan 1st 1601" - */ -static time_t -interpret_long_date(const u_char *p) -{ - double d; - time_t ret; - - /* this gives us seconds since jan 1st 1601 (approx) */ - d = (EXTRACT_LE_32BITS(p + 4) * 256.0 + p[3]) * (1.0e-7 * (1 << 24)); - - /* now adjust by 369 years to make the secs since 1970 */ - d -= 369.0 * 365.25 * 24 * 60 * 60; - - /* and a fudge factor as we got it wrong by a few days */ - d += (3 * 24 * 60 * 60 + 6 * 60 * 60 + 2); - - if (d < 0) - return(0); - - ret = (time_t)d; - - return(ret); -} - -/* - * interpret the weird netbios "name". Return the name type, or -1 if - * we run past the end of the buffer - */ -static int -name_interpret(const u_char *in, const u_char *maxbuf, char *out) -{ - int ret; - int len; - - if (in >= maxbuf) - return(-1); /* name goes past the end of the buffer */ - TCHECK2(*in, 1); - len = (*in++) / 2; - - *out=0; - - if (len > 30 || len < 1) - return(0); - - while (len--) { - TCHECK2(*in, 2); - if (in + 1 >= maxbuf) - return(-1); /* name goes past the end of the buffer */ - if (in[0] < 'A' || in[0] > 'P' || in[1] < 'A' || in[1] > 'P') { - *out = 0; - return(0); - } - *out = ((in[0] - 'A') << 4) + (in[1] - 'A'); - in += 2; - out++; - } - *out = 0; - ret = out[-1]; - - return(ret); - -trunc: - return(-1); -} - -/* - * find a pointer to a netbios name - */ -static const u_char * -name_ptr(const u_char *buf, int ofs, const u_char *maxbuf) -{ - const u_char *p; - u_char c; - - p = buf + ofs; - if (p >= maxbuf) - return(NULL); /* name goes past the end of the buffer */ - TCHECK2(*p, 1); - - c = *p; - - /* XXX - this should use the same code that the DNS dissector does */ - if ((c & 0xC0) == 0xC0) { - u_int16_t l; - - TCHECK2(*p, 2); - if ((p + 1) >= maxbuf) - return(NULL); /* name goes past the end of the buffer */ - l = EXTRACT_16BITS(p) & 0x3FFF; - if (l == 0) { - /* We have a pointer that points to itself. */ - return(NULL); - } - p = buf + l; - if (p >= maxbuf) - return(NULL); /* name goes past the end of the buffer */ - TCHECK2(*p, 1); - } - return(p); - -trunc: - return(NULL); /* name goes past the end of the buffer */ -} - -/* - * extract a netbios name from a buf - */ -static int -name_extract(const u_char *buf, int ofs, const u_char *maxbuf, char *name) -{ - const u_char *p = name_ptr(buf, ofs, maxbuf); - if (p == NULL) - return(-1); /* error (probably name going past end of buffer) */ - name[0] = '\0'; - return(name_interpret(p, maxbuf, name)); -} - - -/* - * return the total storage length of a mangled name - */ -static int -name_len(const unsigned char *s, const unsigned char *maxbuf) -{ - const unsigned char *s0 = s; - unsigned char c; - - if (s >= maxbuf) - return(-1); /* name goes past the end of the buffer */ - TCHECK2(*s, 1); - c = *s; - if ((c & 0xC0) == 0xC0) - return(2); - while (*s) { - if (s >= maxbuf) - return(-1); /* name goes past the end of the buffer */ - TCHECK2(*s, 1); - s += (*s) + 1; - } - return(PTR_DIFF(s, s0) + 1); - -trunc: - return(-1); /* name goes past the end of the buffer */ -} - -static void -print_asc(const unsigned char *buf, int len) -{ - int i; - for (i = 0; i < len; i++) - safeputchar(buf[i]); -} - -static const char * -name_type_str(int name_type) -{ - const char *f = NULL; - - switch (name_type) { - case 0: f = "Workstation"; break; - case 0x03: f = "Client?"; break; - case 0x20: f = "Server"; break; - case 0x1d: f = "Master Browser"; break; - case 0x1b: f = "Domain Controller"; break; - case 0x1e: f = "Browser Server"; break; - default: f = "Unknown"; break; - } - return(f); -} - -void -print_data(const unsigned char *buf, int len) -{ - int i = 0; - - if (len <= 0) - return; - printf("[%03X] ", i); - for (i = 0; i < len; /*nothing*/) { - printf("%02X ", buf[i] & 0xff); - i++; - if (i%8 == 0) - printf(" "); - if (i % 16 == 0) { - print_asc(&buf[i - 16], 8); - printf(" "); - print_asc(&buf[i - 8], 8); - printf("\n"); - if (i < len) - printf("[%03X] ", i); - } - } - if (i % 16) { - int n; - - n = 16 - (i % 16); - printf(" "); - if (n>8) - printf(" "); - while (n--) - printf(" "); - - n = SMBMIN(8, i % 16); - print_asc(&buf[i - (i % 16)], n); - printf(" "); - n = (i % 16) - n; - if (n > 0) - print_asc(&buf[i - n], n); - printf("\n"); - } -} - - -static void -write_bits(unsigned int val, const char *fmt) -{ - const char *p = fmt; - int i = 0; - - while ((p = strchr(fmt, '|'))) { - size_t l = PTR_DIFF(p, fmt); - if (l && (val & (1 << i))) - printf("%.*s ", (int)l, fmt); - fmt = p + 1; - i++; - } -} - -/* convert a UCS2 string into iso-8859-1 string */ -#define MAX_UNISTR_SIZE 1000 -static const char * -unistr(const u_char *s, u_int32_t *len, int use_unicode) -{ - static char buf[MAX_UNISTR_SIZE+1]; - size_t l = 0; - u_int32_t strsize; - const u_char *sp; - - if (use_unicode) { - /* - * Skip padding that puts the string on an even boundary. - */ - if (((s - startbuf) % 2) != 0) { - TCHECK(s[0]); - s++; - } - } - if (*len == 0) { - /* - * Null-terminated string. - */ - strsize = 0; - sp = s; - if (!use_unicode) { - for (;;) { - TCHECK(sp[0]); - *len += 1; - if (sp[0] == 0) - break; - sp++; - } - strsize = *len - 1; - } else { - for (;;) { - TCHECK2(sp[0], 2); - *len += 2; - if (sp[0] == 0 && sp[1] == 0) - break; - sp += 2; - } - strsize = *len - 2; - } - } else { - /* - * Counted string. - */ - strsize = *len; - } - if (!use_unicode) { - while (strsize != 0) { - TCHECK(s[0]); - if (l >= MAX_UNISTR_SIZE) - break; - if (isprint(s[0])) - buf[l] = s[0]; - else { - if (s[0] == 0) - break; - buf[l] = '.'; - } - l++; - s++; - strsize--; - } - } else { - while (strsize != 0) { - TCHECK2(s[0], 2); - if (l >= MAX_UNISTR_SIZE) - break; - if (s[1] == 0 && isprint(s[0])) { - /* It's a printable ASCII character */ - buf[l] = s[0]; - } else { - /* It's a non-ASCII character or a non-printable ASCII character */ - if (s[0] == 0 && s[1] == 0) - break; - buf[l] = '.'; - } - l++; - s += 2; - if (strsize == 1) - break; - strsize -= 2; - } - } - buf[l] = 0; - return buf; - -trunc: - return NULL; -} - -static const u_char * -smb_fdata1(const u_char *buf, const char *fmt, const u_char *maxbuf, - int unicodestr) -{ - int reverse = 0; - const char *attrib_fmt = "READONLY|HIDDEN|SYSTEM|VOLUME|DIR|ARCHIVE|"; - - while (*fmt && buf<maxbuf) { - switch (*fmt) { - case 'a': - TCHECK(buf[0]); - write_bits(buf[0], attrib_fmt); - buf++; - fmt++; - break; - - case 'A': - TCHECK2(buf[0], 2); - write_bits(EXTRACT_LE_16BITS(buf), attrib_fmt); - buf += 2; - fmt++; - break; - - case '{': - { - char bitfmt[128]; - char *p; - int l; - - p = strchr(++fmt, '}'); - l = PTR_DIFF(p, fmt); - - if ((unsigned int)l > sizeof(bitfmt) - 1) - l = sizeof(bitfmt)-1; - - strncpy(bitfmt, fmt, l); - bitfmt[l] = '\0'; - fmt = p + 1; - TCHECK(buf[0]); - write_bits(buf[0], bitfmt); - buf++; - break; - } - - case 'P': - { - int l = atoi(fmt + 1); - TCHECK2(buf[0], l); - buf += l; - fmt++; - while (isdigit((unsigned char)*fmt)) - fmt++; - break; - } - case 'r': - reverse = !reverse; - fmt++; - break; - case 'b': - { - unsigned int x; - TCHECK(buf[0]); - x = buf[0]; - printf("%u (0x%x)", x, x); - buf += 1; - fmt++; - break; - } - case 'd': - { - unsigned int x; - TCHECK2(buf[0], 2); - x = reverse ? EXTRACT_16BITS(buf) : - EXTRACT_LE_16BITS(buf); - printf("%d (0x%x)", x, x); - buf += 2; - fmt++; - break; - } - case 'D': - { - unsigned int x; - TCHECK2(buf[0], 4); - x = reverse ? EXTRACT_32BITS(buf) : - EXTRACT_LE_32BITS(buf); - printf("%d (0x%x)", x, x); - buf += 4; - fmt++; - break; - } - case 'L': - { - u_int64_t x; - TCHECK2(buf[0], 8); - x = reverse ? EXTRACT_64BITS(buf) : - EXTRACT_LE_64BITS(buf); - printf("%" PRIu64 " (0x%" PRIx64 ")", x, x); - buf += 8; - fmt++; - break; - } - case 'M': - { - /* Weird mixed-endian length values in 64-bit locks */ - u_int32_t x1, x2; - u_int64_t x; - TCHECK2(buf[0], 8); - x1 = reverse ? EXTRACT_32BITS(buf) : - EXTRACT_LE_32BITS(buf); - x2 = reverse ? EXTRACT_32BITS(buf + 4) : - EXTRACT_LE_32BITS(buf + 4); - x = (((u_int64_t)x1) << 32) | x2; - printf("%" PRIu64 " (0x%" PRIx64 ")", x, x); - buf += 8; - fmt++; - break; - } - case 'B': - { - unsigned int x; - TCHECK(buf[0]); - x = buf[0]; - printf("0x%X", x); - buf += 1; - fmt++; - break; - } - case 'w': - { - unsigned int x; - TCHECK2(buf[0], 2); - x = reverse ? EXTRACT_16BITS(buf) : - EXTRACT_LE_16BITS(buf); - printf("0x%X", x); - buf += 2; - fmt++; - break; - } - case 'W': - { - unsigned int x; - TCHECK2(buf[0], 4); - x = reverse ? EXTRACT_32BITS(buf) : - EXTRACT_LE_32BITS(buf); - printf("0x%X", x); - buf += 4; - fmt++; - break; - } - case 'l': - { - fmt++; - switch (*fmt) { - - case 'b': - TCHECK(buf[0]); - stringlen = buf[0]; - printf("%u", stringlen); - buf += 1; - break; - - case 'd': - TCHECK2(buf[0], 2); - stringlen = reverse ? EXTRACT_16BITS(buf) : - EXTRACT_LE_16BITS(buf); - printf("%u", stringlen); - buf += 2; - break; - - case 'D': - TCHECK2(buf[0], 4); - stringlen = reverse ? EXTRACT_32BITS(buf) : - EXTRACT_LE_32BITS(buf); - printf("%u", stringlen); - buf += 4; - break; - } - fmt++; - break; - } - case 'S': - case 'R': /* like 'S', but always ASCII */ - { - /*XXX unistr() */ - const char *s; - u_int32_t len; - - len = 0; - s = unistr(buf, &len, (*fmt == 'R') ? 0 : unicodestr); - if (s == NULL) - goto trunc; - printf("%s", s); - buf += len; - fmt++; - break; - } - case 'Z': - case 'Y': /* like 'Z', but always ASCII */ - { - const char *s; - u_int32_t len; - - TCHECK(*buf); - if (*buf != 4 && *buf != 2) { - printf("Error! ASCIIZ buffer of type %u", *buf); - return maxbuf; /* give up */ - } - len = 0; - s = unistr(buf + 1, &len, (*fmt == 'Y') ? 0 : unicodestr); - if (s == NULL) - goto trunc; - printf("%s", s); - buf += len + 1; - fmt++; - break; - } - case 's': - { - int l = atoi(fmt + 1); - TCHECK2(*buf, l); - printf("%-*.*s", l, l, buf); - buf += l; - fmt++; - while (isdigit((unsigned char)*fmt)) - fmt++; - break; - } - case 'c': - { - TCHECK2(*buf, stringlen); - printf("%-*.*s", (int)stringlen, (int)stringlen, buf); - buf += stringlen; - fmt++; - while (isdigit((unsigned char)*fmt)) - fmt++; - break; - } - case 'C': - { - const char *s; - s = unistr(buf, &stringlen, unicodestr); - if (s == NULL) - goto trunc; - printf("%s", s); - buf += stringlen; - fmt++; - break; - } - case 'h': - { - int l = atoi(fmt + 1); - TCHECK2(*buf, l); - while (l--) - printf("%02x", *buf++); - fmt++; - while (isdigit((unsigned char)*fmt)) - fmt++; - break; - } - case 'n': - { - int t = atoi(fmt+1); - char nbuf[255]; - int name_type; - int len; - - switch (t) { - case 1: - name_type = name_extract(startbuf, PTR_DIFF(buf, startbuf), - maxbuf, nbuf); - if (name_type < 0) - goto trunc; - len = name_len(buf, maxbuf); - if (len < 0) - goto trunc; - buf += len; - printf("%-15.15s NameType=0x%02X (%s)", nbuf, name_type, - name_type_str(name_type)); - break; - case 2: - TCHECK(buf[15]); - name_type = buf[15]; - printf("%-15.15s NameType=0x%02X (%s)", buf, name_type, - name_type_str(name_type)); - buf += 16; - break; - } - fmt++; - while (isdigit((unsigned char)*fmt)) - fmt++; - break; - } - case 'T': - { - time_t t; - struct tm *lt; - const char *tstring; - u_int32_t x; - - switch (atoi(fmt + 1)) { - case 1: - TCHECK2(buf[0], 4); - x = EXTRACT_LE_32BITS(buf); - if (x == 0 || x == 0xFFFFFFFF) - t = 0; - else - t = make_unix_date(buf); - buf += 4; - break; - case 2: - TCHECK2(buf[0], 4); - x = EXTRACT_LE_32BITS(buf); - if (x == 0 || x == 0xFFFFFFFF) - t = 0; - else - t = make_unix_date2(buf); - buf += 4; - break; - case 3: - TCHECK2(buf[0], 8); - t = interpret_long_date(buf); - buf += 8; - break; - } - if (t != 0) { - lt = localtime(&t); - if (lt != NULL) - tstring = asctime(lt); - else - tstring = "(Can't convert time)\n"; - } else - tstring = "NULL\n"; - printf("%s", tstring); - fmt++; - while (isdigit((unsigned char)*fmt)) - fmt++; - break; - } - default: - putchar(*fmt); - fmt++; - break; - } - } - - if (buf >= maxbuf && *fmt) - printf("END OF BUFFER\n"); - - return(buf); - -trunc: - printf("\n"); - printf("WARNING: Short packet. Try increasing the snap length\n"); - return(NULL); -} - -const u_char * -smb_fdata(const u_char *buf, const char *fmt, const u_char *maxbuf, - int unicodestr) -{ - static int depth = 0; - char s[128]; - char *p; - - while (*fmt) { - switch (*fmt) { - case '*': - fmt++; - while (buf < maxbuf) { - const u_char *buf2; - depth++; - buf2 = smb_fdata(buf, fmt, maxbuf, unicodestr); - depth--; - if (buf2 == NULL) - return(NULL); - if (buf2 == buf) - return(buf); - buf = buf2; - } - return(buf); - - case '|': - fmt++; - if (buf >= maxbuf) - return(buf); - break; - - case '%': - fmt++; - buf = maxbuf; - break; - - case '#': - fmt++; - return(buf); - break; - - case '[': - fmt++; - if (buf >= maxbuf) - return(buf); - memset(s, 0, sizeof(s)); - p = strchr(fmt, ']'); - if ((size_t)(p - fmt + 1) > sizeof(s)) { - /* overrun */ - return(buf); - } - strncpy(s, fmt, p - fmt); - s[p - fmt] = '\0'; - fmt = p + 1; - buf = smb_fdata1(buf, s, maxbuf, unicodestr); - if (buf == NULL) - return(NULL); - break; - - default: - putchar(*fmt); - fmt++; - fflush(stdout); - break; - } - } - if (!depth && buf < maxbuf) { - size_t len = PTR_DIFF(maxbuf, buf); - printf("Data: (%lu bytes)\n", (unsigned long)len); - print_data(buf, len); - return(buf + len); - } - return(buf); -} - -typedef struct { - const char *name; - int code; - const char *message; -} err_code_struct; - -/* DOS Error Messages */ -static const err_code_struct dos_msgs[] = { - { "ERRbadfunc", 1, "Invalid function." }, - { "ERRbadfile", 2, "File not found." }, - { "ERRbadpath", 3, "Directory invalid." }, - { "ERRnofids", 4, "No file descriptors available" }, - { "ERRnoaccess", 5, "Access denied." }, - { "ERRbadfid", 6, "Invalid file handle." }, - { "ERRbadmcb", 7, "Memory control blocks destroyed." }, - { "ERRnomem", 8, "Insufficient server memory to perform the requested function." }, - { "ERRbadmem", 9, "Invalid memory block address." }, - { "ERRbadenv", 10, "Invalid environment." }, - { "ERRbadformat", 11, "Invalid format." }, - { "ERRbadaccess", 12, "Invalid open mode." }, - { "ERRbaddata", 13, "Invalid data." }, - { "ERR", 14, "reserved." }, - { "ERRbaddrive", 15, "Invalid drive specified." }, - { "ERRremcd", 16, "A Delete Directory request attempted to remove the server's current directory." }, - { "ERRdiffdevice", 17, "Not same device." }, - { "ERRnofiles", 18, "A File Search command can find no more files matching the specified criteria." }, - { "ERRbadshare", 32, "The sharing mode specified for an Open conflicts with existing FIDs on the file." }, - { "ERRlock", 33, "A Lock request conflicted with an existing lock or specified an invalid mode, or an Unlock requested attempted to remove a lock held by another process." }, - { "ERRfilexists", 80, "The file named in a Create Directory, Make New File or Link request already exists." }, - { "ERRbadpipe", 230, "Pipe invalid." }, - { "ERRpipebusy", 231, "All instances of the requested pipe are busy." }, - { "ERRpipeclosing", 232, "Pipe close in progress." }, - { "ERRnotconnected", 233, "No process on other end of pipe." }, - { "ERRmoredata", 234, "There is more data to be returned." }, - { NULL, -1, NULL } - }; - -/* Server Error Messages */ -err_code_struct server_msgs[] = { - { "ERRerror", 1, "Non-specific error code." }, - { "ERRbadpw", 2, "Bad password - name/password pair in a Tree Connect or Session Setup are invalid." }, - { "ERRbadtype", 3, "reserved." }, - { "ERRaccess", 4, "The requester does not have the necessary access rights within the specified context for the requested function. The context is defined by the TID or the UID." }, - { "ERRinvnid", 5, "The tree ID (TID) specified in a command was invalid." }, - { "ERRinvnetname", 6, "Invalid network name in tree connect." }, - { "ERRinvdevice", 7, "Invalid device - printer request made to non-printer connection or non-printer request made to printer connection." }, - { "ERRqfull", 49, "Print queue full (files) -- returned by open print file." }, - { "ERRqtoobig", 50, "Print queue full -- no space." }, - { "ERRqeof", 51, "EOF on print queue dump." }, - { "ERRinvpfid", 52, "Invalid print file FID." }, - { "ERRsmbcmd", 64, "The server did not recognize the command received." }, - { "ERRsrverror", 65, "The server encountered an internal error, e.g., system file unavailable." }, - { "ERRfilespecs", 67, "The file handle (FID) and pathname parameters contained an invalid combination of values." }, - { "ERRreserved", 68, "reserved." }, - { "ERRbadpermits", 69, "The access permissions specified for a file or directory are not a valid combination. The server cannot set the requested attribute." }, - { "ERRreserved", 70, "reserved." }, - { "ERRsetattrmode", 71, "The attribute mode in the Set File Attribute request is invalid." }, - { "ERRpaused", 81, "Server is paused." }, - { "ERRmsgoff", 82, "Not receiving messages." }, - { "ERRnoroom", 83, "No room to buffer message." }, - { "ERRrmuns", 87, "Too many remote user names." }, - { "ERRtimeout", 88, "Operation timed out." }, - { "ERRnoresource", 89, "No resources currently available for request." }, - { "ERRtoomanyuids", 90, "Too many UIDs active on this session." }, - { "ERRbaduid", 91, "The UID is not known as a valid ID on this session." }, - { "ERRusempx", 250, "Temp unable to support Raw, use MPX mode." }, - { "ERRusestd", 251, "Temp unable to support Raw, use standard read/write." }, - { "ERRcontmpx", 252, "Continue in MPX mode." }, - { "ERRreserved", 253, "reserved." }, - { "ERRreserved", 254, "reserved." }, - { "ERRnosupport", 0xFFFF, "Function not supported." }, - { NULL, -1, NULL } -}; - -/* Hard Error Messages */ -err_code_struct hard_msgs[] = { - { "ERRnowrite", 19, "Attempt to write on write-protected diskette." }, - { "ERRbadunit", 20, "Unknown unit." }, - { "ERRnotready", 21, "Drive not ready." }, - { "ERRbadcmd", 22, "Unknown command." }, - { "ERRdata", 23, "Data error (CRC)." }, - { "ERRbadreq", 24, "Bad request structure length." }, - { "ERRseek", 25 , "Seek error." }, - { "ERRbadmedia", 26, "Unknown media type." }, - { "ERRbadsector", 27, "Sector not found." }, - { "ERRnopaper", 28, "Printer out of paper." }, - { "ERRwrite", 29, "Write fault." }, - { "ERRread", 30, "Read fault." }, - { "ERRgeneral", 31, "General failure." }, - { "ERRbadshare", 32, "A open conflicts with an existing open." }, - { "ERRlock", 33, "A Lock request conflicted with an existing lock or specified an invalid mode, or an Unlock requested attempted to remove a lock held by another process." }, - { "ERRwrongdisk", 34, "The wrong disk was found in a drive." }, - { "ERRFCBUnavail", 35, "No FCBs are available to process request." }, - { "ERRsharebufexc", 36, "A sharing buffer has been exceeded." }, - { NULL, -1, NULL } -}; - -static const struct { - int code; - const char *class; - const err_code_struct *err_msgs; -} err_classes[] = { - { 0, "SUCCESS", NULL }, - { 0x01, "ERRDOS", dos_msgs }, - { 0x02, "ERRSRV", server_msgs }, - { 0x03, "ERRHRD", hard_msgs }, - { 0x04, "ERRXOS", NULL }, - { 0xE1, "ERRRMX1", NULL }, - { 0xE2, "ERRRMX2", NULL }, - { 0xE3, "ERRRMX3", NULL }, - { 0xFF, "ERRCMD", NULL }, - { -1, NULL, NULL } -}; - -/* - * return a SMB error string from a SMB buffer - */ -char * -smb_errstr(int class, int num) -{ - static char ret[128]; - int i, j; - - ret[0] = 0; - - for (i = 0; err_classes[i].class; i++) - if (err_classes[i].code == class) { - if (err_classes[i].err_msgs) { - const err_code_struct *err = err_classes[i].err_msgs; - for (j = 0; err[j].name; j++) - if (num == err[j].code) { - snprintf(ret, sizeof(ret), "%s - %s (%s)", - err_classes[i].class, err[j].name, err[j].message); - return ret; - } - } - - snprintf(ret, sizeof(ret), "%s - %d", err_classes[i].class, num); - return ret; - } - - snprintf(ret, sizeof(ret), "ERROR: Unknown error (%d,%d)", class, num); - return(ret); -} - -typedef struct { - u_int32_t code; - const char *name; -} nt_err_code_struct; - -/* - * NT Error codes - */ -static const nt_err_code_struct nt_errors[] = { - { 0x00000000, "STATUS_SUCCESS" }, - { 0x00000000, "STATUS_WAIT_0" }, - { 0x00000001, "STATUS_WAIT_1" }, - { 0x00000002, "STATUS_WAIT_2" }, - { 0x00000003, "STATUS_WAIT_3" }, - { 0x0000003F, "STATUS_WAIT_63" }, - { 0x00000080, "STATUS_ABANDONED" }, - { 0x00000080, "STATUS_ABANDONED_WAIT_0" }, - { 0x000000BF, "STATUS_ABANDONED_WAIT_63" }, - { 0x000000C0, "STATUS_USER_APC" }, - { 0x00000100, "STATUS_KERNEL_APC" }, - { 0x00000101, "STATUS_ALERTED" }, - { 0x00000102, "STATUS_TIMEOUT" }, - { 0x00000103, "STATUS_PENDING" }, - { 0x00000104, "STATUS_REPARSE" }, - { 0x00000105, "STATUS_MORE_ENTRIES" }, - { 0x00000106, "STATUS_NOT_ALL_ASSIGNED" }, - { 0x00000107, "STATUS_SOME_NOT_MAPPED" }, - { 0x00000108, "STATUS_OPLOCK_BREAK_IN_PROGRESS" }, - { 0x00000109, "STATUS_VOLUME_MOUNTED" }, - { 0x0000010A, "STATUS_RXACT_COMMITTED" }, - { 0x0000010B, "STATUS_NOTIFY_CLEANUP" }, - { 0x0000010C, "STATUS_NOTIFY_ENUM_DIR" }, - { 0x0000010D, "STATUS_NO_QUOTAS_FOR_ACCOUNT" }, - { 0x0000010E, "STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED" }, - { 0x00000110, "STATUS_PAGE_FAULT_TRANSITION" }, - { 0x00000111, "STATUS_PAGE_FAULT_DEMAND_ZERO" }, - { 0x00000112, "STATUS_PAGE_FAULT_COPY_ON_WRITE" }, - { 0x00000113, "STATUS_PAGE_FAULT_GUARD_PAGE" }, - { 0x00000114, "STATUS_PAGE_FAULT_PAGING_FILE" }, - { 0x00000115, "STATUS_CACHE_PAGE_LOCKED" }, - { 0x00000116, "STATUS_CRASH_DUMP" }, - { 0x00000117, "STATUS_BUFFER_ALL_ZEROS" }, - { 0x00000118, "STATUS_REPARSE_OBJECT" }, - { 0x0000045C, "STATUS_NO_SHUTDOWN_IN_PROGRESS" }, - { 0x40000000, "STATUS_OBJECT_NAME_EXISTS" }, - { 0x40000001, "STATUS_THREAD_WAS_SUSPENDED" }, - { 0x40000002, "STATUS_WORKING_SET_LIMIT_RANGE" }, - { 0x40000003, "STATUS_IMAGE_NOT_AT_BASE" }, - { 0x40000004, "STATUS_RXACT_STATE_CREATED" }, - { 0x40000005, "STATUS_SEGMENT_NOTIFICATION" }, - { 0x40000006, "STATUS_LOCAL_USER_SESSION_KEY" }, - { 0x40000007, "STATUS_BAD_CURRENT_DIRECTORY" }, - { 0x40000008, "STATUS_SERIAL_MORE_WRITES" }, - { 0x40000009, "STATUS_REGISTRY_RECOVERED" }, - { 0x4000000A, "STATUS_FT_READ_RECOVERY_FROM_BACKUP" }, - { 0x4000000B, "STATUS_FT_WRITE_RECOVERY" }, - { 0x4000000C, "STATUS_SERIAL_COUNTER_TIMEOUT" }, - { 0x4000000D, "STATUS_NULL_LM_PASSWORD" }, - { 0x4000000E, "STATUS_IMAGE_MACHINE_TYPE_MISMATCH" }, - { 0x4000000F, "STATUS_RECEIVE_PARTIAL" }, - { 0x40000010, "STATUS_RECEIVE_EXPEDITED" }, - { 0x40000011, "STATUS_RECEIVE_PARTIAL_EXPEDITED" }, - { 0x40000012, "STATUS_EVENT_DONE" }, - { 0x40000013, "STATUS_EVENT_PENDING" }, - { 0x40000014, "STATUS_CHECKING_FILE_SYSTEM" }, - { 0x40000015, "STATUS_FATAL_APP_EXIT" }, - { 0x40000016, "STATUS_PREDEFINED_HANDLE" }, - { 0x40000017, "STATUS_WAS_UNLOCKED" }, - { 0x40000018, "STATUS_SERVICE_NOTIFICATION" }, - { 0x40000019, "STATUS_WAS_LOCKED" }, - { 0x4000001A, "STATUS_LOG_HARD_ERROR" }, - { 0x4000001B, "STATUS_ALREADY_WIN32" }, - { 0x4000001C, "STATUS_WX86_UNSIMULATE" }, - { 0x4000001D, "STATUS_WX86_CONTINUE" }, - { 0x4000001E, "STATUS_WX86_SINGLE_STEP" }, - { 0x4000001F, "STATUS_WX86_BREAKPOINT" }, - { 0x40000020, "STATUS_WX86_EXCEPTION_CONTINUE" }, - { 0x40000021, "STATUS_WX86_EXCEPTION_LASTCHANCE" }, - { 0x40000022, "STATUS_WX86_EXCEPTION_CHAIN" }, - { 0x40000023, "STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE" }, - { 0x40000024, "STATUS_NO_YIELD_PERFORMED" }, - { 0x40000025, "STATUS_TIMER_RESUME_IGNORED" }, - { 0x80000001, "STATUS_GUARD_PAGE_VIOLATION" }, - { 0x80000002, "STATUS_DATATYPE_MISALIGNMENT" }, - { 0x80000003, "STATUS_BREAKPOINT" }, - { 0x80000004, "STATUS_SINGLE_STEP" }, - { 0x80000005, "STATUS_BUFFER_OVERFLOW" }, - { 0x80000006, "STATUS_NO_MORE_FILES" }, - { 0x80000007, "STATUS_WAKE_SYSTEM_DEBUGGER" }, - { 0x8000000A, "STATUS_HANDLES_CLOSED" }, - { 0x8000000B, "STATUS_NO_INHERITANCE" }, - { 0x8000000C, "STATUS_GUID_SUBSTITUTION_MADE" }, - { 0x8000000D, "STATUS_PARTIAL_COPY" }, - { 0x8000000E, "STATUS_DEVICE_PAPER_EMPTY" }, - { 0x8000000F, "STATUS_DEVICE_POWERED_OFF" }, - { 0x80000010, "STATUS_DEVICE_OFF_LINE" }, - { 0x80000011, "STATUS_DEVICE_BUSY" }, - { 0x80000012, "STATUS_NO_MORE_EAS" }, - { 0x80000013, "STATUS_INVALID_EA_NAME" }, - { 0x80000014, "STATUS_EA_LIST_INCONSISTENT" }, - { 0x80000015, "STATUS_INVALID_EA_FLAG" }, - { 0x80000016, "STATUS_VERIFY_REQUIRED" }, - { 0x80000017, "STATUS_EXTRANEOUS_INFORMATION" }, - { 0x80000018, "STATUS_RXACT_COMMIT_NECESSARY" }, - { 0x8000001A, "STATUS_NO_MORE_ENTRIES" }, - { 0x8000001B, "STATUS_FILEMARK_DETECTED" }, - { 0x8000001C, "STATUS_MEDIA_CHANGED" }, - { 0x8000001D, "STATUS_BUS_RESET" }, - { 0x8000001E, "STATUS_END_OF_MEDIA" }, - { 0x8000001F, "STATUS_BEGINNING_OF_MEDIA" }, - { 0x80000020, "STATUS_MEDIA_CHECK" }, - { 0x80000021, "STATUS_SETMARK_DETECTED" }, - { 0x80000022, "STATUS_NO_DATA_DETECTED" }, - { 0x80000023, "STATUS_REDIRECTOR_HAS_OPEN_HANDLES" }, - { 0x80000024, "STATUS_SERVER_HAS_OPEN_HANDLES" }, - { 0x80000025, "STATUS_ALREADY_DISCONNECTED" }, - { 0x80000026, "STATUS_LONGJUMP" }, - { 0x80040111, "MAPI_E_LOGON_FAILED" }, - { 0x80090300, "SEC_E_INSUFFICIENT_MEMORY" }, - { 0x80090301, "SEC_E_INVALID_HANDLE" }, - { 0x80090302, "SEC_E_UNSUPPORTED_FUNCTION" }, - { 0x8009030B, "SEC_E_NO_IMPERSONATION" }, - { 0x8009030D, "SEC_E_UNKNOWN_CREDENTIALS" }, - { 0x8009030E, "SEC_E_NO_CREDENTIALS" }, - { 0x8009030F, "SEC_E_MESSAGE_ALTERED" }, - { 0x80090310, "SEC_E_OUT_OF_SEQUENCE" }, - { 0x80090311, "SEC_E_NO_AUTHENTICATING_AUTHORITY" }, - { 0xC0000001, "STATUS_UNSUCCESSFUL" }, - { 0xC0000002, "STATUS_NOT_IMPLEMENTED" }, - { 0xC0000003, "STATUS_INVALID_INFO_CLASS" }, - { 0xC0000004, "STATUS_INFO_LENGTH_MISMATCH" }, - { 0xC0000005, "STATUS_ACCESS_VIOLATION" }, - { 0xC0000006, "STATUS_IN_PAGE_ERROR" }, - { 0xC0000007, "STATUS_PAGEFILE_QUOTA" }, - { 0xC0000008, "STATUS_INVALID_HANDLE" }, - { 0xC0000009, "STATUS_BAD_INITIAL_STACK" }, - { 0xC000000A, "STATUS_BAD_INITIAL_PC" }, - { 0xC000000B, "STATUS_INVALID_CID" }, - { 0xC000000C, "STATUS_TIMER_NOT_CANCELED" }, - { 0xC000000D, "STATUS_INVALID_PARAMETER" }, - { 0xC000000E, "STATUS_NO_SUCH_DEVICE" }, - { 0xC000000F, "STATUS_NO_SUCH_FILE" }, - { 0xC0000010, "STATUS_INVALID_DEVICE_REQUEST" }, - { 0xC0000011, "STATUS_END_OF_FILE" }, - { 0xC0000012, "STATUS_WRONG_VOLUME" }, - { 0xC0000013, "STATUS_NO_MEDIA_IN_DEVICE" }, - { 0xC0000014, "STATUS_UNRECOGNIZED_MEDIA" }, - { 0xC0000015, "STATUS_NONEXISTENT_SECTOR" }, - { 0xC0000016, "STATUS_MORE_PROCESSING_REQUIRED" }, - { 0xC0000017, "STATUS_NO_MEMORY" }, - { 0xC0000018, "STATUS_CONFLICTING_ADDRESSES" }, - { 0xC0000019, "STATUS_NOT_MAPPED_VIEW" }, - { 0xC000001A, "STATUS_UNABLE_TO_FREE_VM" }, - { 0xC000001B, "STATUS_UNABLE_TO_DELETE_SECTION" }, - { 0xC000001C, "STATUS_INVALID_SYSTEM_SERVICE" }, - { 0xC000001D, "STATUS_ILLEGAL_INSTRUCTION" }, - { 0xC000001E, "STATUS_INVALID_LOCK_SEQUENCE" }, - { 0xC000001F, "STATUS_INVALID_VIEW_SIZE" }, - { 0xC0000020, "STATUS_INVALID_FILE_FOR_SECTION" }, - { 0xC0000021, "STATUS_ALREADY_COMMITTED" }, - { 0xC0000022, "STATUS_ACCESS_DENIED" }, - { 0xC0000023, "STATUS_BUFFER_TOO_SMALL" }, - { 0xC0000024, "STATUS_OBJECT_TYPE_MISMATCH" }, - { 0xC0000025, "STATUS_NONCONTINUABLE_EXCEPTION" }, - { 0xC0000026, "STATUS_INVALID_DISPOSITION" }, - { 0xC0000027, "STATUS_UNWIND" }, - { 0xC0000028, "STATUS_BAD_STACK" }, - { 0xC0000029, "STATUS_INVALID_UNWIND_TARGET" }, - { 0xC000002A, "STATUS_NOT_LOCKED" }, - { 0xC000002B, "STATUS_PARITY_ERROR" }, - { 0xC000002C, "STATUS_UNABLE_TO_DECOMMIT_VM" }, - { 0xC000002D, "STATUS_NOT_COMMITTED" }, - { 0xC000002E, "STATUS_INVALID_PORT_ATTRIBUTES" }, - { 0xC000002F, "STATUS_PORT_MESSAGE_TOO_LONG" }, - { 0xC0000030, "STATUS_INVALID_PARAMETER_MIX" }, - { 0xC0000031, "STATUS_INVALID_QUOTA_LOWER" }, - { 0xC0000032, "STATUS_DISK_CORRUPT_ERROR" }, - { 0xC0000033, "STATUS_OBJECT_NAME_INVALID" }, - { 0xC0000034, "STATUS_OBJECT_NAME_NOT_FOUND" }, - { 0xC0000035, "STATUS_OBJECT_NAME_COLLISION" }, - { 0xC0000037, "STATUS_PORT_DISCONNECTED" }, - { 0xC0000038, "STATUS_DEVICE_ALREADY_ATTACHED" }, - { 0xC0000039, "STATUS_OBJECT_PATH_INVALID" }, - { 0xC000003A, "STATUS_OBJECT_PATH_NOT_FOUND" }, - { 0xC000003B, "STATUS_OBJECT_PATH_SYNTAX_BAD" }, - { 0xC000003C, "STATUS_DATA_OVERRUN" }, - { 0xC000003D, "STATUS_DATA_LATE_ERROR" }, - { 0xC000003E, "STATUS_DATA_ERROR" }, - { 0xC000003F, "STATUS_CRC_ERROR" }, - { 0xC0000040, "STATUS_SECTION_TOO_BIG" }, - { 0xC0000041, "STATUS_PORT_CONNECTION_REFUSED" }, - { 0xC0000042, "STATUS_INVALID_PORT_HANDLE" }, - { 0xC0000043, "STATUS_SHARING_VIOLATION" }, - { 0xC0000044, "STATUS_QUOTA_EXCEEDED" }, - { 0xC0000045, "STATUS_INVALID_PAGE_PROTECTION" }, - { 0xC0000046, "STATUS_MUTANT_NOT_OWNED" }, - { 0xC0000047, "STATUS_SEMAPHORE_LIMIT_EXCEEDED" }, - { 0xC0000048, "STATUS_PORT_ALREADY_SET" }, - { 0xC0000049, "STATUS_SECTION_NOT_IMAGE" }, - { 0xC000004A, "STATUS_SUSPEND_COUNT_EXCEEDED" }, - { 0xC000004B, "STATUS_THREAD_IS_TERMINATING" }, - { 0xC000004C, "STATUS_BAD_WORKING_SET_LIMIT" }, - { 0xC000004D, "STATUS_INCOMPATIBLE_FILE_MAP" }, - { 0xC000004E, "STATUS_SECTION_PROTECTION" }, - { 0xC000004F, "STATUS_EAS_NOT_SUPPORTED" }, - { 0xC0000050, "STATUS_EA_TOO_LARGE" }, - { 0xC0000051, "STATUS_NONEXISTENT_EA_ENTRY" }, - { 0xC0000052, "STATUS_NO_EAS_ON_FILE" }, - { 0xC0000053, "STATUS_EA_CORRUPT_ERROR" }, - { 0xC0000054, "STATUS_FILE_LOCK_CONFLICT" }, - { 0xC0000055, "STATUS_LOCK_NOT_GRANTED" }, - { 0xC0000056, "STATUS_DELETE_PENDING" }, - { 0xC0000057, "STATUS_CTL_FILE_NOT_SUPPORTED" }, - { 0xC0000058, "STATUS_UNKNOWN_REVISION" }, - { 0xC0000059, "STATUS_REVISION_MISMATCH" }, - { 0xC000005A, "STATUS_INVALID_OWNER" }, - { 0xC000005B, "STATUS_INVALID_PRIMARY_GROUP" }, - { 0xC000005C, "STATUS_NO_IMPERSONATION_TOKEN" }, - { 0xC000005D, "STATUS_CANT_DISABLE_MANDATORY" }, - { 0xC000005E, "STATUS_NO_LOGON_SERVERS" }, - { 0xC000005F, "STATUS_NO_SUCH_LOGON_SESSION" }, - { 0xC0000060, "STATUS_NO_SUCH_PRIVILEGE" }, - { 0xC0000061, "STATUS_PRIVILEGE_NOT_HELD" }, - { 0xC0000062, "STATUS_INVALID_ACCOUNT_NAME" }, - { 0xC0000063, "STATUS_USER_EXISTS" }, - { 0xC0000064, "STATUS_NO_SUCH_USER" }, - { 0xC0000065, "STATUS_GROUP_EXISTS" }, - { 0xC0000066, "STATUS_NO_SUCH_GROUP" }, - { 0xC0000067, "STATUS_MEMBER_IN_GROUP" }, - { 0xC0000068, "STATUS_MEMBER_NOT_IN_GROUP" }, - { 0xC0000069, "STATUS_LAST_ADMIN" }, - { 0xC000006A, "STATUS_WRONG_PASSWORD" }, - { 0xC000006B, "STATUS_ILL_FORMED_PASSWORD" }, - { 0xC000006C, "STATUS_PASSWORD_RESTRICTION" }, - { 0xC000006D, "STATUS_LOGON_FAILURE" }, - { 0xC000006E, "STATUS_ACCOUNT_RESTRICTION" }, - { 0xC000006F, "STATUS_INVALID_LOGON_HOURS" }, - { 0xC0000070, "STATUS_INVALID_WORKSTATION" }, - { 0xC0000071, "STATUS_PASSWORD_EXPIRED" }, - { 0xC0000072, "STATUS_ACCOUNT_DISABLED" }, - { 0xC0000073, "STATUS_NONE_MAPPED" }, - { 0xC0000074, "STATUS_TOO_MANY_LUIDS_REQUESTED" }, - { 0xC0000075, "STATUS_LUIDS_EXHAUSTED" }, - { 0xC0000076, "STATUS_INVALID_SUB_AUTHORITY" }, - { 0xC0000077, "STATUS_INVALID_ACL" }, - { 0xC0000078, "STATUS_INVALID_SID" }, - { 0xC0000079, "STATUS_INVALID_SECURITY_DESCR" }, - { 0xC000007A, "STATUS_PROCEDURE_NOT_FOUND" }, - { 0xC000007B, "STATUS_INVALID_IMAGE_FORMAT" }, - { 0xC000007C, "STATUS_NO_TOKEN" }, - { 0xC000007D, "STATUS_BAD_INHERITANCE_ACL" }, - { 0xC000007E, "STATUS_RANGE_NOT_LOCKED" }, - { 0xC000007F, "STATUS_DISK_FULL" }, - { 0xC0000080, "STATUS_SERVER_DISABLED" }, - { 0xC0000081, "STATUS_SERVER_NOT_DISABLED" }, - { 0xC0000082, "STATUS_TOO_MANY_GUIDS_REQUESTED" }, - { 0xC0000083, "STATUS_GUIDS_EXHAUSTED" }, - { 0xC0000084, "STATUS_INVALID_ID_AUTHORITY" }, - { 0xC0000085, "STATUS_AGENTS_EXHAUSTED" }, - { 0xC0000086, "STATUS_INVALID_VOLUME_LABEL" }, - { 0xC0000087, "STATUS_SECTION_NOT_EXTENDED" }, - { 0xC0000088, "STATUS_NOT_MAPPED_DATA" }, - { 0xC0000089, "STATUS_RESOURCE_DATA_NOT_FOUND" }, - { 0xC000008A, "STATUS_RESOURCE_TYPE_NOT_FOUND" }, - { 0xC000008B, "STATUS_RESOURCE_NAME_NOT_FOUND" }, - { 0xC000008C, "STATUS_ARRAY_BOUNDS_EXCEEDED" }, - { 0xC000008D, "STATUS_FLOAT_DENORMAL_OPERAND" }, - { 0xC000008E, "STATUS_FLOAT_DIVIDE_BY_ZERO" }, - { 0xC000008F, "STATUS_FLOAT_INEXACT_RESULT" }, - { 0xC0000090, "STATUS_FLOAT_INVALID_OPERATION" }, - { 0xC0000091, "STATUS_FLOAT_OVERFLOW" }, - { 0xC0000092, "STATUS_FLOAT_STACK_CHECK" }, - { 0xC0000093, "STATUS_FLOAT_UNDERFLOW" }, - { 0xC0000094, "STATUS_INTEGER_DIVIDE_BY_ZERO" }, - { 0xC0000095, "STATUS_INTEGER_OVERFLOW" }, - { 0xC0000096, "STATUS_PRIVILEGED_INSTRUCTION" }, - { 0xC0000097, "STATUS_TOO_MANY_PAGING_FILES" }, - { 0xC0000098, "STATUS_FILE_INVALID" }, - { 0xC0000099, "STATUS_ALLOTTED_SPACE_EXCEEDED" }, - { 0xC000009A, "STATUS_INSUFFICIENT_RESOURCES" }, - { 0xC000009B, "STATUS_DFS_EXIT_PATH_FOUND" }, - { 0xC000009C, "STATUS_DEVICE_DATA_ERROR" }, - { 0xC000009D, "STATUS_DEVICE_NOT_CONNECTED" }, - { 0xC000009E, "STATUS_DEVICE_POWER_FAILURE" }, - { 0xC000009F, "STATUS_FREE_VM_NOT_AT_BASE" }, - { 0xC00000A0, "STATUS_MEMORY_NOT_ALLOCATED" }, - { 0xC00000A1, "STATUS_WORKING_SET_QUOTA" }, - { 0xC00000A2, "STATUS_MEDIA_WRITE_PROTECTED" }, - { 0xC00000A3, "STATUS_DEVICE_NOT_READY" }, - { 0xC00000A4, "STATUS_INVALID_GROUP_ATTRIBUTES" }, - { 0xC00000A5, "STATUS_BAD_IMPERSONATION_LEVEL" }, - { 0xC00000A6, "STATUS_CANT_OPEN_ANONYMOUS" }, - { 0xC00000A7, "STATUS_BAD_VALIDATION_CLASS" }, - { 0xC00000A8, "STATUS_BAD_TOKEN_TYPE" }, - { 0xC00000A9, "STATUS_BAD_MASTER_BOOT_RECORD" }, - { 0xC00000AA, "STATUS_INSTRUCTION_MISALIGNMENT" }, - { 0xC00000AB, "STATUS_INSTANCE_NOT_AVAILABLE" }, - { 0xC00000AC, "STATUS_PIPE_NOT_AVAILABLE" }, - { 0xC00000AD, "STATUS_INVALID_PIPE_STATE" }, - { 0xC00000AE, "STATUS_PIPE_BUSY" }, - { 0xC00000AF, "STATUS_ILLEGAL_FUNCTION" }, - { 0xC00000B0, "STATUS_PIPE_DISCONNECTED" }, - { 0xC00000B1, "STATUS_PIPE_CLOSING" }, - { 0xC00000B2, "STATUS_PIPE_CONNECTED" }, - { 0xC00000B3, "STATUS_PIPE_LISTENING" }, - { 0xC00000B4, "STATUS_INVALID_READ_MODE" }, - { 0xC00000B5, "STATUS_IO_TIMEOUT" }, - { 0xC00000B6, "STATUS_FILE_FORCED_CLOSED" }, - { 0xC00000B7, "STATUS_PROFILING_NOT_STARTED" }, - { 0xC00000B8, "STATUS_PROFILING_NOT_STOPPED" }, - { 0xC00000B9, "STATUS_COULD_NOT_INTERPRET" }, - { 0xC00000BA, "STATUS_FILE_IS_A_DIRECTORY" }, - { 0xC00000BB, "STATUS_NOT_SUPPORTED" }, - { 0xC00000BC, "STATUS_REMOTE_NOT_LISTENING" }, - { 0xC00000BD, "STATUS_DUPLICATE_NAME" }, - { 0xC00000BE, "STATUS_BAD_NETWORK_PATH" }, - { 0xC00000BF, "STATUS_NETWORK_BUSY" }, - { 0xC00000C0, "STATUS_DEVICE_DOES_NOT_EXIST" }, - { 0xC00000C1, "STATUS_TOO_MANY_COMMANDS" }, - { 0xC00000C2, "STATUS_ADAPTER_HARDWARE_ERROR" }, - { 0xC00000C3, "STATUS_INVALID_NETWORK_RESPONSE" }, - { 0xC00000C4, "STATUS_UNEXPECTED_NETWORK_ERROR" }, - { 0xC00000C5, "STATUS_BAD_REMOTE_ADAPTER" }, - { 0xC00000C6, "STATUS_PRINT_QUEUE_FULL" }, - { 0xC00000C7, "STATUS_NO_SPOOL_SPACE" }, - { 0xC00000C8, "STATUS_PRINT_CANCELLED" }, - { 0xC00000C9, "STATUS_NETWORK_NAME_DELETED" }, - { 0xC00000CA, "STATUS_NETWORK_ACCESS_DENIED" }, - { 0xC00000CB, "STATUS_BAD_DEVICE_TYPE" }, - { 0xC00000CC, "STATUS_BAD_NETWORK_NAME" }, - { 0xC00000CD, "STATUS_TOO_MANY_NAMES" }, - { 0xC00000CE, "STATUS_TOO_MANY_SESSIONS" }, - { 0xC00000CF, "STATUS_SHARING_PAUSED" }, - { 0xC00000D0, "STATUS_REQUEST_NOT_ACCEPTED" }, - { 0xC00000D1, "STATUS_REDIRECTOR_PAUSED" }, - { 0xC00000D2, "STATUS_NET_WRITE_FAULT" }, - { 0xC00000D3, "STATUS_PROFILING_AT_LIMIT" }, - { 0xC00000D4, "STATUS_NOT_SAME_DEVICE" }, - { 0xC00000D5, "STATUS_FILE_RENAMED" }, - { 0xC00000D6, "STATUS_VIRTUAL_CIRCUIT_CLOSED" }, - { 0xC00000D7, "STATUS_NO_SECURITY_ON_OBJECT" }, - { 0xC00000D8, "STATUS_CANT_WAIT" }, - { 0xC00000D9, "STATUS_PIPE_EMPTY" }, - { 0xC00000DA, "STATUS_CANT_ACCESS_DOMAIN_INFO" }, - { 0xC00000DB, "STATUS_CANT_TERMINATE_SELF" }, - { 0xC00000DC, "STATUS_INVALID_SERVER_STATE" }, - { 0xC00000DD, "STATUS_INVALID_DOMAIN_STATE" }, - { 0xC00000DE, "STATUS_INVALID_DOMAIN_ROLE" }, - { 0xC00000DF, "STATUS_NO_SUCH_DOMAIN" }, - { 0xC00000E0, "STATUS_DOMAIN_EXISTS" }, - { 0xC00000E1, "STATUS_DOMAIN_LIMIT_EXCEEDED" }, - { 0xC00000E2, "STATUS_OPLOCK_NOT_GRANTED" }, - { 0xC00000E3, "STATUS_INVALID_OPLOCK_PROTOCOL" }, - { 0xC00000E4, "STATUS_INTERNAL_DB_CORRUPTION" }, - { 0xC00000E5, "STATUS_INTERNAL_ERROR" }, - { 0xC00000E6, "STATUS_GENERIC_NOT_MAPPED" }, - { 0xC00000E7, "STATUS_BAD_DESCRIPTOR_FORMAT" }, - { 0xC00000E8, "STATUS_INVALID_USER_BUFFER" }, - { 0xC00000E9, "STATUS_UNEXPECTED_IO_ERROR" }, - { 0xC00000EA, "STATUS_UNEXPECTED_MM_CREATE_ERR" }, - { 0xC00000EB, "STATUS_UNEXPECTED_MM_MAP_ERROR" }, - { 0xC00000EC, "STATUS_UNEXPECTED_MM_EXTEND_ERR" }, - { 0xC00000ED, "STATUS_NOT_LOGON_PROCESS" }, - { 0xC00000EE, "STATUS_LOGON_SESSION_EXISTS" }, - { 0xC00000EF, "STATUS_INVALID_PARAMETER_1" }, - { 0xC00000F0, "STATUS_INVALID_PARAMETER_2" }, - { 0xC00000F1, "STATUS_INVALID_PARAMETER_3" }, - { 0xC00000F2, "STATUS_INVALID_PARAMETER_4" }, - { 0xC00000F3, "STATUS_INVALID_PARAMETER_5" }, - { 0xC00000F4, "STATUS_INVALID_PARAMETER_6" }, - { 0xC00000F5, "STATUS_INVALID_PARAMETER_7" }, - { 0xC00000F6, "STATUS_INVALID_PARAMETER_8" }, - { 0xC00000F7, "STATUS_INVALID_PARAMETER_9" }, - { 0xC00000F8, "STATUS_INVALID_PARAMETER_10" }, - { 0xC00000F9, "STATUS_INVALID_PARAMETER_11" }, - { 0xC00000FA, "STATUS_INVALID_PARAMETER_12" }, - { 0xC00000FB, "STATUS_REDIRECTOR_NOT_STARTED" }, - { 0xC00000FC, "STATUS_REDIRECTOR_STARTED" }, - { 0xC00000FD, "STATUS_STACK_OVERFLOW" }, - { 0xC00000FE, "STATUS_NO_SUCH_PACKAGE" }, - { 0xC00000FF, "STATUS_BAD_FUNCTION_TABLE" }, - { 0xC0000100, "STATUS_VARIABLE_NOT_FOUND" }, - { 0xC0000101, "STATUS_DIRECTORY_NOT_EMPTY" }, - { 0xC0000102, "STATUS_FILE_CORRUPT_ERROR" }, - { 0xC0000103, "STATUS_NOT_A_DIRECTORY" }, - { 0xC0000104, "STATUS_BAD_LOGON_SESSION_STATE" }, - { 0xC0000105, "STATUS_LOGON_SESSION_COLLISION" }, - { 0xC0000106, "STATUS_NAME_TOO_LONG" }, - { 0xC0000107, "STATUS_FILES_OPEN" }, - { 0xC0000108, "STATUS_CONNECTION_IN_USE" }, - { 0xC0000109, "STATUS_MESSAGE_NOT_FOUND" }, - { 0xC000010A, "STATUS_PROCESS_IS_TERMINATING" }, - { 0xC000010B, "STATUS_INVALID_LOGON_TYPE" }, - { 0xC000010C, "STATUS_NO_GUID_TRANSLATION" }, - { 0xC000010D, "STATUS_CANNOT_IMPERSONATE" }, - { 0xC000010E, "STATUS_IMAGE_ALREADY_LOADED" }, - { 0xC000010F, "STATUS_ABIOS_NOT_PRESENT" }, - { 0xC0000110, "STATUS_ABIOS_LID_NOT_EXIST" }, - { 0xC0000111, "STATUS_ABIOS_LID_ALREADY_OWNED" }, - { 0xC0000112, "STATUS_ABIOS_NOT_LID_OWNER" }, - { 0xC0000113, "STATUS_ABIOS_INVALID_COMMAND" }, - { 0xC0000114, "STATUS_ABIOS_INVALID_LID" }, - { 0xC0000115, "STATUS_ABIOS_SELECTOR_NOT_AVAILABLE" }, - { 0xC0000116, "STATUS_ABIOS_INVALID_SELECTOR" }, - { 0xC0000117, "STATUS_NO_LDT" }, - { 0xC0000118, "STATUS_INVALID_LDT_SIZE" }, - { 0xC0000119, "STATUS_INVALID_LDT_OFFSET" }, - { 0xC000011A, "STATUS_INVALID_LDT_DESCRIPTOR" }, - { 0xC000011B, "STATUS_INVALID_IMAGE_NE_FORMAT" }, - { 0xC000011C, "STATUS_RXACT_INVALID_STATE" }, - { 0xC000011D, "STATUS_RXACT_COMMIT_FAILURE" }, - { 0xC000011E, "STATUS_MAPPED_FILE_SIZE_ZERO" }, - { 0xC000011F, "STATUS_TOO_MANY_OPENED_FILES" }, - { 0xC0000120, "STATUS_CANCELLED" }, - { 0xC0000121, "STATUS_CANNOT_DELETE" }, - { 0xC0000122, "STATUS_INVALID_COMPUTER_NAME" }, - { 0xC0000123, "STATUS_FILE_DELETED" }, - { 0xC0000124, "STATUS_SPECIAL_ACCOUNT" }, - { 0xC0000125, "STATUS_SPECIAL_GROUP" }, - { 0xC0000126, "STATUS_SPECIAL_USER" }, - { 0xC0000127, "STATUS_MEMBERS_PRIMARY_GROUP" }, - { 0xC0000128, "STATUS_FILE_CLOSED" }, - { 0xC0000129, "STATUS_TOO_MANY_THREADS" }, - { 0xC000012A, "STATUS_THREAD_NOT_IN_PROCESS" }, - { 0xC000012B, "STATUS_TOKEN_ALREADY_IN_USE" }, - { 0xC000012C, "STATUS_PAGEFILE_QUOTA_EXCEEDED" }, - { 0xC000012D, "STATUS_COMMITMENT_LIMIT" }, - { 0xC000012E, "STATUS_INVALID_IMAGE_LE_FORMAT" }, - { 0xC000012F, "STATUS_INVALID_IMAGE_NOT_MZ" }, - { 0xC0000130, "STATUS_INVALID_IMAGE_PROTECT" }, - { 0xC0000131, "STATUS_INVALID_IMAGE_WIN_16" }, - { 0xC0000132, "STATUS_LOGON_SERVER_CONFLICT" }, - { 0xC0000133, "STATUS_TIME_DIFFERENCE_AT_DC" }, - { 0xC0000134, "STATUS_SYNCHRONIZATION_REQUIRED" }, - { 0xC0000135, "STATUS_DLL_NOT_FOUND" }, - { 0xC0000136, "STATUS_OPEN_FAILED" }, - { 0xC0000137, "STATUS_IO_PRIVILEGE_FAILED" }, - { 0xC0000138, "STATUS_ORDINAL_NOT_FOUND" }, - { 0xC0000139, "STATUS_ENTRYPOINT_NOT_FOUND" }, - { 0xC000013A, "STATUS_CONTROL_C_EXIT" }, - { 0xC000013B, "STATUS_LOCAL_DISCONNECT" }, - { 0xC000013C, "STATUS_REMOTE_DISCONNECT" }, - { 0xC000013D, "STATUS_REMOTE_RESOURCES" }, - { 0xC000013E, "STATUS_LINK_FAILED" }, - { 0xC000013F, "STATUS_LINK_TIMEOUT" }, - { 0xC0000140, "STATUS_INVALID_CONNECTION" }, - { 0xC0000141, "STATUS_INVALID_ADDRESS" }, - { 0xC0000142, "STATUS_DLL_INIT_FAILED" }, - { 0xC0000143, "STATUS_MISSING_SYSTEMFILE" }, - { 0xC0000144, "STATUS_UNHANDLED_EXCEPTION" }, - { 0xC0000145, "STATUS_APP_INIT_FAILURE" }, - { 0xC0000146, "STATUS_PAGEFILE_CREATE_FAILED" }, - { 0xC0000147, "STATUS_NO_PAGEFILE" }, - { 0xC0000148, "STATUS_INVALID_LEVEL" }, - { 0xC0000149, "STATUS_WRONG_PASSWORD_CORE" }, - { 0xC000014A, "STATUS_ILLEGAL_FLOAT_CONTEXT" }, - { 0xC000014B, "STATUS_PIPE_BROKEN" }, - { 0xC000014C, "STATUS_REGISTRY_CORRUPT" }, - { 0xC000014D, "STATUS_REGISTRY_IO_FAILED" }, - { 0xC000014E, "STATUS_NO_EVENT_PAIR" }, - { 0xC000014F, "STATUS_UNRECOGNIZED_VOLUME" }, - { 0xC0000150, "STATUS_SERIAL_NO_DEVICE_INITED" }, - { 0xC0000151, "STATUS_NO_SUCH_ALIAS" }, - { 0xC0000152, "STATUS_MEMBER_NOT_IN_ALIAS" }, - { 0xC0000153, "STATUS_MEMBER_IN_ALIAS" }, - { 0xC0000154, "STATUS_ALIAS_EXISTS" }, - { 0xC0000155, "STATUS_LOGON_NOT_GRANTED" }, - { 0xC0000156, "STATUS_TOO_MANY_SECRETS" }, - { 0xC0000157, "STATUS_SECRET_TOO_LONG" }, - { 0xC0000158, "STATUS_INTERNAL_DB_ERROR" }, - { 0xC0000159, "STATUS_FULLSCREEN_MODE" }, - { 0xC000015A, "STATUS_TOO_MANY_CONTEXT_IDS" }, - { 0xC000015B, "STATUS_LOGON_TYPE_NOT_GRANTED" }, - { 0xC000015C, "STATUS_NOT_REGISTRY_FILE" }, - { 0xC000015D, "STATUS_NT_CROSS_ENCRYPTION_REQUIRED" }, - { 0xC000015E, "STATUS_DOMAIN_CTRLR_CONFIG_ERROR" }, - { 0xC000015F, "STATUS_FT_MISSING_MEMBER" }, - { 0xC0000160, "STATUS_ILL_FORMED_SERVICE_ENTRY" }, - { 0xC0000161, "STATUS_ILLEGAL_CHARACTER" }, - { 0xC0000162, "STATUS_UNMAPPABLE_CHARACTER" }, - { 0xC0000163, "STATUS_UNDEFINED_CHARACTER" }, - { 0xC0000164, "STATUS_FLOPPY_VOLUME" }, - { 0xC0000165, "STATUS_FLOPPY_ID_MARK_NOT_FOUND" }, - { 0xC0000166, "STATUS_FLOPPY_WRONG_CYLINDER" }, - { 0xC0000167, "STATUS_FLOPPY_UNKNOWN_ERROR" }, - { 0xC0000168, "STATUS_FLOPPY_BAD_REGISTERS" }, - { 0xC0000169, "STATUS_DISK_RECALIBRATE_FAILED" }, - { 0xC000016A, "STATUS_DISK_OPERATION_FAILED" }, - { 0xC000016B, "STATUS_DISK_RESET_FAILED" }, - { 0xC000016C, "STATUS_SHARED_IRQ_BUSY" }, - { 0xC000016D, "STATUS_FT_ORPHANING" }, - { 0xC000016E, "STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT" }, - { 0xC0000172, "STATUS_PARTITION_FAILURE" }, - { 0xC0000173, "STATUS_INVALID_BLOCK_LENGTH" }, - { 0xC0000174, "STATUS_DEVICE_NOT_PARTITIONED" }, - { 0xC0000175, "STATUS_UNABLE_TO_LOCK_MEDIA" }, - { 0xC0000176, "STATUS_UNABLE_TO_UNLOAD_MEDIA" }, - { 0xC0000177, "STATUS_EOM_OVERFLOW" }, - { 0xC0000178, "STATUS_NO_MEDIA" }, - { 0xC000017A, "STATUS_NO_SUCH_MEMBER" }, - { 0xC000017B, "STATUS_INVALID_MEMBER" }, - { 0xC000017C, "STATUS_KEY_DELETED" }, - { 0xC000017D, "STATUS_NO_LOG_SPACE" }, - { 0xC000017E, "STATUS_TOO_MANY_SIDS" }, - { 0xC000017F, "STATUS_LM_CROSS_ENCRYPTION_REQUIRED" }, - { 0xC0000180, "STATUS_KEY_HAS_CHILDREN" }, - { 0xC0000181, "STATUS_CHILD_MUST_BE_VOLATILE" }, - { 0xC0000182, "STATUS_DEVICE_CONFIGURATION_ERROR" }, - { 0xC0000183, "STATUS_DRIVER_INTERNAL_ERROR" }, - { 0xC0000184, "STATUS_INVALID_DEVICE_STATE" }, - { 0xC0000185, "STATUS_IO_DEVICE_ERROR" }, - { 0xC0000186, "STATUS_DEVICE_PROTOCOL_ERROR" }, - { 0xC0000187, "STATUS_BACKUP_CONTROLLER" }, - { 0xC0000188, "STATUS_LOG_FILE_FULL" }, - { 0xC0000189, "STATUS_TOO_LATE" }, - { 0xC000018A, "STATUS_NO_TRUST_LSA_SECRET" }, - { 0xC000018B, "STATUS_NO_TRUST_SAM_ACCOUNT" }, - { 0xC000018C, "STATUS_TRUSTED_DOMAIN_FAILURE" }, - { 0xC000018D, "STATUS_TRUSTED_RELATIONSHIP_FAILURE" }, - { 0xC000018E, "STATUS_EVENTLOG_FILE_CORRUPT" }, - { 0xC000018F, "STATUS_EVENTLOG_CANT_START" }, - { 0xC0000190, "STATUS_TRUST_FAILURE" }, - { 0xC0000191, "STATUS_MUTANT_LIMIT_EXCEEDED" }, - { 0xC0000192, "STATUS_NETLOGON_NOT_STARTED" }, - { 0xC0000193, "STATUS_ACCOUNT_EXPIRED" }, - { 0xC0000194, "STATUS_POSSIBLE_DEADLOCK" }, - { 0xC0000195, "STATUS_NETWORK_CREDENTIAL_CONFLICT" }, - { 0xC0000196, "STATUS_REMOTE_SESSION_LIMIT" }, - { 0xC0000197, "STATUS_EVENTLOG_FILE_CHANGED" }, - { 0xC0000198, "STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT" }, - { 0xC0000199, "STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT" }, - { 0xC000019A, "STATUS_NOLOGON_SERVER_TRUST_ACCOUNT" }, - { 0xC000019B, "STATUS_DOMAIN_TRUST_INCONSISTENT" }, - { 0xC000019C, "STATUS_FS_DRIVER_REQUIRED" }, - { 0xC0000202, "STATUS_NO_USER_SESSION_KEY" }, - { 0xC0000203, "STATUS_USER_SESSION_DELETED" }, - { 0xC0000204, "STATUS_RESOURCE_LANG_NOT_FOUND" }, - { 0xC0000205, "STATUS_INSUFF_SERVER_RESOURCES" }, - { 0xC0000206, "STATUS_INVALID_BUFFER_SIZE" }, - { 0xC0000207, "STATUS_INVALID_ADDRESS_COMPONENT" }, - { 0xC0000208, "STATUS_INVALID_ADDRESS_WILDCARD" }, - { 0xC0000209, "STATUS_TOO_MANY_ADDRESSES" }, - { 0xC000020A, "STATUS_ADDRESS_ALREADY_EXISTS" }, - { 0xC000020B, "STATUS_ADDRESS_CLOSED" }, - { 0xC000020C, "STATUS_CONNECTION_DISCONNECTED" }, - { 0xC000020D, "STATUS_CONNECTION_RESET" }, - { 0xC000020E, "STATUS_TOO_MANY_NODES" }, - { 0xC000020F, "STATUS_TRANSACTION_ABORTED" }, - { 0xC0000210, "STATUS_TRANSACTION_TIMED_OUT" }, - { 0xC0000211, "STATUS_TRANSACTION_NO_RELEASE" }, - { 0xC0000212, "STATUS_TRANSACTION_NO_MATCH" }, - { 0xC0000213, "STATUS_TRANSACTION_RESPONDED" }, - { 0xC0000214, "STATUS_TRANSACTION_INVALID_ID" }, - { 0xC0000215, "STATUS_TRANSACTION_INVALID_TYPE" }, - { 0xC0000216, "STATUS_NOT_SERVER_SESSION" }, - { 0xC0000217, "STATUS_NOT_CLIENT_SESSION" }, - { 0xC0000218, "STATUS_CANNOT_LOAD_REGISTRY_FILE" }, - { 0xC0000219, "STATUS_DEBUG_ATTACH_FAILED" }, - { 0xC000021A, "STATUS_SYSTEM_PROCESS_TERMINATED" }, - { 0xC000021B, "STATUS_DATA_NOT_ACCEPTED" }, - { 0xC000021C, "STATUS_NO_BROWSER_SERVERS_FOUND" }, - { 0xC000021D, "STATUS_VDM_HARD_ERROR" }, - { 0xC000021E, "STATUS_DRIVER_CANCEL_TIMEOUT" }, - { 0xC000021F, "STATUS_REPLY_MESSAGE_MISMATCH" }, - { 0xC0000220, "STATUS_MAPPED_ALIGNMENT" }, - { 0xC0000221, "STATUS_IMAGE_CHECKSUM_MISMATCH" }, - { 0xC0000222, "STATUS_LOST_WRITEBEHIND_DATA" }, - { 0xC0000223, "STATUS_CLIENT_SERVER_PARAMETERS_INVALID" }, - { 0xC0000224, "STATUS_PASSWORD_MUST_CHANGE" }, - { 0xC0000225, "STATUS_NOT_FOUND" }, - { 0xC0000226, "STATUS_NOT_TINY_STREAM" }, - { 0xC0000227, "STATUS_RECOVERY_FAILURE" }, - { 0xC0000228, "STATUS_STACK_OVERFLOW_READ" }, - { 0xC0000229, "STATUS_FAIL_CHECK" }, - { 0xC000022A, "STATUS_DUPLICATE_OBJECTID" }, - { 0xC000022B, "STATUS_OBJECTID_EXISTS" }, - { 0xC000022C, "STATUS_CONVERT_TO_LARGE" }, - { 0xC000022D, "STATUS_RETRY" }, - { 0xC000022E, "STATUS_FOUND_OUT_OF_SCOPE" }, - { 0xC000022F, "STATUS_ALLOCATE_BUCKET" }, - { 0xC0000230, "STATUS_PROPSET_NOT_FOUND" }, - { 0xC0000231, "STATUS_MARSHALL_OVERFLOW" }, - { 0xC0000232, "STATUS_INVALID_VARIANT" }, - { 0xC0000233, "STATUS_DOMAIN_CONTROLLER_NOT_FOUND" }, - { 0xC0000234, "STATUS_ACCOUNT_LOCKED_OUT" }, - { 0xC0000235, "STATUS_HANDLE_NOT_CLOSABLE" }, - { 0xC0000236, "STATUS_CONNECTION_REFUSED" }, - { 0xC0000237, "STATUS_GRACEFUL_DISCONNECT" }, - { 0xC0000238, "STATUS_ADDRESS_ALREADY_ASSOCIATED" }, - { 0xC0000239, "STATUS_ADDRESS_NOT_ASSOCIATED" }, - { 0xC000023A, "STATUS_CONNECTION_INVALID" }, - { 0xC000023B, "STATUS_CONNECTION_ACTIVE" }, - { 0xC000023C, "STATUS_NETWORK_UNREACHABLE" }, - { 0xC000023D, "STATUS_HOST_UNREACHABLE" }, - { 0xC000023E, "STATUS_PROTOCOL_UNREACHABLE" }, - { 0xC000023F, "STATUS_PORT_UNREACHABLE" }, - { 0xC0000240, "STATUS_REQUEST_ABORTED" }, - { 0xC0000241, "STATUS_CONNECTION_ABORTED" }, - { 0xC0000242, "STATUS_BAD_COMPRESSION_BUFFER" }, - { 0xC0000243, "STATUS_USER_MAPPED_FILE" }, - { 0xC0000244, "STATUS_AUDIT_FAILED" }, - { 0xC0000245, "STATUS_TIMER_RESOLUTION_NOT_SET" }, - { 0xC0000246, "STATUS_CONNECTION_COUNT_LIMIT" }, - { 0xC0000247, "STATUS_LOGIN_TIME_RESTRICTION" }, - { 0xC0000248, "STATUS_LOGIN_WKSTA_RESTRICTION" }, - { 0xC0000249, "STATUS_IMAGE_MP_UP_MISMATCH" }, - { 0xC0000250, "STATUS_INSUFFICIENT_LOGON_INFO" }, - { 0xC0000251, "STATUS_BAD_DLL_ENTRYPOINT" }, - { 0xC0000252, "STATUS_BAD_SERVICE_ENTRYPOINT" }, - { 0xC0000253, "STATUS_LPC_REPLY_LOST" }, - { 0xC0000254, "STATUS_IP_ADDRESS_CONFLICT1" }, - { 0xC0000255, "STATUS_IP_ADDRESS_CONFLICT2" }, - { 0xC0000256, "STATUS_REGISTRY_QUOTA_LIMIT" }, - { 0xC0000257, "STATUS_PATH_NOT_COVERED" }, - { 0xC0000258, "STATUS_NO_CALLBACK_ACTIVE" }, - { 0xC0000259, "STATUS_LICENSE_QUOTA_EXCEEDED" }, - { 0xC000025A, "STATUS_PWD_TOO_SHORT" }, - { 0xC000025B, "STATUS_PWD_TOO_RECENT" }, - { 0xC000025C, "STATUS_PWD_HISTORY_CONFLICT" }, - { 0xC000025E, "STATUS_PLUGPLAY_NO_DEVICE" }, - { 0xC000025F, "STATUS_UNSUPPORTED_COMPRESSION" }, - { 0xC0000260, "STATUS_INVALID_HW_PROFILE" }, - { 0xC0000261, "STATUS_INVALID_PLUGPLAY_DEVICE_PATH" }, - { 0xC0000262, "STATUS_DRIVER_ORDINAL_NOT_FOUND" }, - { 0xC0000263, "STATUS_DRIVER_ENTRYPOINT_NOT_FOUND" }, - { 0xC0000264, "STATUS_RESOURCE_NOT_OWNED" }, - { 0xC0000265, "STATUS_TOO_MANY_LINKS" }, - { 0xC0000266, "STATUS_QUOTA_LIST_INCONSISTENT" }, - { 0xC0000267, "STATUS_FILE_IS_OFFLINE" }, - { 0xC0000268, "STATUS_EVALUATION_EXPIRATION" }, - { 0xC0000269, "STATUS_ILLEGAL_DLL_RELOCATION" }, - { 0xC000026A, "STATUS_LICENSE_VIOLATION" }, - { 0xC000026B, "STATUS_DLL_INIT_FAILED_LOGOFF" }, - { 0xC000026C, "STATUS_DRIVER_UNABLE_TO_LOAD" }, - { 0xC000026D, "STATUS_DFS_UNAVAILABLE" }, - { 0xC000026E, "STATUS_VOLUME_DISMOUNTED" }, - { 0xC000026F, "STATUS_WX86_INTERNAL_ERROR" }, - { 0xC0000270, "STATUS_WX86_FLOAT_STACK_CHECK" }, - { 0xC0000271, "STATUS_VALIDATE_CONTINUE" }, - { 0xC0000272, "STATUS_NO_MATCH" }, - { 0xC0000273, "STATUS_NO_MORE_MATCHES" }, - { 0xC0000275, "STATUS_NOT_A_REPARSE_POINT" }, - { 0xC0000276, "STATUS_IO_REPARSE_TAG_INVALID" }, - { 0xC0000277, "STATUS_IO_REPARSE_TAG_MISMATCH" }, - { 0xC0000278, "STATUS_IO_REPARSE_DATA_INVALID" }, - { 0xC0000279, "STATUS_IO_REPARSE_TAG_NOT_HANDLED" }, - { 0xC0000280, "STATUS_REPARSE_POINT_NOT_RESOLVED" }, - { 0xC0000281, "STATUS_DIRECTORY_IS_A_REPARSE_POINT" }, - { 0xC0000282, "STATUS_RANGE_LIST_CONFLICT" }, - { 0xC0000283, "STATUS_SOURCE_ELEMENT_EMPTY" }, - { 0xC0000284, "STATUS_DESTINATION_ELEMENT_FULL" }, - { 0xC0000285, "STATUS_ILLEGAL_ELEMENT_ADDRESS" }, - { 0xC0000286, "STATUS_MAGAZINE_NOT_PRESENT" }, - { 0xC0000287, "STATUS_REINITIALIZATION_NEEDED" }, - { 0x80000288, "STATUS_DEVICE_REQUIRES_CLEANING" }, - { 0x80000289, "STATUS_DEVICE_DOOR_OPEN" }, - { 0xC000028A, "STATUS_ENCRYPTION_FAILED" }, - { 0xC000028B, "STATUS_DECRYPTION_FAILED" }, - { 0xC000028C, "STATUS_RANGE_NOT_FOUND" }, - { 0xC000028D, "STATUS_NO_RECOVERY_POLICY" }, - { 0xC000028E, "STATUS_NO_EFS" }, - { 0xC000028F, "STATUS_WRONG_EFS" }, - { 0xC0000290, "STATUS_NO_USER_KEYS" }, - { 0xC0000291, "STATUS_FILE_NOT_ENCRYPTED" }, - { 0xC0000292, "STATUS_NOT_EXPORT_FORMAT" }, - { 0xC0000293, "STATUS_FILE_ENCRYPTED" }, - { 0x40000294, "STATUS_WAKE_SYSTEM" }, - { 0xC0000295, "STATUS_WMI_GUID_NOT_FOUND" }, - { 0xC0000296, "STATUS_WMI_INSTANCE_NOT_FOUND" }, - { 0xC0000297, "STATUS_WMI_ITEMID_NOT_FOUND" }, - { 0xC0000298, "STATUS_WMI_TRY_AGAIN" }, - { 0xC0000299, "STATUS_SHARED_POLICY" }, - { 0xC000029A, "STATUS_POLICY_OBJECT_NOT_FOUND" }, - { 0xC000029B, "STATUS_POLICY_ONLY_IN_DS" }, - { 0xC000029C, "STATUS_VOLUME_NOT_UPGRADED" }, - { 0xC000029D, "STATUS_REMOTE_STORAGE_NOT_ACTIVE" }, - { 0xC000029E, "STATUS_REMOTE_STORAGE_MEDIA_ERROR" }, - { 0xC000029F, "STATUS_NO_TRACKING_SERVICE" }, - { 0xC00002A0, "STATUS_SERVER_SID_MISMATCH" }, - { 0xC00002A1, "STATUS_DS_NO_ATTRIBUTE_OR_VALUE" }, - { 0xC00002A2, "STATUS_DS_INVALID_ATTRIBUTE_SYNTAX" }, - { 0xC00002A3, "STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED" }, - { 0xC00002A4, "STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS" }, - { 0xC00002A5, "STATUS_DS_BUSY" }, - { 0xC00002A6, "STATUS_DS_UNAVAILABLE" }, - { 0xC00002A7, "STATUS_DS_NO_RIDS_ALLOCATED" }, - { 0xC00002A8, "STATUS_DS_NO_MORE_RIDS" }, - { 0xC00002A9, "STATUS_DS_INCORRECT_ROLE_OWNER" }, - { 0xC00002AA, "STATUS_DS_RIDMGR_INIT_ERROR" }, - { 0xC00002AB, "STATUS_DS_OBJ_CLASS_VIOLATION" }, - { 0xC00002AC, "STATUS_DS_CANT_ON_NON_LEAF" }, - { 0xC00002AD, "STATUS_DS_CANT_ON_RDN" }, - { 0xC00002AE, "STATUS_DS_CANT_MOD_OBJ_CLASS" }, - { 0xC00002AF, "STATUS_DS_CROSS_DOM_MOVE_FAILED" }, - { 0xC00002B0, "STATUS_DS_GC_NOT_AVAILABLE" }, - { 0xC00002B1, "STATUS_DIRECTORY_SERVICE_REQUIRED" }, - { 0xC00002B2, "STATUS_REPARSE_ATTRIBUTE_CONFLICT" }, - { 0xC00002B3, "STATUS_CANT_ENABLE_DENY_ONLY" }, - { 0xC00002B4, "STATUS_FLOAT_MULTIPLE_FAULTS" }, - { 0xC00002B5, "STATUS_FLOAT_MULTIPLE_TRAPS" }, - { 0xC00002B6, "STATUS_DEVICE_REMOVED" }, - { 0xC00002B7, "STATUS_JOURNAL_DELETE_IN_PROGRESS" }, - { 0xC00002B8, "STATUS_JOURNAL_NOT_ACTIVE" }, - { 0xC00002B9, "STATUS_NOINTERFACE" }, - { 0xC00002C1, "STATUS_DS_ADMIN_LIMIT_EXCEEDED" }, - { 0xC00002C2, "STATUS_DRIVER_FAILED_SLEEP" }, - { 0xC00002C3, "STATUS_MUTUAL_AUTHENTICATION_FAILED" }, - { 0xC00002C4, "STATUS_CORRUPT_SYSTEM_FILE" }, - { 0xC00002C5, "STATUS_DATATYPE_MISALIGNMENT_ERROR" }, - { 0xC00002C6, "STATUS_WMI_READ_ONLY" }, - { 0xC00002C7, "STATUS_WMI_SET_FAILURE" }, - { 0xC00002C8, "STATUS_COMMITMENT_MINIMUM" }, - { 0xC00002C9, "STATUS_REG_NAT_CONSUMPTION" }, - { 0xC00002CA, "STATUS_TRANSPORT_FULL" }, - { 0xC00002CB, "STATUS_DS_SAM_INIT_FAILURE" }, - { 0xC00002CC, "STATUS_ONLY_IF_CONNECTED" }, - { 0xC00002CD, "STATUS_DS_SENSITIVE_GROUP_VIOLATION" }, - { 0xC00002CE, "STATUS_PNP_RESTART_ENUMERATION" }, - { 0xC00002CF, "STATUS_JOURNAL_ENTRY_DELETED" }, - { 0xC00002D0, "STATUS_DS_CANT_MOD_PRIMARYGROUPID" }, - { 0xC00002D1, "STATUS_SYSTEM_IMAGE_BAD_SIGNATURE" }, - { 0xC00002D2, "STATUS_PNP_REBOOT_REQUIRED" }, - { 0xC00002D3, "STATUS_POWER_STATE_INVALID" }, - { 0xC00002D4, "STATUS_DS_INVALID_GROUP_TYPE" }, - { 0xC00002D5, "STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN" }, - { 0xC00002D6, "STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN" }, - { 0xC00002D7, "STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER" }, - { 0xC00002D8, "STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER" }, - { 0xC00002D9, "STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER" }, - { 0xC00002DA, "STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER" }, - { 0xC00002DB, "STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER" }, - { 0xC00002DC, "STATUS_DS_HAVE_PRIMARY_MEMBERS" }, - { 0xC00002DD, "STATUS_WMI_NOT_SUPPORTED" }, - { 0xC00002DE, "STATUS_INSUFFICIENT_POWER" }, - { 0xC00002DF, "STATUS_SAM_NEED_BOOTKEY_PASSWORD" }, - { 0xC00002E0, "STATUS_SAM_NEED_BOOTKEY_FLOPPY" }, - { 0xC00002E1, "STATUS_DS_CANT_START" }, - { 0xC00002E2, "STATUS_DS_INIT_FAILURE" }, - { 0xC00002E3, "STATUS_SAM_INIT_FAILURE" }, - { 0xC00002E4, "STATUS_DS_GC_REQUIRED" }, - { 0xC00002E5, "STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY" }, - { 0xC00002E6, "STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS" }, - { 0xC00002E7, "STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED" }, - { 0xC00002E8, "STATUS_MULTIPLE_FAULT_VIOLATION" }, - { 0xC0000300, "STATUS_NOT_SUPPORTED_ON_SBS" }, - { 0xC0009898, "STATUS_WOW_ASSERTION" }, - { 0xC0020001, "RPC_NT_INVALID_STRING_BINDING" }, - { 0xC0020002, "RPC_NT_WRONG_KIND_OF_BINDING" }, - { 0xC0020003, "RPC_NT_INVALID_BINDING" }, - { 0xC0020004, "RPC_NT_PROTSEQ_NOT_SUPPORTED" }, - { 0xC0020005, "RPC_NT_INVALID_RPC_PROTSEQ" }, - { 0xC0020006, "RPC_NT_INVALID_STRING_UUID" }, - { 0xC0020007, "RPC_NT_INVALID_ENDPOINT_FORMAT" }, - { 0xC0020008, "RPC_NT_INVALID_NET_ADDR" }, - { 0xC0020009, "RPC_NT_NO_ENDPOINT_FOUND" }, - { 0xC002000A, "RPC_NT_INVALID_TIMEOUT" }, - { 0xC002000B, "RPC_NT_OBJECT_NOT_FOUND" }, - { 0xC002000C, "RPC_NT_ALREADY_REGISTERED" }, - { 0xC002000D, "RPC_NT_TYPE_ALREADY_REGISTERED" }, - { 0xC002000E, "RPC_NT_ALREADY_LISTENING" }, - { 0xC002000F, "RPC_NT_NO_PROTSEQS_REGISTERED" }, - { 0xC0020010, "RPC_NT_NOT_LISTENING" }, - { 0xC0020011, "RPC_NT_UNKNOWN_MGR_TYPE" }, - { 0xC0020012, "RPC_NT_UNKNOWN_IF" }, - { 0xC0020013, "RPC_NT_NO_BINDINGS" }, - { 0xC0020014, "RPC_NT_NO_PROTSEQS" }, - { 0xC0020015, "RPC_NT_CANT_CREATE_ENDPOINT" }, - { 0xC0020016, "RPC_NT_OUT_OF_RESOURCES" }, - { 0xC0020017, "RPC_NT_SERVER_UNAVAILABLE" }, - { 0xC0020018, "RPC_NT_SERVER_TOO_BUSY" }, - { 0xC0020019, "RPC_NT_INVALID_NETWORK_OPTIONS" }, - { 0xC002001A, "RPC_NT_NO_CALL_ACTIVE" }, - { 0xC002001B, "RPC_NT_CALL_FAILED" }, - { 0xC002001C, "RPC_NT_CALL_FAILED_DNE" }, - { 0xC002001D, "RPC_NT_PROTOCOL_ERROR" }, - { 0xC002001F, "RPC_NT_UNSUPPORTED_TRANS_SYN" }, - { 0xC0020021, "RPC_NT_UNSUPPORTED_TYPE" }, - { 0xC0020022, "RPC_NT_INVALID_TAG" }, - { 0xC0020023, "RPC_NT_INVALID_BOUND" }, - { 0xC0020024, "RPC_NT_NO_ENTRY_NAME" }, - { 0xC0020025, "RPC_NT_INVALID_NAME_SYNTAX" }, - { 0xC0020026, "RPC_NT_UNSUPPORTED_NAME_SYNTAX" }, - { 0xC0020028, "RPC_NT_UUID_NO_ADDRESS" }, - { 0xC0020029, "RPC_NT_DUPLICATE_ENDPOINT" }, - { 0xC002002A, "RPC_NT_UNKNOWN_AUTHN_TYPE" }, - { 0xC002002B, "RPC_NT_MAX_CALLS_TOO_SMALL" }, - { 0xC002002C, "RPC_NT_STRING_TOO_LONG" }, - { 0xC002002D, "RPC_NT_PROTSEQ_NOT_FOUND" }, - { 0xC002002E, "RPC_NT_PROCNUM_OUT_OF_RANGE" }, - { 0xC002002F, "RPC_NT_BINDING_HAS_NO_AUTH" }, - { 0xC0020030, "RPC_NT_UNKNOWN_AUTHN_SERVICE" }, - { 0xC0020031, "RPC_NT_UNKNOWN_AUTHN_LEVEL" }, - { 0xC0020032, "RPC_NT_INVALID_AUTH_IDENTITY" }, - { 0xC0020033, "RPC_NT_UNKNOWN_AUTHZ_SERVICE" }, - { 0xC0020034, "EPT_NT_INVALID_ENTRY" }, - { 0xC0020035, "EPT_NT_CANT_PERFORM_OP" }, - { 0xC0020036, "EPT_NT_NOT_REGISTERED" }, - { 0xC0020037, "RPC_NT_NOTHING_TO_EXPORT" }, - { 0xC0020038, "RPC_NT_INCOMPLETE_NAME" }, - { 0xC0020039, "RPC_NT_INVALID_VERS_OPTION" }, - { 0xC002003A, "RPC_NT_NO_MORE_MEMBERS" }, - { 0xC002003B, "RPC_NT_NOT_ALL_OBJS_UNEXPORTED" }, - { 0xC002003C, "RPC_NT_INTERFACE_NOT_FOUND" }, - { 0xC002003D, "RPC_NT_ENTRY_ALREADY_EXISTS" }, - { 0xC002003E, "RPC_NT_ENTRY_NOT_FOUND" }, - { 0xC002003F, "RPC_NT_NAME_SERVICE_UNAVAILABLE" }, - { 0xC0020040, "RPC_NT_INVALID_NAF_ID" }, - { 0xC0020041, "RPC_NT_CANNOT_SUPPORT" }, - { 0xC0020042, "RPC_NT_NO_CONTEXT_AVAILABLE" }, - { 0xC0020043, "RPC_NT_INTERNAL_ERROR" }, - { 0xC0020044, "RPC_NT_ZERO_DIVIDE" }, - { 0xC0020045, "RPC_NT_ADDRESS_ERROR" }, - { 0xC0020046, "RPC_NT_FP_DIV_ZERO" }, - { 0xC0020047, "RPC_NT_FP_UNDERFLOW" }, - { 0xC0020048, "RPC_NT_FP_OVERFLOW" }, - { 0xC0021007, "RPC_P_RECEIVE_ALERTED" }, - { 0xC0021008, "RPC_P_CONNECTION_CLOSED" }, - { 0xC0021009, "RPC_P_RECEIVE_FAILED" }, - { 0xC002100A, "RPC_P_SEND_FAILED" }, - { 0xC002100B, "RPC_P_TIMEOUT" }, - { 0xC002100C, "RPC_P_SERVER_TRANSPORT_ERROR" }, - { 0xC002100E, "RPC_P_EXCEPTION_OCCURED" }, - { 0xC0021012, "RPC_P_CONNECTION_SHUTDOWN" }, - { 0xC0021015, "RPC_P_THREAD_LISTENING" }, - { 0xC0030001, "RPC_NT_NO_MORE_ENTRIES" }, - { 0xC0030002, "RPC_NT_SS_CHAR_TRANS_OPEN_FAIL" }, - { 0xC0030003, "RPC_NT_SS_CHAR_TRANS_SHORT_FILE" }, - { 0xC0030004, "RPC_NT_SS_IN_NULL_CONTEXT" }, - { 0xC0030005, "RPC_NT_SS_CONTEXT_MISMATCH" }, - { 0xC0030006, "RPC_NT_SS_CONTEXT_DAMAGED" }, - { 0xC0030007, "RPC_NT_SS_HANDLES_MISMATCH" }, - { 0xC0030008, "RPC_NT_SS_CANNOT_GET_CALL_HANDLE" }, - { 0xC0030009, "RPC_NT_NULL_REF_POINTER" }, - { 0xC003000A, "RPC_NT_ENUM_VALUE_OUT_OF_RANGE" }, - { 0xC003000B, "RPC_NT_BYTE_COUNT_TOO_SMALL" }, - { 0xC003000C, "RPC_NT_BAD_STUB_DATA" }, - { 0xC0020049, "RPC_NT_CALL_IN_PROGRESS" }, - { 0xC002004A, "RPC_NT_NO_MORE_BINDINGS" }, - { 0xC002004B, "RPC_NT_GROUP_MEMBER_NOT_FOUND" }, - { 0xC002004C, "EPT_NT_CANT_CREATE" }, - { 0xC002004D, "RPC_NT_INVALID_OBJECT" }, - { 0xC002004F, "RPC_NT_NO_INTERFACES" }, - { 0xC0020050, "RPC_NT_CALL_CANCELLED" }, - { 0xC0020051, "RPC_NT_BINDING_INCOMPLETE" }, - { 0xC0020052, "RPC_NT_COMM_FAILURE" }, - { 0xC0020053, "RPC_NT_UNSUPPORTED_AUTHN_LEVEL" }, - { 0xC0020054, "RPC_NT_NO_PRINC_NAME" }, - { 0xC0020055, "RPC_NT_NOT_RPC_ERROR" }, - { 0x40020056, "RPC_NT_UUID_LOCAL_ONLY" }, - { 0xC0020057, "RPC_NT_SEC_PKG_ERROR" }, - { 0xC0020058, "RPC_NT_NOT_CANCELLED" }, - { 0xC0030059, "RPC_NT_INVALID_ES_ACTION" }, - { 0xC003005A, "RPC_NT_WRONG_ES_VERSION" }, - { 0xC003005B, "RPC_NT_WRONG_STUB_VERSION" }, - { 0xC003005C, "RPC_NT_INVALID_PIPE_OBJECT" }, - { 0xC003005D, "RPC_NT_INVALID_PIPE_OPERATION" }, - { 0xC003005E, "RPC_NT_WRONG_PIPE_VERSION" }, - { 0x400200AF, "RPC_NT_SEND_INCOMPLETE" }, - { 0, NULL } -}; - -/* - * return an NT error string from a SMB buffer - */ -const char * -nt_errstr(u_int32_t err) -{ - static char ret[128]; - int i; - - ret[0] = 0; - - for (i = 0; nt_errors[i].name; i++) { - if (err == nt_errors[i].code) - return nt_errors[i].name; - } - - snprintf(ret, sizeof(ret), "0x%08x", err); - return ret; -} diff --git a/contrib/tcpdump/stime.awk b/contrib/tcpdump/stime.awk deleted file mode 100644 index 61891f247b950..0000000000000 --- a/contrib/tcpdump/stime.awk +++ /dev/null @@ -1,19 +0,0 @@ -$6 !~ /^ack/ && $5 !~ /[SFR]/ { - # given a tcpdump ftp trace, output one line for each send - # in the form - # <send time> <seq no> - # where <send time> is the time packet was sent (in seconds with - # zero at time of first packet) and <seq no> is the tcp sequence - # number of the packet divided by 1024 (i.e., Kbytes sent). - # - # convert time to seconds - n = split ($1,t,":") - tim = t[1]*3600 + t[2]*60 + t[3] - if (! tzero) { - tzero = tim - OFS = "\t" - } - # get packet sequence number - i = index($6,":") - printf "%7.2f\t%g\n", tim-tzero, substr($6,1,i-1)/1024 - } diff --git a/contrib/tcpdump/strcasecmp.c b/contrib/tcpdump/strcasecmp.c deleted file mode 100644 index aa6d0074219b8..0000000000000 --- a/contrib/tcpdump/strcasecmp.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 1987 Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that this notice is preserved and that due credit is given - * to the University of California at Berkeley. The name of the University - * may not be used to endorse or promote products derived from this - * software without specific written prior permission. This software - * is provided ``as is'' without express or implied warranty. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/strcasecmp.c,v 1.6 2003/11/16 09:36:43 guy Exp $"; -#endif - -#include <tcpdump-stdinc.h> - -#include "interface.h" - -/* - * This array is designed for mapping upper and lower case letter - * together for a case independent comparison. The mappings are - * based upon ascii character sequences. - */ -static u_char charmap[] = { - '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', - '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', - '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', - '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', - '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', - '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', - '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', - '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', - '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', - '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', - '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', - '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', - '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', - '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', - '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', - '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', - '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', - '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', - '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', - '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', - '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', - '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', - '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', - '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', - '\300', '\341', '\342', '\343', '\344', '\345', '\346', '\347', - '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', - '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', - '\370', '\371', '\372', '\333', '\334', '\335', '\336', '\337', - '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', - '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', - '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', - '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377', -}; - -int -strcasecmp(s1, s2) - const char *s1, *s2; -{ - register u_char *cm = charmap, - *us1 = (u_char *)s1, - *us2 = (u_char *)s2; - - while (cm[*us1] == cm[*us2++]) - if (*us1++ == '\0') - return(0); - return(cm[*us1] - cm[*--us2]); -} - -int -strncasecmp(s1, s2, n) - const char *s1, *s2; - register int n; -{ - register u_char *cm = charmap, - *us1 = (u_char *)s1, - *us2 = (u_char *)s2; - - while (--n >= 0 && cm[*us1] == cm[*us2++]) - if (*us1++ == '\0') - return(0); - return(n < 0 ? 0 : cm[*us1] - cm[*--us2]); -} diff --git a/contrib/tcpdump/tcp.h b/contrib/tcpdump/tcp.h deleted file mode 100644 index b7eef8f26d855..0000000000000 --- a/contrib/tcpdump/tcp.h +++ /dev/null @@ -1,84 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/tcp.h,v 1.11 2004/03/23 07:15:37 guy Exp $ (LBL) */ -/* - * Copyright (c) 1982, 1986, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)tcp.h 8.1 (Berkeley) 6/10/93 - */ - -typedef u_int32_t tcp_seq; -/* - * TCP header. - * Per RFC 793, September, 1981. - */ -struct tcphdr { - u_int16_t th_sport; /* source port */ - u_int16_t th_dport; /* destination port */ - tcp_seq th_seq; /* sequence number */ - tcp_seq th_ack; /* acknowledgement number */ - u_int8_t th_offx2; /* data offset, rsvd */ -#define TH_OFF(th) (((th)->th_offx2 & 0xf0) >> 4) - u_int8_t th_flags; -#define TH_FIN 0x01 -#define TH_SYN 0x02 -#define TH_RST 0x04 -#define TH_PUSH 0x08 -#define TH_ACK 0x10 -#define TH_URG 0x20 -#define TH_ECNECHO 0x40 /* ECN Echo */ -#define TH_CWR 0x80 /* ECN Cwnd Reduced */ - u_int16_t th_win; /* window */ - u_int16_t th_sum; /* checksum */ - u_int16_t th_urp; /* urgent pointer */ -}; - -#define TCPOPT_EOL 0 -#define TCPOPT_NOP 1 -#define TCPOPT_MAXSEG 2 -#define TCPOLEN_MAXSEG 4 -#define TCPOPT_WSCALE 3 /* window scale factor (rfc1323) */ -#define TCPOPT_SACKOK 4 /* selective ack ok (rfc2018) */ -#define TCPOPT_SACK 5 /* selective ack (rfc2018) */ -#define TCPOPT_ECHO 6 /* echo (rfc1072) */ -#define TCPOPT_ECHOREPLY 7 /* echo (rfc1072) */ -#define TCPOPT_TIMESTAMP 8 /* timestamp (rfc1323) */ -#define TCPOLEN_TIMESTAMP 10 -#define TCPOLEN_TSTAMP_APPA (TCPOLEN_TIMESTAMP+2) /* appendix A */ -#define TCPOPT_CC 11 /* T/TCP CC options (rfc1644) */ -#define TCPOPT_CCNEW 12 /* T/TCP CC options (rfc1644) */ -#define TCPOPT_CCECHO 13 /* T/TCP CC options (rfc1644) */ -#define TCPOPT_SIGNATURE 19 /* Keyed MD5 (rfc2385) */ -#define TCPOLEN_SIGNATURE 18 - -#define TCP_SIGLEN 16 /* length of an option 19 digest */ - -#define TCPOPT_TSTAMP_HDR \ - (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP) diff --git a/contrib/tcpdump/tcpdump-stdinc.h b/contrib/tcpdump/tcpdump-stdinc.h deleted file mode 100644 index 0319ff9ca83e8..0000000000000 --- a/contrib/tcpdump/tcpdump-stdinc.h +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright (c) 2002 - 2003 - * NetGroup, Politecnico di Torino (Italy) - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Politecnico di Torino nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * @(#) $Header: /tcpdump/master/tcpdump/tcpdump-stdinc.h,v 1.12.2.4 2005/07/09 21:19:45 risso Exp $ (LBL) - */ - -/* - * Include the appropriate OS header files on Windows and various flavors - * of UNIX, and also define some additional items and include various - * non-OS header files on Windows, and; this isolates most of the platform - * differences to this one file. - */ - -#ifndef tcpdump_stdinc_h -#define tcpdump_stdinc_h - -#ifdef WIN32 - -#include <stdio.h> -#include <winsock2.h> -#include <Ws2tcpip.h> -#include "bittypes.h" -#include <ctype.h> -#include <time.h> -#include <io.h> -#include <fcntl.h> -#include <sys/types.h> -#include <net/netdb.h> /* in wpcap's Win32/include */ - -#if !defined(__MINGW32__) && !defined(__WATCOMC__) -#undef toascii -#define isascii __isascii -#define toascii __toascii -#define stat _stat -#define open _open -#define fstat _fstat -#define read _read -#define close _close -#define O_RDONLY _O_RDONLY - -typedef short ino_t; -#endif /* __MINGW32__ */ - -#ifdef __MINGW32__ -#include <stdint.h> -#endif - -/* Protos for missing/x.c functions (ideally <missing/addrinfo.h> - * should be used, but it clashes with <ws2tcpip.h>). - */ -extern const char *inet_ntop (int, const void *, char *, size_t); -extern int inet_pton (int, const char *, void *); -extern int inet_aton (const char *cp, struct in_addr *addr); - -#ifndef INET6_ADDRSTRLEN -#define INET6_ADDRSTRLEN 46 -#endif - -#ifndef toascii -#define toascii(c) ((c) & 0x7f) -#endif - -#ifndef caddr_t -typedef char* caddr_t; -#endif /* caddr_t */ - -#define MAXHOSTNAMELEN 64 -#define NI_MAXHOST 1025 -#define snprintf _snprintf -#define vsnprintf _vsnprintf -#define RETSIGTYPE void - -#else /* WIN32 */ - -#include <ctype.h> -#include <unistd.h> -#include <netdb.h> -#if HAVE_INTTYPES_H -#include <inttypes.h> -#else -#if HAVE_STDINT_H -#include <stdint.h> -#endif -#endif -#ifdef HAVE_SYS_BITYPES_H -#include <sys/bitypes.h> -#endif -#include <sys/param.h> -#include <sys/types.h> /* concession to AIX */ -#include <sys/time.h> -#include <sys/socket.h> -#include <netinet/in.h> - -#ifdef TIME_WITH_SYS_TIME -#include <time.h> -#endif - -#include <arpa/inet.h> - -#endif /* WIN32 */ - -#ifdef INET6 -#include "ip6.h" -#endif - -#if defined(WIN32) || defined(MSDOS) - #define FOPEN_READ_TXT "rt" - #define FOPEN_READ_BIN "rb" - #define FOPEN_WRITE_TXT "wt" - #define FOPEN_WRITE_BIN "wb" -#else - #define FOPEN_READ_TXT "r" - #define FOPEN_READ_BIN FOPEN_READ_TXT - #define FOPEN_WRITE_TXT "w" - #define FOPEN_WRITE_BIN FOPEN_WRITE_TXT -#endif - -#if defined(__GNUC__) && defined(__i386__) && !defined(__ntohl) - #undef ntohl - #undef ntohs - #undef htonl - #undef htons - - extern __inline__ unsigned long __ntohl (unsigned long x); - extern __inline__ unsigned short __ntohs (unsigned short x); - - #define ntohl(x) __ntohl(x) - #define ntohs(x) __ntohs(x) - #define htonl(x) __ntohl(x) - #define htons(x) __ntohs(x) - - extern __inline__ unsigned long __ntohl (unsigned long x) - { - __asm__ ("xchgb %b0, %h0\n\t" /* swap lower bytes */ - "rorl $16, %0\n\t" /* swap words */ - "xchgb %b0, %h0" /* swap higher bytes */ - : "=q" (x) : "0" (x)); - return (x); - } - - extern __inline__ unsigned short __ntohs (unsigned short x) - { - __asm__ ("xchgb %b0, %h0" /* swap bytes */ - : "=q" (x) : "0" (x)); - return (x); - } -#endif - -#ifndef INET_ADDRSTRLEN -#define INET_ADDRSTRLEN 16 -#endif - -#endif /* tcpdump_stdinc_h */ diff --git a/contrib/tcpdump/tcpdump.1 b/contrib/tcpdump/tcpdump.1 deleted file mode 100644 index d44beeb9d559b..0000000000000 --- a/contrib/tcpdump/tcpdump.1 +++ /dev/null @@ -1,2339 +0,0 @@ -.\" @(#) $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 $ -.\" -.\" Copyright (c) 1987, 1988, 1989, 1990, 1991, 1992, 1994, 1995, 1996, 1997 -.\" The Regents of the University of California. All rights reserved. -.\" All rights reserved. -.\" -.\" 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, (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, and (3) all advertising materials mentioning -.\" features or use of this software display the following acknowledgement: -.\" ``This product includes software developed by the University of California, -.\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name of -.\" the University nor the names of its contributors may be used to endorse -.\" or promote products derived from this software without specific prior -.\" written permission. -.\" 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. -.\" -.TH TCPDUMP 1 "18 April 2005" -.SH NAME -tcpdump \- dump traffic on a network -.SH SYNOPSIS -.na -.B tcpdump -[ -.B \-AdDeflLnNOpqRStuUvxX -] [ -.B \-c -.I count -] -.br -.ti +8 -[ -.B \-C -.I file_size -] [ -.B \-F -.I file -] -.br -.ti +8 -[ -.B \-i -.I interface -] -[ -.B \-m -.I module -] -[ -.B \-M -.I secret -] -.br -.ti +8 -[ -.B \-r -.I file -] -[ -.B \-s -.I snaplen -] -[ -.B \-T -.I type -] -[ -.B \-w -.I file -] -.br -.ti +8 -[ -.B \-W -.I filecount -] -.br -.ti +8 -[ -.B \-E -.I spi@ipaddr algo:secret,... -] -.br -.ti +8 -[ -.B \-y -.I datalinktype -] -[ -.B \-Z -.I user -] -.ti +8 -[ -.I expression -] -.br -.ad -.SH DESCRIPTION -.LP -\fITcpdump\fP prints out the headers of packets on a network interface -that match the boolean \fIexpression\fP. It can also be run with the -.B \-w -flag, which causes it to save the packet data to a file for later -analysis, and/or with the -.B \-r -flag, which causes it to read from a saved packet file rather than to -read packets from a network interface. In all cases, only packets that -match -.I expression -will be processed by -.IR tcpdump . -.LP -.I Tcpdump -will, if not run with the -.B \-c -flag, continue capturing packets until it is interrupted by a SIGINT -signal (generated, for example, by typing your interrupt character, -typically control-C) or a SIGTERM signal (typically generated with the -.BR kill (1) -command); if run with the -.B \-c -flag, it will capture packets until it is interrupted by a SIGINT or -SIGTERM signal or the specified number of packets have been processed. -.LP -When -.I tcpdump -finishes capturing packets, it will report counts of: -.IP -packets ``captured'' (this is the number of packets that -.I tcpdump -has received and processed); -.IP -packets ``received by filter'' (the meaning of this depends on the OS on -which you're running -.IR tcpdump , -and possibly on the way the OS was configured - if a filter was -specified on the command line, on some OSes it counts packets regardless -of whether they were matched by the filter expression and, even if they -were matched by the filter expression, regardless of whether -.I tcpdump -has read and processed them yet, on other OSes it counts only packets that were -matched by the filter expression regardless of whether -.I tcpdump -has read and processed them yet, and on other OSes it counts only -packets that were matched by the filter expression and were processed by -.IR tcpdump ); -.IP -packets ``dropped by kernel'' (this is the number of packets that were -dropped, due to a lack of buffer space, by the packet capture mechanism -in the OS on which -.I tcpdump -is running, if the OS reports that information to applications; if not, -it will be reported as 0). -.LP -On platforms that support the SIGINFO signal, such as most BSDs -(including Mac OS X) and Digital/Tru64 UNIX, it will report those counts -when it receives a SIGINFO signal (generated, for example, by typing -your ``status'' character, typically control-T, although on some -platforms, such as Mac OS X, the ``status'' character is not set by -default, so you must set it with -.BR stty (1) -in order to use it) and will continue capturing packets. -.LP -Reading packets from a network interface may require that you have -special privileges: -.TP -.B Under SunOS 3.x or 4.x with NIT or BPF: -You must have read access to -.I /dev/nit -or -.IR /dev/bpf* . -.TP -.B Under Solaris with DLPI: -You must have read/write access to the network pseudo device, e.g. -.IR /dev/le . -On at least some versions of Solaris, however, this is not sufficient to -allow -.I tcpdump -to capture in promiscuous mode; on those versions of Solaris, you must -be root, or -.I tcpdump -must be installed setuid to root, in order to capture in promiscuous -mode. Note that, on many (perhaps all) interfaces, if you don't capture -in promiscuous mode, you will not see any outgoing packets, so a capture -not done in promiscuous mode may not be very useful. -.TP -.B Under HP-UX with DLPI: -You must be root or -.I tcpdump -must be installed setuid to root. -.TP -.B Under IRIX with snoop: -You must be root or -.I tcpdump -must be installed setuid to root. -.TP -.B Under Linux: -You must be root or -.I tcpdump -must be installed setuid to root (unless your distribution has a kernel -that supports capability bits such as CAP_NET_RAW and code to allow -those capability bits to be given to particular accounts and to cause -those bits to be set on a user's initial processes when they log in, in -which case you must have CAP_NET_RAW in order to capture and -CAP_NET_ADMIN to enumerate network devices with, for example, the -.B \-D -flag). -.TP -.B Under ULTRIX and Digital UNIX/Tru64 UNIX: -Any user may capture network traffic with -.IR tcpdump . -However, no user (not even the super-user) can capture in promiscuous -mode on an interface unless the super-user has enabled promiscuous-mode -operation on that interface using -.IR pfconfig (8), -and no user (not even the super-user) can capture unicast traffic -received by or sent by the machine on an interface unless the super-user -has enabled copy-all-mode operation on that interface using -.IR pfconfig , -so -.I useful -packet capture on an interface probably requires that either -promiscuous-mode or copy-all-mode operation, or both modes of -operation, be enabled on that interface. -.TP -.B Under BSD (this includes Mac OS X): -You must have read access to -.IR /dev/bpf* . -On BSDs with a devfs (this includes Mac OS X), this might involve more -than just having somebody with super-user access setting the ownership -or permissions on the BPF devices - it might involve configuring devfs -to set the ownership or permissions every time the system is booted, -if the system even supports that; if it doesn't support that, you might -have to find some other way to make that happen at boot time. -.LP -Reading a saved packet file doesn't require special privileges. -.SH OPTIONS -.TP -.B \-A -Print each packet (minus its link level header) in ASCII. Handy for -capturing web pages. -.TP -.B \-c -Exit after receiving \fIcount\fP packets. -.TP -.B \-C -Before writing a raw packet to a savefile, check whether the file is -currently larger than \fIfile_size\fP and, if so, close the current -savefile and open a new one. Savefiles after the first savefile will -have the name specified with the -.B \-w -flag, with a number after it, starting at 1 and continuing upward. -The units of \fIfile_size\fP are millions of bytes (1,000,000 bytes, -not 1,048,576 bytes). -.TP -.B \-d -Dump the compiled packet-matching code in a human readable form to -standard output and stop. -.TP -.B \-dd -Dump packet-matching code as a -.B C -program fragment. -.TP -.B \-ddd -Dump packet-matching code as decimal numbers (preceded with a count). -.TP -.B \-D -Print the list of the network interfaces available on the system and on -which -.I tcpdump -can capture packets. For each network interface, a number and an -interface name, possibly followed by a text description of the -interface, is printed. The interface name or the number can be supplied -to the -.B \-i -flag to specify an interface on which to capture. -.IP -This can be useful on systems that don't have a command to list them -(e.g., Windows systems, or UNIX systems lacking -.BR "ifconfig \-a" ); -the number can be useful on Windows 2000 and later systems, where the -interface name is a somewhat complex string. -.IP -The -.B \-D -flag will not be supported if -.I tcpdump -was built with an older version of -.I libpcap -that lacks the -.B pcap_findalldevs() -function. -.TP -.B \-e -Print the link-level header on each dump line. -.TP -.B \-E -Use \fIspi@ipaddr algo:secret\fP for decrypting IPsec ESP packets that -are addressed to \fIaddr\fP and contain Security Parameter Index value -\fIspi\fP. This combination may be repeated with comma or newline seperation. -.IP -Note that setting the secret for IPv4 ESP packets is supported at this time. -.IP -Algorithms may be -\fBdes-cbc\fP, -\fB3des-cbc\fP, -\fBblowfish-cbc\fP, -\fBrc3-cbc\fP, -\fBcast128-cbc\fP, or -\fBnone\fP. -The default is \fBdes-cbc\fP. -The ability to decrypt packets is only present if \fItcpdump\fP was compiled -with cryptography enabled. -.IP -\fIsecret\fP is the ASCII text for ESP secret key. -If preceeded by 0x, then a hex value will be read. -.IP -The option assumes RFC2406 ESP, not RFC1827 ESP. -The option is only for debugging purposes, and -the use of this option with a true `secret' key is discouraged. -By presenting IPsec secret key onto command line -you make it visible to others, via -.IR ps (1) -and other occasions. -.IP -In addition to the above syntax, the syntax \fIfile name\fP may be used -to have tcpdump read the provided file in. The file is opened upon -receiving the first ESP packet, so any special permissions that tcpdump -may have been given should already have been given up. -.TP -.B \-f -Print `foreign' IPv4 addresses numerically rather than symbolically -(this option is intended to get around serious brain damage in -Sun's NIS server \(em usually it hangs forever translating non-local -internet numbers). -.IP -The test for `foreign' IPv4 addresses is done using the IPv4 address and -netmask of the interface on which capture is being done. If that -address or netmask are not available, available, either because the -interface on which capture is being done has no address or netmask or -because the capture is being done on the Linux "any" interface, which -can capture on more than one interface, this option will not work -correctly. -.TP -.B \-F -Use \fIfile\fP as input for the filter expression. -An additional expression given on the command line is ignored. -.TP -.B \-i -Listen on \fIinterface\fP. -If unspecified, \fItcpdump\fP searches the system interface list for the -lowest numbered, configured up interface (excluding loopback). -Ties are broken by choosing the earliest match. -.IP -On Linux systems with 2.2 or later kernels, an -.I interface -argument of ``any'' can be used to capture packets from all interfaces. -Note that captures on the ``any'' device will not be done in promiscuous -mode. -.IP -If the -.B \-D -flag is supported, an interface number as printed by that flag can be -used as the -.I interface -argument. -.TP -.B \-l -Make stdout line buffered. -Useful if you want to see the data -while capturing it. -E.g., -.br -``tcpdump\ \ \-l\ \ |\ \ tee dat'' or -``tcpdump\ \ \-l \ \ > dat\ \ &\ \ tail\ \ \-f\ \ dat''. -.TP -.B \-L -List the known data link types for the interface and exit. -.TP -.B \-m -Load SMI MIB module definitions from file \fImodule\fR. -This option -can be used several times to load several MIB modules into \fItcpdump\fP. -.TP -.B \-M -Use \fIsecret\fP as a shared secret for validating the digests found in -TCP segments with the TCP-MD5 option (RFC 2385), if present. -.TP -.B \-n -Don't convert addresses (i.e., host addresses, port numbers, etc.) to names. -.TP -.B \-N -Don't print domain name qualification of host names. -E.g., -if you give this flag then \fItcpdump\fP will print ``nic'' -instead of ``nic.ddn.mil''. -.TP -.B \-O -Do not run the packet-matching code optimizer. -This is useful only -if you suspect a bug in the optimizer. -.TP -.B \-p -\fIDon't\fP put the interface -into promiscuous mode. -Note that the interface might be in promiscuous -mode for some other reason; hence, `-p' cannot be used as an abbreviation for -`ether host {local-hw-addr} or ether broadcast'. -.TP -.B \-q -Quick (quiet?) output. -Print less protocol information so output -lines are shorter. -.TP -.B \-R -Assume ESP/AH packets to be based on old specification (RFC1825 to RFC1829). -If specified, \fItcpdump\fP will not print replay prevention field. -Since there is no protocol version field in ESP/AH specification, -\fItcpdump\fP cannot deduce the version of ESP/AH protocol. -.TP -.B \-r -Read packets from \fIfile\fR (which was created with the -.B \-w -option). -Standard input is used if \fIfile\fR is ``-''. -.TP -.B \-S -Print absolute, rather than relative, TCP sequence numbers. -.TP -.B \-s -Snarf \fIsnaplen\fP bytes of data from each packet rather than the -default of 68 (with SunOS's NIT, the minimum is actually 96). -68 bytes is adequate for IP, ICMP, TCP -and UDP but may truncate protocol information from name server and NFS -packets (see below). -Packets truncated because of a limited snapshot -are indicated in the output with ``[|\fIproto\fP]'', where \fIproto\fP -is the name of the protocol level at which the truncation has occurred. -Note that taking larger snapshots both increases -the amount of time it takes to process packets and, effectively, -decreases the amount of packet buffering. -This may cause packets to be -lost. -You should limit \fIsnaplen\fP to the smallest number that will -capture the protocol information you're interested in. -Setting -\fIsnaplen\fP to 0 means use the required length to catch whole packets. -.TP -.B \-T -Force packets selected by "\fIexpression\fP" to be interpreted the -specified \fItype\fR. -Currently known types are -\fBaodv\fR (Ad-hoc On-demand Distance Vector protocol), -\fBcnfp\fR (Cisco NetFlow protocol), -\fBrpc\fR (Remote Procedure Call), -\fBrtp\fR (Real-Time Applications protocol), -\fBrtcp\fR (Real-Time Applications control protocol), -\fBsnmp\fR (Simple Network Management Protocol), -\fBtftp\fR (Trivial File Transfer Protocol), -\fBvat\fR (Visual Audio Tool), -and -\fBwb\fR (distributed White Board). -.TP -.B \-t -\fIDon't\fP print a timestamp on each dump line. -.TP -.B \-tt -Print an unformatted timestamp on each dump line. -.TP -.B \-ttt -Print a delta (in micro-seconds) between current and previous line -on each dump line. -.TP -.B \-tttt -Print a timestamp in default format proceeded by date on each dump line. -.TP -.B \-u -Print undecoded NFS handles. -.TP -.B \-U -Make output saved via the -.B \-w -option ``packet-buffered''; i.e., as each packet is saved, it will be -written to the output file, rather than being written only when the -output buffer fills. -.IP -The -.B \-U -flag will not be supported if -.I tcpdump -was built with an older version of -.I libpcap -that lacks the -.B pcap_dump_flush() -function. -.TP -.B \-v -When parsing and printing, produce (slightly more) verbose output. -For example, the time to live, -identification, total length and options in an IP packet are printed. -Also enables additional packet integrity checks such as verifying the -IP and ICMP header checksum. -.IP -When writing to a file with the -.B \-w -option, report, every 10 seconds, the number of packets captured. -.TP -.B \-vv -Even more verbose output. -For example, additional fields are -printed from NFS reply packets, and SMB packets are fully decoded. -.TP -.B \-vvv -Even more verbose output. -For example, -telnet \fBSB\fP ... \fBSE\fP options -are printed in full. -With -.B \-X -Telnet options are printed in hex as well. -.TP -.B \-w -Write the raw packets to \fIfile\fR rather than parsing and printing -them out. -They can later be printed with the \-r option. -Standard output is used if \fIfile\fR is ``-''. -.TP -.B \-W -Used in conjunction with the -.I \-C -option, this will limit the number -of files created to the specified number, and begin overwriting files -from the beginning, thus creating a 'rotating' buffer. -In addition, it will name -the files with enough leading 0s to support the maximum number of -files, allowing them to sort correctly. -.TP -.B \-x -Print each packet (minus its link level header) in hex. -The smaller of the entire packet or -.I snaplen -bytes will be printed. Note that this is the entire link-layer -packet, so for link layers that pad (e.g. Ethernet), the padding bytes -will also be printed when the higher layer packet is shorter than the -required padding. -.TP -.B \-xx -Print each packet, -.I including -its link level header, in hex. -.TP -.B \-X -Print each packet (minus its link level header) in hex and ASCII. -This is very handy for analysing new protocols. -.TP -.B \-XX -Print each packet, -.I including -its link level header, in hex and ASCII. -.TP -.B \-y -Set the data link type to use while capturing packets to \fIdatalinktype\fP. -.TP -.B \-Z -Drops privileges (if root) and changes user ID to -.I user -and the group ID to the primary group of -.IR user . -.IP -This behavior can also be enabled by default at compile time. -.IP "\fI expression\fP" -.RS -selects which packets will be dumped. -If no \fIexpression\fP -is given, all packets on the net will be dumped. -Otherwise, -only packets for which \fIexpression\fP is `true' will be dumped. -.LP -The \fIexpression\fP consists of one or more -.I primitives. -Primitives usually consist of an -.I id -(name or number) preceded by one or more qualifiers. -There are three -different kinds of qualifier: -.IP \fItype\fP -qualifiers say what kind of thing the id name or number refers to. -Possible types are -.BR host , -.B net , -.B port -and -.BR portrange . -E.g., `host foo', `net 128.3', `port 20', `portrange 6000-6008'. -If there is no type -qualifier, -.B host -is assumed. -.IP \fIdir\fP -qualifiers specify a particular transfer direction to and/or from -.IR id . -Possible directions are -.BR src , -.BR dst , -.B "src or dst" -and -.B "src and" -.BR dst . -E.g., `src foo', `dst net 128.3', `src or dst port ftp-data'. -If -there is no dir qualifier, -.B "src or dst" -is assumed. -For some link layers, such as SLIP and the ``cooked'' Linux capture mode -used for the ``any'' device and for some other device types, the -.B inbound -and -.B outbound -qualifiers can be used to specify a desired direction. -.IP \fIproto\fP -qualifiers restrict the match to a particular protocol. -Possible -protos are: -.BR ether , -.BR fddi , -.BR tr , -.BR wlan , -.BR ip , -.BR ip6 , -.BR arp , -.BR rarp , -.BR decnet , -.B tcp -and -.BR udp . -E.g., `ether src foo', `arp net 128.3', `tcp port 21', `udp portrange -7000-7009'. -If there is -no proto qualifier, all protocols consistent with the type are -assumed. -E.g., `src foo' means `(ip or arp or rarp) src foo' -(except the latter is not legal syntax), `net bar' means `(ip or -arp or rarp) net bar' and `port 53' means `(tcp or udp) port 53'. -.LP -[`fddi' is actually an alias for `ether'; the parser treats them -identically as meaning ``the data link level used on the specified -network interface.'' FDDI headers contain Ethernet-like source -and destination addresses, and often contain Ethernet-like packet -types, so you can filter on these FDDI fields just as with the -analogous Ethernet fields. -FDDI headers also contain other fields, -but you cannot name them explicitly in a filter expression. -.LP -Similarly, `tr' and `wlan' are aliases for `ether'; the previous -paragraph's statements about FDDI headers also apply to Token Ring -and 802.11 wireless LAN headers. For 802.11 headers, the destination -address is the DA field and the source address is the SA field; the -BSSID, RA, and TA fields aren't tested.] -.LP -In addition to the above, there are some special `primitive' keywords -that don't follow the pattern: -.BR gateway , -.BR broadcast , -.BR less , -.B greater -and arithmetic expressions. -All of these are described below. -.LP -More complex filter expressions are built up by using the words -.BR and , -.B or -and -.B not -to combine primitives. -E.g., `host foo and not port ftp and not port ftp-data'. -To save typing, identical qualifier lists can be omitted. -E.g., -`tcp dst port ftp or ftp-data or domain' is exactly the same as -`tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain'. -.LP -Allowable primitives are: -.IP "\fBdst host \fIhost\fR" -True if the IPv4/v6 destination field of the packet is \fIhost\fP, -which may be either an address or a name. -.IP "\fBsrc host \fIhost\fR" -True if the IPv4/v6 source field of the packet is \fIhost\fP. -.IP "\fBhost \fIhost\fP -True if either the IPv4/v6 source or destination of the packet is \fIhost\fP. -.IP -Any of the above host expressions can be prepended with the keywords, -\fBip\fP, \fBarp\fP, \fBrarp\fP, or \fBip6\fP as in: -.in +.5i -.nf -\fBip host \fIhost\fR -.fi -.in -.5i -which is equivalent to: -.in +.5i -.nf -\fBether proto \fI\\ip\fB and host \fIhost\fR -.fi -.in -.5i -If \fIhost\fR is a name with multiple IP addresses, each address will -be checked for a match. -.IP "\fBether dst \fIehost\fP -True if the Ethernet destination address is \fIehost\fP. -\fIEhost\fP -may be either a name from /etc/ethers or a number (see -.IR ethers (3N) -for numeric format). -.IP "\fBether src \fIehost\fP -True if the Ethernet source address is \fIehost\fP. -.IP "\fBether host \fIehost\fP -True if either the Ethernet source or destination address is \fIehost\fP. -.IP "\fBgateway\fP \fIhost\fP -True if the packet used \fIhost\fP as a gateway. -I.e., the Ethernet -source or destination address was \fIhost\fP but neither the IP source -nor the IP destination was \fIhost\fP. -\fIHost\fP must be a name and -must be found both by the machine's host-name-to-IP-address resolution -mechanisms (host name file, DNS, NIS, etc.) and by the machine's -host-name-to-Ethernet-address resolution mechanism (/etc/ethers, etc.). -(An equivalent expression is -.in +.5i -.nf -\fBether host \fIehost \fBand not host \fIhost\fR -.fi -.in -.5i -which can be used with either names or numbers for \fIhost / ehost\fP.) -This syntax does not work in IPv6-enabled configuration at this moment. -.IP "\fBdst net \fInet\fR" -True if the IPv4/v6 destination address of the packet has a network -number of \fInet\fP. -\fINet\fP may be either a name from /etc/networks -or a network number (see \fInetworks(4)\fP for details). -.IP "\fBsrc net \fInet\fR" -True if the IPv4/v6 source address of the packet has a network -number of \fInet\fP. -.IP "\fBnet \fInet\fR" -True if either the IPv4/v6 source or destination address of the packet has a network -number of \fInet\fP. -.IP "\fBnet \fInet\fR \fBmask \fInetmask\fR" -True if the IPv4 address matches \fInet\fR with the specific \fInetmask\fR. -May be qualified with \fBsrc\fR or \fBdst\fR. -Note that this syntax is not valid for IPv6 \fInet\fR. -.IP "\fBnet \fInet\fR/\fIlen\fR" -True if the IPv4/v6 address matches \fInet\fR with a netmask \fIlen\fR -bits wide. -May be qualified with \fBsrc\fR or \fBdst\fR. -.IP "\fBdst port \fIport\fR" -True if the packet is ip/tcp, ip/udp, ip6/tcp or ip6/udp and has a -destination port value of \fIport\fP. -The \fIport\fP can be a number or a name used in /etc/services (see -.IR tcp (4P) -and -.IR udp (4P)). -If a name is used, both the port -number and protocol are checked. -If a number or ambiguous name is used, -only the port number is checked (e.g., \fBdst port 513\fR will print both -tcp/login traffic and udp/who traffic, and \fBport domain\fR will print -both tcp/domain and udp/domain traffic). -.IP "\fBsrc port \fIport\fR" -True if the packet has a source port value of \fIport\fP. -.IP "\fBport \fIport\fR" -True if either the source or destination port of the packet is \fIport\fP. -.IP "\fBdst portrange \fIport1\fB-\fIport2\fR" -True if the packet is ip/tcp, ip/udp, ip6/tcp or ip6/udp and has a -destination port value between \fIport1\fP and \fIport2\fP. -.I port1 -and -.I port2 -are interpreted in the same fashion as the -.I port -parameter for -.BR port . -.IP "\fBsrc portrange \fIport1\fB-\fIport2\fR" -True if the packet has a source port value between \fIport1\fP and -\fIport2\fP. -.IP "\fBportrange \fIport1\fB-\fIport2\fR" -True if either the source or destination port of the packet is between -\fIport1\fP and \fIport2\fP. -.IP -Any of the above port or port range expressions can be prepended with -the keywords, \fBtcp\fP or \fBudp\fP, as in: -.in +.5i -.nf -\fBtcp src port \fIport\fR -.fi -.in -.5i -which matches only tcp packets whose source port is \fIport\fP. -.IP "\fBless \fIlength\fR" -True if the packet has a length less than or equal to \fIlength\fP. -This is equivalent to: -.in +.5i -.nf -\fBlen <= \fIlength\fP. -.fi -.in -.5i -.IP "\fBgreater \fIlength\fR" -True if the packet has a length greater than or equal to \fIlength\fP. -This is equivalent to: -.in +.5i -.nf -\fBlen >= \fIlength\fP. -.fi -.in -.5i -.IP "\fBip proto \fIprotocol\fR" -True if the packet is an IPv4 packet (see -.IR ip (4P)) -of protocol type \fIprotocol\fP. -\fIProtocol\fP can be a number or one of the names -\fBicmp\fP, \fBicmp6\fP, \fBigmp\fP, \fBigrp\fP, \fBpim\fP, \fBah\fP, -\fBesp\fP, \fBvrrp\fP, \fBudp\fP, or \fBtcp\fP. -Note that the identifiers \fBtcp\fP, \fBudp\fP, and \fBicmp\fP are also -keywords and must be escaped via backslash (\\), which is \\\\ in the C-shell. -Note that this primitive does not chase the protocol header chain. -.IP "\fBip6 proto \fIprotocol\fR" -True if the packet is an IPv6 packet of protocol type \fIprotocol\fP. -Note that this primitive does not chase the protocol header chain. -.IP "\fBip6 protochain \fIprotocol\fR" -True if the packet is IPv6 packet, -and contains protocol header with type \fIprotocol\fR -in its protocol header chain. -For example, -.in +.5i -.nf -\fBip6 protochain 6\fR -.fi -.in -.5i -matches any IPv6 packet with TCP protocol header in the protocol header chain. -The packet may contain, for example, -authentication header, routing header, or hop-by-hop option header, -between IPv6 header and TCP header. -The BPF code emitted by this primitive is complex and -cannot be optimized by BPF optimizer code in \fItcpdump\fP, -so this can be somewhat slow. -.IP "\fBip protochain \fIprotocol\fR" -Equivalent to \fBip6 protochain \fIprotocol\fR, but this is for IPv4. -.IP "\fBether broadcast\fR" -True if the packet is an Ethernet broadcast packet. -The \fIether\fP -keyword is optional. -.IP "\fBip broadcast\fR" -True if the packet is an IPv4 broadcast packet. -It checks for both the all-zeroes and all-ones broadcast conventions, -and looks up the subnet mask on the interface on which the capture is -being done. -.IP -If the subnet mask of the interface on which the capture is being done -is not available, either because the interface on which capture is being -done has no netmask or because the capture is being done on the Linux -"any" interface, which can capture on more than one interface, this -check will not work correctly. -.IP "\fBether multicast\fR" -True if the packet is an Ethernet multicast packet. -The \fBether\fP -keyword is optional. -This is shorthand for `\fBether[0] & 1 != 0\fP'. -.IP "\fBip multicast\fR" -True if the packet is an IPv4 multicast packet. -.IP "\fBip6 multicast\fR" -True if the packet is an IPv6 multicast packet. -.IP "\fBether proto \fIprotocol\fR" -True if the packet is of ether type \fIprotocol\fR. -\fIProtocol\fP can be a number or one of the names -\fBip\fP, \fBip6\fP, \fBarp\fP, \fBrarp\fP, \fBatalk\fP, \fBaarp\fP, -\fBdecnet\fP, \fBsca\fP, \fBlat\fP, \fBmopdl\fP, \fBmoprc\fP, -\fBiso\fP, \fBstp\fP, \fBipx\fP, or \fBnetbeui\fP. -Note these identifiers are also keywords -and must be escaped via backslash (\\). -.IP -[In the case of FDDI (e.g., `\fBfddi protocol arp\fR'), Token Ring -(e.g., `\fBtr protocol arp\fR'), and IEEE 802.11 wireless LANS (e.g., -`\fBwlan protocol arp\fR'), for most of those protocols, the -protocol identification comes from the 802.2 Logical Link Control (LLC) -header, which is usually layered on top of the FDDI, Token Ring, or -802.11 header. -.IP -When filtering for most protocol identifiers on FDDI, Token Ring, or -802.11, \fItcpdump\fR checks only the protocol ID field of an LLC header -in so-called SNAP format with an Organizational Unit Identifier (OUI) of -0x000000, for encapsulated Ethernet; it doesn't check whether the packet -is in SNAP format with an OUI of 0x000000. -The exceptions are: -.RS -.TP -\fBiso\fP -\fItcpdump\fR checks the DSAP (Destination Service Access Point) and -SSAP (Source Service Access Point) fields of the LLC header; -.TP -\fBstp\fP and \fBnetbeui\fP -\fItcpdump\fR checks the DSAP of the LLC header; -.TP -\fBatalk\fP -\fItcpdump\fR checks for a SNAP-format packet with an OUI of 0x080007 -and the AppleTalk etype. -.RE -.IP -In the case of Ethernet, \fItcpdump\fR checks the Ethernet type field -for most of those protocols. The exceptions are: -.RS -.TP -\fBiso\fP, \fBstp\fP, and \fBnetbeui\fP -\fItcpdump\fR checks for an 802.3 frame and then checks the LLC header as -it does for FDDI, Token Ring, and 802.11; -.TP -\fBatalk\fP -\fItcpdump\fR checks both for the AppleTalk etype in an Ethernet frame and -for a SNAP-format packet as it does for FDDI, Token Ring, and 802.11; -.TP -\fBaarp\fP -\fItcpdump\fR checks for the AppleTalk ARP etype in either an Ethernet -frame or an 802.2 SNAP frame with an OUI of 0x000000; -.TP -\fBipx\fP -\fItcpdump\fR checks for the IPX etype in an Ethernet frame, the IPX -DSAP in the LLC header, the 802.3-with-no-LLC-header encapsulation of -IPX, and the IPX etype in a SNAP frame. -.RE -.IP "\fBdecnet src \fIhost\fR" -True if the DECNET source address is -.IR host , -which may be an address of the form ``10.123'', or a DECNET host -name. -[DECNET host name support is only available on ULTRIX systems -that are configured to run DECNET.] -.IP "\fBdecnet dst \fIhost\fR" -True if the DECNET destination address is -.IR host . -.IP "\fBdecnet host \fIhost\fR" -True if either the DECNET source or destination address is -.IR host . -.IP "\fBifname \fIinterface\fR" -True if the packet was logged as coming from the specified interface (applies -only to packets logged by OpenBSD's -.BR pf (4)). -.IP "\fBon \fIinterface\fR" -Synonymous with the -.B ifname -modifier. -.IP "\fBrnr \fInum\fR" -True if the packet was logged as matching the specified PF rule number -(applies only to packets logged by OpenBSD's -.BR pf (4)). -.IP "\fBrulenum \fInum\fR" -Synonomous with the -.B rnr -modifier. -.IP "\fBreason \fIcode\fR" -True if the packet was logged with the specified PF reason code. The known -codes are: -.BR match , -.BR bad-offset , -.BR fragment , -.BR short , -.BR normalize , -and -.B memory -(applies only to packets logged by OpenBSD's -.BR pf (4)). -.IP "\fBrset \fIname\fR" -True if the packet was logged as matching the specified PF ruleset -name of an anchored ruleset (applies only to packets logged by -.BR pf (4)). -.IP "\fBruleset \fIname\fR" -Synonomous with the -.B rset -modifier. -.IP "\fBsrnr \fInum\fR" -True if the packet was logged as matching the specified PF rule number -of an anchored ruleset (applies only to packets logged by -.BR pf (4)). -.IP "\fBsubrulenum \fInum\fR" -Synonomous with the -.B srnr -modifier. -.IP "\fBaction \fIact\fR" -True if PF took the specified action when the packet was logged. Known actions -are: -.B pass -and -.B block -(applies only to packets logged by OpenBSD's -.BR pf (4)). -.IP "\fBip\fR, \fBip6\fR, \fBarp\fR, \fBrarp\fR, \fBatalk\fR, \fBaarp\fR, \fBdecnet\fR, \fBiso\fR, \fBstp\fR, \fBipx\fR, \fInetbeui\fP" -Abbreviations for: -.in +.5i -.nf -\fBether proto \fIp\fR -.fi -.in -.5i -where \fIp\fR is one of the above protocols. -.IP "\fBlat\fR, \fBmoprc\fR, \fBmopdl\fR" -Abbreviations for: -.in +.5i -.nf -\fBether proto \fIp\fR -.fi -.in -.5i -where \fIp\fR is one of the above protocols. -Note that -\fItcpdump\fP does not currently know how to parse these protocols. -.IP "\fBvlan \fI[vlan_id]\fR" -True if the packet is an IEEE 802.1Q VLAN packet. -If \fI[vlan_id]\fR is specified, only true if the packet has the specified -\fIvlan_id\fR. -Note that the first \fBvlan\fR keyword encountered in \fIexpression\fR -changes the decoding offsets for the remainder of \fIexpression\fR on -the assumption that the packet is a VLAN packet. The \fBvlan -\fI[vlan_id]\fR expression may be used more than once, to filter on VLAN -hierarchies. Each use of that expression increments the filter offsets -by 4. -.IP -For example: -.in +.5i -.nf -\fBvlan 100 && vlan 200\fR -.fi -.in -.5i -filters on VLAN 200 encapsulated within VLAN 100, and -.in +.5i -.nf -\fBvlan && vlan 300 && ip\fR -.fi -.in -.5i -filters IPv4 protocols encapsulated in VLAN 300 encapsulated within any -higher order VLAN. -.IP "\fBmpls \fI[label_num]\fR" -True if the packet is an MPLS packet. -If \fI[label_num]\fR is specified, only true is the packet has the specified -\fIlabel_num\fR. -Note that the first \fBmpls\fR keyword encountered in \fIexpression\fR -changes the decoding offsets for the remainder of \fIexpression\fR on -the assumption that the packet is a MPLS-encapsulated IP packet. The -\fBmpls \fI[label_num]\fR expression may be used more than once, to -filter on MPLS hierarchies. Each use of that expression increments the -filter offsets by 4. -.IP -For example: -.in +.5i -.nf -\fBmpls 100000 && mpls 1024\fR -.fi -.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 -.in -.5i -filters packets to or from 192.9.200.1 with an inner label of 1024 and -any outer label. -.IP \fBpppoed\fP -True if the packet is a PPP-over-Ethernet Discovery packet (Ethernet -type 0x8863). -.IP \fBpppoes\fP -True if the packet is a PPP-over-Ethernet Session packet (Ethernet -type 0x8864). -Note that the first \fBpppoes\fR keyword encountered in \fIexpression\fR -changes the decoding offsets for the remainder of \fIexpression\fR on -the assumption that the packet is a PPPoE session packet. -.IP -For example: -.in +.5i -.nf -\fBpppoes && ip\fR -.fi -.in -.5i -filters IPv4 protocols encapsulated in PPPoE. -.IP "\fBtcp\fR, \fBudp\fR, \fBicmp\fR" -Abbreviations for: -.in +.5i -.nf -\fBip proto \fIp\fR\fB or ip6 proto \fIp\fR -.fi -.in -.5i -where \fIp\fR is one of the above protocols. -.IP "\fBiso proto \fIprotocol\fR" -True if the packet is an OSI packet of protocol type \fIprotocol\fP. -\fIProtocol\fP can be a number or one of the names -\fBclnp\fP, \fBesis\fP, or \fBisis\fP. -.IP "\fBclnp\fR, \fBesis\fR, \fBisis\fR" -Abbreviations for: -.in +.5i -.nf -\fBiso proto \fIp\fR -.fi -.in -.5i -where \fIp\fR is one of the above protocols. -.IP "\fBl1\fR, \fBl2\fR, \fBiih\fR, \fBlsp\fR, \fBsnp\fR, \fBcsnp\fR, \fBpsnp\fR" -Abbreviations for IS-IS PDU types. -.IP "\fBvpi\fP \fIn\fR -True if the packet is an ATM packet, for SunATM on Solaris, with a -virtual path identifier of -.IR n . -.IP "\fBvci\fP \fIn\fR -True if the packet is an ATM packet, for SunATM on Solaris, with a -virtual channel identifier of -.IR n . -.IP \fBlane\fP -True if the packet is an ATM packet, for SunATM on Solaris, and is -an ATM LANE packet. -Note that the first \fBlane\fR keyword encountered in \fIexpression\fR -changes the tests done in the remainder of \fIexpression\fR -on the assumption that the packet is either a LANE emulated Ethernet -packet or a LANE LE Control packet. If \fBlane\fR isn't specified, the -tests are done under the assumption that the packet is an -LLC-encapsulated packet. -.IP \fBllc\fP -True if the packet is an ATM packet, for SunATM on Solaris, and is -an LLC-encapsulated packet. -.IP \fBoamf4s\fP -True if the packet is an ATM packet, for SunATM on Solaris, and is -a segment OAM F4 flow cell (VPI=0 & VCI=3). -.IP \fBoamf4e\fP -True if the packet is an ATM packet, for SunATM on Solaris, and is -an end-to-end OAM F4 flow cell (VPI=0 & VCI=4). -.IP \fBoamf4\fP -True if the packet is an ATM packet, for SunATM on Solaris, and is -a segment or end-to-end OAM F4 flow cell (VPI=0 & (VCI=3 | VCI=4)). -.IP \fBoam\fP -True if the packet is an ATM packet, for SunATM on Solaris, and is -a segment or end-to-end OAM F4 flow cell (VPI=0 & (VCI=3 | VCI=4)). -.IP \fBmetac\fP -True if the packet is an ATM packet, for SunATM on Solaris, and is -on a meta signaling circuit (VPI=0 & VCI=1). -.IP \fBbcc\fP -True if the packet is an ATM packet, for SunATM on Solaris, and is -on a broadcast signaling circuit (VPI=0 & VCI=2). -.IP \fBsc\fP -True if the packet is an ATM packet, for SunATM on Solaris, and is -on a signaling circuit (VPI=0 & VCI=5). -.IP \fBilmic\fP -True if the packet is an ATM packet, for SunATM on Solaris, and is -on an ILMI circuit (VPI=0 & VCI=16). -.IP \fBconnectmsg\fP -True if the packet is an ATM packet, for SunATM on Solaris, and is -on a signaling circuit and is a Q.2931 Setup, Call Proceeding, Connect, -Connect Ack, Release, or Release Done message. -.IP \fBmetaconnect\fP -True if the packet is an ATM packet, for SunATM on Solaris, and is -on a meta signaling circuit and is a Q.2931 Setup, Call Proceeding, Connect, -Release, or Release Done message. -.IP "\fIexpr relop expr\fR" -True if the relation holds, where \fIrelop\fR is one of >, <, >=, <=, =, -!=, and \fIexpr\fR is an arithmetic expression composed of integer -constants (expressed in standard C syntax), the normal binary operators -[+, -, *, /, &, |, <<, >>], a length operator, and special packet data -accessors. Note that all comparisons are unsigned, so that, for example, -0x80000000 and 0xffffffff are > 0. -To access -data inside the packet, use the following syntax: -.in +.5i -.nf -\fIproto\fB [ \fIexpr\fB : \fIsize\fB ]\fR -.fi -.in -.5i -\fIProto\fR is one of \fBether, fddi, tr, wlan, ppp, slip, link, -ip, arp, rarp, tcp, udp, icmp, ip6\fR or \fBradio\fR, and -indicates the protocol layer for the index operation. -(\fBether, fddi, wlan, tr, ppp, slip\fR and \fBlink\fR all refer to the -link layer. \fBradio\fR refers to the "radio header" added to some -802.11 captures.) -Note that \fItcp, udp\fR and other upper-layer protocol types only -apply to IPv4, not IPv6 (this will be fixed in the future). -The byte offset, relative to the indicated protocol layer, is -given by \fIexpr\fR. -\fISize\fR is optional and indicates the number of bytes in the -field of interest; it can be either one, two, or four, and defaults to one. -The length operator, indicated by the keyword \fBlen\fP, gives the -length of the packet. - -For example, `\fBether[0] & 1 != 0\fP' catches all multicast traffic. -The expression `\fBip[0] & 0xf != 5\fP' -catches all IPv4 packets with options. -The expression -`\fBip[6:2] & 0x1fff = 0\fP' -catches only unfragmented IPv4 datagrams and frag zero of fragmented -IPv4 datagrams. -This check is implicitly applied to the \fBtcp\fP and \fBudp\fP -index operations. -For instance, \fBtcp[0]\fP always means the first -byte of the TCP \fIheader\fP, and never means the first byte of an -intervening fragment. - -Some offsets and field values may be expressed as names rather than -as numeric values. -The following protocol header field offsets are -available: \fBicmptype\fP (ICMP type field), \fBicmpcode\fP (ICMP -code field), and \fBtcpflags\fP (TCP flags field). - -The following ICMP type field values are available: \fBicmp-echoreply\fP, -\fBicmp-unreach\fP, \fBicmp-sourcequench\fP, \fBicmp-redirect\fP, -\fBicmp-echo\fP, \fBicmp-routeradvert\fP, \fBicmp-routersolicit\fP, -\fBicmp-timxceed\fP, \fBicmp-paramprob\fP, \fBicmp-tstamp\fP, -\fBicmp-tstampreply\fP, \fBicmp-ireq\fP, \fBicmp-ireqreply\fP, -\fBicmp-maskreq\fP, \fBicmp-maskreply\fP. - -The following TCP flags field values are available: \fBtcp-fin\fP, -\fBtcp-syn\fP, \fBtcp-rst\fP, \fBtcp-push\fP, -\fBtcp-ack\fP, \fBtcp-urg\fP. -.LP -Primitives may be combined using: -.IP -A parenthesized group of primitives and operators -(parentheses are special to the Shell and must be escaped). -.IP -Negation (`\fB!\fP' or `\fBnot\fP'). -.IP -Concatenation (`\fB&&\fP' or `\fBand\fP'). -.IP -Alternation (`\fB||\fP' or `\fBor\fP'). -.LP -Negation has highest precedence. -Alternation and concatenation have equal precedence and associate -left to right. -Note that explicit \fBand\fR tokens, not juxtaposition, -are now required for concatenation. -.LP -If an identifier is given without a keyword, the most recent keyword -is assumed. -For example, -.in +.5i -.nf -\fBnot host vs and ace\fR -.fi -.in -.5i -is short for -.in +.5i -.nf -\fBnot host vs and host ace\fR -.fi -.in -.5i -which should not be confused with -.in +.5i -.nf -\fBnot ( host vs or ace )\fR -.fi -.in -.5i -.LP -Expression arguments can be passed to \fItcpdump\fP as either a single -argument or as multiple arguments, whichever is more convenient. -Generally, if the expression contains Shell metacharacters, it is -easier to pass it as a single, quoted argument. -Multiple arguments are concatenated with spaces before being parsed. -.SH EXAMPLES -.LP -To print all packets arriving at or departing from \fIsundown\fP: -.RS -.nf -\fBtcpdump host sundown\fP -.fi -.RE -.LP -To print traffic between \fIhelios\fR and either \fIhot\fR or \fIace\fR: -.RS -.nf -\fBtcpdump host helios and \\( hot or ace \\)\fP -.fi -.RE -.LP -To print all IP packets between \fIace\fR and any host except \fIhelios\fR: -.RS -.nf -\fBtcpdump ip host ace and not helios\fP -.fi -.RE -.LP -To print all traffic between local hosts and hosts at Berkeley: -.RS -.nf -.B -tcpdump net ucb-ether -.fi -.RE -.LP -To print all ftp traffic through internet gateway \fIsnup\fP: -(note that the expression is quoted to prevent the shell from -(mis-)interpreting the parentheses): -.RS -.nf -.B -tcpdump 'gateway snup and (port ftp or ftp-data)' -.fi -.RE -.LP -To print traffic neither sourced from nor destined for local hosts -(if you gateway to one other net, this stuff should never make it -onto your local net). -.RS -.nf -.B -tcpdump ip and not net \fIlocalnet\fP -.fi -.RE -.LP -To print the start and end packets (the SYN and FIN packets) of each -TCP conversation that involves a non-local host. -.RS -.nf -.B -tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net \fIlocalnet\fP' -.fi -.RE -.LP -To print all IPv4 HTTP packets to and from port 80, i.e. print only -packets that contain data, not, for example, SYN and FIN packets and -ACK-only packets. (IPv6 is left as an exercise for the reader.) -.RS -.nf -.B -tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' -.fi -.RE -.LP -To print IP packets longer than 576 bytes sent through gateway \fIsnup\fP: -.RS -.nf -.B -tcpdump 'gateway snup and ip[2:2] > 576' -.fi -.RE -.LP -To print IP broadcast or multicast packets that were -.I not -sent via Ethernet broadcast or multicast: -.RS -.nf -.B -tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224' -.fi -.RE -.LP -To print all ICMP packets that are not echo requests/replies (i.e., not -ping packets): -.RS -.nf -.B -tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply' -.fi -.RE -.SH OUTPUT FORMAT -.LP -The output of \fItcpdump\fP is protocol dependent. -The following -gives a brief description and examples of most of the formats. -.de HD -.sp 1.5 -.B -.. -.HD -Link Level Headers -.LP -If the '-e' option is given, the link level header is printed out. -On Ethernets, the source and destination addresses, protocol, -and packet length are printed. -.LP -On FDDI networks, the '-e' option causes \fItcpdump\fP to print -the `frame control' field, the source and destination addresses, -and the packet length. -(The `frame control' field governs the -interpretation of the rest of the packet. -Normal packets (such -as those containing IP datagrams) are `async' packets, with a priority -value between 0 and 7; for example, `\fBasync4\fR'. -Such packets -are assumed to contain an 802.2 Logical Link Control (LLC) packet; -the LLC header is printed if it is \fInot\fR an ISO datagram or a -so-called SNAP packet. -.LP -On Token Ring networks, the '-e' option causes \fItcpdump\fP to print -the `access control' and `frame control' fields, the source and -destination addresses, and the packet length. -As on FDDI networks, -packets are assumed to contain an LLC packet. -Regardless of whether -the '-e' option is specified or not, the source routing information is -printed for source-routed packets. -.LP -On 802.11 networks, the '-e' option causes \fItcpdump\fP to print -the `frame control' fields, all of the addresses in the 802.11 header, -and the packet length. -As on FDDI networks, -packets are assumed to contain an LLC packet. -.LP -\fI(N.B.: The following description assumes familiarity with -the SLIP compression algorithm described in RFC-1144.)\fP -.LP -On SLIP links, a direction indicator (``I'' for inbound, ``O'' for outbound), -packet type, and compression information are printed out. -The packet type is printed first. -The three types are \fIip\fP, \fIutcp\fP, and \fIctcp\fP. -No further link information is printed for \fIip\fR packets. -For TCP packets, the connection identifier is printed following the type. -If the packet is compressed, its encoded header is printed out. -The special cases are printed out as -\fB*S+\fIn\fR and \fB*SA+\fIn\fR, where \fIn\fR is the amount by which -the sequence number (or sequence number and ack) has changed. -If it is not a special case, -zero or more changes are printed. -A change is indicated by U (urgent pointer), W (window), A (ack), -S (sequence number), and I (packet ID), followed by a delta (+n or -n), -or a new value (=n). -Finally, the amount of data in the packet and compressed header length -are printed. -.LP -For example, the following line shows an outbound compressed TCP packet, -with an implicit connection identifier; the ack has changed by 6, -the sequence number by 49, and the packet ID by 6; there are 3 bytes of -data and 6 bytes of compressed header: -.RS -.nf -\fBO ctcp * A+6 S+49 I+6 3 (6)\fP -.fi -.RE -.HD -ARP/RARP Packets -.LP -Arp/rarp output shows the type of request and its arguments. -The -format is intended to be self explanatory. -Here is a short sample taken from the start of an `rlogin' from -host \fIrtsg\fP to host \fIcsam\fP: -.RS -.nf -.sp .5 -\f(CWarp who-has csam tell rtsg -arp reply csam is-at CSAM\fR -.sp .5 -.fi -.RE -The first line says that rtsg sent an arp packet asking -for the Ethernet address of internet host csam. -Csam -replies with its Ethernet address (in this example, Ethernet addresses -are in caps and internet addresses in lower case). -.LP -This would look less redundant if we had done \fItcpdump \-n\fP: -.RS -.nf -.sp .5 -\f(CWarp who-has 128.3.254.6 tell 128.3.254.68 -arp reply 128.3.254.6 is-at 02:07:01:00:01:c4\fP -.fi -.RE -.LP -If we had done \fItcpdump \-e\fP, the fact that the first packet is -broadcast and the second is point-to-point would be visible: -.RS -.nf -.sp .5 -\f(CWRTSG Broadcast 0806 64: arp who-has csam tell rtsg -CSAM RTSG 0806 64: arp reply csam is-at CSAM\fR -.sp .5 -.fi -.RE -For the first packet this says the Ethernet source address is RTSG, the -destination is the Ethernet broadcast address, the type field -contained hex 0806 (type ETHER_ARP) and the total length was 64 bytes. -.HD -TCP Packets -.LP -\fI(N.B.:The following description assumes familiarity with -the TCP protocol described in RFC-793. -If you are not familiar -with the protocol, neither this description nor \fItcpdump\fP will -be of much use to you.)\fP -.LP -The general format of a tcp protocol line is: -.RS -.nf -.sp .5 -\fIsrc > dst: flags data-seqno ack window urgent options\fP -.sp .5 -.fi -.RE -\fISrc\fP and \fIdst\fP are the source and destination IP -addresses and ports. -\fIFlags\fP are some combination of S (SYN), -F (FIN), P (PUSH), R (RST), W (ECN CWR) or E (ECN-Echo), or a single -`.' (no flags). -\fIData-seqno\fP describes the portion of sequence space covered -by the data in this packet (see example below). -\fIAck\fP is sequence number of the next data expected the other -direction on this connection. -\fIWindow\fP is the number of bytes of receive buffer space available -the other direction on this connection. -\fIUrg\fP indicates there is `urgent' data in the packet. -\fIOptions\fP are tcp options enclosed in angle brackets (e.g., <mss 1024>). -.LP -\fISrc, dst\fP and \fIflags\fP are always present. -The other fields -depend on the contents of the packet's tcp protocol header and -are output only if appropriate. -.LP -Here is the opening portion of an rlogin from host \fIrtsg\fP to -host \fIcsam\fP. -.RS -.nf -.sp .5 -\s-2\f(CWrtsg.1023 > csam.login: S 768512:768512(0) win 4096 <mss 1024> -csam.login > rtsg.1023: S 947648:947648(0) ack 768513 win 4096 <mss 1024> -rtsg.1023 > csam.login: . ack 1 win 4096 -rtsg.1023 > csam.login: P 1:2(1) ack 1 win 4096 -csam.login > rtsg.1023: . ack 2 win 4096 -rtsg.1023 > csam.login: P 2:21(19) ack 1 win 4096 -csam.login > rtsg.1023: P 1:2(1) ack 21 win 4077 -csam.login > rtsg.1023: P 2:3(1) ack 21 win 4077 urg 1 -csam.login > rtsg.1023: P 3:4(1) ack 21 win 4077 urg 1\fR\s+2 -.sp .5 -.fi -.RE -The first line says that tcp port 1023 on rtsg sent a packet -to port \fIlogin\fP -on csam. -The \fBS\fP indicates that the \fISYN\fP flag was set. -The packet sequence number was 768512 and it contained no data. -(The notation is `first:last(nbytes)' which means `sequence -numbers \fIfirst\fP -up to but not including \fIlast\fP which is \fInbytes\fP bytes of user data'.) -There was no piggy-backed ack, the available receive window was 4096 -bytes and there was a max-segment-size option requesting an mss of -1024 bytes. -.LP -Csam replies with a similar packet except it includes a piggy-backed -ack for rtsg's SYN. -Rtsg then acks csam's SYN. -The `.' means no -flags were set. -The packet contained no data so there is no data sequence number. -Note that the ack sequence -number is a small integer (1). -The first time \fItcpdump\fP sees a -tcp `conversation', it prints the sequence number from the packet. -On subsequent packets of the conversation, the difference between -the current packet's sequence number and this initial sequence number -is printed. -This means that sequence numbers after the -first can be interpreted -as relative byte positions in the conversation's data stream (with the -first data byte each direction being `1'). -`-S' will override this -feature, causing the original sequence numbers to be output. -.LP -On the 6th line, rtsg sends csam 19 bytes of data (bytes 2 through 20 -in the rtsg \(-> csam side of the conversation). -The PUSH flag is set in the packet. -On the 7th line, csam says it's received data sent by rtsg up to -but not including byte 21. -Most of this data is apparently sitting in the -socket buffer since csam's receive window has gotten 19 bytes smaller. -Csam also sends one byte of data to rtsg in this packet. -On the 8th and 9th lines, -csam sends two bytes of urgent, pushed data to rtsg. -.LP -If the snapshot was small enough that \fItcpdump\fP didn't capture -the full TCP header, it interprets as much of the header as it can -and then reports ``[|\fItcp\fP]'' to indicate the remainder could not -be interpreted. -If the header contains a bogus option (one with a length -that's either too small or beyond the end of the header), \fItcpdump\fP -reports it as ``[\fIbad opt\fP]'' and does not interpret any further -options (since it's impossible to tell where they start). -If the header -length indicates options are present but the IP datagram length is not -long enough for the options to actually be there, \fItcpdump\fP reports -it as ``[\fIbad hdr length\fP]''. -.HD -.B Capturing TCP packets with particular flag combinations (SYN-ACK, URG-ACK, etc.) -.PP -There are 8 bits in the control bits section of the TCP header: -.IP -.I CWR | ECE | URG | ACK | PSH | RST | SYN | FIN -.PP -Let's assume that we want to watch packets used in establishing -a TCP connection. -Recall that TCP uses a 3-way handshake protocol -when it initializes a new connection; the connection sequence with -regard to the TCP control bits is -.PP -.RS -1) Caller sends SYN -.RE -.RS -2) Recipient responds with SYN, ACK -.RE -.RS -3) Caller sends ACK -.RE -.PP -Now we're interested in capturing packets that have only the -SYN bit set (Step 1). -Note that we don't want packets from step 2 -(SYN-ACK), just a plain initial SYN. -What we need is a correct filter -expression for \fItcpdump\fP. -.PP -Recall the structure of a TCP header without options: -.PP -.nf - 0 15 31 ------------------------------------------------------------------ -| source port | destination port | ------------------------------------------------------------------ -| sequence number | ------------------------------------------------------------------ -| acknowledgment number | ------------------------------------------------------------------ -| HL | rsvd |C|E|U|A|P|R|S|F| window size | ------------------------------------------------------------------ -| TCP checksum | urgent pointer | ------------------------------------------------------------------ -.fi -.PP -A TCP header usually holds 20 octets of data, unless options are -present. -The first line of the graph contains octets 0 - 3, the -second line shows octets 4 - 7 etc. -.PP -Starting to count with 0, the relevant TCP control bits are contained -in octet 13: -.PP -.nf - 0 7| 15| 23| 31 -----------------|---------------|---------------|---------------- -| HL | rsvd |C|E|U|A|P|R|S|F| window size | -----------------|---------------|---------------|---------------- -| | 13th octet | | | -.fi -.PP -Let's have a closer look at octet no. 13: -.PP -.nf - | | - |---------------| - |C|E|U|A|P|R|S|F| - |---------------| - |7 5 3 0| -.fi -.PP -These are the TCP control bits we are interested -in. -We have numbered the bits in this octet from 0 to 7, right to -left, so the PSH bit is bit number 3, while the URG bit is number 5. -.PP -Recall that we want to capture packets with only SYN set. -Let's see what happens to octet 13 if a TCP datagram arrives -with the SYN bit set in its header: -.PP -.nf - |C|E|U|A|P|R|S|F| - |---------------| - |0 0 0 0 0 0 1 0| - |---------------| - |7 6 5 4 3 2 1 0| -.fi -.PP -Looking at the -control bits section we see that only bit number 1 (SYN) is set. -.PP -Assuming that octet number 13 is an 8-bit unsigned integer in -network byte order, the binary value of this octet is -.IP -00000010 -.PP -and its decimal representation is -.PP -.nf - 7 6 5 4 3 2 1 0 -0*2 + 0*2 + 0*2 + 0*2 + 0*2 + 0*2 + 1*2 + 0*2 = 2 -.fi -.PP -We're almost done, because now we know that if only SYN is set, -the value of the 13th octet in the TCP header, when interpreted -as a 8-bit unsigned integer in network byte order, must be exactly 2. -.PP -This relationship can be expressed as -.RS -.B -tcp[13] == 2 -.RE -.PP -We can use this expression as the filter for \fItcpdump\fP in order -to watch packets which have only SYN set: -.RS -.B -tcpdump -i xl0 tcp[13] == 2 -.RE -.PP -The expression says "let the 13th octet of a TCP datagram have -the decimal value 2", which is exactly what we want. -.PP -Now, let's assume that we need to capture SYN packets, but we -don't care if ACK or any other TCP control bit is set at the -same time. -Let's see what happens to octet 13 when a TCP datagram -with SYN-ACK set arrives: -.PP -.nf - |C|E|U|A|P|R|S|F| - |---------------| - |0 0 0 1 0 0 1 0| - |---------------| - |7 6 5 4 3 2 1 0| -.fi -.PP -Now bits 1 and 4 are set in the 13th octet. -The binary value of -octet 13 is -.IP - 00010010 -.PP -which translates to decimal -.PP -.nf - 7 6 5 4 3 2 1 0 -0*2 + 0*2 + 0*2 + 1*2 + 0*2 + 0*2 + 1*2 + 0*2 = 18 -.fi -.PP -Now we can't just use 'tcp[13] == 18' in the \fItcpdump\fP filter -expression, because that would select only those packets that have -SYN-ACK set, but not those with only SYN set. -Remember that we don't care -if ACK or any other control bit is set as long as SYN is set. -.PP -In order to achieve our goal, we need to logically AND the -binary value of octet 13 with some other value to preserve -the SYN bit. -We know that we want SYN to be set in any case, -so we'll logically AND the value in the 13th octet with -the binary value of a SYN: -.PP -.nf - - 00010010 SYN-ACK 00000010 SYN - AND 00000010 (we want SYN) AND 00000010 (we want SYN) - -------- -------- - = 00000010 = 00000010 -.fi -.PP -We see that this AND operation delivers the same result -regardless whether ACK or another TCP control bit is set. -The decimal representation of the AND value as well as -the result of this operation is 2 (binary 00000010), -so we know that for packets with SYN set the following -relation must hold true: -.IP -( ( value of octet 13 ) AND ( 2 ) ) == ( 2 ) -.PP -This points us to the \fItcpdump\fP filter expression -.RS -.B - tcpdump -i xl0 'tcp[13] & 2 == 2' -.RE -.PP -Note that you should use single quotes or a backslash -in the expression to hide the AND ('&') special character -from the shell. -.HD -.B -UDP Packets -.LP -UDP format is illustrated by this rwho packet: -.RS -.nf -.sp .5 -\f(CWactinide.who > broadcast.who: udp 84\fP -.sp .5 -.fi -.RE -This says that port \fIwho\fP on host \fIactinide\fP sent a udp -datagram to port \fIwho\fP on host \fIbroadcast\fP, the Internet -broadcast address. -The packet contained 84 bytes of user data. -.LP -Some UDP services are recognized (from the source or destination -port number) and the higher level protocol information printed. -In particular, Domain Name service requests (RFC-1034/1035) and Sun -RPC calls (RFC-1050) to NFS. -.HD -UDP Name Server Requests -.LP -\fI(N.B.:The following description assumes familiarity with -the Domain Service protocol described in RFC-1035. -If you are not familiar -with the protocol, the following description will appear to be written -in greek.)\fP -.LP -Name server requests are formatted as -.RS -.nf -.sp .5 -\fIsrc > dst: id op? flags qtype qclass name (len)\fP -.sp .5 -\f(CWh2opolo.1538 > helios.domain: 3+ A? ucbvax.berkeley.edu. (37)\fR -.sp .5 -.fi -.RE -Host \fIh2opolo\fP asked the domain server on \fIhelios\fP for an -address record (qtype=A) associated with the name \fIucbvax.berkeley.edu.\fP -The query id was `3'. -The `+' indicates the \fIrecursion desired\fP flag -was set. -The query length was 37 bytes, not including the UDP and -IP protocol headers. -The query operation was the normal one, \fIQuery\fP, -so the op field was omitted. -If the op had been anything else, it would -have been printed between the `3' and the `+'. -Similarly, the qclass was the normal one, -\fIC_IN\fP, and omitted. -Any other qclass would have been printed -immediately after the `A'. -.LP -A few anomalies are checked and may result in extra fields enclosed in -square brackets: If a query contains an answer, authority records or -additional records section, -.IR ancount , -.IR nscount , -or -.I arcount -are printed as `[\fIn\fPa]', `[\fIn\fPn]' or `[\fIn\fPau]' where \fIn\fP -is the appropriate count. -If any of the response bits are set (AA, RA or rcode) or any of the -`must be zero' bits are set in bytes two and three, `[b2&3=\fIx\fP]' -is printed, where \fIx\fP is the hex value of header bytes two and three. -.HD -UDP Name Server Responses -.LP -Name server responses are formatted as -.RS -.nf -.sp .5 -\fIsrc > dst: id op rcode flags a/n/au type class data (len)\fP -.sp .5 -\f(CWhelios.domain > h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273) -helios.domain > h2opolo.1537: 2 NXDomain* 0/1/0 (97)\fR -.sp .5 -.fi -.RE -In the first example, \fIhelios\fP responds to query id 3 from \fIh2opolo\fP -with 3 answer records, 3 name server records and 7 additional records. -The first answer record is type A (address) and its data is internet -address 128.32.137.3. -The total size of the response was 273 bytes, -excluding UDP and IP headers. -The op (Query) and response code -(NoError) were omitted, as was the class (C_IN) of the A record. -.LP -In the second example, \fIhelios\fP responds to query 2 with a -response code of non-existent domain (NXDomain) with no answers, -one name server and no authority records. -The `*' indicates that -the \fIauthoritative answer\fP bit was set. -Since there were no -answers, no type, class or data were printed. -.LP -Other flag characters that might appear are `\-' (recursion available, -RA, \fInot\fP set) and `|' (truncated message, TC, set). -If the -`question' section doesn't contain exactly one entry, `[\fIn\fPq]' -is printed. -.LP -Note that name server requests and responses tend to be large and the -default \fIsnaplen\fP of 68 bytes may not capture enough of the packet -to print. -Use the \fB\-s\fP flag to increase the snaplen if you -need to seriously investigate name server traffic. -`\fB\-s 128\fP' -has worked well for me. - -.HD -SMB/CIFS decoding -.LP -\fItcpdump\fP now includes fairly extensive SMB/CIFS/NBT decoding for data -on UDP/137, UDP/138 and TCP/139. -Some primitive decoding of IPX and -NetBEUI SMB data is also done. - -By default a fairly minimal decode is done, with a much more detailed -decode done if -v is used. -Be warned that with -v a single SMB packet -may take up a page or more, so only use -v if you really want all the -gory details. - -For information on SMB packet formats and what all te fields mean see -www.cifs.org or the pub/samba/specs/ directory on your favorite -samba.org mirror site. -The SMB patches were written by Andrew Tridgell -(tridge@samba.org). - -.HD -NFS Requests and Replies -.LP -Sun NFS (Network File System) requests and replies are printed as: -.RS -.nf -.sp .5 -\fIsrc.xid > dst.nfs: len op args\fP -\fIsrc.nfs > dst.xid: reply stat len op results\fP -.sp .5 -\f(CW -sushi.6709 > wrl.nfs: 112 readlink fh 21,24/10.73165 -wrl.nfs > sushi.6709: reply ok 40 readlink "../var" -sushi.201b > wrl.nfs: - 144 lookup fh 9,74/4096.6878 "xcolors" -wrl.nfs > sushi.201b: - reply ok 128 lookup fh 9,74/4134.3150 -\fR -.sp .5 -.fi -.RE -In the first line, host \fIsushi\fP sends a transaction with id \fI6709\fP -to \fIwrl\fP (note that the number following the src host is a -transaction id, \fInot\fP the source port). -The request was 112 bytes, -excluding the UDP and IP headers. -The operation was a \fIreadlink\fP -(read symbolic link) on file handle (\fIfh\fP) 21,24/10.731657119. -(If one is lucky, as in this case, the file handle can be interpreted -as a major,minor device number pair, followed by the inode number and -generation number.) -\fIWrl\fP replies `ok' with the contents of the link. -.LP -In the third line, \fIsushi\fP asks \fIwrl\fP to lookup the name -`\fIxcolors\fP' in directory file 9,74/4096.6878. -Note that the data printed -depends on the operation type. -The format is intended to be self -explanatory if read in conjunction with -an NFS protocol spec. -.LP -If the \-v (verbose) flag is given, additional information is printed. -For example: -.RS -.nf -.sp .5 -\f(CW -sushi.1372a > wrl.nfs: - 148 read fh 21,11/12.195 8192 bytes @ 24576 -wrl.nfs > sushi.1372a: - reply ok 1472 read REG 100664 ids 417/0 sz 29388 -\fP -.sp .5 -.fi -.RE -(\-v also prints the IP header TTL, ID, length, and fragmentation fields, -which have been omitted from this example.) In the first line, -\fIsushi\fP asks \fIwrl\fP to read 8192 bytes from file 21,11/12.195, -at byte offset 24576. -\fIWrl\fP replies `ok'; the packet shown on the -second line is the first fragment of the reply, and hence is only 1472 -bytes long (the other bytes will follow in subsequent fragments, but -these fragments do not have NFS or even UDP headers and so might not be -printed, depending on the filter expression used). -Because the \-v flag -is given, some of the file attributes (which are returned in addition -to the file data) are printed: the file type (``REG'', for regular file), -the file mode (in octal), the uid and gid, and the file size. -.LP -If the \-v flag is given more than once, even more details are printed. -.LP -Note that NFS requests are very large and much of the detail won't be printed -unless \fIsnaplen\fP is increased. -Try using `\fB\-s 192\fP' to watch -NFS traffic. -.LP -NFS reply packets do not explicitly identify the RPC operation. -Instead, -\fItcpdump\fP keeps track of ``recent'' requests, and matches them to the -replies using the transaction ID. -If a reply does not closely follow the -corresponding request, it might not be parsable. -.HD -AFS Requests and Replies -.LP -Transarc AFS (Andrew File System) requests and replies are printed -as: -.HD -.RS -.nf -.sp .5 -\fIsrc.sport > dst.dport: rx packet-type\fP -\fIsrc.sport > dst.dport: rx packet-type service call call-name args\fP -\fIsrc.sport > dst.dport: rx packet-type service reply call-name args\fP -.sp .5 -\f(CW -elvis.7001 > pike.afsfs: - rx data fs call rename old fid 536876964/1/1 ".newsrc.new" - new fid 536876964/1/1 ".newsrc" -pike.afsfs > elvis.7001: rx data fs reply rename -\fR -.sp .5 -.fi -.RE -In the first line, host elvis sends a RX packet to pike. -This was -a RX data packet to the fs (fileserver) service, and is the start of -an RPC call. -The RPC call was a rename, with the old directory file id -of 536876964/1/1 and an old filename of `.newsrc.new', and a new directory -file id of 536876964/1/1 and a new filename of `.newsrc'. -The host pike -responds with a RPC reply to the rename call (which was successful, because -it was a data packet and not an abort packet). -.LP -In general, all AFS RPCs are decoded at least by RPC call name. -Most -AFS RPCs have at least some of the arguments decoded (generally only -the `interesting' arguments, for some definition of interesting). -.LP -The format is intended to be self-describing, but it will probably -not be useful to people who are not familiar with the workings of -AFS and RX. -.LP -If the -v (verbose) flag is given twice, acknowledgement packets and -additional header information is printed, such as the the RX call ID, -call number, sequence number, serial number, and the RX packet flags. -.LP -If the -v flag is given twice, additional information is printed, -such as the the RX call ID, serial number, and the RX packet flags. -The MTU negotiation information is also printed from RX ack packets. -.LP -If the -v flag is given three times, the security index and service id -are printed. -.LP -Error codes are printed for abort packets, with the exception of Ubik -beacon packets (because abort packets are used to signify a yes vote -for the Ubik protocol). -.LP -Note that AFS requests are very large and many of the arguments won't -be printed unless \fIsnaplen\fP is increased. -Try using `\fB-s 256\fP' -to watch AFS traffic. -.LP -AFS reply packets do not explicitly identify the RPC operation. -Instead, -\fItcpdump\fP keeps track of ``recent'' requests, and matches them to the -replies using the call number and service ID. -If a reply does not closely -follow the -corresponding request, it might not be parsable. - -.HD -KIP AppleTalk (DDP in UDP) -.LP -AppleTalk DDP packets encapsulated in UDP datagrams are de-encapsulated -and dumped as DDP packets (i.e., all the UDP header information is -discarded). -The file -.I /etc/atalk.names -is used to translate AppleTalk net and node numbers to names. -Lines in this file have the form -.RS -.nf -.sp .5 -\fInumber name\fP - -\f(CW1.254 ether -16.1 icsd-net -1.254.110 ace\fR -.sp .5 -.fi -.RE -The first two lines give the names of AppleTalk networks. -The third -line gives the name of a particular host (a host is distinguished -from a net by the 3rd octet in the number \- -a net number \fImust\fP have two octets and a host number \fImust\fP -have three octets.) The number and name should be separated by -whitespace (blanks or tabs). -The -.I /etc/atalk.names -file may contain blank lines or comment lines (lines starting with -a `#'). -.LP -AppleTalk addresses are printed in the form -.RS -.nf -.sp .5 -\fInet.host.port\fP - -\f(CW144.1.209.2 > icsd-net.112.220 -office.2 > icsd-net.112.220 -jssmag.149.235 > icsd-net.2\fR -.sp .5 -.fi -.RE -(If the -.I /etc/atalk.names -doesn't exist or doesn't contain an entry for some AppleTalk -host/net number, addresses are printed in numeric form.) -In the first example, NBP (DDP port 2) on net 144.1 node 209 -is sending to whatever is listening on port 220 of net icsd node 112. -The second line is the same except the full name of the source node -is known (`office'). -The third line is a send from port 235 on -net jssmag node 149 to broadcast on the icsd-net NBP port (note that -the broadcast address (255) is indicated by a net name with no host -number \- for this reason it's a good idea to keep node names and -net names distinct in /etc/atalk.names). -.LP -NBP (name binding protocol) and ATP (AppleTalk transaction protocol) -packets have their contents interpreted. -Other protocols just dump -the protocol name (or number if no name is registered for the -protocol) and packet size. - -\fBNBP packets\fP are formatted like the following examples: -.RS -.nf -.sp .5 -\s-2\f(CWicsd-net.112.220 > jssmag.2: nbp-lkup 190: "=:LaserWriter@*" -jssmag.209.2 > icsd-net.112.220: nbp-reply 190: "RM1140:LaserWriter@*" 250 -techpit.2 > icsd-net.112.220: nbp-reply 190: "techpit:LaserWriter@*" 186\fR\s+2 -.sp .5 -.fi -.RE -The first line is a name lookup request for laserwriters sent by net icsd host -112 and broadcast on net jssmag. -The nbp id for the lookup is 190. -The second line shows a reply for this request (note that it has the -same id) from host jssmag.209 saying that it has a laserwriter -resource named "RM1140" registered on port 250. -The third line is -another reply to the same request saying host techpit has laserwriter -"techpit" registered on port 186. - -\fBATP packet\fP formatting is demonstrated by the following example: -.RS -.nf -.sp .5 -\s-2\f(CWjssmag.209.165 > helios.132: atp-req 12266<0-7> 0xae030001 -helios.132 > jssmag.209.165: atp-resp 12266:0 (512) 0xae040000 -helios.132 > jssmag.209.165: atp-resp 12266:1 (512) 0xae040000 -helios.132 > jssmag.209.165: atp-resp 12266:2 (512) 0xae040000 -helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000 -helios.132 > jssmag.209.165: atp-resp 12266:4 (512) 0xae040000 -helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000 -helios.132 > jssmag.209.165: atp-resp 12266:6 (512) 0xae040000 -helios.132 > jssmag.209.165: atp-resp*12266:7 (512) 0xae040000 -jssmag.209.165 > helios.132: atp-req 12266<3,5> 0xae030001 -helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000 -helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000 -jssmag.209.165 > helios.132: atp-rel 12266<0-7> 0xae030001 -jssmag.209.133 > helios.132: atp-req* 12267<0-7> 0xae030002\fR\s+2 -.sp .5 -.fi -.RE -Jssmag.209 initiates transaction id 12266 with host helios by requesting -up to 8 packets (the `<0-7>'). -The hex number at the end of the line -is the value of the `userdata' field in the request. -.LP -Helios responds with 8 512-byte packets. -The `:digit' following the -transaction id gives the packet sequence number in the transaction -and the number in parens is the amount of data in the packet, -excluding the atp header. -The `*' on packet 7 indicates that the -EOM bit was set. -.LP -Jssmag.209 then requests that packets 3 & 5 be retransmitted. -Helios -resends them then jssmag.209 releases the transaction. -Finally, -jssmag.209 initiates the next request. -The `*' on the request -indicates that XO (`exactly once') was \fInot\fP set. - -.HD -IP Fragmentation -.LP -Fragmented Internet datagrams are printed as -.RS -.nf -.sp .5 -\fB(frag \fIid\fB:\fIsize\fB@\fIoffset\fB+)\fR -\fB(frag \fIid\fB:\fIsize\fB@\fIoffset\fB)\fR -.sp .5 -.fi -.RE -(The first form indicates there are more fragments. -The second -indicates this is the last fragment.) -.LP -\fIId\fP is the fragment id. -\fISize\fP is the fragment -size (in bytes) excluding the IP header. -\fIOffset\fP is this -fragment's offset (in bytes) in the original datagram. -.LP -The fragment information is output for each fragment. -The first -fragment contains the higher level protocol header and the frag -info is printed after the protocol info. -Fragments -after the first contain no higher level protocol header and the -frag info is printed after the source and destination addresses. -For example, here is part of an ftp from arizona.edu to lbl-rtsg.arpa -over a CSNET connection that doesn't appear to handle 576 byte datagrams: -.RS -.nf -.sp .5 -\s-2\f(CWarizona.ftp-data > rtsg.1170: . 1024:1332(308) ack 1 win 4096 (frag 595a:328@0+) -arizona > rtsg: (frag 595a:204@328) -rtsg.1170 > arizona.ftp-data: . ack 1536 win 2560\fP\s+2 -.sp .5 -.fi -.RE -There are a couple of things to note here: First, addresses in the -2nd line don't include port numbers. -This is because the TCP -protocol information is all in the first fragment and we have no idea -what the port or sequence numbers are when we print the later fragments. -Second, the tcp sequence information in the first line is printed as if there -were 308 bytes of user data when, in fact, there are 512 bytes (308 in -the first frag and 204 in the second). -If you are looking for holes -in the sequence space or trying to match up acks -with packets, this can fool you. -.LP -A packet with the IP \fIdon't fragment\fP flag is marked with a -trailing \fB(DF)\fP. -.HD -Timestamps -.LP -By default, all output lines are preceded by a timestamp. -The timestamp -is the current clock time in the form -.RS -.nf -\fIhh:mm:ss.frac\fP -.fi -.RE -and is as accurate as the kernel's clock. -The timestamp reflects the time the kernel first saw the packet. -No attempt -is made to account for the time lag between when the -Ethernet interface removed the packet from the wire and when the kernel -serviced the `new packet' interrupt. -.SH "SEE ALSO" -stty(1), pcap(3), bpf(4), nit(4P), pfconfig(8) -.SH AUTHORS -The original authors are: -.LP -Van Jacobson, -Craig Leres and -Steven McCanne, all of the -Lawrence Berkeley National Laboratory, University of California, Berkeley, CA. -.LP -It is currently being maintained by tcpdump.org. -.LP -The current version is available via http: -.LP -.RS -.I http://www.tcpdump.org/ -.RE -.LP -The original distribution is available via anonymous ftp: -.LP -.RS -.I ftp://ftp.ee.lbl.gov/tcpdump.tar.Z -.RE -.LP -IPv6/IPsec support is added by WIDE/KAME project. -This program uses Eric Young's SSLeay library, under specific configuration. -.SH BUGS -Please send problems, bugs, questions, desirable enhancements, etc. to: -.LP -.RS -tcpdump-workers@tcpdump.org -.RE -.LP -Please send source code contributions, etc. to: -.LP -.RS -patches@tcpdump.org -.RE -.LP -NIT doesn't let you watch your own outbound traffic, BPF will. -We recommend that you use the latter. -.LP -On Linux systems with 2.0[.x] kernels: -.IP -packets on the loopback device will be seen twice; -.IP -packet filtering cannot be done in the kernel, so that all packets must -be copied from the kernel in order to be filtered in user mode; -.IP -all of a packet, not just the part that's within the snapshot length, -will be copied from the kernel (the 2.0[.x] packet capture mechanism, if -asked to copy only part of a packet to userland, will not report the -true length of the packet; this would cause most IP packets to get an -error from -.BR tcpdump ); -.IP -capturing on some PPP devices won't work correctly. -.LP -We recommend that you upgrade to a 2.2 or later kernel. -.LP -Some attempt should be made to reassemble IP fragments or, at least -to compute the right length for the higher level protocol. -.LP -Name server inverse queries are not dumped correctly: the (empty) -question section is printed rather than real query in the answer -section. -Some believe that inverse queries are themselves a bug and -prefer to fix the program generating them rather than \fItcpdump\fP. -.LP -A packet trace that crosses a daylight savings time change will give -skewed time stamps (the time change is ignored). -.LP -Filter expressions on fields other than those in Token Ring headers will -not correctly handle source-routed Token Ring packets. -.LP -Filter expressions on fields other than those in 802.11 headers will not -correctly handle 802.11 data packets with both To DS and From DS set. -.LP -.BR "ip6 proto" -should chase header chain, but at this moment it does not. -.BR "ip6 protochain" -is supplied for this behavior. -.LP -Arithmetic expression against transport layer headers, like \fBtcp[0]\fP, -does not work against IPv6 packets. -It only looks at IPv4 packets. diff --git a/contrib/tcpdump/tcpdump.c b/contrib/tcpdump/tcpdump.c deleted file mode 100644 index b7bedfe86a54b..0000000000000 --- a/contrib/tcpdump/tcpdump.c +++ /dev/null @@ -1,1458 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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 splitting captures into multiple files with a maximum - * file size: - * - * Copyright (c) 2001 - * Seth Webster <swebster@sst.ll.mit.edu> - */ - -#ifndef lint -static const char copyright[] _U_ = - "@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000\n\ -The Regents of the University of California. All rights reserved.\n"; -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.253.2.11 2005/08/23 10:29:41 hannes Exp $ (LBL)"; -#endif - -/* - * tcpdump - monitor tcp/ip traffic on an ethernet. - * - * First written in 1987 by Van Jacobson, Lawrence Berkeley Laboratory. - * Mercilessly hacked and occasionally improved since then via the - * combined efforts of Van, Steve McCanne and Craig Leres of LBL. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#ifdef WIN32 -#include "getopt.h" -#include "w32_fzs.h" -extern int strcasecmp (const char *__s1, const char *__s2); -extern int SIZE_BUF; -#define off_t long -#define uint UINT -#endif /* WIN32 */ - -#ifdef HAVE_SMI_H -#include <smi.h> -#endif - -#include <pcap.h> -#include <signal.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#ifndef WIN32 -#include <pwd.h> -#include <grp.h> -#include <errno.h> -#endif /* WIN32 */ - -#include "netdissect.h" -#include "interface.h" -#include "addrtoname.h" -#include "machdep.h" -#include "setsignal.h" -#include "gmt2local.h" -#include "pcap-missing.h" - -netdissect_options Gndo; -netdissect_options *gndo = &Gndo; - -/* - * Define the maximum number of files for the -C flag, and how many - * characters can be added to a filename for the -C flag (which - * should be enough to handle MAX_CFLAG - 1). - */ -#define MAX_CFLAG 1000000 -#define MAX_CFLAG_CHARS 6 - -int dflag; /* print filter code */ -int Lflag; /* list available data link types and exit */ - -static int infodelay; -static int infoprint; - -char *program_name; - -int32_t thiszone; /* seconds offset from gmt to local time */ - -/* Forwards */ -static RETSIGTYPE cleanup(int); -static void usage(void) __attribute__((noreturn)); -static void show_dlts_and_exit(pcap_t *pd) __attribute__((noreturn)); - -static void print_packet(u_char *, const struct pcap_pkthdr *, const u_char *); -static void ndo_default_print(netdissect_options *, const u_char *, u_int); -static void dump_packet_and_trunc(u_char *, const struct pcap_pkthdr *, const u_char *); -static void dump_packet(u_char *, const struct pcap_pkthdr *, const u_char *); -static void droproot(const char *, const char *); -static void ndo_error(netdissect_options *ndo, const char *fmt, ...); -static void ndo_warning(netdissect_options *ndo, const char *fmt, ...); - -#ifdef SIGINFO -RETSIGTYPE requestinfo(int); -#endif - -#if defined(USE_WIN32_MM_TIMER) - #include <MMsystem.h> - static UINT timer_id; - static void CALLBACK verbose_stats_dump(UINT, UINT, DWORD_PTR, DWORD_PTR, DWORD_PTR); -#elif defined(HAVE_ALARM) - static void verbose_stats_dump(int sig); -#endif - -static void info(int); -static u_int packets_captured; - -typedef u_int (*if_printer)(const struct pcap_pkthdr *, const u_char *); - -struct printer { - if_printer f; - int type; -}; - -static struct printer printers[] = { - { arcnet_if_print, DLT_ARCNET }, -#ifdef DLT_ARCNET_LINUX - { arcnet_linux_if_print, DLT_ARCNET_LINUX }, -#endif - { ether_if_print, DLT_EN10MB }, - { token_if_print, DLT_IEEE802 }, -#ifdef DLT_LANE8023 - { lane_if_print, DLT_LANE8023 }, -#endif -#ifdef DLT_CIP - { cip_if_print, DLT_CIP }, -#endif -#ifdef DLT_ATM_CLIP - { cip_if_print, DLT_ATM_CLIP }, -#endif - { sl_if_print, DLT_SLIP }, -#ifdef DLT_SLIP_BSDOS - { sl_bsdos_if_print, DLT_SLIP_BSDOS }, -#endif - { ppp_if_print, DLT_PPP }, -#ifdef DLT_PPP_WITHDIRECTION - { ppp_if_print, DLT_PPP_WITHDIRECTION }, -#endif -#ifdef DLT_PPP_BSDOS - { ppp_bsdos_if_print, DLT_PPP_BSDOS }, -#endif - { fddi_if_print, DLT_FDDI }, - { null_if_print, DLT_NULL }, -#ifdef DLT_LOOP - { null_if_print, DLT_LOOP }, -#endif - { raw_if_print, DLT_RAW }, - { atm_if_print, DLT_ATM_RFC1483 }, -#ifdef DLT_C_HDLC - { chdlc_if_print, DLT_C_HDLC }, -#endif -#ifdef DLT_HDLC - { chdlc_if_print, DLT_HDLC }, -#endif -#ifdef DLT_PPP_SERIAL - { ppp_hdlc_if_print, DLT_PPP_SERIAL }, -#endif -#ifdef DLT_PPP_ETHER - { pppoe_if_print, DLT_PPP_ETHER }, -#endif -#ifdef DLT_LINUX_SLL - { sll_if_print, DLT_LINUX_SLL }, -#endif -#ifdef DLT_IEEE802_11 - { ieee802_11_if_print, DLT_IEEE802_11}, -#endif -#ifdef DLT_LTALK - { ltalk_if_print, DLT_LTALK }, -#endif -#ifdef DLT_PFLOG - { pflog_if_print, DLT_PFLOG }, -#endif -#ifdef DLT_FR - { fr_if_print, DLT_FR }, -#endif -#ifdef DLT_FRELAY - { fr_if_print, DLT_FRELAY }, -#endif -#ifdef DLT_SUNATM - { sunatm_if_print, DLT_SUNATM }, -#endif -#ifdef DLT_IP_OVER_FC - { ipfc_if_print, DLT_IP_OVER_FC }, -#endif -#ifdef DLT_PRISM_HEADER - { prism_if_print, DLT_PRISM_HEADER }, -#endif -#ifdef DLT_IEEE802_11_RADIO - { ieee802_11_radio_if_print, DLT_IEEE802_11_RADIO }, -#endif -#ifdef DLT_ENC - { enc_if_print, DLT_ENC }, -#endif -#ifdef DLT_SYMANTEC_FIREWALL - { symantec_if_print, DLT_SYMANTEC_FIREWALL }, -#endif -#ifdef DLT_APPLE_IP_OVER_IEEE1394 - { ap1394_if_print, DLT_APPLE_IP_OVER_IEEE1394 }, -#endif -#ifdef DLT_JUNIPER_ATM1 - { juniper_atm1_print, DLT_JUNIPER_ATM1 }, -#endif -#ifdef DLT_JUNIPER_ATM2 - { juniper_atm2_print, DLT_JUNIPER_ATM2 }, -#endif -#ifdef DLT_JUNIPER_MFR - { juniper_mfr_print, DLT_JUNIPER_MFR }, -#endif -#ifdef DLT_JUNIPER_MLFR - { juniper_mlfr_print, DLT_JUNIPER_MLFR }, -#endif -#ifdef DLT_JUNIPER_MLPPP - { juniper_mlppp_print, DLT_JUNIPER_MLPPP }, -#endif -#ifdef DLT_JUNIPER_PPPOE - { juniper_pppoe_print, DLT_JUNIPER_PPPOE }, -#endif -#ifdef DLT_JUNIPER_PPPOE_ATM - { juniper_pppoe_atm_print, DLT_JUNIPER_PPPOE_ATM }, -#endif -#ifdef DLT_JUNIPER_GGSN - { juniper_ggsn_print, DLT_JUNIPER_GGSN }, -#endif -#ifdef DLT_JUNIPER_ES - { juniper_es_print, DLT_JUNIPER_ES }, -#endif -#ifdef DLT_JUNIPER_MONITOR - { juniper_monitor_print, DLT_JUNIPER_MONITOR }, -#endif -#ifdef DLT_JUNIPER_SERVICES - { juniper_services_print, DLT_JUNIPER_SERVICES }, -#endif -#ifdef DLT_JUNIPER_ETHER - { juniper_ether_print, DLT_JUNIPER_ETHER }, -#endif -#ifdef DLT_JUNIPER_PPP - { juniper_ppp_print, DLT_JUNIPER_PPP }, -#endif -#ifdef DLT_JUNIPER_FRELAY - { juniper_frelay_print, DLT_JUNIPER_FRELAY }, -#endif -#ifdef DLT_JUNIPER_CHDLC - { juniper_chdlc_print, DLT_JUNIPER_CHDLC }, -#endif - { NULL, 0 }, -}; - -static if_printer -lookup_printer(int type) -{ - struct printer *p; - - for (p = printers; p->f; ++p) - if (type == p->type) - return p->f; - - return NULL; - /* NOTREACHED */ -} - -static pcap_t *pd; - -extern int optind; -extern int opterr; -extern char *optarg; - -struct print_info { - if_printer printer; -}; - -struct dump_info { - char *WFileName; - pcap_t *pd; - pcap_dumper_t *p; -}; - -static void -show_dlts_and_exit(pcap_t *pd) -{ - int n_dlts; - int *dlts = 0; - const char *dlt_name; - - n_dlts = pcap_list_datalinks(pd, &dlts); - if (n_dlts < 0) - error("%s", pcap_geterr(pd)); - else if (n_dlts == 0 || !dlts) - error("No data link types."); - - (void) fprintf(stderr, "Data link types (use option -y to set):\n"); - - while (--n_dlts >= 0) { - dlt_name = pcap_datalink_val_to_name(dlts[n_dlts]); - if (dlt_name != NULL) { - (void) fprintf(stderr, " %s (%s)", dlt_name, - pcap_datalink_val_to_description(dlts[n_dlts])); - - /* - * OK, does tcpdump handle that type? - */ - if (lookup_printer(dlts[n_dlts]) == NULL) - (void) fprintf(stderr, " (not supported)"); - putchar('\n'); - } else { - (void) fprintf(stderr, " DLT %d (not supported)\n", - dlts[n_dlts]); - } - } - free(dlts); - exit(0); -} - -/* - * Set up flags that might or might not be supported depending on the - * version of libpcap we're using. - */ -#ifdef WIN32 -#define B_FLAG "B:" -#define B_FLAG_USAGE " [ -B size ]" -#else /* WIN32 */ -#define B_FLAG -#define B_FLAG_USAGE -#endif /* WIN32 */ - -#ifdef HAVE_PCAP_FINDALLDEVS -#ifndef HAVE_PCAP_IF_T -#undef HAVE_PCAP_FINDALLDEVS -#endif -#endif - -#ifdef HAVE_PCAP_FINDALLDEVS -#define D_FLAG "D" -#else -#define D_FLAG -#endif - -#ifdef HAVE_PCAP_DUMP_FLUSH -#define U_FLAG "U" -#else -#define U_FLAG -#endif - -#ifndef WIN32 -/* Drop root privileges and chroot if necessary */ -static void -droproot(const char *username, const char *chroot_dir) -{ - struct passwd *pw = NULL; - - if (chroot_dir && !username) { - fprintf(stderr, "tcpdump: Chroot without dropping root is insecure\n"); - exit(1); - } - - pw = getpwnam(username); - if (pw) { - if (chroot_dir) { - if (chroot(chroot_dir) != 0 || chdir ("/") != 0) { - fprintf(stderr, "tcpdump: Couldn't chroot/chdir to '%.64s': %s\n", - chroot_dir, pcap_strerror(errno)); - exit(1); - } - } - if (initgroups(pw->pw_name, pw->pw_gid) != 0 || - setgid(pw->pw_gid) != 0 || setuid(pw->pw_uid) != 0) { - fprintf(stderr, "tcpdump: Couldn't change to '%.32s' uid=%lu gid=%lu: %s\n", - username, - (unsigned long)pw->pw_uid, - (unsigned long)pw->pw_gid, - pcap_strerror(errno)); - exit(1); - } - } - else { - fprintf(stderr, "tcpdump: Couldn't find user '%.32s'\n", - username); - exit(1); - } -} -#endif /* WIN32 */ - -static int -getWflagChars(int x) -{ - int c = 0; - - x -= 1; - while (x > 0) { - c += 1; - x /= 10; - } - - return c; -} - - -static void -MakeFilename(char *buffer, char *orig_name, int cnt, int max_chars) -{ - if (cnt == 0 && max_chars == 0) - strcpy(buffer, orig_name); - else - sprintf(buffer, "%s%0*d", orig_name, max_chars, cnt); -} - -static int tcpdump_printf(netdissect_options *ndo _U_, - const char *fmt, ...) -{ - - va_list args; - int ret; - - va_start(args, fmt); - ret=vfprintf(stdout, fmt, args); - va_end(args); - - return ret; -} - -int -main(int argc, char **argv) -{ - register int cnt, op, i; - bpf_u_int32 localnet, netmask; - register char *cp, *infile, *cmdbuf, *device, *RFileName, *WFileName, *WFileNameAlt; - pcap_handler callback; - int type; - struct bpf_program fcode; -#ifndef WIN32 - RETSIGTYPE (*oldhandler)(int); -#endif - struct print_info printinfo; - struct dump_info dumpinfo; - u_char *pcap_userdata; - char ebuf[PCAP_ERRBUF_SIZE]; - char *username = NULL; - char *chroot_dir = NULL; -#ifdef HAVE_PCAP_FINDALLDEVS - pcap_if_t *devpointer; - int devnum; -#endif - int status; -#ifdef WIN32 - u_int UserBufferSize = 1000000; - if(wsockinit() != 0) return 1; -#endif /* WIN32 */ - - gndo->ndo_Oflag=1; - gndo->ndo_Rflag=1; - gndo->ndo_dlt=-1; - gndo->ndo_default_print=ndo_default_print; - gndo->ndo_printf=tcpdump_printf; - gndo->ndo_error=ndo_error; - gndo->ndo_warning=ndo_warning; - gndo->ndo_snaplen = DEFAULT_SNAPLEN; - - cnt = -1; - device = NULL; - infile = NULL; - RFileName = NULL; - WFileName = NULL; - if ((cp = strrchr(argv[0], '/')) != NULL) - program_name = cp + 1; - else - program_name = argv[0]; - - if (abort_on_misalignment(ebuf, sizeof(ebuf)) < 0) - error("%s", ebuf); - -#ifdef LIBSMI - smiInit("tcpdump"); -#endif - - opterr = 0; - while ( - (op = getopt(argc, argv, "aA" B_FLAG "c:C:d" D_FLAG "eE:fF:i:lLm:M:nNOpqr:Rs:StT:u" U_FLAG "vw:W:xXy:YZ:")) != -1) - switch (op) { - - case 'a': - /* compatibility for old -a */ - break; - - case 'A': - ++Aflag; - break; - -#ifdef WIN32 - case 'B': - UserBufferSize = atoi(optarg)*1024; - if (UserBufferSize < 0) - error("invalid packet buffer size %s", optarg); - break; -#endif /* WIN32 */ - - case 'c': - cnt = atoi(optarg); - if (cnt <= 0) - error("invalid packet count %s", optarg); - break; - - case 'C': - Cflag = atoi(optarg) * 1000000; - if (Cflag < 0) - error("invalid file size %s", optarg); - break; - - case 'd': - ++dflag; - break; - -#ifdef HAVE_PCAP_FINDALLDEVS - case 'D': - if (pcap_findalldevs(&devpointer, ebuf) < 0) - error("%s", ebuf); - else { - for (i = 0; devpointer != 0; i++) { - printf("%d.%s", i+1, devpointer->name); - if (devpointer->description != NULL) - printf(" (%s)", devpointer->description); - printf("\n"); - devpointer = devpointer->next; - } - } - return 0; -#endif /* HAVE_PCAP_FINDALLDEVS */ - - case 'L': - Lflag++; - break; - - case 'e': - ++eflag; - break; - - case 'E': -#ifndef HAVE_LIBCRYPTO - warning("crypto code not compiled in"); -#endif - gndo->ndo_espsecret = optarg; - break; - - case 'f': - ++fflag; - break; - - case 'F': - infile = optarg; - break; - - case 'i': - if (optarg[0] == '0' && optarg[1] == 0) - error("Invalid adapter index"); - -#ifdef HAVE_PCAP_FINDALLDEVS - /* - * If the argument is a number, treat it as - * an index into the list of adapters, as - * printed by "tcpdump -D". - * - * This should be OK on UNIX systems, as interfaces - * shouldn't have names that begin with digits. - * It can be useful on Windows, where more than - * one interface can have the same name. - */ - if ((devnum = atoi(optarg)) != 0) { - if (devnum < 0) - error("Invalid adapter index"); - - if (pcap_findalldevs(&devpointer, ebuf) < 0) - error("%s", ebuf); - else { - for (i = 0; i < devnum-1; i++){ - devpointer = devpointer->next; - if (devpointer == NULL) - error("Invalid adapter index"); - } - } - device = devpointer->name; - break; - } -#endif /* HAVE_PCAP_FINDALLDEVS */ - device = optarg; - break; - - case 'l': -#ifdef WIN32 - /* - * _IOLBF is the same as _IOFBF in Microsoft's C - * libraries; the only alternative they offer - * is _IONBF. - * - * XXX - this should really be checking for MSVC++, - * not WIN32, if, for example, MinGW has its own - * C library that is more UNIX-compatible. - */ - setvbuf(stdout, NULL, _IONBF, 0); -#else /* WIN32 */ -#ifdef HAVE_SETLINEBUF - setlinebuf(stdout); -#else - setvbuf(stdout, NULL, _IOLBF, 0); -#endif -#endif /* WIN32 */ - break; - - case 'n': - ++nflag; - break; - - case 'N': - ++Nflag; - break; - - case 'm': -#ifdef LIBSMI - if (smiLoadModule(optarg) == 0) { - error("could not load MIB module %s", optarg); - } - sflag = 1; -#else - (void)fprintf(stderr, "%s: ignoring option `-m %s' ", - program_name, optarg); - (void)fprintf(stderr, "(no libsmi support)\n"); -#endif - break; - - case 'M': - /* TCP-MD5 shared secret */ -#ifndef HAVE_LIBCRYPTO - warning("crypto code not compiled in"); -#endif - tcpmd5secret = optarg; - break; - - case 'O': - Oflag = 0; - break; - - case 'p': - ++pflag; - break; - - case 'q': - ++qflag; - ++suppress_default_print; - break; - - case 'r': - RFileName = optarg; - break; - - case 'R': - Rflag = 0; - break; - - case 's': { - char *end; - - snaplen = strtol(optarg, &end, 0); - if (optarg == end || *end != '\0' - || snaplen < 0 || snaplen > 65535) - error("invalid snaplen %s", optarg); - else if (snaplen == 0) - snaplen = 65535; - break; - } - - case 'S': - ++Sflag; - break; - - case 't': - ++tflag; - break; - - case 'T': - if (strcasecmp(optarg, "vat") == 0) - packettype = PT_VAT; - else if (strcasecmp(optarg, "wb") == 0) - packettype = PT_WB; - else if (strcasecmp(optarg, "rpc") == 0) - packettype = PT_RPC; - else if (strcasecmp(optarg, "rtp") == 0) - packettype = PT_RTP; - else if (strcasecmp(optarg, "rtcp") == 0) - packettype = PT_RTCP; - else if (strcasecmp(optarg, "snmp") == 0) - packettype = PT_SNMP; - else if (strcasecmp(optarg, "cnfp") == 0) - packettype = PT_CNFP; - else if (strcasecmp(optarg, "tftp") == 0) - packettype = PT_TFTP; - else if (strcasecmp(optarg, "aodv") == 0) - packettype = PT_AODV; - else - error("unknown packet type `%s'", optarg); - break; - - case 'u': - ++uflag; - break; - -#ifdef HAVE_PCAP_DUMP_FLUSH - case 'U': - ++Uflag; - break; -#endif - - case 'v': - ++vflag; - break; - - case 'w': - WFileName = optarg; - break; - - case 'W': - Wflag = atoi(optarg); - if (Wflag < 0) - error("invalid number of output files %s", optarg); - WflagChars = getWflagChars(Wflag); - break; - - case 'x': - ++xflag; - ++suppress_default_print; - break; - - case 'X': - ++Xflag; - ++suppress_default_print; - break; - - case 'y': - gndo->ndo_dltname = optarg; - gndo->ndo_dlt = - pcap_datalink_name_to_val(gndo->ndo_dltname); - if (gndo->ndo_dlt < 0) - error("invalid data link type %s", gndo->ndo_dltname); - break; - -#if defined(HAVE_PCAP_DEBUG) || defined(HAVE_YYDEBUG) - case 'Y': - { - /* Undocumented flag */ -#ifdef HAVE_PCAP_DEBUG - extern int pcap_debug; - pcap_debug = 1; -#else - extern int yydebug; - yydebug = 1; -#endif - } - break; -#endif - case 'Z': - if (optarg) { - username = strdup(optarg); - } - else { - usage(); - /* NOTREACHED */ - } - break; - - default: - usage(); - /* NOTREACHED */ - } - - switch (tflag) { - - case 0: /* Default */ - case 4: /* Default + Date*/ - thiszone = gmt2local(0); - break; - - case 1: /* No time stamp */ - case 2: /* Unix timeval style */ - case 3: /* Microseconds since previous packet */ - break; - - default: /* Not supported */ - error("only -t, -tt, -ttt, and -tttt are supported"); - break; - } - -#ifdef WITH_CHROOT - /* if run as root, prepare for chrooting */ - if (getuid() == 0 || geteuid() == 0) { - /* future extensibility for cmd-line arguments */ - if (!chroot_dir) - chroot_dir = WITH_CHROOT; - } -#endif - -#ifdef WITH_USER - /* if run as root, prepare for dropping root privileges */ - if (getuid() == 0 || geteuid() == 0) { - /* Run with '-Z root' to restore old behaviour */ - if (!username) - username = WITH_USER; - } -#endif - - if (RFileName != NULL) { - int dlt; - const char *dlt_name; - -#ifndef WIN32 - /* - * We don't need network access, so relinquish any set-UID - * or set-GID privileges we have (if any). - * - * We do *not* want set-UID privileges when opening a - * trace file, as that might let the user read other - * people's trace files (especially if we're set-UID - * root). - */ - if (setgid(getgid()) != 0 || setuid(getuid()) != 0 ) - fprintf(stderr, "Warning: setgid/setuid failed !\n"); -#endif /* WIN32 */ - pd = pcap_open_offline(RFileName, ebuf); - if (pd == NULL) - error("%s", ebuf); - dlt = pcap_datalink(pd); - dlt_name = pcap_datalink_val_to_name(dlt); - if (dlt_name == NULL) { - fprintf(stderr, "reading from file %s, link-type %u\n", - RFileName, dlt); - } else { - fprintf(stderr, - "reading from file %s, link-type %s (%s)\n", - RFileName, dlt_name, - pcap_datalink_val_to_description(dlt)); - } - localnet = 0; - netmask = 0; - if (fflag != 0) - error("-f and -r options are incompatible"); - } else { - if (device == NULL) { - device = pcap_lookupdev(ebuf); - if (device == NULL) - error("%s", ebuf); - } -#ifdef WIN32 - if(strlen(device) == 1) //we assume that an ASCII string is always longer than 1 char - { //a Unicode string has a \0 as second byte (so strlen() is 1) - fprintf(stderr, "%s: listening on %ws\n", program_name, device); - } - else - { - fprintf(stderr, "%s: listening on %s\n", program_name, device); - } - - fflush(stderr); -#endif /* WIN32 */ - *ebuf = '\0'; - pd = pcap_open_live(device, snaplen, !pflag, 1000, ebuf); - if (pd == NULL) - error("%s", ebuf); - else if (*ebuf) - warning("%s", ebuf); - /* - * Let user own process after socket has been opened. - */ -#ifndef WIN32 - if (setgid(getgid()) != 0 || setuid(getuid()) != 0) - fprintf(stderr, "Warning: setgid/setuid failed !\n"); -#endif /* WIN32 */ -#ifdef WIN32 - if(UserBufferSize != 1000000) - if(pcap_setbuff(pd, UserBufferSize)==-1){ - error("%s", pcap_geterr(pd)); - } -#endif /* WIN32 */ - if (Lflag) - show_dlts_and_exit(pd); - if (gndo->ndo_dlt >= 0) { -#ifdef HAVE_PCAP_SET_DATALINK - if (pcap_set_datalink(pd, gndo->ndo_dlt) < 0) - error("%s", pcap_geterr(pd)); -#else - /* - * We don't actually support changing the - * data link type, so we only let them - * set it to what it already is. - */ - if (gndo->ndo_dlt != pcap_datalink(pd)) { - error("%s is not one of the DLTs supported by this device\n", - gndo->ndo_dltname); - } -#endif - (void)fprintf(stderr, "%s: data link type %s\n", - program_name, gndo->ndo_dltname); - (void)fflush(stderr); - } - i = pcap_snapshot(pd); - if (snaplen < i) { - warning("snaplen raised from %d to %d", snaplen, i); - snaplen = i; - } - if (pcap_lookupnet(device, &localnet, &netmask, ebuf) < 0) { - localnet = 0; - netmask = 0; - warning("%s", ebuf); - } - } - if (infile) - cmdbuf = read_infile(infile); - else - cmdbuf = copy_argv(&argv[optind]); - - if (pcap_compile(pd, &fcode, cmdbuf, Oflag, netmask) < 0) - error("%s", pcap_geterr(pd)); - if (dflag) { - bpf_dump(&fcode, dflag); - pcap_close(pd); - exit(0); - } - init_addrtoname(localnet, netmask); - -#ifndef WIN32 - (void)setsignal(SIGPIPE, cleanup); -#endif /* WIN32 */ - (void)setsignal(SIGTERM, cleanup); - (void)setsignal(SIGINT, cleanup); - /* Cooperate with nohup(1) */ -#ifndef WIN32 - if ((oldhandler = setsignal(SIGHUP, cleanup)) != SIG_DFL) - (void)setsignal(SIGHUP, oldhandler); -#endif /* WIN32 */ - - if (pcap_setfilter(pd, &fcode) < 0) - error("%s", pcap_geterr(pd)); - if (WFileName) { - pcap_dumper_t *p; - - WFileNameAlt = (char *)malloc(strlen(WFileName) + MAX_CFLAG_CHARS + 1); - if (WFileNameAlt == NULL) - error("malloc of WFileNameAlt"); - MakeFilename(WFileNameAlt, WFileName, 0, WflagChars); - p = pcap_dump_open(pd, WFileNameAlt); - if (p == NULL) - error("%s", pcap_geterr(pd)); - if (Cflag != 0) { - callback = dump_packet_and_trunc; - dumpinfo.WFileName = WFileName; - dumpinfo.pd = pd; - dumpinfo.p = p; - pcap_userdata = (u_char *)&dumpinfo; - } else { - callback = dump_packet; - pcap_userdata = (u_char *)p; - } - } else { - type = pcap_datalink(pd); - printinfo.printer = lookup_printer(type); - if (printinfo.printer == NULL) { - gndo->ndo_dltname = pcap_datalink_val_to_name(type); - if (gndo->ndo_dltname != NULL) - error("unsupported data link type %s", - gndo->ndo_dltname); - else - error("unsupported data link type %d", type); - } - callback = print_packet; - pcap_userdata = (u_char *)&printinfo; - } -#ifndef WIN32 - /* - * We cannot do this earlier, because we want to be able to open - * the file (if done) for writing before giving up permissions. - */ - if (getuid() == 0 || geteuid() == 0) { - if (username || chroot_dir) - droproot(username, chroot_dir); - } -#endif /* WIN32 */ -#ifdef SIGINFO - (void)setsignal(SIGINFO, requestinfo); -#endif - - if (vflag > 0 && WFileName) { - /* - * When capturing to a file, "-v" means tcpdump should, - * every 10 secodns, "v"erbosely report the number of - * packets captured. - */ -#ifdef USE_WIN32_MM_TIMER - /* call verbose_stats_dump() each 1000 +/-100msec */ - timer_id = timeSetEvent(1000, 100, verbose_stats_dump, 0, TIME_PERIODIC); - setvbuf(stderr, NULL, _IONBF, 0); -#elif defined(HAVE_ALARM) - (void)setsignal(SIGALRM, verbose_stats_dump); - alarm(1); -#endif - } - -#ifndef WIN32 - if (RFileName == NULL) { - int dlt; - const char *dlt_name; - - if (!vflag && !WFileName) { - (void)fprintf(stderr, - "%s: verbose output suppressed, use -v or -vv for full protocol decode\n", - program_name); - } else - (void)fprintf(stderr, "%s: ", program_name); - dlt = pcap_datalink(pd); - dlt_name = pcap_datalink_val_to_name(dlt); - if (dlt_name == NULL) { - (void)fprintf(stderr, "listening on %s, link-type %u, capture size %u bytes\n", - device, dlt, snaplen); - } else { - (void)fprintf(stderr, "listening on %s, link-type %s (%s), capture size %u bytes\n", - device, dlt_name, - pcap_datalink_val_to_description(dlt), snaplen); - } - (void)fflush(stderr); - } -#endif /* WIN32 */ - status = pcap_loop(pd, cnt, callback, pcap_userdata); - if (WFileName == NULL) { - /* - * We're printing packets. Flush the printed output, - * so it doesn't get intermingled with error output. - */ - if (status == -2) { - /* - * We got interrupted, so perhaps we didn't - * manage to finish a line we were printing. - * Print an extra newline, just in case. - */ - putchar('\n'); - } - (void)fflush(stdout); - } - if (status == -1) { - /* - * Error. Report it. - */ - (void)fprintf(stderr, "%s: pcap_loop: %s\n", - program_name, pcap_geterr(pd)); - } - if (RFileName == NULL) { - /* - * We're doing a live capture. Report the capture - * statistics. - */ - info(1); - } - pcap_close(pd); - exit(status == -1 ? 1 : 0); -} - -/* make a clean exit on interrupts */ -static RETSIGTYPE -cleanup(int signo _U_) -{ -#ifdef USE_WIN32_MM_TIMER - if (timer_id) - timeKillEvent(timer_id); - timer_id = 0; -#elif defined(HAVE_ALARM) - alarm(0); -#endif - -#ifdef HAVE_PCAP_BREAKLOOP - /* - * We have "pcap_breakloop()"; use it, so that we do as little - * as possible in the signal handler (it's probably not safe - * to do anything with standard I/O streams in a signal handler - - * the ANSI C standard doesn't say it is). - */ - pcap_breakloop(pd); -#else - /* - * We don't have "pcap_breakloop()"; this isn't safe, but - * it's the best we can do. Print the summary if we're - * not reading from a savefile - i.e., if we're doing a - * live capture - and exit. - */ - if (pd != NULL && pcap_file(pd) == NULL) { - /* - * We got interrupted, so perhaps we didn't - * manage to finish a line we were printing. - * Print an extra newline, just in case. - */ - putchar('\n'); - (void)fflush(stdout); - info(1); - } - exit(0); -#endif -} - -static void -info(register int verbose) -{ - struct pcap_stat stat; - - if (pcap_stats(pd, &stat) < 0) { - (void)fprintf(stderr, "pcap_stats: %s\n", pcap_geterr(pd)); - return; - } - - if (!verbose) - fprintf(stderr, "%s: ", program_name); - - (void)fprintf(stderr, "%u packets captured", packets_captured); - if (!verbose) - fputs(", ", stderr); - else - putc('\n', stderr); - (void)fprintf(stderr, "%d packets received by filter", stat.ps_recv); - if (!verbose) - fputs(", ", stderr); - else - putc('\n', stderr); - (void)fprintf(stderr, "%d packets dropped by kernel\n", stat.ps_drop); - infoprint = 0; -} - -static void -dump_packet_and_trunc(u_char *user, const struct pcap_pkthdr *h, const u_char *sp) -{ - struct dump_info *dump_info; - char *name; - - ++packets_captured; - - ++infodelay; - - dump_info = (struct dump_info *)user; - - /* - * XXX - this won't prevent capture files from getting - * larger than Cflag - the last packet written to the - * file could put it over Cflag. - */ - if (pcap_dump_ftell(dump_info->p) > Cflag) { - /* - * Close the current file and open a new one. - */ - pcap_dump_close(dump_info->p); - Cflag_count++; - if (Wflag > 0) { - if (Cflag_count >= Wflag) - Cflag_count = 0; - } else { - if (Cflag_count >= MAX_CFLAG) - error("too many output files"); - } - name = (char *)malloc(strlen(dump_info->WFileName) + MAX_CFLAG_CHARS + 1); - if (name == NULL) - error("dump_packet_and_trunc: malloc"); - MakeFilename(name, dump_info->WFileName, Cflag_count, WflagChars); - dump_info->p = pcap_dump_open(dump_info->pd, name); - free(name); - if (dump_info->p == NULL) - error("%s", pcap_geterr(pd)); - } - - pcap_dump((u_char *)dump_info->p, h, sp); -#ifdef HAVE_PCAP_DUMP_FLUSH - if (Uflag) - pcap_dump_flush(dump_info->p); -#endif - - --infodelay; - if (infoprint) - info(0); -} - -static void -dump_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *sp) -{ - ++packets_captured; - - ++infodelay; - - pcap_dump(user, h, sp); -#ifdef HAVE_PCAP_DUMP_FLUSH - if (Uflag) - pcap_dump_flush((pcap_dumper_t *)user); -#endif - - --infodelay; - if (infoprint) - info(0); -} - -static void -print_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *sp) -{ - struct print_info *print_info; - u_int hdrlen; - - ++packets_captured; - - ++infodelay; - ts_print(&h->ts); - - print_info = (struct print_info *)user; - - /* - * Some printers want to check that they're not walking off the - * end of the packet. - * Rather than pass it all the way down, we set this global. - */ - snapend = sp + h->caplen; - - hdrlen = (*print_info->printer)(h, sp); - if (Xflag) { - /* - * 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) { - /* - * Include the link-layer header. - */ - hex_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_print("\n\t", sp + hdrlen, - h->caplen - hdrlen); - } - } else if (Aflag) { - /* - * Print the raw packet data in ASCII. - */ - if (Aflag > 1) { - /* - * Include the link-layer header. - */ - ascii_print(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) - ascii_print(sp + hdrlen, h->caplen - hdrlen); - } - } - - putchar('\n'); - - --infodelay; - if (infoprint) - info(0); -} - -#ifdef WIN32 - /* - * XXX - there should really be libpcap calls to get the version - * number as a string (the string would be generated from #defines - * at run time, so that it's not generated from string constants - * in the library, as, on many UNIX systems, those constants would - * be statically linked into the application executable image, and - * would thus reflect the version of libpcap on the system on - * which the application was *linked*, not the system on which it's - * *running*. - * - * That routine should be documented, unlike the "version[]" - * string, so that UNIX vendors providing their own libpcaps - * don't omit it (as a couple of vendors have...). - * - * Packet.dll should perhaps also export a routine to return the - * version number of the Packet.dll code, to supply the - * "Wpcap_version" information on Windows. - */ - char WDversion[]="current-cvs.tcpdump.org"; -#if !defined(HAVE_GENERATED_VERSION) - char version[]="current-cvs.tcpdump.org"; -#endif - char pcap_version[]="current-cvs.tcpdump.org"; - char Wpcap_version[]="3.1"; -#endif - -/* - * By default, print the specified data out in hex and ASCII. - */ -static void -ndo_default_print(netdissect_options *ndo _U_, const u_char *bp, u_int length) -{ - hex_and_ascii_print("\n\t", bp, length); /* pass on lf and identation string */ -} - -void -default_print(const u_char *bp, u_int length) -{ - ndo_default_print(gndo, bp, length); -} - -#ifdef SIGINFO -RETSIGTYPE requestinfo(int signo _U_) -{ - if (infodelay) - ++infoprint; - else - info(0); -} -#endif - -/* - * Called once each second in verbose mode while dumping to file - */ -#ifdef USE_WIN32_MM_TIMER -void CALLBACK verbose_stats_dump (UINT timer_id _U_, UINT msg _U_, DWORD_PTR arg _U_, - DWORD_PTR dw1 _U_, DWORD_PTR dw2 _U_) -{ - struct pcap_stat stat; - - if (infodelay == 0 && pcap_stats(pd, &stat) >= 0) - fprintf(stderr, "Got %u\r", packets_captured); -} -#elif defined(HAVE_ALARM) -static void verbose_stats_dump(int sig _U_) -{ - struct pcap_stat stat; - - if (infodelay == 0 && pcap_stats(pd, &stat) >= 0) - fprintf(stderr, "Got %u\r", packets_captured); - alarm(1); -} -#endif - -static void -usage(void) -{ - extern char version[]; -#ifndef HAVE_PCAP_LIB_VERSION -#if defined(WIN32) || defined(HAVE_PCAP_VERSION) - extern char pcap_version[]; -#else /* defined(WIN32) || defined(HAVE_PCAP_VERSION) */ - static char pcap_version[] = "unknown"; -#endif /* defined(WIN32) || defined(HAVE_PCAP_VERSION) */ -#endif /* HAVE_PCAP_LIB_VERSION */ - -#ifdef HAVE_PCAP_LIB_VERSION -#ifdef WIN32 - (void)fprintf(stderr, "%s version %s, based on tcpdump version %s\n", program_name, WDversion, version); -#else /* WIN32 */ - (void)fprintf(stderr, "%s version %s\n", program_name, version); -#endif /* WIN32 */ - (void)fprintf(stderr, "%s\n",pcap_lib_version()); -#else /* HAVE_PCAP_LIB_VERSION */ -#ifdef WIN32 - (void)fprintf(stderr, "%s version %s, based on tcpdump version %s\n", program_name, WDversion, version); - (void)fprintf(stderr, "WinPcap version %s, based on libpcap version %s\n",Wpcap_version, pcap_version); -#else /* WIN32 */ - (void)fprintf(stderr, "%s version %s\n", program_name, version); - (void)fprintf(stderr, "libpcap version %s\n", pcap_version); -#endif /* WIN32 */ -#endif /* HAVE_PCAP_LIB_VERSION */ - (void)fprintf(stderr, -"Usage: %s [-aAd" D_FLAG "eflLnNOpqRStu" U_FLAG "vxX]" B_FLAG_USAGE " [-c count] [ -C file_size ]\n", program_name); - (void)fprintf(stderr, -"\t\t[ -E algo:secret ] [ -F file ] [ -i interface ] [ -M secret ]\n"); - (void)fprintf(stderr, -"\t\t[ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]\n"); - (void)fprintf(stderr, -"\t\t[ -W filecount ] [ -y datalinktype ] [ -Z user ]\n"); - (void)fprintf(stderr, -"\t\t[ expression ]\n"); - exit(1); -} - - - -/* VARARGS */ -static void -ndo_error(netdissect_options *ndo _U_, const char *fmt, ...) -{ - va_list ap; - - (void)fprintf(stderr, "%s: ", program_name); - va_start(ap, fmt); - (void)vfprintf(stderr, fmt, ap); - va_end(ap); - if (*fmt) { - fmt += strlen(fmt); - if (fmt[-1] != '\n') - (void)fputc('\n', stderr); - } - exit(1); - /* NOTREACHED */ -} - -/* VARARGS */ -static void -ndo_warning(netdissect_options *ndo _U_, const char *fmt, ...) -{ - va_list ap; - - (void)fprintf(stderr, "%s: WARNING: ", program_name); - va_start(ap, fmt); - (void)vfprintf(stderr, fmt, ap); - va_end(ap); - if (*fmt) { - fmt += strlen(fmt); - if (fmt[-1] != '\n') - (void)fputc('\n', stderr); - } -} - diff --git a/contrib/tcpdump/telnet.h b/contrib/tcpdump/telnet.h deleted file mode 100644 index da11043019f11..0000000000000 --- a/contrib/tcpdump/telnet.h +++ /dev/null @@ -1,348 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/telnet.h,v 1.4 2002/06/11 17:09:01 itojun Exp $ (LBL) */ - -/* $NetBSD: telnet.h,v 1.9 2001/06/11 01:50:50 wiz Exp $ */ - -/* - * Copyright (c) 1983, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)telnet.h 8.2 (Berkeley) 12/15/93 - */ - -#ifndef _ARPA_TELNET_H_ -#define _ARPA_TELNET_H_ - -/* - * Definitions for the TELNET protocol. - */ -#define IAC 255 /* interpret as command: */ -#define DONT 254 /* you are not to use option */ -#define DO 253 /* please, you use option */ -#define WONT 252 /* I won't use option */ -#define WILL 251 /* I will use option */ -#define SB 250 /* interpret as subnegotiation */ -#define GA 249 /* you may reverse the line */ -#define EL 248 /* erase the current line */ -#define EC 247 /* erase the current character */ -#define AYT 246 /* are you there */ -#define AO 245 /* abort output--but let prog finish */ -#define IP 244 /* interrupt process--permanently */ -#define BREAK 243 /* break */ -#define DM 242 /* data mark--for connect. cleaning */ -#define NOP 241 /* nop */ -#define SE 240 /* end sub negotiation */ -#define EOR 239 /* end of record (transparent mode) */ -#define ABORT 238 /* Abort process */ -#define SUSP 237 /* Suspend process */ -#define xEOF 236 /* End of file: EOF is already used... */ - -#define SYNCH 242 /* for telfunc calls */ - -#ifdef TELCMDS -const char *telcmds[] = { - "EOF", "SUSP", "ABORT", "EOR", - "SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC", - "EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC", 0, -}; -#else -extern char *telcmds[]; -#endif - -#define TELCMD_FIRST xEOF -#define TELCMD_LAST IAC -#define TELCMD_OK(x) ((unsigned int)(x) <= TELCMD_LAST && \ - (unsigned int)(x) >= TELCMD_FIRST) -#define TELCMD(x) telcmds[(x)-TELCMD_FIRST] - -/* telnet options */ -#define TELOPT_BINARY 0 /* 8-bit data path */ -#define TELOPT_ECHO 1 /* echo */ -#define TELOPT_RCP 2 /* prepare to reconnect */ -#define TELOPT_SGA 3 /* suppress go ahead */ -#define TELOPT_NAMS 4 /* approximate message size */ -#define TELOPT_STATUS 5 /* give status */ -#define TELOPT_TM 6 /* timing mark */ -#define TELOPT_RCTE 7 /* remote controlled transmission and echo */ -#define TELOPT_NAOL 8 /* negotiate about output line width */ -#define TELOPT_NAOP 9 /* negotiate about output page size */ -#define TELOPT_NAOCRD 10 /* negotiate about CR disposition */ -#define TELOPT_NAOHTS 11 /* negotiate about horizontal tabstops */ -#define TELOPT_NAOHTD 12 /* negotiate about horizontal tab disposition */ -#define TELOPT_NAOFFD 13 /* negotiate about formfeed disposition */ -#define TELOPT_NAOVTS 14 /* negotiate about vertical tab stops */ -#define TELOPT_NAOVTD 15 /* negotiate about vertical tab disposition */ -#define TELOPT_NAOLFD 16 /* negotiate about output LF disposition */ -#define TELOPT_XASCII 17 /* extended ascic character set */ -#define TELOPT_LOGOUT 18 /* force logout */ -#define TELOPT_BM 19 /* byte macro */ -#define TELOPT_DET 20 /* data entry terminal */ -#define TELOPT_SUPDUP 21 /* supdup protocol */ -#define TELOPT_SUPDUPOUTPUT 22 /* supdup output */ -#define TELOPT_SNDLOC 23 /* send location */ -#define TELOPT_TTYPE 24 /* terminal type */ -#define TELOPT_EOR 25 /* end or record */ -#define TELOPT_TUID 26 /* TACACS user identification */ -#define TELOPT_OUTMRK 27 /* output marking */ -#define TELOPT_TTYLOC 28 /* terminal location number */ -#define TELOPT_3270REGIME 29 /* 3270 regime */ -#define TELOPT_X3PAD 30 /* X.3 PAD */ -#define TELOPT_NAWS 31 /* window size */ -#define TELOPT_TSPEED 32 /* terminal speed */ -#define TELOPT_LFLOW 33 /* remote flow control */ -#define TELOPT_LINEMODE 34 /* Linemode option */ -#define TELOPT_XDISPLOC 35 /* X Display Location */ -#define TELOPT_OLD_ENVIRON 36 /* Old - Environment variables */ -#define TELOPT_AUTHENTICATION 37/* Authenticate */ -#define TELOPT_ENCRYPT 38 /* Encryption option */ -#define TELOPT_NEW_ENVIRON 39 /* New - Environment variables */ -#define TELOPT_EXOPL 255 /* extended-options-list */ - - -#define NTELOPTS (1+TELOPT_NEW_ENVIRON) -#ifdef TELOPTS -const char *telopts[NTELOPTS+1] = { - "BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD", "NAME", - "STATUS", "TIMING MARK", "RCTE", "NAOL", "NAOP", - "NAOCRD", "NAOHTS", "NAOHTD", "NAOFFD", "NAOVTS", - "NAOVTD", "NAOLFD", "EXTEND ASCII", "LOGOUT", "BYTE MACRO", - "DATA ENTRY TERMINAL", "SUPDUP", "SUPDUP OUTPUT", - "SEND LOCATION", "TERMINAL TYPE", "END OF RECORD", - "TACACS UID", "OUTPUT MARKING", "TTYLOC", - "3270 REGIME", "X.3 PAD", "NAWS", "TSPEED", "LFLOW", - "LINEMODE", "XDISPLOC", "OLD-ENVIRON", "AUTHENTICATION", - "ENCRYPT", "NEW-ENVIRON", - 0, -}; -#define TELOPT_FIRST TELOPT_BINARY -#define TELOPT_LAST TELOPT_NEW_ENVIRON -#define TELOPT_OK(x) ((unsigned int)(x) <= TELOPT_LAST) -#define TELOPT(x) telopts[(x)-TELOPT_FIRST] -#endif - -/* sub-option qualifiers */ -#define TELQUAL_IS 0 /* option is... */ -#define TELQUAL_SEND 1 /* send option */ -#define TELQUAL_INFO 2 /* ENVIRON: informational version of IS */ -#define TELQUAL_REPLY 2 /* AUTHENTICATION: client version of IS */ -#define TELQUAL_NAME 3 /* AUTHENTICATION: client version of IS */ - -#define LFLOW_OFF 0 /* Disable remote flow control */ -#define LFLOW_ON 1 /* Enable remote flow control */ -#define LFLOW_RESTART_ANY 2 /* Restart output on any char */ -#define LFLOW_RESTART_XON 3 /* Restart output only on XON */ - -/* - * LINEMODE suboptions - */ - -#define LM_MODE 1 -#define LM_FORWARDMASK 2 -#define LM_SLC 3 - -#define MODE_EDIT 0x01 -#define MODE_TRAPSIG 0x02 -#define MODE_ACK 0x04 -#define MODE_SOFT_TAB 0x08 -#define MODE_LIT_ECHO 0x10 - -#define MODE_MASK 0x1f - -/* Not part of protocol, but needed to simplify things... */ -#define MODE_FLOW 0x0100 -#define MODE_ECHO 0x0200 -#define MODE_INBIN 0x0400 -#define MODE_OUTBIN 0x0800 -#define MODE_FORCE 0x1000 - -#define SLC_SYNCH 1 -#define SLC_BRK 2 -#define SLC_IP 3 -#define SLC_AO 4 -#define SLC_AYT 5 -#define SLC_EOR 6 -#define SLC_ABORT 7 -#define SLC_EOF 8 -#define SLC_SUSP 9 -#define SLC_EC 10 -#define SLC_EL 11 -#define SLC_EW 12 -#define SLC_RP 13 -#define SLC_LNEXT 14 -#define SLC_XON 15 -#define SLC_XOFF 16 -#define SLC_FORW1 17 -#define SLC_FORW2 18 -#define SLC_MCL 19 -#define SLC_MCR 20 -#define SLC_MCWL 21 -#define SLC_MCWR 22 -#define SLC_MCBOL 23 -#define SLC_MCEOL 24 -#define SLC_INSRT 25 -#define SLC_OVER 26 -#define SLC_ECR 27 -#define SLC_EWR 28 -#define SLC_EBOL 29 -#define SLC_EEOL 30 - -#define NSLC 30 - -/* - * For backwards compatibility, we define SLC_NAMES to be the - * list of names if SLC_NAMES is not defined. - */ -#define SLC_NAMELIST "0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", \ - "ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP", \ - "LNEXT", "XON", "XOFF", "FORW1", "FORW2", \ - "MCL", "MCR", "MCWL", "MCWR", "MCBOL", \ - "MCEOL", "INSRT", "OVER", "ECR", "EWR", \ - "EBOL", "EEOL", \ - 0, - -#ifdef SLC_NAMES -const char *slc_names[] = { - SLC_NAMELIST -}; -#else -extern char *slc_names[]; -#define SLC_NAMES SLC_NAMELIST -#endif - -#define SLC_NAME_OK(x) ((unsigned int)(x) <= NSLC) -#define SLC_NAME(x) slc_names[x] - -#define SLC_NOSUPPORT 0 -#define SLC_CANTCHANGE 1 -#define SLC_VARIABLE 2 -#define SLC_DEFAULT 3 -#define SLC_LEVELBITS 0x03 - -#define SLC_FUNC 0 -#define SLC_FLAGS 1 -#define SLC_VALUE 2 - -#define SLC_ACK 0x80 -#define SLC_FLUSHIN 0x40 -#define SLC_FLUSHOUT 0x20 - -#define OLD_ENV_VAR 1 -#define OLD_ENV_VALUE 0 -#define NEW_ENV_VAR 0 -#define NEW_ENV_VALUE 1 -#define ENV_ESC 2 -#define ENV_USERVAR 3 - -/* - * AUTHENTICATION suboptions - */ - -/* - * Who is authenticating who ... - */ -#define AUTH_WHO_CLIENT 0 /* Client authenticating server */ -#define AUTH_WHO_SERVER 1 /* Server authenticating client */ -#define AUTH_WHO_MASK 1 - -/* - * amount of authentication done - */ -#define AUTH_HOW_ONE_WAY 0 -#define AUTH_HOW_MUTUAL 2 -#define AUTH_HOW_MASK 2 - -/* - * should we be encrypting? (not yet formally standardized) - */ -#define AUTH_ENCRYPT_OFF 0 -#define AUTH_ENCRYPT_ON 4 -#define AUTH_ENCRYPT_MASK 4 - -#define AUTHTYPE_NULL 0 -#define AUTHTYPE_KERBEROS_V4 1 -#define AUTHTYPE_KERBEROS_V5 2 -#define AUTHTYPE_SPX 3 -#define AUTHTYPE_MINK 4 -#define AUTHTYPE_CNT 5 - -#define AUTHTYPE_TEST 99 - -#ifdef AUTH_NAMES -const char *authtype_names[] = { - "NULL", "KERBEROS_V4", "KERBEROS_V5", "SPX", "MINK", 0, -}; -#else -extern char *authtype_names[]; -#endif - -#define AUTHTYPE_NAME_OK(x) ((unsigned int)(x) < AUTHTYPE_CNT) -#define AUTHTYPE_NAME(x) authtype_names[x] - -/* - * ENCRYPTion suboptions - */ -#define ENCRYPT_IS 0 /* I pick encryption type ... */ -#define ENCRYPT_SUPPORT 1 /* I support encryption types ... */ -#define ENCRYPT_REPLY 2 /* Initial setup response */ -#define ENCRYPT_START 3 /* Am starting to send encrypted */ -#define ENCRYPT_END 4 /* Am ending encrypted */ -#define ENCRYPT_REQSTART 5 /* Request you start encrypting */ -#define ENCRYPT_REQEND 6 /* Request you send encrypting */ -#define ENCRYPT_ENC_KEYID 7 -#define ENCRYPT_DEC_KEYID 8 -#define ENCRYPT_CNT 9 - -#define ENCTYPE_ANY 0 -#define ENCTYPE_DES_CFB64 1 -#define ENCTYPE_DES_OFB64 2 -#define ENCTYPE_CNT 3 - -#ifdef ENCRYPT_NAMES -const char *encrypt_names[] = { - "IS", "SUPPORT", "REPLY", "START", "END", - "REQUEST-START", "REQUEST-END", "ENC-KEYID", "DEC-KEYID", - 0, -}; -const char *enctype_names[] = { - "ANY", "DES_CFB64", "DES_OFB64", 0, -}; -#else -extern char *encrypt_names[]; -extern char *enctype_names[]; -#endif - - -#define ENCRYPT_NAME_OK(x) ((unsigned int)(x) < ENCRYPT_CNT) -#define ENCRYPT_NAME(x) encrypt_names[x] - -#define ENCTYPE_NAME_OK(x) ((unsigned int)(x) < ENCTYPE_CNT) -#define ENCTYPE_NAME(x) enctype_names[x] - -#endif /* _ARPA_TELNET_H_ */ diff --git a/contrib/tcpdump/tests/.cvsignore b/contrib/tcpdump/tests/.cvsignore deleted file mode 100644 index f097c8a945c71..0000000000000 --- a/contrib/tcpdump/tests/.cvsignore +++ /dev/null @@ -1,11 +0,0 @@ -*.new -*.pcap -02-sunrise-sunset-esp.pcap -08-sunrise-sunset-aes.pcap -08-sunrise-sunset-esp.pcap -08-sunrise-sunset-esp2.pcap -isakmp-delete-segfault.pcap -isakmp-identification-segfault.pcap -isakmp-pointer-loop.pcap -run1.pcap -run2.pcap diff --git a/contrib/tcpdump/tests/02-sunrise-sunset-esp.puu b/contrib/tcpdump/tests/02-sunrise-sunset-esp.puu deleted file mode 100644 index 0ceffc1c1c830..0000000000000 --- a/contrib/tcpdump/tests/02-sunrise-sunset-esp.puu +++ /dev/null @@ -1,34 +0,0 @@ -begin 644 02-sunrise-sunset-esp.pcap -MU,.RH0(`!``````````````&```!``````````````"6````E@```!```&1D -M11```&1D(P@`10``B/]G``!`,O:5P`$"%\`!`BT2-%9X`````4P@12\\L)(1 -MTZ=(S>7($>.<3N@\_I:AY"K/TKAZJP719"NCKYP;PT(0+$"M%=]-X"`*8V.' -M-'$1A]02"3N#OZI#&1R]A*1;`G8S@YFQ]<H7S))417Y9!E4:<$'CW)%VZ&_3 -M_]T`L+P1^!`PEP``````````E@```)8````0``!D9$40``!D9",(`$4``(C_ -M:```0#+VE,`!`A?``0(M$C16>`````(:<$'CW)%VZ',2KQMB@CN?'"^GJ<=: -MD-0`+.V^J'2AK).'XQ_B"B8:[%A_+K[6KS2'XR[UN`,R"BJP?^].ZM#/[$)# -M17^!D"8_[BZ>GU4Z*$7I"N$U*>J47?C-4;I>#`%6+#0%]D75YC']*Z\````` -M`````)8```"6````$```9&1%$```9&0C"`!%``"(_VD``$`R]I/``0(7P`$" -M+1(T5G@````#7?C-4;I>#`%@W%89?QJ#$TJ,4G\FO&HO=F+,,%1E(]);XI]T -MV7W.RY$2=JZ1%!QCNX[;^.JD4W91;7)NJWV2MF4?7`=&_3OWW%V&6RIXKB75 -M#;2TWNL"A:MF!I@_5R^]L6;Z`L?E@1:T&71G``````````"6````E@```!`` -M`&1D11```&1D(P@`10``B/]J``!`,O:2P`$"%\`!`BT2-%9X````!*MF!I@_ -M5R^]%';9*Q:S_B]]O_8FV:2K1A!]/SQHI7>OS815*I?4%/:.=BBJUEGJ(X8\ -M<SZ>P1E/@&P\9MR)DP3[UCWI@,MR%A$\CR]=G(("[CFB7AUN$AENZOO&\:7% -M2KLW<'NP,L(I=!;8=0``````````E@```)8````0``!D9$40``!D9",(`$4` -M`(C_:P``0#+VD<`!`A?``0(M$C16>`````5NZOO&\:7%2J12,9;LOK"-S,=$ -MO0]X+J(OJQED#PLBRY[\^352UZK&57<R0L9JQ:KH6`)BUN$`5]1WU@"A!8TM -MO^)<;`-SW;1HQO$CE\#`O[W[17GW[0G&M,^T?7>6,Z<:%73AWV3:;Y/:=@(` -M`````````)8```"6````$```9&1%$```9&0C"`!%``"(_VP``$`R]I#``0(7 -MP`$"+1(T5G@````&M,^T?7>6,Z=>N_YZQFV[H1^6\!/I*IMAOHZE\E0M.Z!X -M#[0EG3#>%]7`]*2F?@S4X2''TK09J@NG/.HEXCE./..K^'-@":X[\?0L+B`S -MQA\HTK\'J]:S]N6O`]\)NQD)9;H2P\K`^NX37`R5``````````"6````E@`` -M`!```&1D11```&1D(P@`10``B/]M``!`,O:/P`$"%\`!`BT2-%9X````!^6O -M`]\)NQD)>BYZ>`/DA=N;A2...3-7FZOK?:5KGXBN`/E?$\[-11-$G#E;(>N" -M+<$/YP'SM$>16LU18&Q]9)$]0)/M]:2Z#A6]-,SM*>FI/`X*K-*-:KS3IW<" -MO(>(P(K=:X::SJ;O[J>0K```````````E@```)8````0``!D9$40``!D9",( -M`$4``(C_;@``0#+VCL`!`A?``0(M$C16>`````C3IW<"O(>(P'-43;C[`MCD -M`BMZAX]F!?'Z$8Q"5HYMVDC9"8I^O(Z4!/)`/IVD-(ZK)_52-H2XK+,(-LR) -MM)K#XLF">KY0>C?\[MA%3F%$?ORJ@:>O]5H>?-$OQH)J<ZFOW_+K%G=UG0"[ -"G'T` -` -end diff --git a/contrib/tcpdump/tests/08-sunrise-sunset-aes.puu b/contrib/tcpdump/tests/08-sunrise-sunset-aes.puu deleted file mode 100644 index ec8793d022382..0000000000000 --- a/contrib/tcpdump/tests/08-sunrise-sunset-aes.puu +++ /dev/null @@ -1,36 +0,0 @@ -begin 644 08-sunrise-sunset-aes.pcap -MU,.RH0(`!``````````````&```!``````````````"F````I@```!```&1D -M11```&1D(P@`10``F/SJ``!`,OD"P`$"%\`!`BW1(T5G`````>:['.C0J(%P -MVF'>(TU6&*"9A,`,/KS\:>DH>O_L(51)_[YY"L<H#LJ/;(BQ)=[*$<APY/A1 -M-"T@(`_Q&)S!C)$*7S?G3Q4H\F=)OYF+P@S&11%^*]S)N@L*TZ@!:&&:QFZT -ML'#7<>9?8'?J4V:_.]B+6UR\T>39D+=NA;$``````````*8```"F````$``` -M9&1%$```9&0C"`!%``"8_.L``$`R^0'``0(7P`$"+=$C16<````";K2P<-=Q -MYE]@=^I39K\[V$1HDU9'L,6BVK.^B4]E6QY&:?3?T)G?"RSU;X!J]]7S)<`, -M*L!SYO^RUWR?!EIJMWU=5B406YL-I`]LK`^;-3%(NEY#R`ST=W40=:*[M$*8 -M#<KX)19@.`.4_5YD^:V;G@3>`GLTK(5ZCS"BC@``````````I@```*8````0 -M``!D9$40``!D9",(`$4``)C\[```0#+Y`,`!`A?``0(MT2-%9P````,-RO@E -M%F`X`Y3]7F3YK9N>=6-;U&'6">_4H80DMY^Z9E3ZL3[ONN*L<"Z@7(VO]XT^ -M/2JP<(/^8NTO-4\/B5AJEC4N;,\"7-&(;9AM_2G5A1C.[LBK3')P?AE;$I[) -M!8N&RC?OTD7<V)AIU4,*E>7ELURFXRD/JD(:@RER``````````"F````I@`` -M`!```&1D11```&1D(P@`10``F/SM``!`,OC_P`$"%\`!`BW1(T5G````!(;* -M-^_21=S8F&G50PJ5Y>5K%@R;)A(E<5YD'@86@GT"-&&MHP*.A=?%=:FDZH=4 -M*9":>]'G'CB4%2?PJ"2^H*51\8P!9T`X3#;F+H$[<GW7=?K.R30-'6'L3AO8 -MR=:M3S$GIZ>4Z$7ZL0<\S=S\%`:BW9U2'@U^@D,,:.P``````````*8```"F -M````$```9&1%$```9&0C"`!%``"8_.X``$`R^/[``0(7P`$"+=$C16<````% -M,2>GIY3H1?JQ!SS-W/P4!BW&*&A[$!XGK<^M^>_X193"G"1QTWG>Q"CO25$" -MPM+1+8[6&(17\EE\P:6-WVPT=911?@'-Z,,/UVZ2!QV(X4513U9]P62CJMS> -M^ODBGHU=%T.H2&Z<4,8(!4,2[&A4^H="L:+`=4G?*(7,2@``````````I@`` -M`*8````0``!D9$40``!D9",(`$4``)C\[P``0#+X_<`!`A?``0(MT2-%9P`` -M``870ZA(;IQ0Q@@%0Q+L:%3Z@*HQPZA]3STWDY#CYJGOJH)K<KVT9G61>>I' -MEHMF"X!^G,H@,YWT7^=60.3/$7?AYH)G9GBD%%#,D]!EDA]B*?UE>U96+"5\ -MK=""/.LO'__^;$N<E@!.2&3^@U:P__8_'D^YC!41E,!@!6<K``````````"F -M````I@```!```&1D11```&1D(P@`10``F/SP``!`,OC\P`$"%\`!`BW1(T5G -M````!_YL2YR6`$Y(9/Z#5K#_]C_ZJU%7M?L23>I`L#D]@&G?Z7B2O#GI?NDK -MF[7JPN,8V\H>%G+)'+%+FL*&\8+H2^KFWF5YQ:$4V!,1?G;=OYD;!,3YD'V( -MW[Y!I(U=X9[\:L)(5GBJ,B!-5N$.CGV$VLD^R?Z,KL[AMI(ZC-P````````` -M`*8```"F````$```9&1%$```9&0C"`!%``"8_/$``$`R^/O``0(7P`$"+=$C -M16<````(PDA6>*HR($U6X0Z.?83:R;Y0<E/4SN)UX;Q:D$D%K(DZZ:^_\K$' -MZQ81NT4KBGD#Z=_^`E^!HS*KHEJ!)!KE>&'2065/"*M'ELXD?1%3\L3TC.UK -HKWB(C5O@78>9LQ^<0Z6]F=:<;@[>L^;/\-6WB81[GX)<MS0B=>LGD@`` -` -end diff --git a/contrib/tcpdump/tests/08-sunrise-sunset-esp2.puu b/contrib/tcpdump/tests/08-sunrise-sunset-esp2.puu deleted file mode 100644 index 4785f2b808c96..0000000000000 --- a/contrib/tcpdump/tests/08-sunrise-sunset-esp2.puu +++ /dev/null @@ -1,43 +0,0 @@ -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 diff --git a/contrib/tcpdump/tests/alltests.sh b/contrib/tcpdump/tests/alltests.sh deleted file mode 100644 index 7df25991f1b67..0000000000000 --- a/contrib/tcpdump/tests/alltests.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -for i in *.sh -do - if [ "X$i" = "Xalltests.sh" ] - then - continue; - fi - sh ./$i -done - - diff --git a/contrib/tcpdump/tests/bgp_vpn_attrset.out b/contrib/tcpdump/tests/bgp_vpn_attrset.out deleted file mode 100644 index 7fb12ae4b3e4e..0000000000000 --- a/contrib/tcpdump/tests/bgp_vpn_attrset.out +++ /dev/null @@ -1,18 +0,0 @@ -IP (tos 0xc0, ttl 62, id 58628, offset 0, flags [none], proto: TCP (6), length: 173) 12.4.4.4.2051 > 12.1.1.1.179: P, cksum 0xcf18 (correct), 3293077573:3293077694(121) ack 3348108582 win 16384 <nop,nop,timestamp 383131 890299>: BGP, length: 121 - Update Message (2), length: 121 - Origin (1), length: 1, Flags [T]: IGP - AS Path (2), length: 0, Flags [T]: empty - Local Preference (5), length: 4, Flags [T]: 100 - Extended Community (16), length: 8, Flags [OT]: - target (0x0002), Flags [none]: 300:0.0.1.44 - Attribute Set (128), length: 36, Flags [OT]: - Origin AS: 65001 - Origin (1), length: 1, Flags [T]: IGP - AS Path (2), length: 4, Flags [T]: 5555 - Local Preference (5), length: 4, Flags [T]: 44 - Originator ID (9), length: 4, Flags [O]: 22.5.5.5 - Cluster List (10), length: 4, Flags [O]: 22.5.5.5 - Multi-Protocol Reach NLRI (14), length: 30, Flags [OE]: - AFI: IPv4 (1), SAFI: labeled VPN Unicast (128) - nexthop: RD: 0:0.0.0.0, 12.4.4.4, nh-length: 12, no SNPA - RD: 500:0.0.1.244, 133.0.0.0/8, label:100208 (bottom) diff --git a/contrib/tcpdump/tests/bgp_vpn_attrset.sh b/contrib/tcpdump/tests/bgp_vpn_attrset.sh deleted file mode 100755 index c32872c83beab..0000000000000 --- a/contrib/tcpdump/tests/bgp_vpn_attrset.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -echo -n test bgp_vpn_attrset... -if (../tcpdump -t -n -v -r bgp_vpn_attrset.pcap | diff -w - bgp_vpn_attrset.out) -then - echo passed. -else - echo failed. -fi - - diff --git a/contrib/tcpdump/tests/eapon1.gdbinit b/contrib/tcpdump/tests/eapon1.gdbinit deleted file mode 100644 index 37ad0bcd029ed..0000000000000 --- a/contrib/tcpdump/tests/eapon1.gdbinit +++ /dev/null @@ -1 +0,0 @@ -set args -r eapon1.pcap diff --git a/contrib/tcpdump/tests/eapon1.out b/contrib/tcpdump/tests/eapon1.out deleted file mode 100644 index c5042e3ff13fb..0000000000000 --- a/contrib/tcpdump/tests/eapon1.out +++ /dev/null @@ -1,114 +0,0 @@ -IP 192.168.1.249.netbios-dgm > 192.168.1.255.netbios-dgm: NBT UDP PACKET(138) -IP 192.168.1.249.netbios-dgm > 192.168.1.255.netbios-dgm: NBT UDP PACKET(138) -IP 192.168.1.249.netbios-dgm > 192.168.1.255.netbios-dgm: NBT UDP PACKET(138) -IP 192.168.1.249.netbios-ns > 192.168.1.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST -IP 192.168.1.249.netbios-ns > 192.168.1.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST -IP 192.168.1.249.netbios-ns > 192.168.1.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST -IP 192.168.1.249.netbios-dgm > 192.168.1.255.netbios-dgm: NBT UDP PACKET(138) -IP 192.168.1.249.netbios-ns > 192.168.1.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST -IP 192.168.1.249.netbios-ns > 192.168.1.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST -IP 192.168.1.249.netbios-ns > 192.168.1.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST -arp who-has 192.168.1.1 tell 192.168.1.249 -arp reply 192.168.1.1 is-at 00:0d:88:4f:25:91 (oui Unknown) -IP 192.168.1.249.bootpc > 192.168.1.1.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300 -EAP code=1 id=0 length=5 -IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300 -IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300 -EAP code=1 id=1 length=0 -EAP code=1 id=0 length=5 -EAP code=1 id=0 length=45 -EAP code=1 id=0 length=20 -EAP code=1 id=0 length=76 -EAP code=1 id=0 length=80 -EAP code=1 id=0 length=28 -EAP code=1 id=0 length=4 -EAP code=1 id=3 length=57 -EAP code=1 id=3 length=44 -IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300 -IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300 -IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300 -EAP code=1 id=1 length=0 -EAP code=1 id=0 length=5 -EAP code=1 id=0 length=45 -EAP code=1 id=0 length=20 -EAP code=1 id=0 length=76 -EAP code=1 id=0 length=80 -EAP code=1 id=0 length=28 -EAP code=1 id=0 length=4 -EAP code=1 id=3 length=57 -EAP code=1 id=3 length=44 -arp who-has 169.254.67.194 tell 169.254.67.194 -arp who-has 169.254.67.194 tell 169.254.67.194 -arp who-has 169.254.67.194 tell 169.254.67.194 -IP 169.254.67.194.4299 > 239.255.255.250.1900: UDP, length 133 -IP 169.254.67.194 > IGMP: igmp v3 report, 1 group record(s) -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194 > IGMP: igmp v3 report, 1 group record(s) -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300 -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194.4299 > 239.255.255.250.1900: UDP, length 133 -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -EAP code=1 id=1 length=0 -EAP code=1 id=0 length=5 -EAP code=1 id=0 length=45 -EAP code=1 id=0 length=20 -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -EAP code=1 id=0 length=76 -EAP code=1 id=0 length=80 -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -EAP code=1 id=0 length=28 -EAP code=1 id=0 length=4 -EAP code=1 id=3 length=57 -EAP code=1 id=3 length=44 -IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300 -IP 169.254.67.194.4299 > 239.255.255.250.1900: UDP, length 133 -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138) -IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138) -IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138) -IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138) -IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138) -IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300 -IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138) -IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138) -IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138) -IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138) -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST -IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138) -IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138) -IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138) -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST -IP 169.254.67.194.netbios-ns > 169.254.255.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST -IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:04:23:57:a5:7a (oui Unknown), length: 300 -EAP code=1 id=1 length=0 -EAP code=1 id=0 length=5 -EAP code=1 id=0 length=45 -EAP code=1 id=0 length=20 -IP 169.254.67.194.netbios-dgm > 169.254.255.255.netbios-dgm: NBT UDP PACKET(138) -EAP code=1 id=0 length=76 -EAP code=1 id=0 length=80 -EAP code=1 id=0 length=28 -EAP code=1 id=0 length=4 -EAP code=1 id=3 length=57 -EAP code=1 id=3 length=44 diff --git a/contrib/tcpdump/tests/eapon1.puu b/contrib/tcpdump/tests/eapon1.puu deleted file mode 100644 index 25c14367780a7..0000000000000 --- a/contrib/tcpdump/tests/eapon1.puu +++ /dev/null @@ -1,368 +0,0 @@ -begin 644 eapon1.pcap -MU,.RH0(`!````````````/__```!````"%5@0)*@#@#=````W0```/______ -M_P`$(U>E>@@`10``SSB'``"`$7Q.P*@!^<"H`?\`B@"*`+M3[!$.B1W`J`'Y -M`(H`I0``($5%14M&041*1$9&1$1!14M#04-!0T%#04-!0T%#04%!`"!%0D9# -M14-%1D5*1D5&1$5(1D-&1D9!1D%%1D-!0T%!00#_4TU")0`````````````` -M`````````````````````!$```L```````````#H`P``````````"P!6``,` -M`0`!``(`'`!<34%)3%-,3U1<0E)/5U-%``(`1$I0.353,$H`"%5@0/2@#@#= -M````W0```/_______P`$(U>E>@@`10``SSB(``"`$7Q-P*@!^<"H`?\`B@"* -M`+L,\A$.B1[`J`'Y`(H`I0``($5%14M&041*1$9&1$1!14M#04-!0T%#04-! -M0T%#04%!`"!!0D%#1E!&4$5.1D1%0T9#15!&2$9$149&4$9004-!0@#_4TU" -M)0```````````````````````````````````!$```L```````````#H`P`` -M````````"P!6``,``0`!``(`'`!<34%)3%-,3U1<0E)/5U-%``(`1$I0.353 -M,$H`"%5@0("C#@#[````^P```/_______P`$(U>E>@@`10``[3B)``"`$7PN -MP*@!^<"H`?\`B@"*`-E#WA$.B1_`J`'Y`(H`PP``($5%14M&041*1$9&1$1! -M14M#04-!0T%#04-!0T%#04%!`"!!0D%#1E!&4$5.1D1%0T9#15!&2$9$149& -M4$9004-!0@#_4TU")0```````````````````````````````````!$``"D` -M``````````#H`P``````````*0!6``,``0`!``(`.@!<34%)3%-,3U1<0E)/ -M5U-%``P`8.H``$%20D5)5%-'4E504$4``0`#"@`0`(!,_@0#1$I0.353,$H` -M"%5@0/JI#@!<````7````/_______P`$(U>E>@@`10``3CB*``"`$7S,P*@! -M^<"H`?\`B0")`#J"=XDA`1```0```````"!%0D9#14-%1D5*1D5&1$5(1D-& -M1D9!1D%%1D-!0T%"3```(``!"55@0//8"@!<````7````/_______P`$(U>E -M>@@`10``3CB-``"`$7S)P*@!^<"H`?\`B0")`#J"=XDA`1```0```````"!% -M0D9#14-%1D5*1D5&1$5(1D-&1D9!1D%%1D-!0T%"3```(``!"E5@0+,)!P!< -M````7````/_______P`$(U>E>@@`10``3CB.``"`$7S(P*@!^<"H`?\`B0") -M`#J"=XDA`1```0```````"!%0D9#14-%1D5*1D5&1$5(1D-&1D9!1D%%1D-! -M0T%"3```(``!"E5@0,@N#`#S````\P```/_______P`$(U>E>@@`10``Y3B/ -M``"`$7PPP*@!^<"H`?\`B@"*`-'GIA$.B2+`J`'Y`(H`NP``($5%14M&041* -M1$9&1$1!14M#04-!0T%#04-!0T%#04-!`"!%0D9#14-%1D5*1D5&1$5(1D-& -M1D9!1D%%1D-!0T%"3P#_4TU")0`````````````````````````````````` -M`!$``"$```````````#H`P``````````(0!6``,``0````(`,@!<34%)3%-, -M3U1<0E)/5U-%``\`@/P*`$1*4#DU4S!*``!R`&\`<P`%`0,0!0`/`56J``U5 -M8$!5%0<`7````%P```#_______\`!"-7I7H(`$4``$XXE```@!%\PL"H`?G` -MJ`'_`(D`B0`Z@G")*`$0``$````````@14)&0T5#149%2D9%1D1%2$9#1D9& -M049!149#04-!0DP``"```0Y58$`>10,`7````%P```#_______\`!"-7I7H( -M`$4``$XXE0``@!%\P<"H`?G`J`'_`(D`B0`Z@G")*`$0``$````````@14)& -M0T5#149%2D9%1D1%2$9#1D9&049!149#04-!0DP``"```0Y58$!0N`X`7``` -M`%P```#_______\`!"-7I7H(`$4``$XXE@``@!%\P,"H`?G`J`'_`(D`B0`Z -M@G")*`$0``$````````@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-! -M0DP``"```0]58$#*.`<`*@```"H```#_______\`!"-7I7H(!@`!"``&!``! -M``0C5Z5ZP*@!^0```````,"H`0$/56!`%UD'`#P````\``````0C5Z5Z``V( -M3R61"`8``0@`!@0``@`-B$\ED<"H`0$`!"-7I7K`J`'Y```````````````` -M````````#U5@0"E9!P!6`0``5@$````-B$\ED0`$(U>E>@@`10`!2#B7``"` -M$7S#P*@!^<"H`0$`1`!#`31YVP$!!@#(+24]CP&``,"H`?D````````````` -M````!"-7I7H````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M````````````````````````````````````````8X)38S4!!S8$P*@!`3T' -M`0`$(U>E>O\````````````````````````````````````````````````` -M``````]58$`6@0D`/````#P`````!"-7I7H`#,Z(,9J(C@$```4!`0`%`0`` -M```````````````````````````````````````````````/56!`"BL*`%8! -M``!6`0``________``0C5Z5Z"`!%``%(.)\``(`1`0<`````_____P!$`$,! -M-,&K`0$&`)@7ASP````````````````````````````$(U>E>@`````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M``````````````````!C@E-C-0$!=`$!/0<!``0C5Z5Z,@3`J`'Y#`A$2E`Y -M-5,P2CP(35-&5"`U+C`W"P$/`P8L+B\?(?DK_P``````#U5@0![^#`!6`0`` -M5@$``/_______P`$(U>E>@@`10`!2#BA``"`$0$%`````/____\`1`!#`32. -MS0$!!@#5`WTN````````````````````````````!"-7I7H````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M````````````````8X)38S4!`70!`3T'`0`$(U>E>C($P*@!^0P(1$I0.353 -M,$H\"$U31E0@-2XP-PL!#P,&+"XO'R'Y*_\``````!!58$"$8P(`$P```!,` -M````#,Z(,9H`!"-7I7J(C@$!````$%5@0.IK`@`\````/``````$(U>E>@`, -MSH@QFHB.`0``!0$"``4!```````````````````````````````````````` -M`````````!%58$!>L`L`/P```#\`````#,Z(,9H`!"-7I7J(C@$``"T"`@`M -M`3$R.34P,C,X,C`P,#4S.3%`;6YC,#(S+FUC8S(Y-2YO=VQA;BYO<F<156!` -M81`,`#P````\``````0C5Z5Z``S.B#&:B(X!```4`1``%!(*```/`@`"``$` -M`!$!`0``````````````````````````````$55@0,VL#`!>````7@`````, -MSH@QF@`$(U>E>HB.`0``3`(0`$P2"@``#@L`*#$R.34P,C,X,C`P,#4S.3%` -M;6YC,#(S+FUC8S(Y-2YO=VQA;BYO<F<'!0``XM+Y<LO)&X'VQ\&EG)_*XA`! -M``$156!`P?(,`&(```!B``````0C5Z5Z``S.B#&:B(X!``!0`1$`4!(+```! -M#0``,````````````````````#$````````````````````R```````````` -M````````"P4``.OTCH!BE[/.*TUX]HB,9O8256!`LQD*`"X````N``````S. -MB#&:``0C5Z5ZB(X!```<`A$`'!(+```+!0``#*NYLZ2O7U"%636?B,5I[A)5 -M8$`H=0H`/````#P`````!"-7I7H`#,Z(,9J(C@$```0#```$```````````` -M```````````````````````````````````````256!`%GD*`$L```!+```` -M``0C5Z5Z``S.B#&:B(X!`P`Y`0`-``!`8%41`)MJNAB%#R>L.*X:RH)3A8\F -M`ET1,5U'QWV%1Z`@V,N=24.:\=%3TKI<SV/#HB:X$E5@0$Y\"@`^````/@`` -M```$(U>E>@`,SH@QFHB.`0,`+`$`#0``0&!5$0"<E?@]+KE3IY6RR"$-=DAO -M3H-QX7H>=&X[D=]]>4;W^,JD$U5@0*@!#0!6`0``5@$``/_______P`$(U>E -M>@@`10`!2#BG``"`$0#_`````/____\`1`!#`30ES`$!!@#5`WTN:0$````` -M````````````````````!"-7I7H````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M````````````````````````````````````````````````````````8X)3 -M8S4!`70!`3T'`0`$(U>E>C($P*@!^0P(1$I0.353,$H\"$U31E0@-2XP-PL! -M#P,&+"XO'R'Y*_\``````!I58$#O`@T`5@$``%8!``#_______\`!"-7I7H( -M`$4``4@XKP``@!$`]P````#_____`$0`0P$T)<P!`08`U0-]+FD!```````` -M``````````````````0C5Z5Z```````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M`````````````````````````````````````````````````````&."4V,U -M`0%T`0$]!P$`!"-7I7HR!,"H`?D,"$1*4#DU4S!*/`A-4T94(#4N,#<+`0\# -M!BPN+Q\A^2O_```````J56!`^P(-`%8!``!6`0``________``0C5Z5Z"`!% -M``%(.+(``(`1`/0`````_____P!$`$,!-"7,`0$&`-4#?2YI`0`````````` -M```````````````$(U>E>@`````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M``````````````````````````````````````````````````!C@E-C-0$! -M=`$!/0<!``0C5Z5Z,@3`J`'Y#`A$2E`Y-5,P2CP(35-&5"`U+C`W"P$/`P8L -M+B\?(?DK_P``````,%5@0.B$"@`3````$P`````,SH@QF@`$(U>E>HB.`0$` -M```P56!`^J$*`#P````\``````0C5Z5Z``S.B#&:B(X!```%`0,`!0$````` -M````````````````````````````````````````````,%5@0)SA"@`_```` -M/P`````,SH@QF@`$(U>E>HB.`0``+0(#`"T!,3(Y-3`R,S@R,#`P-3,Y,4!M -M;F,P,C,N;6-C,CDU+F]W;&%N+F]R9S!58$#0!`P`/````#P`````!"-7I7H` -M#,Z(,9J(C@$``!0!+P`4$@H```\"``(``0``$0$!```````````````````` -M```````````R56!`-$(%`%X```!>``````S.B#&:``0C5Z5ZB(X!``!,`B\` -M3!(*```."P`H,3(Y-3`R,S@R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F]W;&%N -M+F]R9P<%``#7H!![\\SE,P[&']$W6C<%$`$``3)58$#,.`<`8@```&(````` -M!"-7I7H`#,Z(,9J(C@$``%`!,`!0$@L```$-```P```````````````````` -M,0```````````````````#(````````````````````+!0``0WL?0G!%;49D -M0(DL@MD'#C-58$!S4P(`+@```"X`````#,Z(,9H`!"-7I7J(C@$``!P",``< -M$@L```L%``!%[_\P8H+&6U!$B#@$)T-",U5@0"'6`P`\````/``````$(U>E -M>@`,SH@QFHB.`0``!`,```0````````````````````````````````````` -M`````````````#-58$!=V@,`2P```$L`````!"-7I7H`#,Z(,9J(C@$#`#D! -M``T``$!@53$`G7]!<++?0.3Y>#A83O[YHHT"0T@&N\)FL/6P9NHATX%<E?[@ -M45S@"_@>BIRI%B`S56!`F-T#`#X````^``````0C5Z5Z``S.B#&:B(X!`P`L -M`0`-``!`8%4Q`)[N$`!R;$K*.XLG`JO9N"A#@XK>5*[_:U"C]E[O?""IR!5+ -M56!`]Q(-`"H````J````________``0C5Z5Z"`8``0@`!@0``0`$(U>E>JG^ -M0\(```````"I_D/"2U5@0'&!#0`J````*@```/_______P`$(U>E>@@&``$( -M``8$``$`!"-7I7JI_D/"````````J?Y#PDQ58$`X@@T`*@```"H```#_____ -M__\`!"-7I7H(!@`!"``&!``!``0C5Z5ZJ?Y#P@```````*G^0\)-56!`*=H- -M`*\```"O`````0!>?__Z``0C5Z5Z"`!%``"A.+X```$1HM.I_D/"[___^A#+ -M!VP`C6+X32U314%20T@@*B!(5%10+S$N,0T*2&]S=#HR,SDN,C4U+C(U-2XR -M-3`Z,3DP,`T*4U0Z=7)N.G-C:&5M87,M=7!N<"UO<F<Z9&5V:6-E.DEN=&5R -M;F5T1V%T97=A>41E=FEC93HQ#0I-86XZ(G-S9'`Z9&ES8V]V97(B#0I-6#HS -M#0H-"DU58$"\Y`T`-@```#8````!`%X``!8`!"-7I7H(`$8``"@XP````0(> -M.:G^0\+@```6E`0``"(`Z@,````!!````.____I-56!`OK4.`&X```!N```` -M________``0C5Z5Z"`!%``!@.,(``(`1:@RI_D/"J?[__P")`(D`3+4(B2XI -M$``!```````!($5%14M&041*1$9&1$1!14M#04-!0T%#04-!0T%#04%!```@ -M``'`#``@``$`!)/@``9@`*G^0\).56!`!H\*`#8````V`````0!>```6``0C -M5Z5Z"`!&```H.,0```$"'C6I_D/"X```%I0$```B`.H#`````00```#O___Z -M3E5@0!3E"@!N````;@```/_______P`$(U>E>@@`10``8#C%``"`$6H)J?Y# -MPJG^__\`B0")`$RU"(DN*1```0```````2!%145+1D%$2D1&1D1$045+0T%# -M04-!0T%#04-!0T%!00``(``!P`P`(``!``23X``&8`"I_D/"3U5@0#,6!P!N -M````;@```/_______P`$(U>E>@@`10``8#C&``"`$6H(J?Y#PJG^__\`B0") -M`$RU"(DN*1```0```````2!%145+1D%$2D1&1D1$045+0T%#04-!0T%#04-! -M0T%!00``(``!P`P`(``!``23X``&8`"I_D/"3U5@0*^U#0!6`0``5@$``/__ -M_____P`$(U>E>@@`10`!2#C'``"`$0#?`````/____\`1`!#`325:P$!!@"2 -M13E.``"`````````````````````````!"-7I7H````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M````````8X)38S4!`70!`3T'`0`$(U>E>C($P*@!^0P(1$I0.353,$H\"$U3 -M1E0@-2XP-PL!#P,&+"XO'R'Y*_\``````%!58$`T1P,`;@```&X```#_____ -M__\`!"-7I7H(`$4``&`XR```@!%J!JG^0\*I_O__`(D`B0!,M@B)+B@0``$` -M``````$@145%2T9!1$I$1D9$1$%%2T-!0T%#04-!0T%#04-!04$``"```<`, -M`"```0`$D^``!F``J?Y#PE!58$",WPT`KP```*\````!`%Y___H`!"-7I7H( -M`$4``*$XR@```1&BQZG^0\+O___Z$,L';`"-8OA-+5-%05)#2"`J($A45%`O -M,2XQ#0I(;W-T.C(S.2XR-34N,C4U+C(U,#HQ.3`P#0I35#IU<FXZ<V-H96UA -M<RUU<&YP+6]R9SID979I8V4Z26YT97)N971'871E=V%Y1&5V:6-E.C$-"DUA -M;CHB<W-D<#ID:7-C;W9E<B(-"DU8.C,-"@T*4%5@0`"\#@!N````;@```/__ -M_____P`$(U>E>@@`10``8#C,``"`$6H"J?Y#PJG^__\`B0")`$PP]8DO*1`` -M`0```````2!%0D9#14-%1D5*1D5&1$5(1D-&1D9!1D%%1D-!0T%!00``(``! -MP`P`(``!``23X``&X`"I_D/"455@0#/A`P`3````$P`````,SH@QF@`$(U>E -M>HB.`0$```!156!`8>D#`#P````\``````0C5Z5Z``S.B#&:B(X!```%`00` -M!0$`````````````````````````````````````````````````455@0+TU -M!``_````/P`````,SH@QF@`$(U>E>HB.`0``+0($`"T!,3(Y-3`R,S@R,#`P -M-3,Y,4!M;F,P,C,N;6-C,CDU+F]W;&%N+F]R9U%58$#Y[@4`/````#P````` -M!"-7I7H`#,Z(,9J(C@$``!0!4``4$@H```\"``(``0``$0$!```````````` -M``````````````````!156!`9.L*`&X```!N````________``0C5Z5Z"`!% -M``!@.,T``(`1:@&I_D/"J?[__P")`(D`3##UB2\I$``!```````!($5"1D-% -M0T5&14I&149$14A&0T9&1D%&045&0T%#04%!```@``'`#``@``$`!)/@``;@ -M`*G^0\)256!`71P'`&X```!N````________``0C5Z5Z"`!%``!@.,X``(`1 -M:@"I_D/"J?[__P")`(D`3##UB2\I$``!```````!($5"1D-%0T5&14I&149$ -M14A&0T9&1D%&045&0T%#04%!```@``'`#``@``$`!)/@``;@`*G^0\)256!` -M9[(.`%X```!>``````S.B#&:``0C5Z5ZB(X!``!,`E``3!(*```."P`H,3(Y -M-3`R,S@R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F]W;&%N+F]R9P<%```Z)]TL -M?V'JYOR&8?J))U]%$`$``5)58$`"$P\`8@```&(`````!"-7I7H`#,Z(,9J( -MC@$``%`!40!0$@L```$-```P````````````````````,0`````````````` -M`````#(````````````````````+!0``*IFHOZ$\8[TX!>!F]%P6:%-58$!8 -M30,`;@```&X```#_______\`!"-7I7H(`$4``&`XSP``@!%I_ZG^0\*I_O__ -M`(D`B0!,,?6)+R@0``$```````$@14)&0T5#149%2D9%1D1%2$9#1D9&049! -M149#04-!04$``"```<`,`"```0`$D^``!N``J?Y#PE-58$#M3`H`+@```"X` -M````#,Z(,9H`!"-7I7J(C@$``!P"40`<$@L```L%``#BE(K>$<9]M,I(_@G, -MC).Y4U5@0`*="@`\````/``````$(U>E>@`,SH@QFHB.`0``!`,```0````` -M`````````````````````````````````````````````%-58$#CH`H`2P`` -M`$L`````!"-7I7H`#,Z(,9J(C@$#`#D!``T``$!@55(`GZN0MGOEA8[@4WO* -M&_11@$@"&2ZIH`.YHY==8)$_%6#R:U/Z"F'14BLDK,Z)I:%356!`&*0*`#X` -M```^``````0C5Z5Z``S.B#&:B(X!`P`L`0`-``!`8%52`*!&UK1?K<RECIT@ -MY'<O#NGZ@YJ^O,Y@JP;?M,0[/;M1?PY356!`9+H-`%8!``!6`0``________ -M``0C5Z5Z"`!%``%(.-```(`1`-8`````_____P!$`$,!-&QJ`0$&`))%.4XI -M`8`````````````````````````$(U>E>@`````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M``!C@E-C-0$!=`$!/0<!``0C5Z5Z,@3`J`'Y#`A$2E`Y-5,P2CP(35-&5"`U -M+C`W"P$/`P8L+B\?(?DK_P``````4U5@0)?A#0"O````KP````$`7G__^@`$ -M(U>E>@@`10``H3C2```!$:*_J?Y#PN____H0RP=L`(UB^$TM4T5!4D-(("H@ -M2%144"\Q+C$-"DAO<W0Z,C,Y+C(U-2XR-34N,C4P.C$Y,#`-"E-4.G5R;CIS -M8VAE;6%S+75P;G`M;W)G.F1E=FEC93I);G1E<FYE=$=A=&5W87E$979I8V4Z -M,0T*36%N.B)S<V1P.F1I<V-O=F5R(@T*35@Z,PT*#0I356!`N<(.`&X```!N -M````________``0C5Z5Z"`!%``!@.-0``(`1:?JI_D/"J?[__P")`(D`3+4$ -MB3`I$``!```````!($5%14M&041*1$9&1$1!14M#04-!0T%#04-!0T%#04-! -M```@``'`#``@``$`!)/@``9@`*G^0\)356!`V,0.`&X```!N````________ -M``0C5Z5Z"`!%``!@.-4``(`1:?FI_D/"J?[__P")`(D`3"+RB3$I$``!```` -M```!($5"1D-%0T5&14I&149$14A&0T9&1D%&045&0T%#04)/```@``'`#``@ -M``$`!)/@``;@`*G^0\)456!`C/$*`&X```!N````________``0C5Z5Z"`!% -M``!@.-@``(`1:?:I_D/"J?[__P")`(D`3+4$B3`I$``!```````!($5%14M& -M041*1$9&1$1!14M#04-!0T%#04-!0T%#04-!```@``'`#``@``$`!)/@``9@ -M`*G^0\)456!`4?4*`&X```!N````________``0C5Z5Z"`!%``!@.-D``(`1 -M:?6I_D/"J?[__P")`(D`3"+RB3$I$``!```````!($5"1D-%0T5&14I&149$ -M14A&0T9&1D%&045&0T%#04)/```@``'`#``@``$`!)/@``;@`*G^0\)556!` -MB2('`&X```!N````________``0C5Z5Z"`!%``!@.-H``(`1:?2I_D/"J?[_ -M_P")`(D`3+4$B3`I$``!```````!($5%14M&041*1$9&1$1!14M#04-!0T%# -M04-!0T%#04-!```@``'`#``@``$`!)/@``9@`*G^0\)556!`328'`&X```!N -M````________``0C5Z5Z"`!%``!@.-L``(`1:?.I_D/"J?[__P")`(D`3"+R -MB3$I$``!```````!($5"1D-%0T5&14I&149$14A&0T9&1D%&045&0T%#04)/ -M```@``'`#``@``$`!)/@``;@`*G^0\)656!`?%,#`&X```!N````________ -M``0C5Z5Z"`!%``!@.-P``(`1:?*I_D/"J?[__P")`(D`3+8$B3`H$``!```` -M```!($5%14M&041*1$9&1$1!14M#04-!0T%#04-!0T%#04-!```@``'`#``@ -M``$`!)/@``9@`*G^0\)656!`1E<#`&X```!N````________``0C5Z5Z"`!% -M``!@.-T``(`1:?&I_D/"J?[__P")`(D`3"/RB3$H$``!```````!($5"1D-% -M0T5&14I&149$14A&0T9&1D%&045&0T%#04)/```@``'`#``@``$`!)/@``;@ -M`*G^0\)656!`R<P.`-T```#=````________``0C5Z5Z"`!%``#/..,``(`1 -M:7RI_D/"J?[__P"*`(H`NPE!$0Z),JG^0\(`B@"E```@145%2T9!1$I$1D9$ -M1$%%2T-!0T%#04-!0T%#04-!04$`($5"1D-%0T5&14I&149$14A&0T9&1D%& -M045&0T%#04).`/]334(E````````````````````````````````````$0`` -M"P```````````.@#```````````+`%8``P`!``$``@`<`%Q-04E,4TQ/5%Q" -M4D]74T4``@!$2E`Y-5,P2@!656!`W<T.`/,```#S````________``0C5Z5Z -M"`!%``#E..0``(`1:66I_D/"J?[__P"*`(H`T1`"$0Z),ZG^0\(`B@"[```@ -M145%2T9!1$I$1D9$1$%%2T-!0T%#04-!0T%#04-!0T$`($5"1D-%0T5&14I& -M149$14A&0T9&1D%&045&0T%#04).`/]334(E```````````````````````` -M````````````$0``(0```````````.@#```````````A`%8``P`!`````@`R -M`%Q-04E,4TQ/5%Q"4D]74T4``0"`_`H`1$I0.353,$H````````!``4!`Q`! -M``\!5:H`6%5@0+\L!P#=````W0```/_______P`$(U>E>@@`10``SSCF``"` -M$6EYJ?Y#PJG^__\`B@"*`+L)/1$.B3:I_D/"`(H`I0``($5%14M&041*1$9& -M1$1!14M#04-!0T%#04-!0T%#04%!`"!%0D9#14-%1D5*1D5&1$5(1D-&1D9! -M1D%%1D-!0T%"3@#_4TU")0```````````````````````````````````!$` -M``L```````````#H`P``````````"P!6``,``0`!``(`'`!<34%)3%-,3U1< -M0E)/5U-%``(`1$I0.353,$H`655@0.K0#@#=````W0```/_______P`$(U>E -M>@@`10``SSCG``"`$6EXJ?Y#PJG^__\`B@"*`+L)/!$.B3>I_D/"`(H`I0`` -M($5%14M&041*1$9&1$1!14M#04-!0T%#04-!0T%#04%!`"!%0D9#14-%1D5* -M1D5&1$5(1D-&1D9!1D%%1D-!0T%"3@#_4TU")0`````````````````````` -M`````````````!$```L```````````#H`P``````````"P!6``,``0`!``(` -M'`!<34%)3%-,3U1<0E)/5U-%``(`1$I0.353,$H`6U5@0-@R!P#=````W0`` -M`/_______P`$(U>E>@@`10``SSCH``"`$6EWJ?Y#PJG^__\`B@"*`+L).Q$. -MB3BI_D/"`(H`I0``($5%14M&041*1$9&1$1!14M#04-!0T%#04-!0T%#04%! -M`"!%0D9#14-%1D5*1D5&1$5(1D-&1D9!1D%%1D-!0T%"3@#_4TU")0`````` -M`````````````````````````````!$```L```````````#H`P`````````` -M"P!6``,``0`!``(`'`!<34%)3%-,3U1<0E)/5U-%``(`1$I0.353,$H`7%5@ -M0"2]#0!6`0``5@$``/_______P`$(U>E>@@`10`!2#CI``"`$0"]`````/__ -M__\`1`!#`31L:@$!!@"213E.*0&`````````````````````````!"-7I7H` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M````````````````````````````8X)38S4!`70!`3T'`0`$(U>E>C($P*@! -M^0P(1$I0.353,$H\"$U31E0@-2XP-PL!#P,&+"XO'R'Y*_\``````%Q58$`# -MUPX`Z0```.D```#_______\`!"-7I7H(`$4``-LXZ@``@!%I::G^0\*I_O__ -M`(H`B@#';@L1#HDYJ?Y#P@"*`+$``"!%145+1D%$2D1&1D1$045+0T%#04-! -M0T%#04-!0T%!00`@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-!0D\` -M_U--0B4````````````````````````````````````1```7```````````` -MZ`,``````````!<`5@`#``$``0`"`"@`7$U!24Q33$]47$)23U=310`(`2`/ -M`1!9L1D5`````$1*4#DU4S!*`%U58$#/UPX`Z0```.D```#_______\`!"-7 -MI7H(`$4``-LXZP``@!%I:*G^0\*I_O__`(H`B@#';@H1#HDZJ?Y#P@"*`+$` -M`"!%145+1D%$2D1&1D1$045+0T%#04-!0T%#04-!0T%!00`@14)&0T5#149% -M2D9%1D1%2$9#1D9&049!149#04-!0D\`_U--0B4````````````````````` -M```````````````1```7````````````Z`,``````````!<`5@`#``$``0`" -M`"@`7$U!24Q33$]47$)23U=310`(`2`/`1!9L1D5`````$1*4#DU4S!*`%Y5 -M8$"+V`X`Z0```.D```#_______\`!"-7I7H(`$4``-LX[```@!%I9ZG^0\*I -M_O__`(H`B@#';@D1#HD[J?Y#P@"*`+$``"!%145+1D%$2D1&1D1$045+0T%# -M04-!0T%#04-!0T%!00`@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-! -M0D\`_U--0B4````````````````````````````````````1```7```````` -M````Z`,``````````!<`5@`#``$``0`"`"@`7$U!24Q33$]47$)23U=310`( -M`2`/`1!9L1D5`````$1*4#DU4S!*`%]58$!)V0X`Z0```.D```#_______\` -M!"-7I7H(`$4``-LX[0``@!%I9JG^0\*I_O__`(H`B@#';@@1#HD\J?Y#P@"* -M`+$``"!%145+1D%$2D1&1D1$045+0T%#04-!0T%#04-!0T%!00`@14)&0T5# -M149%2D9%1D1%2$9#1D9&049!149#04-!0D\`_U--0B4````````````````` -M```````````````````1```7````````````Z`,``````````!<`5@`#``$` -M`0`"`"@`7$U!24Q33$]47$)23U=310`(`2`/`1!9L1D5`````$1*4#DU4S!* -M`&!58$"CV@X`;@```&X```#_______\`!"-7I7H(`$4``&`X[@``@!%IX*G^ -M0\*I_O__`(D`B0!,H^:)/2D0``$```````$@14)&0T5#149%2D9%1D1%2$9# -M1D9&049!149#04-!0DX``"```<`,`"```0`$D^``!F``J?Y#PF%58$#F"@L` -M;@```&X```#_______\`!"-7I7H(`$4``&`X[P``@!%IWZG^0\*I_O__`(D` -MB0!,H^:)/2D0``$```````$@14)&0T5#149%2D9%1D1%2$9#1D9&049!149# -M04-!0DX``"```<`,`"```0`$D^``!F``J?Y#PF)58$#?.P<`;@```&X```#_ -M______\`!"-7I7H(`$4``&`X\```@!%IWJG^0\*I_O__`(D`B0!,H^:)/2D0 -M``$```````$@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-!0DX``"`` -M`<`,`"```0`$D^``!F``J?Y#PF-58$#9;`,`;@```&X```#_______\`!"-7 -MI7H(`$4``&`X\P``@!%IVZG^0\*I_O__`(D`B0!,I.:)/2@0``$```````$@ -M14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-!0DX``"```<`,`"```0`$ -MD^``!F``J?Y#PF-58$"'X`X`;@```&X```#_______\`!"-7I7H(`$4``&`X -M]```@!%IVJG^0\*I_O__`(D`B0!,Z>R)/BD0``$```````$@04)!0T901E!% -M3D9$14-&0T501DA&1$5&1E!&4$%#04(``"```<`,`"```0`$D^``!N``J?Y# -MPF158$`/$0L`;@```&X```#_______\`!"-7I7H(`$4``&`X]0``@!%IV:G^ -M0\*I_O__`(D`B0!,Z>R)/BD0``$```````$@04)!0T901E!%3D9$14-&0T50 -M1DA&1$5&1E!&4$%#04(``"```<`,`"```0`$D^``!N``J?Y#PF558$`&0@<` -M;@```&X```#_______\`!"-7I7H(`$4``&`X]@``@!%IV*G^0\*I_O__`(D` -MB0!,Z>R)/BD0``$```````$@04)!0T901E!%3D9$14-&0T501DA&1$5&1E!& -M4$%#04(``"```<`,`"```0`$D^``!N``J?Y#PF958$#^<@,`;@```&X```#_ -M______\`!"-7I7H(`$4``&`X]P``@!%IUZG^0\*I_O__`(D`B0!,ZNR)/B@0 -M``$```````$@04)!0T901E!%3D9$14-&0T501DA&1$5&1E!&4$%#04(``"`` -M`<`,`"```0`$D^``!N``J?Y#PF958$!_Y@X`W0```-T```#_______\`!"-7 -MI7H(`$4``,\X^```@!%I9ZG^0\*I_O__`(H`B@"[%C41#HD_J?Y#P@"*`*4` -M`"!%145+1D%$2D1&1D1$045+0T%#04-!0T%#04-!0T%!00`@14)&0T5#149% -M2D9%1D1%2$9#1D9&049!149#04-!04$`_U--0B4````````````````````` -M```````````````1```+````````````Z`,```````````L`5@`#``$``0`" -M`!P`7$U!24Q33$]47$)23U=310`"`$1*4#DU4S!*`&958$!AYPX`W0```-T` -M``#_______\`!"-7I7H(`$4``,\X^0``@!%I9JG^0\*I_O__`(H`B@"[SSH1 -M#HE`J?Y#P@"*`*4``"!%145+1D%$2D1&1D1$045+0T%#04-!0T%#04-!0T%! -M00`@04)!0T901E!%3D9$14-&0T501DA&1$5&1E!&4$%#04(`_U--0B4````` -M```````````````````````````````1```+````````````Z`,````````` -M``L`5@`#``$``0`"`!P`7$U!24Q33$]47$)23U=310`"`$1*4#DU4S!*`&95 -M8$!PZ@X`^P```/L```#_______\`!"-7I7H(`$4``.TX^@``@!%I1ZG^0\*I -M_O__`(H`B@#9)2,1#HE!J?Y#P@"*`,,``"!%145+1D%$2D1&1D1$045+0T%# -M04-!0T%#04-!0T%!00`@04)!0T901E!%3D9$14-&0T501DA&1$5&1E!&4$%# -M04(`_U--0B4````````````````````````````````````1```I```````` -M````Z`,``````````"D`5@`#``$``0`"`#H`7$U!24Q33$]47$)23U=310`, -M`&#J``!!4D)%25131U)54%!%``$``PH`$`"`;/[%!D1*4#DU4S!*`&958$"4 -M\`X`7````%P```#_______\`!"-7I7H(`$4``$XX^P``@!%IY:G^0\*I_O__ -M`(D`B0`Z;]^)0P$0``$````````@14)&0T5#149%2D9%1D1%2$9#1D9&049! -M149#04-!0DP``"```6=58$`('PL`7````%P```#_______\`!"-7I7H(`$4` -M`$XX_```@!%IY*G^0\*I_O__`(D`B0`Z;]^)0P$0``$````````@14)&0T5# -M149%2D9%1D1%2$9#1D9&049!149#04-!0DP``"```6A58$`&4`<`7````%P` -M``#_______\`!"-7I7H(`$4``$XX_0``@!%IXZG^0\*I_O__`(D`B0`Z;]^) -M0P$0``$````````@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-!0DP` -M`"```6M58$"J6P<`7````%P```#_______\`!"-7I7H(`$4``$XY`0``@!%I -MWZG^0\*I_O__`(D`B0`Z;]N)1P$0``$````````@14)&0T5#149%2D9%1D1% -M2$9#1D9&049!149#04-!0DP``"```6Q58$`-BP,`7````%P```#_______\` -M!"-7I7H(`$4``$XY`@``@!%IWJG^0\*I_O__`(D`B0`Z;]N)1P$0``$````` -M```@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-!0DP``"```6Q58$!% -M_@X`7````%P```#_______\`!"-7I7H(`$4``$XY!```@!%IW*G^0\*I_O__ -M`(D`B0`Z;]N)1P$0``$````````@14)&0T5#149%2D9%1D1%2$9#1D9&049! -M149#04-!0DP``"```6U58$`7O@T`5@$``%8!``#_______\`!"-7I7H(`$4` -M`4@Y!@``@!$`H`````#_____`$0`0P$T;&H!`08`DD4Y3BD!@``````````` -M``````````````0C5Z5Z```````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M`````````````````````````````````````````````````&."4V,U`0%T -M`0$]!P$`!"-7I7HR!,"H`?D,"$1*4#DU4S!*/`A-4T94(#4N,#<+`0\#!BPN -M+Q\A^2O_``````!Q56!`]:$*`!,````3``````S.B#&:``0C5Z5ZB(X!`0`` -M`'%58$!%P`H`/````#P`````!"-7I7H`#,Z(,9J(C@$```4!!0`%`0`````` -M``````````````````````````````````````````!Q56!`C?4*`#\````_ -M``````S.B#&:``0C5Z5ZB(X!```M`@4`+0$Q,CDU,#(S.#(P,#`U,SDQ0&UN -M8S`R,RYM8V,R.34N;W=L86XN;W)G<55@0/XV"P`\````/``````$(U>E>@`, -MSH@QFHB.`0``%`%P`!02"@``#P(``@`!```1`0$````````````````````` -M`````````')58$#=.0P`\P```/,```#_______\`!"-7I7H(`$4``.4Y#``` -M@!%I/:G^0\*I_O__`(H`B@#1\^D1#HE*J?Y#P@"*`+L``"!%145+1D%$2D1& -M1D1$045+0T%#04-!0T%#04-!0T%#00`@14)&0T5#149%2D9%1D1%2$9#1D9& -M049!149#04-!0D\`_U--0B4````````````````````````````````````1 -M```A````````````Z`,``````````"$`5@`#``$````"`#(`7$U!24Q33$]4 -M7$)23U=310`/`(#\"@!$2E`Y-5,P2@``60!<`%4`!0$#$`4`#P%5J@!S56!` -MJ'L$`%X```!>``````S.B#&:``0C5Z5ZB(X!``!,`G``3!(*```."P`H,3(Y -M-3`R,S@R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F]W;&%N+F]R9P<%```)[DNV -M]<TYOH8?&=*L`<`&$`$``7-58$#3Q`0`8@```&(`````!"-7I7H`#,Z(,9J( -MC@$``%`!<0!0$@L```$-```P````````````````````,0`````````````` -M`````#(````````````````````+!0``4,1=:28,Y[A5';!-.W&=A7-58$"# -M.0\`+@```"X`````#,Z(,9H`!"-7I7J(C@$``!P"<0`<$@L```L%``#,G3O* -M(MF[ZP#.U#83NT:1=%5@0#-7```\````/``````$(U>E>@`,SH@QFHB.`0`` -M!`,```0``````````````````````````````````````````````````'15 -M8$`G6P``2P```$L`````!"-7I7H`#,Z(,9J(C@$#`#D!``T``$!@57(`H7=G -MF]`<U=:Q_.ODF.0!O^<"RF-&L(?"6]$(GK,%9)J4;"'MPR]@Y#?:1B?;0,UT -M56!`55X``#X````^``````0C5Z5Z``S.B#&:B(X!`P`L`0`-``!`8%5R`*(I -@:.4"VF#:A*@Q;&CP#+\$@]3C#=%3<0P&M\#VWIK`IL$` -` -end diff --git a/contrib/tcpdump/tests/eapon1.sh b/contrib/tcpdump/tests/eapon1.sh deleted file mode 100755 index 1c8aa631d12b2..0000000000000 --- a/contrib/tcpdump/tests/eapon1.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -uudecode eapon1.puu - -echo -n test eapon1... -../tcpdump -t -N -r eapon1.pcap > eapon1.new -if diff eapon1.new eapon1.out -then - echo passed. -else - echo failed. -fi - diff --git a/contrib/tcpdump/tests/eapon2.puu b/contrib/tcpdump/tests/eapon2.puu deleted file mode 100644 index 70abb23d63378..0000000000000 --- a/contrib/tcpdump/tests/eapon2.puu +++ /dev/null @@ -1,66 +0,0 @@ -begin 644 eapon2.pcap -MU,.RH0(`!````````````&`````!````_E1@0(0`#`!"````0@`````+VY#] -M`@#@3UR$8`@`11``-"500``W!O$4U8'_>L&:EKBMN@`6*6Y2?^.:F>V`$/C@ -M9C@```$!"`H974FMBM15+Q!58$!QG`8`8````.L`````"]N0_0(`X$]<A&`( -M`$4``-TH'P``]A%NH=6!_WK!FI:X5(X'%`#)!M0!%`#!,KA08YA%<^E.@.W\ -MVGEAG@$J,3(Y-3`R,S@R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F\056!``J0& -M`&````"*```````,!ZR%``O;D/T""`!%``!\``!``$`1#2+!FI:XU8'_>@<4 -M5(X`:)P-"Q0`8$$!<I3L?-I\^CLZZ8W&J$<(!O____X,!@```D`&!@````)/ -M%@$0`!02"@``#P(``@`!$%5@0/N`!P!@````'`$````+VY#]`@#@3UR$8`@` -M10`!#B@@``#V$6YOU8'_>L&:EKA4C@<4`/I,<`$5`/+M5G/\`0<0G:=Q]S4< -MM<W1`2HQ,CDU,#(S.#(P,#`U,SDQ0&UN8S`R,RYM8V,R.34N;Q!58$"?AP<` -M8````,8```````P'K(4`"]N0_0((`$4``+@``4``0!$,Y<&:EKC5@?]Z!Q14 -MC@"D*@T+%0"<GZ@ST?&@X&3DA[P+.!KY+@@&_____@P&```"0`8&`````D]2 -M`1$`4!(+```!#0``,``156!`QP`%`&````#L``````O;D/T"`.!/7(1@"`!% -M``#>*"$``/81;I[5@?]ZP9J6N%2.!Q0`RHLB`18`PB*WG4W^01LM]B4XN&`' -M6E(!*C$R.34P,C,X,C`P,#4S.3%`;6YC,#(S+FUC8S(Y-2YO$55@0!P&!0!@ -M````!@$`````#`>LA0`+VY#]`@@`10``^``"0`!`$0RDP9J6N-6!_WH'%%2. -M`.2>DP(6`-P04TN>&O"\WL%@,.`1V142"`;____^#`8```)`!@8````"&CH` -M``$W$32`+U<1;LS62B]58$!:H@8`8````.L`````"]N0_0(`X$]<A&`(`$4` -M`-TH)```]A%NG-6!_WK!FI:X5(X'%`#)G_(!&`#!8I@\,J5DDRGEM>@M>A=G -MB0$J,3(Y-3`R,S@R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F\O56!`G*<&`&`` -M``"*```````,!ZR%``O;D/T""`!%``!\``-``$`1#1_!FI:XU8'_>@<45(X` -M:#<F"Q@`8$VXJ\Z['F%^RCK?B4C^(6T(!O____X,!@```D`&!@````)/%@$O -M`!02"@``#P(``@`!,55@0-S/`0!@````'`$````+VY#]`@#@3UR$8`@`10`! -M#B@E``#V$6YJU8'_>L&:EKA4C@<4`/H2$P$9`/)6HP7H8R0(O<O]:/"4@0=% -M`2HQ,CDU,#(S.#(P,#`U,SDQ0&UN8S`R,RYM8V,R.34N;S%58$!7U@$`8``` -M`,8```````P'K(4`"]N0_0((`$4``+@`!$``0!$,XL&:EKC5@?]Z!Q14C@"D -MZ2,+&0"<(Y3XP!`C^NV)J[-Q+PU3"@@&_____@P&```"0`8&`````D]2`3`` -M4!(+```!#0``,``Q56!`$JX-`&````#L``````O;D/T"`.!/7(1@"`!%``#> -M*"8``/81;IG5@?]ZP9J6N%2.!Q0`R@WC`1H`PCS/?&QHIT8SX.[2#=[S68H! -M*C$R.34P,C,X,C`P,#4S.3%`;6YC,#(S+FUC8S(Y-2YO,55@0#VS#0!@```` -M!@$`````#`>LA0`+VY#]`@@`10``^``%0`!`$0RAP9J6N-6!_WH'%%2.`.3B -MMP(:`-S*Z(?9H34)&AB0":D9<!O)"`;____^#`8```)`!@8````"&CH```$W -M$321P=T3ADE-XU!58$"$D@``8````.L`````"]N0_0(`X$]<A&`(`$4``-TH -M*```]A%NF-6!_WK!FI:X5(X'%`#)[%H!&P#!PB<W7,;1#%UAF"-V*ORC90$J -M,3(Y-3`R,S@R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F]056!`8I<``&````"* -M```````,!ZR%``O;D/T""`!%``!\``9``$`1#1S!FI:XU8'_>@<45(X`:#0% -M"QL`8(N:^N5L(EK&#H6-':U$XV((!O____X,!@```D`&!@````)/%@%0`!02 -M"@``#P(``@`!455@0*VL"0!@````'`$````+VY#]`@#@3UR$8`@`10`!#B@I -M``#V$6YFU8'_>L&:EKA4C@<4`/KDFP$<`/+H$R8P9(B"W[^G<4!"HKQ+`2HQ -M,CDU,#(S.#(P,#`U,SDQ0&UN8S`R,RYM8V,R.34N;U%58$"ZL@D`8````,8` -M``````P'K(4`"]N0_0((`$4``+@`!T``0!$,W\&:EKC5@?]Z!Q14C@"DI=@+ -M'`"<G^$P>;*!>&FY;C?2/)T74`@&_____@P&```"0`8&`````D]2`5$`4!(+ -M```!#0``,`!256!`@SL%`&````#L``````O;D/T"`.!/7(1@"`!%``#>*"H` -M`/81;I75@?]ZP9J6N%2.!Q0`RI"T`1T`PE:^P6JH@]U$D*!C#8CO0UP!*C$R -M.34P,C,X,C`P,#4S.3%`;6YC,#(S+FUC8S(Y-2YO4E5@0'M`!0!@````!@$` -M````#`>LA0`+VY#]`@@`10``^``(0`!`$0R>P9J6N-6!_WH'%%2.`.2<&@(= -M`-P&]WGHNB++Z0K&A"^B<2S/"`;____^#`8```)`!@8````"&CH```$W$32F -M=DT@&\D[/G!58$!OW04`8````.L`````"]N0_0(`X$]<A&`(`$4``-TH*P`` -M]A%NE=6!_WK!FI:X5(X'%`#)*:D!'@#!I[D+3?C+./K-`/>AS"W^P0$J,3(Y -M-3`R,S@R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F]P56!`L>(%`&````"*```` -M```,!ZR%``O;D/T""`!%``!\``E``$`1#1G!FI:XU8'_>@<45(X`:`.V"QX` -M8+P/!*Y!RZ>(/:C.%/A62\((!O____X,!@```D`&!@````)/%@%P`!02"@`` -M#P(``@`!<55@0)*H#@!@````'`$````+VY#]`@#@3UR$8`@`10`!#B@L``#V -M$6YCU8'_>L&:EKA4C@<4`/JLH@$?`/*.M".D<>M4,KL=.(:"[-F;`2HQ,CDU -M,#(S.#(P,#`U,SDQ0&UN8S`R,RYM8V,R.34N;W%58$#$K@X`8````,8````` -M``P'K(4`"]N0_0((`$4``+@`"D``0!$,W,&:EKC5@?]Z!Q14C@"DK7D+'P"< -MMWVPJO:XC`JEY#15<5U0Z@@&_____@P&```"0`8&`````D]2`7$`4!(+```! -M#0``,`!R56!`S#4*`&````#L``````O;D/T"`.!/7(1@"`!%``#>*"T``/81 -M;I+5@?]ZP9J6N%2.!Q0`RE>1`2``PK+"]?UCV]G1I<-+X16?0+L!*C$R.34P -M,C,X,C`P,#4S.3%`;6YC,#(S+FUC8S(Y-2YO<E5@0,,Z"@!@````!@$````` -M#`>LA0`+VY#]`@@`10``^``+0`!`$0R;P9J6N-6!_WH'%%2.`.1M%P(@`-PJ -M=?H'6<1=UD&:FRVA,V+S"`;____^#`8```)`!@8````"&CH```$W$32RVRE= -$I%P\00`` -` -end diff --git a/contrib/tcpdump/tests/esp-secrets.txt b/contrib/tcpdump/tests/esp-secrets.txt deleted file mode 100644 index 81847a0e3e502..0000000000000 --- a/contrib/tcpdump/tests/esp-secrets.txt +++ /dev/null @@ -1,5 +0,0 @@ -# a comment - -0x12345678@192.1.2.45 3des-cbc-hmac96:0x43434545464649494a4a4c4c4f4f51515252545457575840 -0xabcdabcd@192.0.1.1 3des-cbc-hmac96:0x434545464649494a4a4c4c4f4f5151525254545757584043 -0xd1234567@192.1.2.45 aes256-cbc-hmac96:0xaaaabbbbccccdddd4043434545464649494a4a4c4c4f4f515152525454575758 diff --git a/contrib/tcpdump/tests/esp0.out b/contrib/tcpdump/tests/esp0.out deleted file mode 100644 index a0ddf1b2dc713..0000000000000 --- a/contrib/tcpdump/tests/esp0.out +++ /dev/null @@ -1,8 +0,0 @@ -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x1), length 116 -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x2), length 116 -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x3), length 116 -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x4), length 116 -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x5), length 116 -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x6), length 116 -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x7), length 116 -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x8), length 116 diff --git a/contrib/tcpdump/tests/esp0.sh b/contrib/tcpdump/tests/esp0.sh deleted file mode 100644 index daf407c441e56..0000000000000 --- a/contrib/tcpdump/tests/esp0.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -echo -n test esp0... -uudecode 02-sunrise-sunset-esp.puu -if (../tcpdump -t -n -r 02-sunrise-sunset-esp.pcap | diff - esp0.out) -then - echo passed. -else - echo failed. -fi - - diff --git a/contrib/tcpdump/tests/esp1.gdbinit b/contrib/tcpdump/tests/esp1.gdbinit deleted file mode 100644 index 6c8ae890cbd51..0000000000000 --- a/contrib/tcpdump/tests/esp1.gdbinit +++ /dev/null @@ -1 +0,0 @@ -set args -t -n -E "0x12345678@192.1.2.45 3des-cbc-hmac96:0x4043434545464649494a4a4c4c4f4f515152525454575758" -r 02-sunrise-sunset-esp.pcap diff --git a/contrib/tcpdump/tests/esp1.out b/contrib/tcpdump/tests/esp1.out deleted file mode 100644 index 61b2967639ad8..0000000000000 --- a/contrib/tcpdump/tests/esp1.out +++ /dev/null @@ -1,8 +0,0 @@ -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x1), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1280, length 64 (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x2), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1536, length 64 (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x3), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1792, length 64 (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x4), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2048, length 64 (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x5), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2304, length 64 (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x6), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2560, length 64 (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x7), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2816, length 64 (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x8), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 3072, length 64 (ipip-proto-4) diff --git a/contrib/tcpdump/tests/esp1.sh b/contrib/tcpdump/tests/esp1.sh deleted file mode 100644 index 87ee3b92df1e5..0000000000000 --- a/contrib/tcpdump/tests/esp1.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -uudecode 02-sunrise-sunset-esp.puu - -echo -n test esp1... -../tcpdump -t -n -E "0x12345678@192.1.2.45 3des-cbc-hmac96:0x4043434545464649494a4a4c4c4f4f515152525454575758" -r 02-sunrise-sunset-esp.pcap >esp1.new -if diff esp1.new esp1.out -then - echo passed. -else - echo failed. -fi - diff --git a/contrib/tcpdump/tests/esp2.gdbinit b/contrib/tcpdump/tests/esp2.gdbinit deleted file mode 100644 index 7c18407586221..0000000000000 --- a/contrib/tcpdump/tests/esp2.gdbinit +++ /dev/null @@ -1 +0,0 @@ -set args -t -n -E "0x12345678@192.1.2.45 3des-cbc-hmac96:0x43434545464649494a4a4c4c4f4f51515252545457575840,0xabcdabcd@192.0.1.1 3des-cbc-hmac96:0x434545464649494a4a4c4c4f4f5151525254545757584043" -r 08-sunrise-sunset-esp2.pcap diff --git a/contrib/tcpdump/tests/esp2.out b/contrib/tcpdump/tests/esp2.out deleted file mode 100644 index a829c8ea33907..0000000000000 --- a/contrib/tcpdump/tests/esp2.out +++ /dev/null @@ -1,8 +0,0 @@ -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x1), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x1), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1280, length 64 (ipip-proto-4) (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x2), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x2), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1536, length 64 (ipip-proto-4) (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x3), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x3), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1792, length 64 (ipip-proto-4) (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x4), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x4), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2048, length 64 (ipip-proto-4) (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x5), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x5), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2304, length 64 (ipip-proto-4) (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x6), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x6), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2560, length 64 (ipip-proto-4) (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x7), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x7), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2816, length 64 (ipip-proto-4) (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x8), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x8), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 3072, length 64 (ipip-proto-4) (ipip-proto-4) diff --git a/contrib/tcpdump/tests/esp2.sh b/contrib/tcpdump/tests/esp2.sh deleted file mode 100644 index 18a70833e05f2..0000000000000 --- a/contrib/tcpdump/tests/esp2.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -uudecode 08-sunrise-sunset-esp2.puu - -echo -n test esp2... -../tcpdump -t -n -E "0x12345678@192.1.2.45 3des-cbc-hmac96:0x43434545464649494a4a4c4c4f4f51515252545457575840,0xabcdabcd@192.0.1.1 3des-cbc-hmac96:0x434545464649494a4a4c4c4f4f5151525254545757584043" -r 08-sunrise-sunset-esp2.pcap >esp2.new -if diff esp2.new esp2.out -then - echo passed. -else - echo failed. -fi - diff --git a/contrib/tcpdump/tests/esp3.gdbinit b/contrib/tcpdump/tests/esp3.gdbinit deleted file mode 100644 index 71501187a2204..0000000000000 --- a/contrib/tcpdump/tests/esp3.gdbinit +++ /dev/null @@ -1 +0,0 @@ -set args -t -n -E "3des-cbc-hmac96:0x43434545464649494a4a4c4c4f4f51515252545457575840" -r 08-sunrise-sunset-esp2.pcap diff --git a/contrib/tcpdump/tests/esp3.sh b/contrib/tcpdump/tests/esp3.sh deleted file mode 100644 index 122beab97ede8..0000000000000 --- a/contrib/tcpdump/tests/esp3.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -uudecode 02-sunrise-sunset-esp.puu -echo -n test esp3... - ../tcpdump -t -n -E "3des-cbc-hmac96:0x4043434545464649494a4a4c4c4f4f515152525454575758" -r 02-sunrise-sunset-esp.pcap >esp3.new -if diff esp3.new esp1.out -then - echo passed. -else - echo failed. -fi - diff --git a/contrib/tcpdump/tests/esp4.gdbinit b/contrib/tcpdump/tests/esp4.gdbinit deleted file mode 100644 index 8007444b74e29..0000000000000 --- a/contrib/tcpdump/tests/esp4.gdbinit +++ /dev/null @@ -1,2 +0,0 @@ -set args -t -n -E "file esp-secrets.txt" -r 08-sunrise-sunset-esp2.pcap - diff --git a/contrib/tcpdump/tests/esp4.sh b/contrib/tcpdump/tests/esp4.sh deleted file mode 100644 index bba26e722a86e..0000000000000 --- a/contrib/tcpdump/tests/esp4.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -uudecode 08-sunrise-sunset-esp2.puu - -echo -n test esp4... -../tcpdump -t -n -E "file esp-secrets.txt" -r 08-sunrise-sunset-esp2.pcap >esp4.new -if diff esp4.new esp2.out -then - echo passed. -else - echo failed. -fi - diff --git a/contrib/tcpdump/tests/esp5.gdbinit b/contrib/tcpdump/tests/esp5.gdbinit deleted file mode 100644 index 2f578e327042c..0000000000000 --- a/contrib/tcpdump/tests/esp5.gdbinit +++ /dev/null @@ -1,3 +0,0 @@ -set args -t -n -E "file esp-secrets.txt" -r 08-sunrise-sunset-aes.pcap - - diff --git a/contrib/tcpdump/tests/esp5.out b/contrib/tcpdump/tests/esp5.out deleted file mode 100644 index 73f35e0b22015..0000000000000 --- a/contrib/tcpdump/tests/esp5.out +++ /dev/null @@ -1,8 +0,0 @@ -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x1), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1280, length 64 (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x2), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1536, length 64 (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x3), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1792, length 64 (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x4), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2048, length 64 (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x5), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2304, length 64 (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x6), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2560, length 64 (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x7), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2816, length 64 (ipip-proto-4) -IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x8), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 3072, length 64 (ipip-proto-4) diff --git a/contrib/tcpdump/tests/esp5.sh b/contrib/tcpdump/tests/esp5.sh deleted file mode 100644 index 405b677bf36e3..0000000000000 --- a/contrib/tcpdump/tests/esp5.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -uudecode 08-sunrise-sunset-aes.puu - -echo -n test esp5... -../tcpdump -t -n -E "file esp-secrets.txt" -r 08-sunrise-sunset-aes.pcap > esp5.new -if diff esp5.new esp5.out -then - echo passed. -else - echo failed. -fi - diff --git a/contrib/tcpdump/tests/espudp1.out b/contrib/tcpdump/tests/espudp1.out deleted file mode 100644 index 8999ff4d602b9..0000000000000 --- a/contrib/tcpdump/tests/espudp1.out +++ /dev/null @@ -1,8 +0,0 @@ -IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x1), length 116 -IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x2), length 116: ip-proto-227 49 -IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x3), length 116: PIMv13, length: 10 -IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x4), length 116 -IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x5), length 116 -IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x6), length 116: ip-proto-183 28 -IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x7), length 116: ip-proto-72 34 -IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x8), length 116: ip-proto-224 59 diff --git a/contrib/tcpdump/tests/espudp1.puu b/contrib/tcpdump/tests/espudp1.puu deleted file mode 100644 index 353c1c9c3d5e5..0000000000000 --- a/contrib/tcpdump/tests/espudp1.puu +++ /dev/null @@ -1,35 +0,0 @@ -begin 644 espudp1.pcap -MU,.RH0(`!``````````````&```!``````````````">````G@```!```&1D -M11```&1D(P@`10``D*8.``!`$5`(P`$"%\`!`BT1E!&4`'P``!(T5G@````! -MIQI1WARY*2.,3*N>\E4-MV0"Q0&B9RG\CH]Z?F.J2U2J6?9"%WHI),PCC4.T -MPHU1D2,KT6".3TG`1R:V$E7'FE[]PG%1#\!'O=1;9"P[#Q*U;DU12<9BO$:/ -M(AI2S*,BK5H_YVKC,]K'@[Y^``````````">````G@```!```&1D11```&1D -M(P@`10``D*8/``!`$5`'P`$"%\`!`BT1E!&4`'P``!(T5G@````"*3$H)*^K -MG65!9?U^[O>)/*D1"&WNUN@=BGJZV$;E12<$J$SGOAFJ!<5)O%=NY:HY\B$3 -M!*Q.N--U/:_F^;L-H0>[$9AU0\QP"`F5JD8GY307\SDD5=Y\G@%('76R5O`G -MA/2`=,$VWF]0[L\*``````````">````G@```!```&1D11```&1D(P@`10`` -MD*80``!`$5`&P`$"%\`!`BT1E!&4`'P``!(T5G@````#C]!\R;K$H/YX7>T6 -MZT6>/2I[+Q4&*]7A`VLB)[%A_/MKQMX-:R"-)DA.[G>)\5]KF#Z5:3L+JCMC -MXDHKBE%/Q%D1VV#=?\3JEZ?8)&[3[(4F"4*0W"B)."[.?0U(7!!Z2_69:0DV -M98H$8R%=``````````">````G@```!```&1D11```&1D(P@`10``D*81``!` -M$5`%P`$"%\`!`BT1E!&4`'P``!(T5G@````$FV8=\*GR(@_[&TF2&3'AZ9)Q -M*?@[(M!I:IE"@-?4W5TEZ-5@(F\613%V19L#%[XCJFJY^G4BVW"O\/*X\!A6 -M@1<[4J(5+60M8]9R>$=\TU>XX7AB7\T'1W1HAPX[(KPTVN"*NEC)E/7@5D_1 -M``````````">````G@```!```&1D11```&1D(P@`10``D*82``!`$5`$P`$" -M%\`!`BT1E!&4`'P``!(T5G@````%=@CRA49O0D;A1@T5[WR$Q5?Y(\M[>D@C -MRFK+$5I%Y8:85K`)&LZ.Q@G&N)8-RG@2;GNYJ\2OC9ZV?,IT7HJU7K&DM/1_ -M:K+-8KXY4?22*8=.1@O<,#R&;^R2P`>PAR9E7*>!>3*D24OK4*C1```````` -M``">````G@```!```&1D11```&1D(P@`10``D*83``!`$5`#P`$"%\`!`BT1 -ME!&4`'P``!(T5G@````&OTF+$=SM[Y.=U8E>9V&69R:M\.1&LA]$#9Q^:+E7 -MQE#E^)1R]--?O]SW!%7]KB<7\MLR56^<HT.D."4A5M1LBB7FNX7DP-C$&AH] -M+':VL$0V)[[KSCAW[YA,>WX)#?)/IJR<_@C91NG`(S^S``````````">```` -MG@```!```&1D11```&1D(P@`10``D*84``!`$5`"P`$"%\`!`BT1E!&4`'P` -M`!(T5G@````'!12933DTC1RSTN*./4ZCE%A8GGVL:;@`.%'8MEA.C7/6]D[S -MO1C([D/N6]%[?NISR>1W1EE,)=\I9&.PF-'Q*LXZQU71100.[\,-HK41G3/R -MG9DY$,].(M58U1\0XT\4R[<=RCCXM;_%AVM)``````````">````G@```!`` -M`&1D11```&1D(P@`10``D*85``!`$5`!P`$"%\`!`BT1E!&4`'P``!(T5G@` -M```(*_3L6&DE`65QQPA"@BAQ5FY@=%,+]@C9K+O)@],/GCI4%,MKI282(0M9 -M*<@/=L.DB"**EM":*2KJK`^H=0YM,$^[`=L%(RO,O_<4`MNKJ*:^9W8@1BP$ -59LK`-:)VQ/=2B;1'4FV3B?L]2;O! -` -end diff --git a/contrib/tcpdump/tests/espudp1.sh b/contrib/tcpdump/tests/espudp1.sh deleted file mode 100644 index 35dc0a8803673..0000000000000 --- a/contrib/tcpdump/tests/espudp1.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -uudecode espudp1.puu - -echo -n test espudp1... -../tcpdump -t -n -E "file esp-secrets.txt" -r espudp1.pcap >espudp1.new -if diff espudp1.new espudp1.out -then - echo passed. -else - echo failed. -fi - diff --git a/contrib/tcpdump/tests/isakmp-delete-segfault.puu b/contrib/tcpdump/tests/isakmp-delete-segfault.puu deleted file mode 100644 index 11512b128424a..0000000000000 --- a/contrib/tcpdump/tests/isakmp-delete-segfault.puu +++ /dev/null @@ -1,20 +0,0 @@ -begin 644 isakmp-delete-segfault.pcap -MU,.RH0(`!``````````````$```!````@"X```````"I`@``J0(``/______ -M_P$!`0$!`0@`10``I@`O0`!`$3PA?P```7\```$!]`'T`<@``!N3$,+\/7K^ -M3SF!FR'H6?T,OKXN&YH=5T,AEYH%R@(@71+C65#___\````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -!```` -` -end diff --git a/contrib/tcpdump/tests/isakmp-identification-segfault.puu b/contrib/tcpdump/tests/isakmp-identification-segfault.puu deleted file mode 100644 index 6f0ae0e8db384..0000000000000 --- a/contrib/tcpdump/tests/isakmp-identification-segfault.puu +++ /dev/null @@ -1,11 +0,0 @@ -begin 644 isakmp-identification-segfault.pcap -MU,.RH0(`!````````````/__````````HV%@0"_*#@`\`0``/`$```(```!% -M``$XH&P``/\1'$9_```!?P```0'U`?0!)$KL)9EPC(1ZBP(```````````40 -M`@`````````!'````0`"```````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -I```````````````````````````````````````````````````````` -` -end diff --git a/contrib/tcpdump/tests/isakmp-pointer-loop.puu b/contrib/tcpdump/tests/isakmp-pointer-loop.puu deleted file mode 100644 index fc582482c1e77..0000000000000 --- a/contrib/tcpdump/tests/isakmp-pointer-loop.puu +++ /dev/null @@ -1,6 +0,0 @@ -begin 644 isakmp-pointer-loop.pcap -MU,.RH0(`!````````````/__```!````DR;5/[_@!0!(````2``````$6D[H -ME``"+6_:]@@`10``.H=E0`#S$0HB@:KY?H&J^5<!]`'T`";R?@`````````` -6```````````($`$````````````*```` -` -end diff --git a/contrib/tcpdump/tests/isakmp1.out b/contrib/tcpdump/tests/isakmp1.out deleted file mode 100644 index 67a6ed1685a54..0000000000000 --- a/contrib/tcpdump/tests/isakmp1.out +++ /dev/null @@ -1 +0,0 @@ -IP 127.0.0.1.500 > 127.0.0.1.500: isakmp: phase 2/others ? #190[C] diff --git a/contrib/tcpdump/tests/isakmp1.sh b/contrib/tcpdump/tests/isakmp1.sh deleted file mode 100644 index ce2de7d1ba791..0000000000000 --- a/contrib/tcpdump/tests/isakmp1.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -uudecode isakmp-delete-segfault.puu - -echo -n test isakmp1... -if (../tcpdump -t -n -r isakmp-delete-segfault.pcap | diff - isakmp1.out) -then - echo passed. -else - echo failed. -fi - diff --git a/contrib/tcpdump/tests/isakmp2.out b/contrib/tcpdump/tests/isakmp2.out deleted file mode 100644 index 44c28db87b15a..0000000000000 --- a/contrib/tcpdump/tests/isakmp2.out +++ /dev/null @@ -1 +0,0 @@ -IP 129.170.249.126.500 > 129.170.249.87.500: isakmp: phase 1 ? base diff --git a/contrib/tcpdump/tests/isakmp2.sh b/contrib/tcpdump/tests/isakmp2.sh deleted file mode 100644 index d0006a8feeee4..0000000000000 --- a/contrib/tcpdump/tests/isakmp2.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -uudecode isakmp-pointer-loop.puu - -echo -n test isakmp2... -if (../tcpdump -t -n -r isakmp-pointer-loop.pcap | diff - isakmp2.out) -then - echo passed. -else - echo failed. -fi - diff --git a/contrib/tcpdump/tests/isakmp3.out b/contrib/tcpdump/tests/isakmp3.out deleted file mode 100644 index 6b37b77af8ec4..0000000000000 --- a/contrib/tcpdump/tests/isakmp3.out +++ /dev/null @@ -1,2 +0,0 @@ -IP (tos 0x0, ttl 255, id 41068, offset 0, flags [none], proto: UDP (17), length: 312) 127.0.0.1.501 > 127.0.0.1.500: isakmp 1.0 msgid : phase 1 I ident: - (id: idtype=FQDN protoid=0 port=0 len=248 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000) diff --git a/contrib/tcpdump/tests/isakmp3.sh b/contrib/tcpdump/tests/isakmp3.sh deleted file mode 100644 index e6003cc31fc8d..0000000000000 --- a/contrib/tcpdump/tests/isakmp3.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -uudecode isakmp-identification-segfault.puu - -echo -n test isakmp3... -../tcpdump -t -v -n -r isakmp-identification-segfault.pcap > isakmp3.new -if diff isakmp3.new isakmp3.out -then - echo passed. -else - echo failed. -fi - diff --git a/contrib/tcpdump/tests/isakmp4.out b/contrib/tcpdump/tests/isakmp4.out deleted file mode 100644 index 8c5b7daeb0d2a..0000000000000 --- a/contrib/tcpdump/tests/isakmp4.out +++ /dev/null @@ -1,35 +0,0 @@ -arp who-has 192.1.2.23 tell 192.1.2.254 -arp reply 192.1.2.23 is-at 10:00:00:64:64:23 -IP 192.1.2.254.500 > 192.1.2.23.500: isakmp: phase 1 I ident -IP 192.1.2.23.500 > 192.1.2.254.500: isakmp: phase 1 R ident -IP 192.1.2.254.500 > 192.1.2.23.500: isakmp: phase 1 I ident -IP 192.1.2.23.500 > 192.1.2.254.500: isakmp: phase 1 R ident -IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 1 I ident[E] -IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 1 R ident[E] -IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E] -IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R oakley-quick[E] -IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E] -IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x1), length 132 -arp who-has 192.1.2.254 tell 192.1.2.23 -arp reply 192.1.2.254 is-at 10:00:00:de:ad:ba -IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R oakley-quick[E] -IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E] -IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x2), length 132 -IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive -IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x3), length 132 -IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R oakley-quick[E] -IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E] -IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x4), length 132 -IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive -IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x5), length 132 -IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x6), length 132 -arp who-has 192.1.2.23 tell 192.1.2.254 -arp reply 192.1.2.23 is-at 10:00:00:64:64:23 -IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive -IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x7), length 132 -IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R oakley-quick[E] -IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x8), length 132 -arp who-has 192.1.2.254 tell 192.1.2.23 -arp reply 192.1.2.254 is-at 10:00:00:de:ad:ba -IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive -IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R inf[E] diff --git a/contrib/tcpdump/tests/isakmp4.sh b/contrib/tcpdump/tests/isakmp4.sh deleted file mode 100644 index dd7bf07803995..0000000000000 --- a/contrib/tcpdump/tests/isakmp4.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -uudecode isakmp4500.puu - -echo -n test isakmp4... -../tcpdump -t -n -E "file esp-secrets.txt" -r isakmp4500.pcap >isakmp4.new -if diff isakmp4.new isakmp4.out -then - echo passed. -else - echo failed. -fi - diff --git a/contrib/tcpdump/tests/isakmp4500.puu b/contrib/tcpdump/tests/isakmp4500.puu deleted file mode 100644 index 0b55dccfde4a3..0000000000000 --- a/contrib/tcpdump/tests/isakmp4500.puu +++ /dev/null @@ -1,155 +0,0 @@ -begin 644 isakmp4500.pcap -MU,.RH0(`!``````````````&```!```````````````J````*@```/______ -M_Q```-ZMN@@&``$(``8$``$0``#>K;K``0+^````````P`$"%P`````````` -M*@```"H````0``#>K;H0``!D9",(!@`!"``&!``"$```9&0CP`$"%Q```-ZM -MNL`!`OX``````````$X!``!.`0``$```9&0C$```WJVZ"`!%``%```!``#\1 -MM97``0+^P`$"%P'T`?0!+)6LGHGR.(^0O!X```````````$0`@`````````! -M)`T``)0````!`````0```(@``0`$`P``(``!``"`"P`!@`P.$(`!``6``@`! -M@`,``X`$``4#```@`0$``(`+``&`#`X0@`$`!8`"``*``P`#@`0`!0,``"`" -M`0``@`L``8`,#A"``0`%@`(``H`#``.`!``"````(`,!``"`"P`!@`P.$(`! -M``6``@`!@`,``X`$``(-```03T5K4F)'6%)V;5!%#0``%*_*UQ-HH?'):X:6 -M_'=7`0`-```42A,<@0<#6$5<5RCR#I5%+PT``!1]E!FF4Q#*;RP7G9(54IU6 -M#0``%,U@1D,UWR'X?/VR_&BVI$@````41(45+1BVN\T+Z*A&E7G=S``````` -M````L@```+(````0``#>K;H0``!D9",(`$4``*0``$``0!&U,<`!`A?``0+^ -M`?0!]`"08%.>B?(XCY"\'@IT-7SCT:2_`1`"``````````"(#0``-`````$` -M```!````*``!``$````@``$``(`+``&`#`X0@`$`!8`"``&``P`#@`0`!0T` -M`!!/16M28D=84G9M4$4-```4K\K7$VBA\<EKAI;\=U<!`````!1*$QR!!P-8 -M15Q7*/(.E44O``````````!&`0``1@$``!```&1D(Q```-ZMN@@`10`!.``` -M0``_$;6=P`$"_L`!`A<!]`'T`206L9Z)\CB/D+P>"G0U?./1I+\$$`(````` -M`````1P*``#$M]N'X4E&AEMT*7(UA)]?Z:M`RW>TPRPR/2V-U^-O'ST7,9K7 -MCQQFQ`#^2/PP0G^@]QHR=9!Y7?/EL'O(\L(I'#51V6N1?)1J+6P-A6&T0Y@" -M-KJ[,_WPC+W%H'KSV>J_(W#3`3A4&A^4Q*T^3Q*2'^M#9[XHW-IVWO.#J=M? -MDHTX?/DS#]CDJG;?BC_E:$W:3AD]N9+!U'[+6UU.`,)4^&ASH2SO\CU.=2!# -MH'<T@54L9-$X/5ZQ*&_;9BF5E3Q7%```%&;6]C)I>UY(FI*395>I?Z@4```4 -M;OX2\$KY#?O/L5UQN$&[G@```!1$]1?@/[.!^`^$+14XS/^L``````````!& -M`0``1@$``!```-ZMNA```&1D(P@`10`!.```0`!`$;2=P`$"%\`!`OX!]`'T -M`20!UYZ)\CB/D+P>"G0U?./1I+\$$`(``````````1P*``#$YYI?^#V[%WO* -M+,?[XKU\"YVFZ0UCMOA'6Y:C93#4^M&/)'3",1Q/"&7*"D0_<1SX#@"KRZDV -M\_XCB4O9XNS0"_O8-'[C&AG5O;G^G_N*#?4,"OA'?R><"WN68Q(H<1EONM3! -MS3=]U]MRZ(4UBM]&:I\KW&3X;LQ%M[B0:,/"]DTM1^J8+8CESE'6JEFCE,,$ -M?$W5P,^5=1K1AT@YX0J-9%/E]`MY&<%C?*Y*K\'5X#2B5OD6+FTGJ)^V299# -M*>H6%```%&Q^7ZRJ16$T%<6UJE<?IS$4```4.9,$U0^]3*/;'AEZ]\$>;P`` -M`!1N_A+P2OD-^\^Q77&X0;N>``````````!R`0``<@$``!```&1D(Q```-ZM -MN@@`10`!9```0``_$;5QP`$"_L`!`A<1E!&4`5!RH0````">B?(XCY"\'@IT -M-7SCT:2_!1`"`0````````%$H"1@W`ZTW:4&'Z=!K*`IRTNLK:3J/^$DD/B4 -M>Q,F?M5`3=(?!HGW$/M)`\W8Z/'FXK6$!(9!7BL9!@QV=(^E7><\)R8EVE3F -M6`.O^:2F!(>LD7%71N]`LA?B!/!0\*H2"YOJ0]_W9#9DJYZ).M/.;+8A?L[O -M`J-'HV_0*'&&^P\8:$'I^"13SN]VT%5\8O8;P2VV=`+&9+4]'MH+/&:'PR!H -M4O#,GI+1=+*MRN"5.-8D&$16)<O!`SBZM\AKC&P_X<;S]@/)1)Y\.&WOY7\H -M1V\P7.NL<92?18X,F+:L`^^F#O1Y505Q0H85DLC9DG)B/V<^\\%WS5TO;E$: -M"1$F`DG*=R<?ZQYTN1P^4Q#1].60GK<.AK=_XOM^<JSB!P9\:C2X3QI`L]D` -M`````````%H!``!:`0``$```WJVZ$```9&0C"`!%``%,``!``$`1M(G``0(7 -MP`$"_A&4$90!.,?$`````)Z)\CB/D+P>"G0U?./1I+\%$`(!`````````2S" -M8Z5]+<^-M8Q9P&X;^%JN2^*NYC1"AZ%4J-PIMZM611W<D%]6ET9DUBF=TH.0 -MQQSMHS[FF;=E?$HJP1Z27H0;DRN`@QD+=-Y#&>A:Z$*6IBWC.3.9037)<B;; -M0U&M+H9[&=K##GX++CXGX(L;7E^)B\Q+'_'N5/5,"[?P96K'-(4;25\#D%M/ -MVIN6C#7'Q:0PBF3\=1($ODAZ(&:$((=V1,STM/MIB(]C;^7T=R$*%X?+MTX^ -MB*X%6DJ09BC(XU@(,4IU1Q]MV_;%S@8Y96MB,W3/!#M5BS)JGA5$(J4H5W@8 -M<*B:G<;Q^>L`[ADSH`K&0*^[6)>")$E3;"4;U="I",2*`1TP_=5+%B"II3>( -M'@``````````V@$``-H!```0``!D9",0``#>K;H(`$4``<P``$``/Q&U"<`! -M`O[``0(7$901E`&XW3@`````GHGR.(^0O!X*=#5\X]&DOP@0(`&+?HE'```! -MK''I#[H$<_"<YEGG2)8)!97PF%0-_\8^X(V1[(=%+UAMJ9A(1/!,[6+WM32C -M)*0IG:EM/C)SF$P$=$P"Y_R.@/MCQOS;\U>4YQ5SAO`10)\84&I?],R2.?5M -MZ/Y^Y"#*%+0.<9KX(/Z$'&M,-)/2I7U^,!G,*G!E_O.D;7F_;D^V#&&*(R.+ -MH;YSI'1@I8GV%+\'*6,1(8`8D(VUP[,(R?PQ7#,5WQY3[HT+IFF"3?.+;(*M -M_?C;JQ#]O'9522*ZO7>'TEDYLLA`*L$8(XJ$!T>_HYS?G=WR11E($-021FMS -MB[NXAJ^CQVGO87[B@^I6THHW-%Z8%PTH&BCO^.[@K_NS8RVTE7CE&MA]6C@> -MEDIDM&T^.41?F(\X$Z-5[547$HC='*\>8``"[9.IHT)+[,^LZ?_6(6I\L32# -MF-JM7U".L4?X/8=G*KFA<>THJ-622W,;J`IW2^MLBI?_O<<EC)!V1^7\U,YK -M7'E&R_].`C#$#;X]E]1SX@092]ZE(@C-2M!ZAW.#%L^J[^'13BY&SG@````` -M`````(H!``"*`0``$```WJVZ$```9&0C"`!%``%\``!``$`1M%G``0(7P`$" -M_A&4$90!:,KN`````)Z)\CB/D+P>"G0U?./1I+\($"`!BWZ)1P```5RM:&N4 -MQ1;W19+;77%JE,,H'8&F6ITJM=R5O>KL1%[]#E/LJ#&./WFJ`#,3C!H=I_'* -M34/)_E+)(`!A&W00*T\"9O9JX0N">$#'(ZL<$'\P=GHB.0:\AXT/!^^*<P2! -M<!A\>%U.'5#'2IX<Q;9+I6GRVRW_+T,S>:7/2KZ$%^3W;%R4[&2T>'?2(@FF -M#T/=+2O[?Q4.(\@Q;]3V=L5Q2XFG)^E)0J:1AX`J4%E3_Y]^6='!R-ENY%9# -M3!XD:5K?/V&.!&X#>I_$96Y;P_!5']<G(@<:I94]["%1#F3MY*U1V%WQVL1_ -MRT*Z$\KEVW>070(D3N#$47!AZ^VCW-?I?JT2AL5YOWBO5[D!"OV)46(FK)9" -M$C40GNJ7*A,SE6%6A(4>KPE(-$)=L6=2VQLO>Y12N8QBH3V%(90.\5YL`R,O -M1@``````````8@```&(````0``!D9",0``#>K;H(`$4``%0``$``/Q&V@<`! -M`O[``0(7$901E`!`KQ<`````GHGR.(^0O!X*=#5\X]&DOP@0(`&+?HE'```` -M-"4[,88.:.R$%:1S6K/X<EH]YZH).22D`@``````````K@```*X````0``!D -M9",0``#>K;H(`$4``*"JM```/Q%+@<`!`O[``0(7$901E`",``#TW`KE```` -M`?SD"<11-X_=FBX7J&]'/C[B>;BA23X"^A;(BA/H;8_\0'U,E@M&;+=R&*LY -MAF.NT6<PXR31!Z\MX@W4>/*J.SL[UR2)+H^A6#5<38R;!FY\:AV_6ZV)FQ2! -M1T\L:`GPK6U?_?TVHSK[6(WSF?Q"XF5K/0U,A.Y+D\RP]G(``````````"H` -M```J````$```WJVZ$```9&0C"`8``0@`!@0``1```&1D(\`!`A<```````#` -M`0+^```````````J````*@```!```&1D(Q```-ZMN@@&``$(``8$``(0``#> -MK;K``0+^$```9&0CP`$"%P``````````B@$``(H!```0``#>K;H0``!D9",( -M`$4``7P``$``0!&T6<`!`A?``0+^$901E`%HRNX`````GHGR.(^0O!X*=#5\ -MX]&DOP@0(`&+?HE'```!7*UH:Y3%%O=%DMM=<6J4PR@=@:9:G2JUW)6]ZNQ$ -M7OT.4^RH,8X_>:H`,Q.,&AVG\<I-0\G^4LD@`&$;=!`K3P)F]FKA"X)X0,<C -MJQP0?S!V>B(Y!KR'C0\'[XIS!(%P&'QX74X=4,=*GAS%MDNE:?+;+?\O0S-Y -MI<]*OH07Y/=L7)3L9+1X=](B":8/0]TM*_M_%0XCR#%OU/9VQ7%+B:<GZ4E" -MII&'@"I065/_GWY9T<'(V6[D5D-,'B1I6M\_88X$;@-ZG\1E;EO#\%4?UR<B -M!QJEE3WL(5$.9.WDK5'87?':Q'_+0KH3RN7;=Y!=`B1.X,11<&'K[:/<U^E^ -MK1*&Q7F_>*]7N0$*_8E18B:LED(2-1">ZI<J$S.585:$A1ZO"4@T0EVQ9U+; -M&R][E%*YC&*A/84AE`[Q7FP#(R]&``````````!B````8@```!```&1D(Q`` -M`-ZMN@@`10``5```0``_$;:!P`$"_L`!`A<1E!&4`$"O%P````">B?(XCY"\ -M'@IT-7SCT:2_"!`@`8M^B4<````T)3LQA@YH[(05I'-:L_AR6CWGJ@DY)*0" -M``````````"N````K@```!```&1D(Q```-ZMN@@`10``H*JU```_$4N`P`$" -M_L`!`A<1E!&4`(P``/3<"N4````";5_]_3:C.OM8C?.9_$+B9;KU/R+D"U^- -MLGB)>"40ZCMW:+^A4%UI1Y)\.O4B]`44T(2XS\S=2[[[X.6A-PCDZP*3XFAD -M294>+W:M%%+\`)?XP#[:6]NHG>#;FFF-RMAA7D"KQ-&OX<E(GNRS/6*%P8?B -M>3Z5S'CBYC"740``````````*P```"L````0``!D9",0``#>K;H(`$4``!T` -M`$``/Q&VN,`!`O[``0(7$901E``)6)O_``````````"N````K@```!```&1D -M(Q```-ZMN@@`10``H*JV```_$4M_P`$"_L`!`A<1E!&4`(P``/3<"N4````# -M7D"KQ-&OX<E(GNRS/6*%P6M-D[MJGU)RI[EA3)LD/W^:S2V!1P<2Y/0I:_`% -MF3-`LSA3&QM8DD^\>1F0#F$^I@1V5E>.`*!H=Z?(&*,.MS]E4H#P+<JB/C=Q -MS26IBN>2"^MMG?%@Y3*L%D'7$>LLOA,HUEB3IB;87,\:-0``````````B@$` -M`(H!```0``#>K;H0``!D9",(`$4``7P``$``0!&T6<`!`A?``0+^$901E`%H -MRNX`````GHGR.(^0O!X*=#5\X]&DOP@0(`&+?HE'```!7*UH:Y3%%O=%DMM= -M<6J4PR@=@:9:G2JUW)6]ZNQ$7OT.4^RH,8X_>:H`,Q.,&AVG\<I-0\G^4LD@ -M`&$;=!`K3P)F]FKA"X)X0,<CJQP0?S!V>B(Y!KR'C0\'[XIS!(%P&'QX74X= -M4,=*GAS%MDNE:?+;+?\O0S-YI<]*OH07Y/=L7)3L9+1X=](B":8/0]TM*_M_ -M%0XCR#%OU/9VQ7%+B:<GZ4E"II&'@"I065/_GWY9T<'(V6[D5D-,'B1I6M\_ -M88X$;@-ZG\1E;EO#\%4?UR<B!QJEE3WL(5$.9.WDK5'87?':Q'_+0KH3RN7; -M=Y!=`B1.X,11<&'K[:/<U^E^K1*&Q7F_>*]7N0$*_8E18B:LED(2-1">ZI<J -M$S.585:$A1ZO"4@T0EVQ9U+;&R][E%*YC&*A/84AE`[Q7FP#(R]&```````` -M``!B````8@```!```&1D(Q```-ZMN@@`10``5```0``_$;:!P`$"_L`!`A<1 -ME!&4`$"O%P````">B?(XCY"\'@IT-7SCT:2_"!`@`8M^B4<````T)3LQA@YH -M[(05I'-:L_AR6CWGJ@DY)*0"``````````"N````K@```!```&1D(Q```-ZM -MN@@`10``H*JW```_$4M^P`$"_L`!`A<1E!&4`(P``/3<"N4````$"^MMG?%@ -MY3*L%D'7$>LLOHFXH,6B3<'M/]A_UT%X.MP;F`ZT@=\62*]W'/Y5@1,(8+`W -MTIZ(C;<M^%)G.9R$N1)6J_7Z_!GT%\UMQ:XQPM8]>8G'VC<"+'VM:$K/=:VI -MD#:KB^/G$BB@:+=TSV\S)T5-E#UOBKZ"E5_,%P``````````*P```"L````0 -M``!D9",0``#>K;H(`$4``!T``$``/Q&VN,`!`O[``0(7$901E``)6)O_```` -M``````"N````K@```!```&1D(Q```-ZMN@@`10``H*JX```_$4M]P`$"_L`! -M`A<1E!&4`(P``/3<"N4````%D#:KB^/G$BB@:+=TSV\S)XZ>X,YAOI/W1_BS -M7:N%MO?3J+1\I=>O-<R^HIZU--!X&6`$]U#*J@;R@64%SKQ.B/^^IGB<&88W -M[8)FS;H6%4)M9NV]\#Q+3^^'.,PQY7<SC6OG8>36N1GBDD+HMR]D8U)G(OJ] -MMX!><$3'U0``````````K@```*X````0``!D9",0``#>K;H(`$4``*"JN0`` -M/Q%+?,`!`O[``0(7$901E`",``#TW`KE````!HUKYV'DUKD9XI)"Z+<O9&,5 -M_X1R'`1@>@>3:9638^IH_2\8CVE-BL2&43,3ZAY3'1@3Z:+\)XSXDSO]L,@? -MCOL6<I7.*]L#N>@]+&+X^#H(D.X>B;)<%[E4:S:#.D70:!#<8Q\QZFH`<C&^ -MG'`JQ0_F"K\L?F]\HUG$8G,``````````"H````J````$```9&0C$```WJVZ -M"`8``0@`!@0``1```-ZMNL`!`OX```````#``0(7```````````J````*@`` -M`!```-ZMNA```&1D(P@&``$(``8$``(0``!D9"/``0(7$```WJVZP`$"_@`` -M````````*P```"L````0``!D9",0``#>K;H(`$4``!T``$``/Q&VN,`!`O[` -M`0(7$901E``)6)O_``````````"N````K@```!```&1D(Q```-ZMN@@`10`` -MH*JZ```_$4M[P`$"_L`!`A<1E!&4`(P``/3<"N4````'$-QC'S'J:@!R,;Z< -M<"K%#ST!-8\O2;F**R/9Z%HAZ`2#KQIW*9'HI9C067ZK-G^XAL^O0I7Z/'H( -M<.`7P<QG3<<?7R7Z!!3MQ1MY5B=F9N",J@L.`]?M!U5)TB`<"]W5C[,`[Y'2 -MT6\N$CD@6'"CP$3F`AEER>@/P'/E0@``````````B@$``(H!```0``#>K;H0 -M``!D9",(`$4``7P``$``0!&T6<`!`A?``0+^$901E`%HRNX`````GHGR.(^0 -MO!X*=#5\X]&DOP@0(`&+?HE'```!7*UH:Y3%%O=%DMM=<6J4PR@=@:9:G2JU -MW)6]ZNQ$7OT.4^RH,8X_>:H`,Q.,&AVG\<I-0\G^4LD@`&$;=!`K3P)F]FKA -M"X)X0,<CJQP0?S!V>B(Y!KR'C0\'[XIS!(%P&'QX74X=4,=*GAS%MDNE:?+; -M+?\O0S-YI<]*OH07Y/=L7)3L9+1X=](B":8/0]TM*_M_%0XCR#%OU/9VQ7%+ -MB:<GZ4E"II&'@"I065/_GWY9T<'(V6[D5D-,'B1I6M\_88X$;@-ZG\1E;EO# -M\%4?UR<B!QJEE3WL(5$.9.WDK5'87?':Q'_+0KH3RN7;=Y!=`B1.X,11<&'K -M[:/<U^E^K1*&Q7F_>*]7N0$*_8E18B:LED(2-1">ZI<J$S.585:$A1ZO"4@T -M0EVQ9U+;&R][E%*YC&*A/84AE`[Q7FP#(R]&``````````"N````K@```!`` -M`&1D(Q```-ZMN@@`10``H*J[```_$4MZP`$"_L`!`A<1E!&4`(P``/3<"N4` -M```(C[,`[Y'2T6\N$CD@6'"CP*@CBNC9!,,HJ*K#(R8N5?*%N(<XX+>GVJ+F -M#M/G_FP&NANM[W@`)Y9\\Z?F4SX%'E.^2BCP\9+!/`25PK%+G'U@$&1+=@%( -M#9RV^U"B8-5,EXJ0-QZTLOJ/L^F\).BC@++XQGOL8JC_`L;'=``````````` -M*@```"H````0``#>K;H0``!D9",(!@`!"``&!``!$```9&0CP`$"%P`````` -M`,`!`OX``````````"H````J````$```9&0C$```WJVZ"`8``0@`!@0``A`` -M`-ZMNL`!`OX0``!D9"/``0(7```````````K````*P```!```&1D(Q```-ZM -MN@@`10``'0``0``_$;:XP`$"_L`!`A<1E!&4``E8F_\``````````'H```!Z -M````$```WJVZ$```9&0C"`!%``!L``!``$`1M6G``0(7P`$"_A&4$90`6,G# -M`````)Z)\CB/D+P>"G0U?./1I+\($`4!`KW&3P```$S_T\^1(\?(IVCQDA]J -C20SF@.^<&]2'1D(_3FHHKW7PKQJ'!!.01QV>?]$9K_EN`N<` -` -end diff --git a/contrib/tcpdump/tests/lmp.out b/contrib/tcpdump/tests/lmp.out deleted file mode 100644 index ee37bca05923b..0000000000000 --- a/contrib/tcpdump/tests/lmp.out +++ /dev/null @@ -1,191 +0,0 @@ -IP (tos 0x0, ttl 1, id 44530, offset 0, flags [none], proto: UDP (17), length: 84) 10.0.12.1.49998 > 10.0.12.2.49998: - LMPv1, msg-type: Begin Verify, Flags: [Control Channel Down], length: 56 - Link ID Object (3), Class-Type: IPv4 Local (1) Flags: [non-negotiable], length: 8 - IPv4 Link ID: 1.0.0.0 (0x01000000) - Message ID Object (5), Class-Type: 1 (1) Flags: [non-negotiable], length: 8 - Message ID: 3 (0x00000003) - Link ID Object (3), Class-Type: IPv4 Remote (2) Flags: [non-negotiable], length: 8 - IPv4 Link ID: 1.0.0.0 (0x01000000) - Verify Begin Object (8), Class-Type: 1 (1) Flags: [negotiable], length: 24 - Flags: none - Verify Interval: 20 - Data links: 30 - Encoding type: Lambda (photonic) - Verify Tranport Mechanism: 32768 (0x8000) - Transmission Rate: 100.000 Mbps - Wavelength: 8 -IP (tos 0x0, ttl 1, id 44531, offset 0, flags [none], proto: UDP (17), length: 56) 10.0.12.1.49998 > 10.0.12.2.49998: - LMPv1, msg-type: Hello, Flags: [Control Channel Down], length: 28 - Control Channel ID Object (1), Class-Type: Local (1) Flags: [non-negotiable], length: 8 - Control Channel ID: 1 (0x00000001) - Hello Object (7), Class-Type: 1 (1) Flags: [non-negotiable], length: 12 - TxSeqNum: 50 - RcvSeqNum: 60 -IP (tos 0x0, ttl 1, id 44532, offset 0, flags [none], proto: UDP (17), length: 84) 10.0.12.1.49998 > 10.0.12.2.49998: - LMPv1, msg-type: Config NACK, Flags: [Control Channel Down], length: 56 - Control Channel ID Object (1), Class-Type: Local (1) Flags: [non-negotiable], length: 8 - Control Channel ID: 1 (0x00000001) - Node ID Object (2), Class-Type: Local (1) Flags: [non-negotiable], length: 8 - Node ID: 10.0.50.1 (0x0a003201) - Control Channel ID Object (1), Class-Type: Remote (2) Flags: [non-negotiable], length: 8 - Control Channel ID: 2 (0x00000002) - Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8 - Message ID Ack: 3 (0x00000003) - Node ID Object (2), Class-Type: Remote (2) Flags: [non-negotiable], length: 8 - Node ID: 10.0.50.2 (0x0a003202) - Configuration Object (6), Class-Type: 1 (1) Flags: [negotiable], length: 8 - Hello Interval: 5 - Hello Dead Interval: 15 -IP (tos 0x0, ttl 1, id 44533, offset 0, flags [none], proto: UDP (17), length: 76) 10.0.12.1.49998 > 10.0.12.2.49998: - LMPv1, msg-type: Config ACK, Flags: [Control Channel Down], length: 48 - Control Channel ID Object (1), Class-Type: Local (1) Flags: [non-negotiable], length: 8 - Control Channel ID: 1 (0x00000001) - Node ID Object (2), Class-Type: Local (1) Flags: [non-negotiable], length: 8 - Node ID: 10.0.50.1 (0x0a003201) - Control Channel ID Object (1), Class-Type: Remote (2) Flags: [non-negotiable], length: 8 - Control Channel ID: 2 (0x00000002) - Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8 - Message ID Ack: 3 (0x00000003) - Node ID Object (2), Class-Type: Remote (2) Flags: [non-negotiable], length: 8 - Node ID: 10.0.50.2 (0x0a003202) -IP (tos 0x0, ttl 1, id 44534, offset 0, flags [none], proto: UDP (17), length: 68) 10.0.12.1.49998 > 10.0.12.2.49998: - LMPv1, msg-type: Config, Flags: [Control Channel Down], length: 40 - Control Channel ID Object (1), Class-Type: Local (1) Flags: [non-negotiable], length: 8 - Control Channel ID: 1 (0x00000001) - Message ID Object (5), Class-Type: 1 (1) Flags: [non-negotiable], length: 8 - Message ID: 3 (0x00000003) - Node ID Object (2), Class-Type: Local (1) Flags: [non-negotiable], length: 8 - Node ID: 10.0.50.1 (0x0a003201) - Configuration Object (6), Class-Type: 1 (1) Flags: [negotiable], length: 8 - Hello Interval: 5 - Hello Dead Interval: 15 -IP (tos 0x0, ttl 1, id 44535, offset 0, flags [none], proto: UDP (17), length: 44) 10.0.12.1.49998 > 10.0.12.2.49998: - LMPv1, msg-type: Link Summary ACK, Flags: [Control Channel Down], length: 16 - Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8 - Message ID Ack: 1 (0x00000001) -IP (tos 0x0, ttl 1, id 44536, offset 0, flags [none], proto: UDP (17), length: 124) 10.0.12.1.49998 > 10.0.12.2.49998: - LMPv1, msg-type: Link Summary NACK, Flags: [Control Channel Down], length: 96 - Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8 - Message ID Ack: 1 (0x00000001) - Error Code Object (20), Class-Type: 2 (2) Flags: [non-negotiable], length: 8 - Error Code: - Unacceptable non-negotiable LINK_SUMMARY parameters, - Renegotiate LINK_SUMMARY parameters, - Invalid DATA-LINK Object, - Unknown TE-LINK Object c-type, - Unknown DATA-LINK Object c-type - Data Link Object (12), Class-Type: IPv4 (1) Flags: [non-negotiable], length: 36 - Flags: [none] - Local Interface ID: 192.168.1.1 (0xc0a80101) - Remote Interface ID: 192.168.1.2 (0xc0a80102) - Subobject, Type: Interface Switching Type (1), Length: 12 - Switching Type: Lambda-Switch Capable (150) - Encoding Type: Lambda (photonic) (8) - Min Reservable Bandwidth: 100.000 Mbps - Max Reservable Bandwidth: 100.000 Mbps - Subobject, Type: Wavelength (2), Length: 8 - Wavelength: 6 - Data Link Object (12), Class-Type: IPv4 (1) Flags: [non-negotiable], length: 36 - Flags: [none] - Local Interface ID: 10.1.1.1 (0x0a010101) - Remote Interface ID: 10.1.1.2 (0x0a010102) - Subobject, Type: Interface Switching Type (1), Length: 12 - Switching Type: Lambda-Switch Capable (150) - Encoding Type: ANSI/ETSI PDH (3) - Min Reservable Bandwidth: 1234736768.000 Mbps - Max Reservable Bandwidth: 1290693376.000 Mbps - Subobject, Type: Wavelength (2), Length: 8 - Wavelength: 353 -IP (tos 0x0, ttl 1, id 44537, offset 0, flags [none], proto: UDP (17), length: 68) 10.0.12.1.49998 > 10.0.12.2.49998: - LMPv1, msg-type: Begin Verify ACK, Flags: [Control Channel Down], length: 40 - Link ID Object (3), Class-Type: IPv4 Local (1) Flags: [non-negotiable], length: 8 - IPv4 Link ID: 1.0.0.0 (0x01000000) - Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8 - Message ID Ack: 1 (0x00000001) - Verify Begin ACK Object (9), Class-Type: 1 (1) Flags: [negotiable], length: 8 - Verify Dead Interval: 50 - Verify Transport Response: 100 - Verify ID Object (10), Class-Type: 1 (1) Flags: [non-negotiable], length: 8 - Verify ID: 5 -IP (tos 0x0, ttl 1, id 44538, offset 0, flags [none], proto: UDP (17), length: 60) 10.0.12.1.49998 > 10.0.12.2.49998: - LMPv1, msg-type: Begin Verify NACK, Flags: [Control Channel Down], length: 32 - Link ID Object (3), Class-Type: IPv4 Local (1) Flags: [non-negotiable], length: 8 - IPv4 Link ID: 10.0.0.0 (0x0a000000) - Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8 - Message ID Ack: 3 (0x00000003) - Error Code Object (20), Class-Type: 1 (1) Flags: [non-negotiable], length: 8 - Error Code: - Link Verification Procedure Not supported, - Unwilling to verify, - Unsupported verification transport mechanism -IP (tos 0x0, ttl 1, id 44539, offset 0, flags [none], proto: UDP (17), length: 52) 10.0.12.1.49998 > 10.0.12.2.49998: - LMPv1, msg-type: End Verify, Flags: [Control Channel Down], length: 24 - Message ID Object (5), Class-Type: 1 (1) Flags: [non-negotiable], length: 8 - Message ID: 3 (0x00000003) - Verify ID Object (10), Class-Type: 1 (1) Flags: [non-negotiable], length: 8 - Verify ID: 5 -IP (tos 0x0, ttl 1, id 44540, offset 0, flags [none], proto: UDP (17), length: 52) 10.0.12.1.49998 > 10.0.12.2.49998: - LMPv1, msg-type: End Verify ACK, Flags: [Control Channel Down], length: 24 - Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8 - Message ID Ack: 3 (0x00000003) - Verify ID Object (10), Class-Type: 1 (1) Flags: [non-negotiable], length: 8 - Verify ID: 5 -IP (tos 0x0, ttl 1, id 44541, offset 0, flags [none], proto: UDP (17), length: 52) 10.0.12.1.49998 > 10.0.12.2.49998: - LMPv1, msg-type: Test, Flags: [Control Channel Down], length: 24 - Interface ID Object (4), Class-Type: IPv4 Local (1) Flags: [non-negotiable], length: 8 - IPv4 Link ID: 1.0.0.0 (0x01000000) - Verify ID Object (10), Class-Type: 1 (1) Flags: [non-negotiable], length: 8 - Verify ID: 5 -IP (tos 0x0, ttl 1, id 44542, offset 0, flags [none], proto: UDP (17), length: 52) 10.0.12.1.49998 > 10.0.12.2.49998: - LMPv1, msg-type: Test Status Failure, Flags: [Control Channel Down], length: 24 - Message ID Object (5), Class-Type: 1 (1) Flags: [non-negotiable], length: 8 - Message ID: 1 (0x00000001) - Verify ID Object (10), Class-Type: 1 (1) Flags: [non-negotiable], length: 8 - Verify ID: 5 -IP (tos 0x0, ttl 1, id 44543, offset 0, flags [none], proto: UDP (17), length: 52) 10.0.12.1.49998 > 10.0.12.2.49998: - LMPv1, msg-type: Test Status ACK, Flags: [Control Channel Down], length: 24 - Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8 - Message ID Ack: 1 (0x00000001) - Verify ID Object (10), Class-Type: 1 (1) Flags: [non-negotiable], length: 8 - Verify ID: 5 -IP (tos 0x0, ttl 1, id 44544, offset 0, flags [none], proto: UDP (17), length: 44) 10.0.12.1.49998 > 10.0.12.2.49998: - LMPv1, msg-type: Channel Status ACK, Flags: [Control Channel Down], length: 16 - Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8 - Message ID Ack: 3 (0x00000003) -IP (tos 0x0, ttl 1, id 44545, offset 0, flags [none], proto: UDP (17), length: 64) 10.0.12.1.49998 > 10.0.12.2.49998: - LMPv1, msg-type: Channel Status Request, Flags: [Control Channel Down], length: 36 - Link ID Object (3), Class-Type: IPv4 Local (1) Flags: [non-negotiable], length: 8 - IPv4 Link ID: 1.0.0.0 (0x01000000) - Message ID Object (5), Class-Type: 1 (1) Flags: [non-negotiable], length: 8 - Message ID: 3 (0x00000003) - Channel Status Request Object (14), Class-Type: IPv4 (1) Flags: [non-negotiable], length: 12 - Interface ID: 2.0.0.0 (0x02000000) - Interface ID: 2.0.0.0 (0x02000000) -IP (tos 0x0, ttl 1, id 44546, offset 0, flags [none], proto: UDP (17), length: 72) 10.0.12.1.49998 > 10.0.12.2.49998: - LMPv1, msg-type: Channel Status, Flags: [Control Channel Down], length: 44 - Link ID Object (3), Class-Type: IPv4 Local (1) Flags: [non-negotiable], length: 8 - IPv4 Link ID: 1.0.0.0 (0x01000000) - Message ID Object (5), Class-Type: 1 (1) Flags: [non-negotiable], length: 8 - Message ID: 3 (0x00000003) - Channel Status Object (13), Class-Type: IPv4 (1) Flags: [non-negotiable], length: 20 - Interface ID: 1.0.0.0 (0x01000000) - Active: Allocated (1) - Direction: Transmit (1) - Channel Status: Signal Fail (3) - Interface ID: 1.0.0.0 (0x01000000) - Active: Allocated (1) - Direction: Receive (0) - Channel Status: Signal Degraded (2) -IP (tos 0x0, ttl 1, id 44547, offset 0, flags [none], proto: UDP (17), length: 64) 10.0.12.1.49998 > 10.0.12.2.49998: - LMPv1, msg-type: Channel Status Response, Flags: [Control Channel Down], length: 36 - Message ID Object (5), Class-Type: 2 (2) Flags: [non-negotiable], length: 8 - Message ID Ack: 3 (0x00000003) - Channel Status Object (13), Class-Type: IPv4 (1) Flags: [non-negotiable], length: 20 - Interface ID: 1.0.0.0 (0x01000000) - Active: Allocated (1) - Direction: Transmit (1) - Channel Status: Signal Degraded (2) - Interface ID: 1.0.0.0 (0x01000000) - Active: Allocated (1) - Direction: Transmit (1) - Channel Status: Signal Okay (1) diff --git a/contrib/tcpdump/tests/lmp.puu b/contrib/tcpdump/tests/lmp.puu deleted file mode 100644 index c14cd560c96c6..0000000000000 --- a/contrib/tcpdump/tests/lmp.puu +++ /dev/null @@ -1,42 +0,0 @@ -begin 644 lmp.pcap -MU,.RH0(`!````````````/__```!````I!J-0&;J``!B````8@`````%75SJ -MQ@`$=="&2@@`10``5*WR```!$=^D"@`,`0H`#`+#3L-.`$```!````4`.``` -M`0,`"`$````!!0`(`````P(#``@!````@0@`&````!0````>")*``$+(```` -M```(I!J-0#SQ``!&````1@`````%75SJQ@`$=="&2@@`10``.*WS```!$=^_ -M"@`,`0H`#`+#3L-.`"0``!````0`'````0$`"`````$!!P`,````,@```#RD -M&HU`@/(``&(```!B``````5=7.K&``1UT(9*"`!%``!4K?0```$1WZ(*``P! -M"@`,`L-.PTX`0```$````P`X```!`0`(`````0$"``@*`#(!`@$`"`````(" -M!0`(`````P("``@*`#("@08`"``%``^D&HU`?_,``%H```!:``````5=7.K& -M``1UT(9*"`!%``!,K?4```$1WZD*``P!"@`,`L-.PTX`.```$````@`P```! -M`0`(`````0$"``@*`#(!`@$`"`````("!0`(`````P("``@*`#("I!J-0'+T -M``!2````4@`````%75SJQ@`$=="&2@@`10``1*WV```!$=^P"@`,`0H`#`+# -M3L-.`#```!````$`*````0$`"`````$!!0`(`````P$"``@*`#(!@08`"``% -M``^D&HU`0_4``#H````Z``````5=7.K&``1UT(9*"`!%```LK?<```$1W\<* -M``P!"@`,`L-.PTX`&```$```#P`0```"!0`(`````:0:C4"E]P``B@```(H` -M````!5U<ZL8`!'70ADH(`$4``'RM^````1'?=@H`#`$*``P"PT[#3@!H```0 -M```0`&````(%``@````!`A0`"````#L!#``D`````,"H`0'`J`$"`0R6"$+( -M``!"R````@@```````8!#``D``````H!`0$*`0$"`0R6`TZ3,2U.F=S6`@@` -M`````6&D&HU`C/@``%(```!2``````5=7.K&``1UT(9*"`!%``!$K?D```$1 -MWZT*``P!"@`,`L-.PTX`,```$```!@`H```!`P`(`0````(%``@````!@0D` -M"``R`&0!"@`(````!:0:C4!E^0``2@```$H`````!5U<ZL8`!'70ADH(`$4` -M`#RM^@```1'?M`H`#`$*``P"PT[#3@`H```0```'`"````$#``@*`````@4` -M"`````,!%``(````!Z0:C4`Q^@``0@```$(`````!5U<ZL8`!'70ADH(`$4` -M`#2M^P```1'?NPH`#`$*``P"PT[#3@`@```0```(`!@```$%``@````#`0H` -M"`````6D&HU``_L``$(```!"``````5=7.K&``1UT(9*"`!%```TK?P```$1 -MW[H*``P!"@`,`L-.PTX`(```$```"0`8```"!0`(`````P$*``@````%I!J- -M0-#[``!"````0@`````%75SJQ@`$=="&2@@`10``-*W]```!$=^Y"@`,`0H` -M#`+#3L-.`"```!````H`&````00`"`$````!"@`(````!:0:C4"=_```0@`` -M`$(`````!5U<ZL8`!'70ADH(`$4``#2M_@```1'?N`H`#`$*``P"PT[#3@`@ -M```0```,`!@```$%``@````!`0H`"`````6D&HU`:?T``$(```!"``````5= -M7.K&``1UT(9*"`!%```TK?\```$1W[<*``P!"@`,`L-.PTX`(```$```#0`8 -M```"!0`(`````0$*``@````%I!J-0#C^```Z````.@`````%75SJQ@`$=="& -M2@@`10``+*X````!$=^^"@`,`0H`#`+#3L-.`!@``!```!(`$````@4`"``` -M``.D&HU`)?\``$X```!.``````5=7.K&``1UT(9*"`!%``!`K@$```$1WZD* -M``P!"@`,`L-.PTX`+```$```$P`D```!`P`(`0````$%``@````#`0X`#`(` -M```"````I!J-0`8``0!6````5@`````%75SJQ@`$=="&2@@`10``2*X"```! -M$=^@"@`,`0H`#`+#3L-.`#0``!```!$`+````0,`"`$````!!0`(`````P$- -M`!0!````P````P$```"````"I!J-0-4``0!.````3@`````%75SJQ@`$=="& -M2@@`10``0*X#```!$=^G"@`,`0H`#`+#3L-.`"P``!```!0`)````@4`"``` -6``,!#0`4`0```,````(!````P````0`` -` -end diff --git a/contrib/tcpdump/tests/lmp.sh b/contrib/tcpdump/tests/lmp.sh deleted file mode 100755 index 991904480e832..0000000000000 --- a/contrib/tcpdump/tests/lmp.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -uudecode lmp.puu - -echo -n test lmp ... -../tcpdump -t -n -v -r lmp.pcap >lmp.new -if diff lmp.new lmp.out -then - echo passed. -else - echo failed. -fi - - diff --git a/contrib/tcpdump/tests/mpls-ldp-hello.out b/contrib/tcpdump/tests/mpls-ldp-hello.out deleted file mode 100644 index fa621ca4c080c..0000000000000 --- a/contrib/tcpdump/tests/mpls-ldp-hello.out +++ /dev/null @@ -1,9 +0,0 @@ -IP (tos 0xc0, ttl 1, id 15579, offset 0, flags [none], proto: UDP (17), length: 70) 10.1.1.3.646 > 224.0.0.2.646: - LDP, Label-Space-ID: 10.1.0.2:0, pdu-length: 38 - Hello Message (0x0100), length: 28, Message ID: 0x00011970, Flags: [ignore if unknown] - Common Hello Parameters TLV (0x0400), length: 4, Flags: [ignore and don't forward if unknown] - Hold Time: 15s, Flags: [Link Hello] - IPv4 Transport Address TLV (0x0401), length: 4, Flags: [ignore and don't forward if unknown] - IPv4 Transport Address: 10.1.0.2 - Configuration Sequence Number TLV (0x0402), length: 4, Flags: [ignore and don't forward if unknown] - Sequence Number: 1 diff --git a/contrib/tcpdump/tests/mpls-ldp-hello.puu b/contrib/tcpdump/tests/mpls-ldp-hello.puu deleted file mode 100644 index b7f3b625b34e5..0000000000000 --- a/contrib/tcpdump/tests/mpls-ldp-hello.puu +++ /dev/null @@ -1,6 +0,0 @@ -begin 644 mpls-ldp-hello.pcap -MU,.RH0(`!````````````.H%```)````1UFZ/E2'#`!*````2@```/\#`"%% -MP`!&/-L```$1D08*`0$#X````@*&`H8`,M2>``$`)@H!``(```$``!P``1EP -8!```!``/```$`0`$"@$``@0"``0````! -` -end diff --git a/contrib/tcpdump/tests/mpls-ldp-hello.sh b/contrib/tcpdump/tests/mpls-ldp-hello.sh deleted file mode 100755 index b1a5b1941705d..0000000000000 --- a/contrib/tcpdump/tests/mpls-ldp-hello.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -uudecode mpls-ldp-hello.puu - -echo -n test mpls-ldp-hello ... -../tcpdump -t -n -v -r mpls-ldp-hello.pcap >mpls-ldp-hello.new -if diff mpls-ldp-hello.new mpls-ldp-hello.out -then - echo passed. -else - echo failed. -fi - - diff --git a/contrib/tcpdump/tests/ospf-gmpls.out b/contrib/tcpdump/tests/ospf-gmpls.out deleted file mode 100644 index 965affc2773a9..0000000000000 --- a/contrib/tcpdump/tests/ospf-gmpls.out +++ /dev/null @@ -1,83 +0,0 @@ -IP (tos 0xc0, ttl 1, id 4052, offset 0, flags [none], proto: OSPF (89), length: 172) 40.35.1.2 > 224.0.0.5: OSPFv2, LS-Update, length: 152 - Router-ID: 10.255.245.35, Backbone Area, Authentication Type: none (0), 1 LSA - LSA #1 - Advertising Router: 10.255.245.37, seq 0x80000002, age 9s, length: 104 - Area Local Opaque LSA (10), Opaque-Type: Traffic Engineering LSA (1), Opaque-ID: 8 - Options: [External] - Link TLV (2), length: 100 - Link Type subTLV (1), length: 1, Point-to-point (1) - Link ID subTLV (2), length: 4, 10.255.245.69 (0x0afff545) - Local Interface IP address subTLV (3), length: 4, 10.9.142.1 - Remote Interface IP address subTLV (4), length: 4, 10.9.142.2 - Traffic Engineering Metric subTLV (5), length: 4, Metric 63 - Maximum Bandwidth subTLV (6), length: 4, 622.080 Mbps - Maximum Reservable Bandwidth subTLV (7), length: 4, 622.080 Mbps - Unreserved Bandwidth subTLV (8), length: 32 - TE-Class 0: 622.080 Mbps - TE-Class 1: 622.080 Mbps - TE-Class 2: 622.080 Mbps - TE-Class 3: 622.080 Mbps - TE-Class 4: 622.080 Mbps - TE-Class 5: 622.080 Mbps - TE-Class 6: 622.080 Mbps - TE-Class 7: 622.080 Mbps - Administrative Group subTLV (9), length: 4, 0x00000000 -IP (tos 0xc0, ttl 1, id 4106, offset 0, flags [none], proto: OSPF (89), length: 172) 40.35.1.2 > 224.0.0.5: OSPFv2, LS-Update, length: 152 - Router-ID: 10.255.245.35, Backbone Area, Authentication Type: none (0), 1 LSA - LSA #1 - Advertising Router: 10.255.245.37, seq 0x80000002, age 9s, length: 104 - Area Local Opaque LSA (10), Opaque-Type: Traffic Engineering LSA (1), Opaque-ID: 9 - Options: [External] - Link TLV (2), length: 100 - Link Type subTLV (1), length: 1, Point-to-point (1) - Link ID subTLV (2), length: 4, 10.255.245.69 (0x0afff545) - Local Interface IP address subTLV (3), length: 4, 10.9.143.1 - Remote Interface IP address subTLV (4), length: 4, 10.9.143.2 - Traffic Engineering Metric subTLV (5), length: 4, Metric 63 - Maximum Bandwidth subTLV (6), length: 4, 622.080 Mbps - Maximum Reservable Bandwidth subTLV (7), length: 4, 622.080 Mbps - Unreserved Bandwidth subTLV (8), length: 32 - TE-Class 0: 622.080 Mbps - TE-Class 1: 622.080 Mbps - TE-Class 2: 622.080 Mbps - TE-Class 3: 622.080 Mbps - TE-Class 4: 622.080 Mbps - TE-Class 5: 622.080 Mbps - TE-Class 6: 622.080 Mbps - TE-Class 7: 622.080 Mbps - Administrative Group subTLV (9), length: 4, 0x00000000 -IP (tos 0xc0, ttl 1, id 4160, offset 0, flags [none], proto: OSPF (89), length: 212) 40.35.1.2 > 224.0.0.5: OSPFv2, LS-Update, length: 192 - Router-ID: 10.255.245.35, Backbone Area, Authentication Type: none (0), 1 LSA - LSA #1 - Advertising Router: 10.255.245.35, seq 0x80000003, age 3s, length: 144 - Area Local Opaque LSA (10), Opaque-Type: Traffic Engineering LSA (1), Opaque-ID: 3 - Options: [External] - Link TLV (2), length: 140 - Link Type subTLV (1), length: 1, Point-to-point (1) - Link ID subTLV (2), length: 4, 10.255.245.40 (0x0afff528) - Local Interface IP address subTLV (3), length: 4, 10.40.35.14 - Remote Interface IP address subTLV (4), length: 4, 10.40.35.13 - Traffic Engineering Metric subTLV (5), length: 4, Metric 1 - Maximum Bandwidth subTLV (6), length: 4, 100.000 Mbps - Maximum Reservable Bandwidth subTLV (7), length: 4, 100.000 Mbps - Unreserved Bandwidth subTLV (8), length: 32 - TE-Class 0: 0.000 Mbps - TE-Class 1: 0.000 Mbps - TE-Class 2: 0.000 Mbps - TE-Class 3: 0.000 Mbps - TE-Class 4: 0.000 Mbps - TE-Class 5: 0.000 Mbps - TE-Class 6: 0.000 Mbps - TE-Class 7: 0.000 Mbps - Interface Switching Capability subTLV (15), length: 44 - Interface Switching Capability: Packet-Switch Capable-1 - LSP Encoding: Ethernet V2/DIX - Max LSP Bandwidth: - priority level 0: 0.000 Mbps - priority level 1: 0.000 Mbps - priority level 2: 0.000 Mbps - priority level 3: 0.000 Mbps - priority level 4: 0.000 Mbps - priority level 5: 0.000 Mbps - priority level 6: 0.000 Mbps - priority level 7: 0.000 Mbps diff --git a/contrib/tcpdump/tests/ospf-gmpls.puu b/contrib/tcpdump/tests/ospf-gmpls.puu deleted file mode 100644 index 691e38e9f54e7..0000000000000 --- a/contrib/tcpdump/tests/ospf-gmpls.puu +++ /dev/null @@ -1,18 +0,0 @@ -begin 644 ospf-gmpls.pcap -MU,.RH0(`!````````````'81````````KME</_6D!0"P````L`````(```!% -MP`"L#]0```%9GSLH(P$"X```!0($`)@*__4C`````*F*```````````````` -M``$`"0(*`0``"`K_]26````">#X`?``"`&0``0`!`0`````"``0*__5%``,` -M!`H)C@$`!``$"@F.`@`%``0````_``8`!$R44,``!P`$3)10P``(`"!,E%#` -M3)10P$R44,!,E%#`3)10P$R44,!,E%#`3)10P``)``0`````Y-E</P;,#0"P -M````L`````(```!%P`"L$`H```%9GP4H(P$"X```!0($`)@*__4C`````&_$ -M``````````````````$`"0(*`0``"0K_]26````"L`,`?``"`&0``0`!`0`` -M```"``0*__5%``,`!`H)CP$`!``$"@F/`@`%``0````_``8`!$R44,``!P`$ -M3)10P``(`"!,E%#`3)10P$R44,!,E%#`3)10P$R44,!,E%#`3)10P``)``0` -M````&=I</S4\!@#8````V`````(```!%P`#4$$````%9GJ<H(P$"X```!0($ -M`,`*__4C`````-HW``````````````````$``P(*`0```PK_]2.````#(00` -MI``"`(P``0`!`0`````"``0*__4H``,`!`HH(PX`!``$"B@C#0`%``0````! -M``8`!$L^O"``!P`$2SZ\(``(`"`````````````````````````````````` -M```````````/`"P!`@`````````````````````````````````````````` -*``!+/KP@"B@````` -` -end diff --git a/contrib/tcpdump/tests/ospf-gmpls.sh b/contrib/tcpdump/tests/ospf-gmpls.sh deleted file mode 100755 index da2dd3ba17587..0000000000000 --- a/contrib/tcpdump/tests/ospf-gmpls.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -uudecode ospf-gmpls.puu - -echo -n test ospf-gmpls... -../tcpdump -t -n -v -r ospf-gmpls.pcap > ospf-gmpls.new -if diff ospf-gmpls.new ospf-gmpls.out -then - echo passed. -else - echo failed. -fi - - diff --git a/contrib/tcpdump/tests/print-A.out b/contrib/tcpdump/tests/print-A.out deleted file mode 100644 index 107ffcbb1d0f8..0000000000000 --- a/contrib/tcpdump/tests/print-A.out +++ /dev/null @@ -1,193 +0,0 @@ -23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: S 928549246:928549246(0) win 32767 <mss 16396,sackOK,timestamp 1306300950 0,nop,wscale 2> -E..<.h@.@.!R.........p.P7X.~.........!....@.... -M........... -23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: S 930778609:930778609(0) ack 928549247 win 32767 <mss 16396,sackOK,timestamp 1306300950 1306300950,nop,wscale 2> -E..<..@.@.<..........P.p7z..7X......n.....@.... -M...M....... -23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 1 win 8192 <nop,nop,timestamp 1306300950 1306300950> -E..4.j@.@.!X.........p.P7X..7z.... .7...... -M...M... -23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: P 1:203(202) ack 1 win 8192 <nop,nop,timestamp 1306300951 1306300950> -E....l@.@. ..........p.P7X..7z.... ........ -M...M...GET / HTTP/1.1
-Host: localhost
-User-Agent: ELinks/0.10.4-7-debian (textmode; Linux 2.6.11-1-686-smp i686; 132x56-2)
-Accept: */*
-Accept-Encoding: gzip
-Accept-Language: en
-Connection: Keep-Alive
-
- -23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: . ack 203 win 8192 <nop,nop,timestamp 1306300952 1306300951> -E..4..@.@............P.p7z..7X.I.. .7...... -M...M... -23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: P 1:5560(5559) ack 203 win 8192 <nop,nop,timestamp 1306300953 1306300951> -E.....@.@..%.........P.p7z..7X.I.. ........ -M...M...HTTP/1.1 200 OK
-Date: Wed, 06 Jul 2005 03:57:35 GMT
-Server: Apache/1.3.33
-Last-Modified: Sun, 15 Aug 2004 00:43:41 GMT
-ETag: "6e80f0-148a-411eb1bd"
-Accept-Ranges: bytes
-Content-Length: 5258
-Keep-Alive: timeout=15, max=100
-Connection: Keep-Alive
-Content-Type: text/html; charset=iso-8859-1
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<HTML> -<HEAD> - <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> - <META NAME="Description" CONTENT="The initial installation of Debian apache."> - <TITLE>Placeholder page</TITLE> -</HEAD> -<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EF" VLINK="#55188A" ALINK="#FF0000"> - -<H1>Placeholder page</H1> -<H2>If you are just browsing the web</h2> - -<P>The owner of this web site has not put up any web pages yet. -Please come back later.</P> - -<P><SMALL><CITE>Move along, nothing to see here...</CITE> :-)</SMALL></P> - -<H2>If you are trying to locate the administrator of this machine</H2> - -<P>If you want to report something about this host's behavior, please -contact the Internet Service Provider (ISP) involved directly.</P> - -<P>See the <A href="http://www.abuse.net/">Network Abuse -Clearinghouse</A> for how to do this.</P> - -<H2>If you are the administrator of this machine</H2> - -<P>The initial installation of <A href="http://www.debian.org/">Debian's -apache</A> web server package was successful.</P> - -<P><STRONG>You should replace this page with your own web pages as -soon as possible.</STRONG></P> - -<P>Unless you changed its configuration, your new server is configured as follows: -<UL> -<LI> -Configuration files can be found in <TT>/etc/apache</TT>.</LI> - -<LI> -The <TT>DocumentRoot</TT>, which is the directory under which all your -HTML files should exist, is set to <TT>/var/www</TT>.</LI> - -<LI> -CGI scripts are looked for in <TT>/usr/lib/cgi-bin</TT>, which is where -Debian packages will place their scripts.</LI> - -<LI> -Log files are placed in <TT>/var/log/apache</TT>, and will be rotated -weekly. The frequency of rotation can be easily changed by editing -<TT>/etc/logrotate.d/apache</TT>.</LI> - -<LI> -The default directory index is <TT>index.html</TT>, meaning that requests -for a directory <TT>/foo/bar/</TT> will give the contents of the file <TT>/var/www/foo/bar/index.html</TT> -if it exists (assuming that <TT>/var/www</TT> is your <TT>DocumentRoot</TT>).</LI> - -<LI> -User directories are enabled, and user documents will be looked for -in the <TT>public_html</TT> directory of the users' homes. These dirs -should be under <TT>/home</TT>, and users will not be able to symlink -to files they don't own.</LI> - -</UL> -All the standard apache modules are available with this release and are -now managed with debconf. Type <TT>dpkg-reconfigure apache</TT> to -select which modules you want enabled. Many other modules are available -through the Debian package system with the names <TT>libapache-mod-*</TT>. -If you need to compile a module yourself, you will need to install the -<TT>apache-dev</TT> package. - -<P>More documentation on Apache can be found on: -<UL> -<LI> -The <A HREF="/doc/apache-doc/manual/">Apache documentation</A> stored on your server.</LI> - -<LI> -The <A HREF="http://www.apache.org/">Apache Project</A> home site.</LI> - -<LI> -The <A HREF="http://www.apache-ssl.org/">Apache-SSL</A> home site.</LI> - -<LI> -The <A HREF="http://perl.apache.org/">mod perl</A> home site.</LI> - -<LI> -The <A HREF="http://www.apacheweek.com/">ApacheWeek</A> newsletter.</LI> - -<LI> -The <A HREF="http://www.debian.org/doc/">Debian Project -Documentation</A> which contains HOWTOs, FAQs, and software updates.</LI> -</UL> - -<P>You can also consult the list of <A HREF="http://www.boutell.com/faq/">World -Wide Web Frequently Asked Questions</A> for information. - -<H2>Let other people know about this server</H2> - -<A HREF="http://netcraft.com/">Netcraft</A> provides an interesting free -service for web site monitoring and statistic collection. -You can let them know about your server using their -<A HREF="http://uptime.netcraft.com/">interface</A>. -Enabling the monitoring of your server will provide a better global overview -of who is using what and where, and it would give Debian a better -overview of the apache package usage. - -<H2>About this page</H2> - -<IMG ALIGN="right" ALT="" HEIGHT="247" WIDTH="278" SRC="icons/jhe061.png"> - -<P>This is a placeholder page installed by the <A -HREF="http://www.debian.org/">Debian</A> -release of the apache Web server package. - -<P>This computer has installed the Debian GNU/Linux operating system, -but it has <strong>nothing to do with the Debian -Project</strong>. Please do <strong>not</strong> contact the Debian -Project about it.</P> - -<P>If you find a bug in this apache package, or in Apache itself, -please file a bug report on it. Instructions on doing this, and the -list of <A HREF="http://bugs.debian.org/src:apache">known bugs</A> of this -package, can be found in the -<A HREF="http://www.debian.org/Bugs/Reporting">Debian Bug Tracking System</A>. - -<P>Thanks for using this package, and congratulations for your choice of -a Debian system!</P> - -<DIV align="center"> -<a href="http://www.debian.org/"> -<IMG align="middle" height="30" width="25" src="icons/debian/openlogo-25.jpg" alt="Debian"> -</a> -<a href="http://www.apache.org/"> -<IMG align="middle" height="32" width="259" src="icons/apache_pb.png" alt="Apache"> -</a> -</DIV> - -<!-- - This page was initially created by Johnie Ingram (http://netgod.net/) - It was later edited by Matthew Wilcox and Josip Rodin. - Last modified: $Date: 2004/06/20 15:33:57 $. - --> - -</BODY> -</HTML> - -23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5560 win 12383 <nop,nop,timestamp 1306300953 1306300953> -E..4.n@.@.!T.........p.P7X.I7z....0_....... -M...M... -23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: F 203:203(0) ack 5560 win 12383 <nop,nop,timestamp 1306302241 1306300953> -E..4.p@.@.!R.........p.P7X.I7z....0_....... -M..!M... -23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: F 5560:5560(0) ack 204 win 8192 <nop,nop,timestamp 1306302243 1306302241> -E..4..@.@............P.p7z..7X.J.. ..5..... -M..#M..! -23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5561 win 12383 <nop,nop,timestamp 1306302243 1306302243> -E..4.r@.@.!P.........p.P7X.J7z....0_....... -M..#M..# diff --git a/contrib/tcpdump/tests/print-AA.out b/contrib/tcpdump/tests/print-AA.out deleted file mode 100644 index 52c0a77515493..0000000000000 --- a/contrib/tcpdump/tests/print-AA.out +++ /dev/null @@ -1,193 +0,0 @@ -23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: S 928549246:928549246(0) win 32767 <mss 16396,sackOK,timestamp 1306300950 0,nop,wscale 2> -..............E..<.h@.@.!R.........p.P7X.~.........!....@.... -M........... -23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: S 930778609:930778609(0) ack 928549247 win 32767 <mss 16396,sackOK,timestamp 1306300950 1306300950,nop,wscale 2> -..............E..<..@.@.<..........P.p7z..7X......n.....@.... -M...M....... -23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 1 win 8192 <nop,nop,timestamp 1306300950 1306300950> -..............E..4.j@.@.!X.........p.P7X..7z.... .7...... -M...M... -23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: P 1:203(202) ack 1 win 8192 <nop,nop,timestamp 1306300951 1306300950> -..............E....l@.@. ..........p.P7X..7z.... ........ -M...M...GET / HTTP/1.1
-Host: localhost
-User-Agent: ELinks/0.10.4-7-debian (textmode; Linux 2.6.11-1-686-smp i686; 132x56-2)
-Accept: */*
-Accept-Encoding: gzip
-Accept-Language: en
-Connection: Keep-Alive
-
- -23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: . ack 203 win 8192 <nop,nop,timestamp 1306300952 1306300951> -..............E..4..@.@............P.p7z..7X.I.. .7...... -M...M... -23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: P 1:5560(5559) ack 203 win 8192 <nop,nop,timestamp 1306300953 1306300951> -..............E.....@.@..%.........P.p7z..7X.I.. ........ -M...M...HTTP/1.1 200 OK
-Date: Wed, 06 Jul 2005 03:57:35 GMT
-Server: Apache/1.3.33
-Last-Modified: Sun, 15 Aug 2004 00:43:41 GMT
-ETag: "6e80f0-148a-411eb1bd"
-Accept-Ranges: bytes
-Content-Length: 5258
-Keep-Alive: timeout=15, max=100
-Connection: Keep-Alive
-Content-Type: text/html; charset=iso-8859-1
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<HTML> -<HEAD> - <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> - <META NAME="Description" CONTENT="The initial installation of Debian apache."> - <TITLE>Placeholder page</TITLE> -</HEAD> -<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EF" VLINK="#55188A" ALINK="#FF0000"> - -<H1>Placeholder page</H1> -<H2>If you are just browsing the web</h2> - -<P>The owner of this web site has not put up any web pages yet. -Please come back later.</P> - -<P><SMALL><CITE>Move along, nothing to see here...</CITE> :-)</SMALL></P> - -<H2>If you are trying to locate the administrator of this machine</H2> - -<P>If you want to report something about this host's behavior, please -contact the Internet Service Provider (ISP) involved directly.</P> - -<P>See the <A href="http://www.abuse.net/">Network Abuse -Clearinghouse</A> for how to do this.</P> - -<H2>If you are the administrator of this machine</H2> - -<P>The initial installation of <A href="http://www.debian.org/">Debian's -apache</A> web server package was successful.</P> - -<P><STRONG>You should replace this page with your own web pages as -soon as possible.</STRONG></P> - -<P>Unless you changed its configuration, your new server is configured as follows: -<UL> -<LI> -Configuration files can be found in <TT>/etc/apache</TT>.</LI> - -<LI> -The <TT>DocumentRoot</TT>, which is the directory under which all your -HTML files should exist, is set to <TT>/var/www</TT>.</LI> - -<LI> -CGI scripts are looked for in <TT>/usr/lib/cgi-bin</TT>, which is where -Debian packages will place their scripts.</LI> - -<LI> -Log files are placed in <TT>/var/log/apache</TT>, and will be rotated -weekly. The frequency of rotation can be easily changed by editing -<TT>/etc/logrotate.d/apache</TT>.</LI> - -<LI> -The default directory index is <TT>index.html</TT>, meaning that requests -for a directory <TT>/foo/bar/</TT> will give the contents of the file <TT>/var/www/foo/bar/index.html</TT> -if it exists (assuming that <TT>/var/www</TT> is your <TT>DocumentRoot</TT>).</LI> - -<LI> -User directories are enabled, and user documents will be looked for -in the <TT>public_html</TT> directory of the users' homes. These dirs -should be under <TT>/home</TT>, and users will not be able to symlink -to files they don't own.</LI> - -</UL> -All the standard apache modules are available with this release and are -now managed with debconf. Type <TT>dpkg-reconfigure apache</TT> to -select which modules you want enabled. Many other modules are available -through the Debian package system with the names <TT>libapache-mod-*</TT>. -If you need to compile a module yourself, you will need to install the -<TT>apache-dev</TT> package. - -<P>More documentation on Apache can be found on: -<UL> -<LI> -The <A HREF="/doc/apache-doc/manual/">Apache documentation</A> stored on your server.</LI> - -<LI> -The <A HREF="http://www.apache.org/">Apache Project</A> home site.</LI> - -<LI> -The <A HREF="http://www.apache-ssl.org/">Apache-SSL</A> home site.</LI> - -<LI> -The <A HREF="http://perl.apache.org/">mod perl</A> home site.</LI> - -<LI> -The <A HREF="http://www.apacheweek.com/">ApacheWeek</A> newsletter.</LI> - -<LI> -The <A HREF="http://www.debian.org/doc/">Debian Project -Documentation</A> which contains HOWTOs, FAQs, and software updates.</LI> -</UL> - -<P>You can also consult the list of <A HREF="http://www.boutell.com/faq/">World -Wide Web Frequently Asked Questions</A> for information. - -<H2>Let other people know about this server</H2> - -<A HREF="http://netcraft.com/">Netcraft</A> provides an interesting free -service for web site monitoring and statistic collection. -You can let them know about your server using their -<A HREF="http://uptime.netcraft.com/">interface</A>. -Enabling the monitoring of your server will provide a better global overview -of who is using what and where, and it would give Debian a better -overview of the apache package usage. - -<H2>About this page</H2> - -<IMG ALIGN="right" ALT="" HEIGHT="247" WIDTH="278" SRC="icons/jhe061.png"> - -<P>This is a placeholder page installed by the <A -HREF="http://www.debian.org/">Debian</A> -release of the apache Web server package. - -<P>This computer has installed the Debian GNU/Linux operating system, -but it has <strong>nothing to do with the Debian -Project</strong>. Please do <strong>not</strong> contact the Debian -Project about it.</P> - -<P>If you find a bug in this apache package, or in Apache itself, -please file a bug report on it. Instructions on doing this, and the -list of <A HREF="http://bugs.debian.org/src:apache">known bugs</A> of this -package, can be found in the -<A HREF="http://www.debian.org/Bugs/Reporting">Debian Bug Tracking System</A>. - -<P>Thanks for using this package, and congratulations for your choice of -a Debian system!</P> - -<DIV align="center"> -<a href="http://www.debian.org/"> -<IMG align="middle" height="30" width="25" src="icons/debian/openlogo-25.jpg" alt="Debian"> -</a> -<a href="http://www.apache.org/"> -<IMG align="middle" height="32" width="259" src="icons/apache_pb.png" alt="Apache"> -</a> -</DIV> - -<!-- - This page was initially created by Johnie Ingram (http://netgod.net/) - It was later edited by Matthew Wilcox and Josip Rodin. - Last modified: $Date: 2004/06/20 15:33:57 $. - --> - -</BODY> -</HTML> - -23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5560 win 12383 <nop,nop,timestamp 1306300953 1306300953> -..............E..4.n@.@.!T.........p.P7X.I7z....0_....... -M...M... -23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: F 203:203(0) ack 5560 win 12383 <nop,nop,timestamp 1306302241 1306300953> -..............E..4.p@.@.!R.........p.P7X.I7z....0_....... -M..!M... -23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: F 5560:5560(0) ack 204 win 8192 <nop,nop,timestamp 1306302243 1306302241> -..............E..4..@.@............P.p7z..7X.J.. ..5..... -M..#M..! -23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5561 win 12383 <nop,nop,timestamp 1306302243 1306302243> -..............E..4.r@.@.!P.........p.P7X.J7z....0_....... -M..#M..# diff --git a/contrib/tcpdump/tests/print-X.out b/contrib/tcpdump/tests/print-X.out deleted file mode 100644 index 53e44edb6b1c0..0000000000000 --- a/contrib/tcpdump/tests/print-X.out +++ /dev/null @@ -1,409 +0,0 @@ -23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: S 928549246:928549246(0) win 32767 <mss 16396,sackOK,timestamp 1306300950 0,nop,wscale 2> - 0x0000: 4500 003c 1b68 4000 4006 2152 7f00 0001 E..<.h@.@.!R.... - 0x0010: 7f00 0001 da70 0050 3758 897e 0000 0000 .....p.P7X.~.... - 0x0020: a002 7fff 1421 0000 0204 400c 0402 080a .....!....@..... - 0x0030: 4ddc 9216 0000 0000 0103 0302 M........... -23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: S 930778609:930778609(0) ack 928549247 win 32767 <mss 16396,sackOK,timestamp 1306300950 1306300950,nop,wscale 2> - 0x0000: 4500 003c 0000 4000 4006 3cba 7f00 0001 E..<..@.@.<..... - 0x0010: 7f00 0001 0050 da70 377a 8df1 3758 897f .....P.p7z..7X.. - 0x0020: a012 7fff 6eb1 0000 0204 400c 0402 080a ....n.....@..... - 0x0030: 4ddc 9216 4ddc 9216 0103 0302 M...M....... -23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 1 win 8192 <nop,nop,timestamp 1306300950 1306300950> - 0x0000: 4500 0034 1b6a 4000 4006 2158 7f00 0001 E..4.j@.@.!X.... - 0x0010: 7f00 0001 da70 0050 3758 897f 377a 8df2 .....p.P7X..7z.. - 0x0020: 8010 2000 37d0 0000 0101 080a 4ddc 9216 ....7.......M... - 0x0030: 4ddc 9216 M... -23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: P 1:203(202) ack 1 win 8192 <nop,nop,timestamp 1306300951 1306300950> - 0x0000: 4500 00fe 1b6c 4000 4006 208c 7f00 0001 E....l@.@....... - 0x0010: 7f00 0001 da70 0050 3758 897f 377a 8df2 .....p.P7X..7z.. - 0x0020: 8018 2000 fef2 0000 0101 080a 4ddc 9217 ............M... - 0x0030: 4ddc 9216 4745 5420 2f20 4854 5450 2f31 M...GET./.HTTP/1 - 0x0040: 2e31 0d0a 486f 7374 3a20 6c6f 6361 6c68 .1..Host:.localh - 0x0050: 6f73 740d 0a55 7365 722d 4167 656e 743a ost..User-Agent: - 0x0060: 2045 4c69 6e6b 732f 302e 3130 2e34 2d37 .ELinks/0.10.4-7 - 0x0070: 2d64 6562 6961 6e20 2874 6578 746d 6f64 -debian.(textmod - 0x0080: 653b 204c 696e 7578 2032 2e36 2e31 312d e;.Linux.2.6.11- - 0x0090: 312d 3638 362d 736d 7020 6936 3836 3b20 1-686-smp.i686;. - 0x00a0: 3133 3278 3536 2d32 290d 0a41 6363 6570 132x56-2)..Accep - 0x00b0: 743a 202a 2f2a 0d0a 4163 6365 7074 2d45 t:.*/*..Accept-E - 0x00c0: 6e63 6f64 696e 673a 2067 7a69 700d 0a41 ncoding:.gzip..A - 0x00d0: 6363 6570 742d 4c61 6e67 7561 6765 3a20 ccept-Language:. - 0x00e0: 656e 0d0a 436f 6e6e 6563 7469 6f6e 3a20 en..Connection:. - 0x00f0: 4b65 6570 2d41 6c69 7665 0d0a 0d0a Keep-Alive.... -23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: . ack 203 win 8192 <nop,nop,timestamp 1306300952 1306300951> - 0x0000: 4500 0034 1fe4 4000 4006 1cde 7f00 0001 E..4..@.@....... - 0x0010: 7f00 0001 0050 da70 377a 8df2 3758 8a49 .....P.p7z..7X.I - 0x0020: 8010 2000 3703 0000 0101 080a 4ddc 9218 ....7.......M... - 0x0030: 4ddc 9217 M... -23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: P 1:5560(5559) ack 203 win 8192 <nop,nop,timestamp 1306300953 1306300951> - 0x0000: 4500 15eb 1fe6 4000 4006 0725 7f00 0001 E.....@.@..%.... - 0x0010: 7f00 0001 0050 da70 377a 8df2 3758 8a49 .....P.p7z..7X.I - 0x0020: 8018 2000 13e0 0000 0101 080a 4ddc 9219 ............M... - 0x0030: 4ddc 9217 4854 5450 2f31 2e31 2032 3030 M...HTTP/1.1.200 - 0x0040: 204f 4b0d 0a44 6174 653a 2057 6564 2c20 .OK..Date:.Wed,. - 0x0050: 3036 204a 756c 2032 3030 3520 3033 3a35 06.Jul.2005.03:5 - 0x0060: 373a 3335 2047 4d54 0d0a 5365 7276 6572 7:35.GMT..Server - 0x0070: 3a20 4170 6163 6865 2f31 2e33 2e33 330d :.Apache/1.3.33. - 0x0080: 0a4c 6173 742d 4d6f 6469 6669 6564 3a20 .Last-Modified:. - 0x0090: 5375 6e2c 2031 3520 4175 6720 3230 3034 Sun,.15.Aug.2004 - 0x00a0: 2030 303a 3433 3a34 3120 474d 540d 0a45 .00:43:41.GMT..E - 0x00b0: 5461 673a 2022 3665 3830 6630 2d31 3438 Tag:."6e80f0-148 - 0x00c0: 612d 3431 3165 6231 6264 220d 0a41 6363 a-411eb1bd"..Acc - 0x00d0: 6570 742d 5261 6e67 6573 3a20 6279 7465 ept-Ranges:.byte - 0x00e0: 730d 0a43 6f6e 7465 6e74 2d4c 656e 6774 s..Content-Lengt - 0x00f0: 683a 2035 3235 380d 0a4b 6565 702d 416c h:.5258..Keep-Al - 0x0100: 6976 653a 2074 696d 656f 7574 3d31 352c ive:.timeout=15, - 0x0110: 206d 6178 3d31 3030 0d0a 436f 6e6e 6563 .max=100..Connec - 0x0120: 7469 6f6e 3a20 4b65 6570 2d41 6c69 7665 tion:.Keep-Alive - 0x0130: 0d0a 436f 6e74 656e 742d 5479 7065 3a20 ..Content-Type:. - 0x0140: 7465 7874 2f68 746d 6c3b 2063 6861 7273 text/html;.chars - 0x0150: 6574 3d69 736f 2d38 3835 392d 310d 0a0d et=iso-8859-1... - 0x0160: 0a3c 2144 4f43 5459 5045 2048 544d 4c20 .<!DOCTYPE.HTML. - 0x0170: 5055 424c 4943 2022 2d2f 2f57 3343 2f2f PUBLIC."-//W3C// - 0x0180: 4454 4420 4854 4d4c 2034 2e30 3120 5472 DTD.HTML.4.01.Tr - 0x0190: 616e 7369 7469 6f6e 616c 2f2f 454e 223e ansitional//EN"> - 0x01a0: 0a3c 4854 4d4c 3e0a 3c48 4541 443e 0a20 .<HTML>.<HEAD>.. - 0x01b0: 2020 3c4d 4554 4120 4854 5450 2d45 5155 ..<META.HTTP-EQU - 0x01c0: 4956 3d22 436f 6e74 656e 742d 5479 7065 IV="Content-Type - 0x01d0: 2220 434f 4e54 454e 543d 2274 6578 742f ".CONTENT="text/ - 0x01e0: 6874 6d6c 3b20 6368 6172 7365 743d 6973 html;.charset=is - 0x01f0: 6f2d 3838 3539 2d31 223e 0a20 2020 3c4d o-8859-1">....<M - 0x0200: 4554 4120 4e41 4d45 3d22 4465 7363 7269 ETA.NAME="Descri - 0x0210: 7074 696f 6e22 2043 4f4e 5445 4e54 3d22 ption".CONTENT=" - 0x0220: 5468 6520 696e 6974 6961 6c20 696e 7374 The.initial.inst - 0x0230: 616c 6c61 7469 6f6e 206f 6620 4465 6269 allation.of.Debi - 0x0240: 616e 2061 7061 6368 652e 223e 0a20 2020 an.apache.">.... - 0x0250: 3c54 4954 4c45 3e50 6c61 6365 686f 6c64 <TITLE>Placehold - 0x0260: 6572 2070 6167 653c 2f54 4954 4c45 3e0a er.page</TITLE>. - 0x0270: 3c2f 4845 4144 3e0a 3c42 4f44 5920 5445 </HEAD>.<BODY.TE - 0x0280: 5854 3d22 2330 3030 3030 3022 2042 4743 XT="#000000".BGC - 0x0290: 4f4c 4f52 3d22 2346 4646 4646 4622 204c OLOR="#FFFFFF".L - 0x02a0: 494e 4b3d 2223 3030 3030 4546 2220 564c INK="#0000EF".VL - 0x02b0: 494e 4b3d 2223 3535 3138 3841 2220 414c INK="#55188A".AL - 0x02c0: 494e 4b3d 2223 4646 3030 3030 223e 0a0a INK="#FF0000">.. - 0x02d0: 3c48 313e 506c 6163 6568 6f6c 6465 7220 <H1>Placeholder. - 0x02e0: 7061 6765 3c2f 4831 3e0a 3c48 323e 4966 page</H1>.<H2>If - 0x02f0: 2079 6f75 2061 7265 206a 7573 7420 6272 .you.are.just.br - 0x0300: 6f77 7369 6e67 2074 6865 2077 6562 3c2f owsing.the.web</ - 0x0310: 6832 3e0a 0a3c 503e 5468 6520 6f77 6e65 h2>..<P>The.owne - 0x0320: 7220 6f66 2074 6869 7320 7765 6220 7369 r.of.this.web.si - 0x0330: 7465 2068 6173 206e 6f74 2070 7574 2075 te.has.not.put.u - 0x0340: 7020 616e 7920 7765 6220 7061 6765 7320 p.any.web.pages. - 0x0350: 7965 742e 0a50 6c65 6173 6520 636f 6d65 yet..Please.come - 0x0360: 2062 6163 6b20 6c61 7465 722e 3c2f 503e .back.later.</P> - 0x0370: 0a0a 3c50 3e3c 534d 414c 4c3e 3c43 4954 ..<P><SMALL><CIT - 0x0380: 453e 4d6f 7665 2061 6c6f 6e67 2c20 6e6f E>Move.along,.no - 0x0390: 7468 696e 6720 746f 2073 6565 2068 6572 thing.to.see.her - 0x03a0: 652e 2e2e 3c2f 4349 5445 3e20 3a2d 293c e...</CITE>.:-)< - 0x03b0: 2f53 4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832 /SMALL></P>..<H2 - 0x03c0: 3e49 6620 796f 7520 6172 6520 7472 7969 >If.you.are.tryi - 0x03d0: 6e67 2074 6f20 6c6f 6361 7465 2074 6865 ng.to.locate.the - 0x03e0: 2061 646d 696e 6973 7472 6174 6f72 206f .administrator.o - 0x03f0: 6620 7468 6973 206d 6163 6869 6e65 3c2f f.this.machine</ - 0x0400: 4832 3e0a 0a3c 503e 4966 2079 6f75 2077 H2>..<P>If.you.w - 0x0410: 616e 7420 746f 2072 6570 6f72 7420 736f ant.to.report.so - 0x0420: 6d65 7468 696e 6720 6162 6f75 7420 7468 mething.about.th - 0x0430: 6973 2068 6f73 7427 7320 6265 6861 7669 is.host's.behavi - 0x0440: 6f72 2c20 706c 6561 7365 0a63 6f6e 7461 or,.please.conta - 0x0450: 6374 2074 6865 2049 6e74 6572 6e65 7420 ct.the.Internet. - 0x0460: 5365 7276 6963 6520 5072 6f76 6964 6572 Service.Provider - 0x0470: 2028 4953 5029 2069 6e76 6f6c 7665 6420 .(ISP).involved. - 0x0480: 6469 7265 6374 6c79 2e3c 2f50 3e0a 0a3c directly.</P>..< - 0x0490: 503e 5365 6520 7468 6520 3c41 2068 7265 P>See.the.<A.hre - 0x04a0: 663d 2268 7474 703a 2f2f 7777 772e 6162 f="http://www.ab - 0x04b0: 7573 652e 6e65 742f 223e 4e65 7477 6f72 use.net/">Networ - 0x04c0: 6b20 4162 7573 650a 436c 6561 7269 6e67 k.Abuse.Clearing - 0x04d0: 686f 7573 653c 2f41 3e20 666f 7220 686f house</A>.for.ho - 0x04e0: 7720 746f 2064 6f20 7468 6973 2e3c 2f50 w.to.do.this.</P - 0x04f0: 3e0a 0a3c 4832 3e49 6620 796f 7520 6172 >..<H2>If.you.ar - 0x0500: 6520 7468 6520 6164 6d69 6e69 7374 7261 e.the.administra - 0x0510: 746f 7220 6f66 2074 6869 7320 6d61 6368 tor.of.this.mach - 0x0520: 696e 653c 2f48 323e 0a0a 3c50 3e54 6865 ine</H2>..<P>The - 0x0530: 2069 6e69 7469 616c 2069 6e73 7461 6c6c .initial.install - 0x0540: 6174 696f 6e20 6f66 203c 4120 6872 6566 ation.of.<A.href - 0x0550: 3d22 6874 7470 3a2f 2f77 7777 2e64 6562 ="http://www.deb - 0x0560: 6961 6e2e 6f72 672f 223e 4465 6269 616e ian.org/">Debian - 0x0570: 2773 0a61 7061 6368 653c 2f41 3e20 7765 's.apache</A>.we - 0x0580: 6220 7365 7276 6572 2070 6163 6b61 6765 b.server.package - 0x0590: 2077 6173 2073 7563 6365 7373 6675 6c2e .was.successful. - 0x05a0: 3c2f 503e 0a0a 3c50 3e3c 5354 524f 4e47 </P>..<P><STRONG - 0x05b0: 3e59 6f75 2073 686f 756c 6420 7265 706c >You.should.repl - 0x05c0: 6163 6520 7468 6973 2070 6167 6520 7769 ace.this.page.wi - 0x05d0: 7468 2079 6f75 7220 6f77 6e20 7765 6220 th.your.own.web. - 0x05e0: 7061 6765 7320 6173 0a73 6f6f 6e20 6173 pages.as.soon.as - 0x05f0: 2070 6f73 7369 626c 652e 3c2f 5354 524f .possible.</STRO - 0x0600: 4e47 3e3c 2f50 3e0a 0a3c 503e 556e 6c65 NG></P>..<P>Unle - 0x0610: 7373 2079 6f75 2063 6861 6e67 6564 2069 ss.you.changed.i - 0x0620: 7473 2063 6f6e 6669 6775 7261 7469 6f6e ts.configuration - 0x0630: 2c20 796f 7572 206e 6577 2073 6572 7665 ,.your.new.serve - 0x0640: 7220 6973 2063 6f6e 6669 6775 7265 6420 r.is.configured. - 0x0650: 6173 2066 6f6c 6c6f 7773 3a0a 3c55 4c3e as.follows:.<UL> - 0x0660: 0a3c 4c49 3e0a 436f 6e66 6967 7572 6174 .<LI>.Configurat - 0x0670: 696f 6e20 6669 6c65 7320 6361 6e20 6265 ion.files.can.be - 0x0680: 2066 6f75 6e64 2069 6e20 3c54 543e 2f65 .found.in.<TT>/e - 0x0690: 7463 2f61 7061 6368 653c 2f54 543e 2e3c tc/apache</TT>.< - 0x06a0: 2f4c 493e 0a0a 3c4c 493e 0a54 6865 203c /LI>..<LI>.The.< - 0x06b0: 5454 3e44 6f63 756d 656e 7452 6f6f 743c TT>DocumentRoot< - 0x06c0: 2f54 543e 2c20 7768 6963 6820 6973 2074 /TT>,.which.is.t - 0x06d0: 6865 2064 6972 6563 746f 7279 2075 6e64 he.directory.und - 0x06e0: 6572 2077 6869 6368 2061 6c6c 2079 6f75 er.which.all.you - 0x06f0: 720a 4854 4d4c 2066 696c 6573 2073 686f r.HTML.files.sho - 0x0700: 756c 6420 6578 6973 742c 2069 7320 7365 uld.exist,.is.se - 0x0710: 7420 746f 203c 5454 3e2f 7661 722f 7777 t.to.<TT>/var/ww - 0x0720: 773c 2f54 543e 2e3c 2f4c 493e 0a0a 3c4c w</TT>.</LI>..<L - 0x0730: 493e 0a43 4749 2073 6372 6970 7473 2061 I>.CGI.scripts.a - 0x0740: 7265 206c 6f6f 6b65 6420 666f 7220 696e re.looked.for.in - 0x0750: 203c 5454 3e2f 7573 722f 6c69 622f 6367 .<TT>/usr/lib/cg - 0x0760: 692d 6269 6e3c 2f54 543e 2c20 7768 6963 i-bin</TT>,.whic - 0x0770: 6820 6973 2077 6865 7265 0a44 6562 6961 h.is.where.Debia - 0x0780: 6e20 7061 636b 6167 6573 2077 696c 6c20 n.packages.will. - 0x0790: 706c 6163 6520 7468 6569 7220 7363 7269 place.their.scri - 0x07a0: 7074 732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a pts.</LI>..<LI>. - 0x07b0: 4c6f 6720 6669 6c65 7320 6172 6520 706c Log.files.are.pl - 0x07c0: 6163 6564 2069 6e20 3c54 543e 2f76 6172 aced.in.<TT>/var - 0x07d0: 2f6c 6f67 2f61 7061 6368 653c 2f54 543e /log/apache</TT> - 0x07e0: 2c20 616e 6420 7769 6c6c 2062 6520 726f ,.and.will.be.ro - 0x07f0: 7461 7465 640a 7765 656b 6c79 2e20 2054 tated.weekly...T - 0x0800: 6865 2066 7265 7175 656e 6379 206f 6620 he.frequency.of. - 0x0810: 726f 7461 7469 6f6e 2063 616e 2062 6520 rotation.can.be. - 0x0820: 6561 7369 6c79 2063 6861 6e67 6564 2062 easily.changed.b - 0x0830: 7920 6564 6974 696e 670a 3c54 543e 2f65 y.editing.<TT>/e - 0x0840: 7463 2f6c 6f67 726f 7461 7465 2e64 2f61 tc/logrotate.d/a - 0x0850: 7061 6368 653c 2f54 543e 2e3c 2f4c 493e pache</TT>.</LI> - 0x0860: 0a0a 3c4c 493e 0a54 6865 2064 6566 6175 ..<LI>.The.defau - 0x0870: 6c74 2064 6972 6563 746f 7279 2069 6e64 lt.directory.ind - 0x0880: 6578 2069 7320 3c54 543e 696e 6465 782e ex.is.<TT>index. - 0x0890: 6874 6d6c 3c2f 5454 3e2c 206d 6561 6e69 html</TT>,.meani - 0x08a0: 6e67 2074 6861 7420 7265 7175 6573 7473 ng.that.requests - 0x08b0: 0a66 6f72 2061 2064 6972 6563 746f 7279 .for.a.directory - 0x08c0: 203c 5454 3e2f 666f 6f2f 6261 722f 3c2f .<TT>/foo/bar/</ - 0x08d0: 5454 3e20 7769 6c6c 2067 6976 6520 7468 TT>.will.give.th - 0x08e0: 6520 636f 6e74 656e 7473 206f 6620 7468 e.contents.of.th - 0x08f0: 6520 6669 6c65 203c 5454 3e2f 7661 722f e.file.<TT>/var/ - 0x0900: 7777 772f 666f 6f2f 6261 722f 696e 6465 www/foo/bar/inde - 0x0910: 782e 6874 6d6c 3c2f 5454 3e0a 6966 2069 x.html</TT>.if.i - 0x0920: 7420 6578 6973 7473 2028 6173 7375 6d69 t.exists.(assumi - 0x0930: 6e67 2074 6861 7420 3c54 543e 2f76 6172 ng.that.<TT>/var - 0x0940: 2f77 7777 3c2f 5454 3e20 6973 2079 6f75 /www</TT>.is.you - 0x0950: 7220 3c54 543e 446f 6375 6d65 6e74 526f r.<TT>DocumentRo - 0x0960: 6f74 3c2f 5454 3e29 2e3c 2f4c 493e 0a0a ot</TT>).</LI>.. - 0x0970: 3c4c 493e 0a55 7365 7220 6469 7265 6374 <LI>.User.direct - 0x0980: 6f72 6965 7320 6172 6520 656e 6162 6c65 ories.are.enable - 0x0990: 642c 2061 6e64 2075 7365 7220 646f 6375 d,.and.user.docu - 0x09a0: 6d65 6e74 7320 7769 6c6c 2062 6520 6c6f ments.will.be.lo - 0x09b0: 6f6b 6564 2066 6f72 0a69 6e20 7468 6520 oked.for.in.the. - 0x09c0: 3c54 543e 7075 626c 6963 5f68 746d 6c3c <TT>public_html< - 0x09d0: 2f54 543e 2064 6972 6563 746f 7279 206f /TT>.directory.o - 0x09e0: 6620 7468 6520 7573 6572 7327 2068 6f6d f.the.users'.hom - 0x09f0: 6573 2e20 2054 6865 7365 2064 6972 730a es...These.dirs. - 0x0a00: 7368 6f75 6c64 2062 6520 756e 6465 7220 should.be.under. - 0x0a10: 3c54 543e 2f68 6f6d 653c 2f54 543e 2c20 <TT>/home</TT>,. - 0x0a20: 616e 6420 7573 6572 7320 7769 6c6c 206e and.users.will.n - 0x0a30: 6f74 2062 6520 6162 6c65 2074 6f20 7379 ot.be.able.to.sy - 0x0a40: 6d6c 696e 6b0a 746f 2066 696c 6573 2074 mlink.to.files.t - 0x0a50: 6865 7920 646f 6e27 7420 6f77 6e2e 3c2f hey.don't.own.</ - 0x0a60: 4c49 3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074 LI>..</UL>.All.t - 0x0a70: 6865 2073 7461 6e64 6172 6420 6170 6163 he.standard.apac - 0x0a80: 6865 206d 6f64 756c 6573 2061 7265 2061 he.modules.are.a - 0x0a90: 7661 696c 6162 6c65 2077 6974 6820 7468 vailable.with.th - 0x0aa0: 6973 2072 656c 6561 7365 2061 6e64 2061 is.release.and.a - 0x0ab0: 7265 0a6e 6f77 206d 616e 6167 6564 2077 re.now.managed.w - 0x0ac0: 6974 6820 6465 6263 6f6e 662e 2020 5479 ith.debconf...Ty - 0x0ad0: 7065 203c 5454 3e64 706b 672d 7265 636f pe.<TT>dpkg-reco - 0x0ae0: 6e66 6967 7572 6520 6170 6163 6865 3c2f nfigure.apache</ - 0x0af0: 5454 3e20 746f 0a73 656c 6563 7420 7768 TT>.to.select.wh - 0x0b00: 6963 6820 6d6f 6475 6c65 7320 796f 7520 ich.modules.you. - 0x0b10: 7761 6e74 2065 6e61 626c 6564 2e20 204d want.enabled...M - 0x0b20: 616e 7920 6f74 6865 7220 6d6f 6475 6c65 any.other.module - 0x0b30: 7320 6172 6520 6176 6169 6c61 626c 650a s.are.available. - 0x0b40: 7468 726f 7567 6820 7468 6520 4465 6269 through.the.Debi - 0x0b50: 616e 2070 6163 6b61 6765 2073 7973 7465 an.package.syste - 0x0b60: 6d20 7769 7468 2074 6865 206e 616d 6573 m.with.the.names - 0x0b70: 203c 5454 3e6c 6962 6170 6163 6865 2d6d .<TT>libapache-m - 0x0b80: 6f64 2d2a 3c2f 5454 3e2e 0a49 6620 796f od-*</TT>..If.yo - 0x0b90: 7520 6e65 6564 2074 6f20 636f 6d70 696c u.need.to.compil - 0x0ba0: 6520 6120 6d6f 6475 6c65 2079 6f75 7273 e.a.module.yours - 0x0bb0: 656c 662c 2079 6f75 2077 696c 6c20 6e65 elf,.you.will.ne - 0x0bc0: 6564 2074 6f20 696e 7374 616c 6c20 7468 ed.to.install.th - 0x0bd0: 650a 3c54 543e 6170 6163 6865 2d64 6576 e.<TT>apache-dev - 0x0be0: 3c2f 5454 3e20 7061 636b 6167 652e 0a0a </TT>.package... - 0x0bf0: 3c50 3e4d 6f72 6520 646f 6375 6d65 6e74 <P>More.document - 0x0c00: 6174 696f 6e20 6f6e 2041 7061 6368 6520 ation.on.Apache. - 0x0c10: 6361 6e20 6265 2066 6f75 6e64 206f 6e3a can.be.found.on: - 0x0c20: 0a3c 554c 3e0a 3c4c 493e 0a54 6865 203c .<UL>.<LI>.The.< - 0x0c30: 4120 4852 4546 3d22 2f64 6f63 2f61 7061 A.HREF="/doc/apa - 0x0c40: 6368 652d 646f 632f 6d61 6e75 616c 2f22 che-doc/manual/" - 0x0c50: 3e41 7061 6368 6520 646f 6375 6d65 6e74 >Apache.document - 0x0c60: 6174 696f 6e3c 2f41 3e20 7374 6f72 6564 ation</A>.stored - 0x0c70: 206f 6e20 796f 7572 2073 6572 7665 722e .on.your.server. - 0x0c80: 3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468 6520 </LI>..<LI>.The. - 0x0c90: 3c41 2048 5245 463d 2268 7474 703a 2f2f <A.HREF="http:// - 0x0ca0: 7777 772e 6170 6163 6865 2e6f 7267 2f22 www.apache.org/" - 0x0cb0: 3e41 7061 6368 6520 5072 6f6a 6563 743c >Apache.Project< - 0x0cc0: 2f41 3e20 686f 6d65 2073 6974 652e 3c2f /A>.home.site.</ - 0x0cd0: 4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 LI>..<LI>.The.<A - 0x0ce0: 2048 5245 463d 2268 7474 703a 2f2f 7777 .HREF="http://ww - 0x0cf0: 772e 6170 6163 6865 2d73 736c 2e6f 7267 w.apache-ssl.org - 0x0d00: 2f22 3e41 7061 6368 652d 5353 4c3c 2f41 /">Apache-SSL</A - 0x0d10: 3e20 686f 6d65 2073 6974 652e 3c2f 4c49 >.home.site.</LI - 0x0d20: 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048 >..<LI>.The.<A.H - 0x0d30: 5245 463d 2268 7474 703a 2f2f 7065 726c REF="http://perl - 0x0d40: 2e61 7061 6368 652e 6f72 672f 223e 6d6f .apache.org/">mo - 0x0d50: 6420 7065 726c 3c2f 413e 2068 6f6d 6520 d.perl</A>.home. - 0x0d60: 7369 7465 2e3c 2f4c 493e 0a0a 3c4c 493e site.</LI>..<LI> - 0x0d70: 0a54 6865 203c 4120 4852 4546 3d22 6874 .The.<A.HREF="ht - 0x0d80: 7470 3a2f 2f77 7777 2e61 7061 6368 6577 tp://www.apachew - 0x0d90: 6565 6b2e 636f 6d2f 223e 4170 6163 6865 eek.com/">Apache - 0x0da0: 5765 656b 3c2f 413e 206e 6577 736c 6574 Week</A>.newslet - 0x0db0: 7465 722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a ter.</LI>..<LI>. - 0x0dc0: 5468 6520 3c41 2048 5245 463d 2268 7474 The.<A.HREF="htt - 0x0dd0: 703a 2f2f 7777 772e 6465 6269 616e 2e6f p://www.debian.o - 0x0de0: 7267 2f64 6f63 2f22 3e44 6562 6961 6e20 rg/doc/">Debian. - 0x0df0: 5072 6f6a 6563 740a 446f 6375 6d65 6e74 Project.Document - 0x0e00: 6174 696f 6e3c 2f41 3e20 7768 6963 6820 ation</A>.which. - 0x0e10: 636f 6e74 6169 6e73 2048 4f57 544f 732c contains.HOWTOs, - 0x0e20: 2046 4151 732c 2061 6e64 2073 6f66 7477 .FAQs,.and.softw - 0x0e30: 6172 6520 7570 6461 7465 732e 3c2f 4c49 are.updates.</LI - 0x0e40: 3e0a 3c2f 554c 3e0a 0a3c 503e 596f 7520 >.</UL>..<P>You. - 0x0e50: 6361 6e20 616c 736f 2063 6f6e 7375 6c74 can.also.consult - 0x0e60: 2074 6865 206c 6973 7420 6f66 203c 4120 .the.list.of.<A. - 0x0e70: 4852 4546 3d22 6874 7470 3a2f 2f77 7777 HREF="http://www - 0x0e80: 2e62 6f75 7465 6c6c 2e63 6f6d 2f66 6171 .boutell.com/faq - 0x0e90: 2f22 3e57 6f72 6c64 0a57 6964 6520 5765 /">World.Wide.We - 0x0ea0: 6220 4672 6571 7565 6e74 6c79 2041 736b b.Frequently.Ask - 0x0eb0: 6564 2051 7565 7374 696f 6e73 3c2f 413e ed.Questions</A> - 0x0ec0: 2066 6f72 2069 6e66 6f72 6d61 7469 6f6e .for.information - 0x0ed0: 2e0a 0a3c 4832 3e4c 6574 206f 7468 6572 ...<H2>Let.other - 0x0ee0: 2070 656f 706c 6520 6b6e 6f77 2061 626f .people.know.abo - 0x0ef0: 7574 2074 6869 7320 7365 7276 6572 3c2f ut.this.server</ - 0x0f00: 4832 3e0a 0a3c 4120 4852 4546 3d22 6874 H2>..<A.HREF="ht - 0x0f10: 7470 3a2f 2f6e 6574 6372 6166 742e 636f tp://netcraft.co - 0x0f20: 6d2f 223e 4e65 7463 7261 6674 3c2f 413e m/">Netcraft</A> - 0x0f30: 2070 726f 7669 6465 7320 616e 2069 6e74 .provides.an.int - 0x0f40: 6572 6573 7469 6e67 2066 7265 650a 7365 eresting.free.se - 0x0f50: 7276 6963 6520 666f 7220 7765 6220 7369 rvice.for.web.si - 0x0f60: 7465 206d 6f6e 6974 6f72 696e 6720 616e te.monitoring.an - 0x0f70: 6420 7374 6174 6973 7469 6320 636f 6c6c d.statistic.coll - 0x0f80: 6563 7469 6f6e 2e0a 596f 7520 6361 6e20 ection..You.can. - 0x0f90: 6c65 7420 7468 656d 206b 6e6f 7720 6162 let.them.know.ab - 0x0fa0: 6f75 7420 796f 7572 2073 6572 7665 7220 out.your.server. - 0x0fb0: 7573 696e 6720 7468 6569 720a 3c41 2048 using.their.<A.H - 0x0fc0: 5245 463d 2268 7474 703a 2f2f 7570 7469 REF="http://upti - 0x0fd0: 6d65 2e6e 6574 6372 6166 742e 636f 6d2f me.netcraft.com/ - 0x0fe0: 223e 696e 7465 7266 6163 653c 2f41 3e2e ">interface</A>. - 0x0ff0: 0a45 6e61 626c 696e 6720 7468 6520 6d6f .Enabling.the.mo - 0x1000: 6e69 746f 7269 6e67 206f 6620 796f 7572 nitoring.of.your - 0x1010: 2073 6572 7665 7220 7769 6c6c 2070 726f .server.will.pro - 0x1020: 7669 6465 2061 2062 6574 7465 7220 676c vide.a.better.gl - 0x1030: 6f62 616c 206f 7665 7276 6965 770a 6f66 obal.overview.of - 0x1040: 2077 686f 2069 7320 7573 696e 6720 7768 .who.is.using.wh - 0x1050: 6174 2061 6e64 2077 6865 7265 2c20 616e at.and.where,.an - 0x1060: 6420 6974 2077 6f75 6c64 2067 6976 6520 d.it.would.give. - 0x1070: 4465 6269 616e 2061 2062 6574 7465 720a Debian.a.better. - 0x1080: 6f76 6572 7669 6577 206f 6620 7468 6520 overview.of.the. - 0x1090: 6170 6163 6865 2070 6163 6b61 6765 2075 apache.package.u - 0x10a0: 7361 6765 2e0a 0a3c 4832 3e41 626f 7574 sage...<H2>About - 0x10b0: 2074 6869 7320 7061 6765 3c2f 4832 3e0a .this.page</H2>. - 0x10c0: 0a3c 494d 4720 414c 4947 4e3d 2272 6967 .<IMG.ALIGN="rig - 0x10d0: 6874 2220 414c 543d 2222 2048 4549 4748 ht".ALT="".HEIGH - 0x10e0: 543d 2232 3437 2220 5749 4454 483d 2232 T="247".WIDTH="2 - 0x10f0: 3738 2220 5352 433d 2269 636f 6e73 2f6a 78".SRC="icons/j - 0x1100: 6865 3036 312e 706e 6722 3e0a 0a3c 503e he061.png">..<P> - 0x1110: 5468 6973 2069 7320 6120 706c 6163 6568 This.is.a.placeh - 0x1120: 6f6c 6465 7220 7061 6765 2069 6e73 7461 older.page.insta - 0x1130: 6c6c 6564 2062 7920 7468 6520 3c41 0a48 lled.by.the.<A.H - 0x1140: 5245 463d 2268 7474 703a 2f2f 7777 772e REF="http://www. - 0x1150: 6465 6269 616e 2e6f 7267 2f22 3e44 6562 debian.org/">Deb - 0x1160: 6961 6e3c 2f41 3e0a 7265 6c65 6173 6520 ian</A>.release. - 0x1170: 6f66 2074 6865 2061 7061 6368 6520 5765 of.the.apache.We - 0x1180: 6220 7365 7276 6572 2070 6163 6b61 6765 b.server.package - 0x1190: 2e0a 0a3c 503e 5468 6973 2063 6f6d 7075 ...<P>This.compu - 0x11a0: 7465 7220 6861 7320 696e 7374 616c 6c65 ter.has.installe - 0x11b0: 6420 7468 6520 4465 6269 616e 2047 4e55 d.the.Debian.GNU - 0x11c0: 2f4c 696e 7578 206f 7065 7261 7469 6e67 /Linux.operating - 0x11d0: 2073 7973 7465 6d2c 0a62 7574 2069 7420 .system,.but.it. - 0x11e0: 6861 7320 3c73 7472 6f6e 673e 6e6f 7468 has.<strong>noth - 0x11f0: 696e 6720 746f 2064 6f20 7769 7468 2074 ing.to.do.with.t - 0x1200: 6865 2044 6562 6961 6e0a 5072 6f6a 6563 he.Debian.Projec - 0x1210: 743c 2f73 7472 6f6e 673e 2e20 506c 6561 t</strong>..Plea - 0x1220: 7365 2064 6f20 3c73 7472 6f6e 673e 6e6f se.do.<strong>no - 0x1230: 743c 2f73 7472 6f6e 673e 2063 6f6e 7461 t</strong>.conta - 0x1240: 6374 2074 6865 2044 6562 6961 6e0a 5072 ct.the.Debian.Pr - 0x1250: 6f6a 6563 7420 6162 6f75 7420 6974 2e3c oject.about.it.< - 0x1260: 2f50 3e0a 0a3c 503e 4966 2079 6f75 2066 /P>..<P>If.you.f - 0x1270: 696e 6420 6120 6275 6720 696e 2074 6869 ind.a.bug.in.thi - 0x1280: 7320 6170 6163 6865 2070 6163 6b61 6765 s.apache.package - 0x1290: 2c20 6f72 2069 6e20 4170 6163 6865 2069 ,.or.in.Apache.i - 0x12a0: 7473 656c 662c 0a70 6c65 6173 6520 6669 tself,.please.fi - 0x12b0: 6c65 2061 2062 7567 2072 6570 6f72 7420 le.a.bug.report. - 0x12c0: 6f6e 2069 742e 2020 496e 7374 7275 6374 on.it...Instruct - 0x12d0: 696f 6e73 206f 6e20 646f 696e 6720 7468 ions.on.doing.th - 0x12e0: 6973 2c20 616e 6420 7468 650a 6c69 7374 is,.and.the.list - 0x12f0: 206f 6620 3c41 2048 5245 463d 2268 7474 .of.<A.HREF="htt - 0x1300: 703a 2f2f 6275 6773 2e64 6562 6961 6e2e p://bugs.debian. - 0x1310: 6f72 672f 7372 633a 6170 6163 6865 223e org/src:apache"> - 0x1320: 6b6e 6f77 6e20 6275 6773 3c2f 413e 206f known.bugs</A>.o - 0x1330: 6620 7468 6973 0a70 6163 6b61 6765 2c20 f.this.package,. - 0x1340: 6361 6e20 6265 2066 6f75 6e64 2069 6e20 can.be.found.in. - 0x1350: 7468 6520 0a3c 4120 4852 4546 3d22 6874 the..<A.HREF="ht - 0x1360: 7470 3a2f 2f77 7777 2e64 6562 6961 6e2e tp://www.debian. - 0x1370: 6f72 672f 4275 6773 2f52 6570 6f72 7469 org/Bugs/Reporti - 0x1380: 6e67 223e 4465 6269 616e 2042 7567 2054 ng">Debian.Bug.T - 0x1390: 7261 636b 696e 6720 5379 7374 656d 3c2f racking.System</ - 0x13a0: 413e 2e0a 0a3c 503e 5468 616e 6b73 2066 A>...<P>Thanks.f - 0x13b0: 6f72 2075 7369 6e67 2074 6869 7320 7061 or.using.this.pa - 0x13c0: 636b 6167 652c 2061 6e64 2063 6f6e 6772 ckage,.and.congr - 0x13d0: 6174 756c 6174 696f 6e73 2066 6f72 2079 atulations.for.y - 0x13e0: 6f75 7220 6368 6f69 6365 206f 660a 6120 our.choice.of.a. - 0x13f0: 4465 6269 616e 2073 7973 7465 6d21 3c2f Debian.system!</ - 0x1400: 503e 0a0a 3c44 4956 2061 6c69 676e 3d22 P>..<DIV.align=" - 0x1410: 6365 6e74 6572 223e 0a3c 6120 6872 6566 center">.<a.href - 0x1420: 3d22 6874 7470 3a2f 2f77 7777 2e64 6562 ="http://www.deb - 0x1430: 6961 6e2e 6f72 672f 223e 0a3c 494d 4720 ian.org/">.<IMG. - 0x1440: 616c 6967 6e3d 226d 6964 646c 6522 2068 align="middle".h - 0x1450: 6569 6768 743d 2233 3022 2077 6964 7468 eight="30".width - 0x1460: 3d22 3235 2220 7372 633d 2269 636f 6e73 ="25".src="icons - 0x1470: 2f64 6562 6961 6e2f 6f70 656e 6c6f 676f /debian/openlogo - 0x1480: 2d32 352e 6a70 6722 2061 6c74 3d22 4465 -25.jpg".alt="De - 0x1490: 6269 616e 223e 0a3c 2f61 3e0a 3c61 2068 bian">.</a>.<a.h - 0x14a0: 7265 663d 2268 7474 703a 2f2f 7777 772e ref="http://www. - 0x14b0: 6170 6163 6865 2e6f 7267 2f22 3e0a 3c49 apache.org/">.<I - 0x14c0: 4d47 2061 6c69 676e 3d22 6d69 6464 6c65 MG.align="middle - 0x14d0: 2220 6865 6967 6874 3d22 3332 2220 7769 ".height="32".wi - 0x14e0: 6474 683d 2232 3539 2220 7372 633d 2269 dth="259".src="i - 0x14f0: 636f 6e73 2f61 7061 6368 655f 7062 2e70 cons/apache_pb.p - 0x1500: 6e67 2220 616c 743d 2241 7061 6368 6522 ng".alt="Apache" - 0x1510: 3e0a 3c2f 613e 0a3c 2f44 4956 3e0a 0a3c >.</a>.</DIV>..< - 0x1520: 212d 2d0a 2020 5468 6973 2070 6167 6520 !--...This.page. - 0x1530: 7761 7320 696e 6974 6961 6c6c 7920 6372 was.initially.cr - 0x1540: 6561 7465 6420 6279 204a 6f68 6e69 6520 eated.by.Johnie. - 0x1550: 496e 6772 616d 2028 6874 7470 3a2f 2f6e Ingram.(http://n - 0x1560: 6574 676f 642e 6e65 742f 290a 2020 4974 etgod.net/)...It - 0x1570: 2077 6173 206c 6174 6572 2065 6469 7465 .was.later.edite - 0x1580: 6420 6279 204d 6174 7468 6577 2057 696c d.by.Matthew.Wil - 0x1590: 636f 7820 616e 6420 4a6f 7369 7020 526f cox.and.Josip.Ro - 0x15a0: 6469 6e2e 0a20 204c 6173 7420 6d6f 6469 din....Last.modi - 0x15b0: 6669 6564 3a20 2444 6174 653a 2032 3030 fied:.$Date:.200 - 0x15c0: 342f 3036 2f32 3020 3135 3a33 333a 3537 4/06/20.15:33:57 - 0x15d0: 2024 2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44 .$....-->..</BOD - 0x15e0: 593e 0a3c 2f48 544d 4c3e 0a Y>.</HTML>. -23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5560 win 12383 <nop,nop,timestamp 1306300953 1306300953> - 0x0000: 4500 0034 1b6e 4000 4006 2154 7f00 0001 E..4.n@.@.!T.... - 0x0010: 7f00 0001 da70 0050 3758 8a49 377a a3a9 .....p.P7X.I7z.. - 0x0020: 8010 305f 10ea 0000 0101 080a 4ddc 9219 ..0_........M... - 0x0030: 4ddc 9219 M... -23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: F 203:203(0) ack 5560 win 12383 <nop,nop,timestamp 1306302241 1306300953> - 0x0000: 4500 0034 1b70 4000 4006 2152 7f00 0001 E..4.p@.@.!R.... - 0x0010: 7f00 0001 da70 0050 3758 8a49 377a a3a9 .....p.P7X.I7z.. - 0x0020: 8011 305f 0be1 0000 0101 080a 4ddc 9721 ..0_........M..! - 0x0030: 4ddc 9219 M... -23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: F 5560:5560(0) ack 204 win 8192 <nop,nop,timestamp 1306302243 1306302241> - 0x0000: 4500 0034 1fe8 4000 4006 1cda 7f00 0001 E..4..@.@....... - 0x0010: 7f00 0001 0050 da70 377a a3a9 3758 8a4a .....P.p7z..7X.J - 0x0020: 8011 2000 1735 0000 0101 080a 4ddc 9723 .....5......M..# - 0x0030: 4ddc 9721 M..! -23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5561 win 12383 <nop,nop,timestamp 1306302243 1306302243> - 0x0000: 4500 0034 1b72 4000 4006 2150 7f00 0001 E..4.r@.@.!P.... - 0x0010: 7f00 0001 da70 0050 3758 8a4a 377a a3aa .....p.P7X.J7z.. - 0x0020: 8010 305f 06d4 0000 0101 080a 4ddc 9723 ..0_........M..# - 0x0030: 4ddc 9723 M..# diff --git a/contrib/tcpdump/tests/print-XX.out b/contrib/tcpdump/tests/print-XX.out deleted file mode 100644 index 6921a017a04a3..0000000000000 --- a/contrib/tcpdump/tests/print-XX.out +++ /dev/null @@ -1,419 +0,0 @@ -23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: S 928549246:928549246(0) win 32767 <mss 16396,sackOK,timestamp 1306300950 0,nop,wscale 2> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 003c 1b68 4000 4006 2152 7f00 0001 7f00 .<.h@.@.!R...... - 0x0020: 0001 da70 0050 3758 897e 0000 0000 a002 ...p.P7X.~...... - 0x0030: 7fff 1421 0000 0204 400c 0402 080a 4ddc ...!....@.....M. - 0x0040: 9216 0000 0000 0103 0302 .......... -23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: S 930778609:930778609(0) ack 928549247 win 32767 <mss 16396,sackOK,timestamp 1306300950 1306300950,nop,wscale 2> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 003c 0000 4000 4006 3cba 7f00 0001 7f00 .<..@.@.<....... - 0x0020: 0001 0050 da70 377a 8df1 3758 897f a012 ...P.p7z..7X.... - 0x0030: 7fff 6eb1 0000 0204 400c 0402 080a 4ddc ..n.....@.....M. - 0x0040: 9216 4ddc 9216 0103 0302 ..M....... -23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 1 win 8192 <nop,nop,timestamp 1306300950 1306300950> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 0034 1b6a 4000 4006 2158 7f00 0001 7f00 .4.j@.@.!X...... - 0x0020: 0001 da70 0050 3758 897f 377a 8df2 8010 ...p.P7X..7z.... - 0x0030: 2000 37d0 0000 0101 080a 4ddc 9216 4ddc ..7.......M...M. - 0x0040: 9216 .. -23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: P 1:203(202) ack 1 win 8192 <nop,nop,timestamp 1306300951 1306300950> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 00fe 1b6c 4000 4006 208c 7f00 0001 7f00 ...l@.@......... - 0x0020: 0001 da70 0050 3758 897f 377a 8df2 8018 ...p.P7X..7z.... - 0x0030: 2000 fef2 0000 0101 080a 4ddc 9217 4ddc ..........M...M. - 0x0040: 9216 4745 5420 2f20 4854 5450 2f31 2e31 ..GET./.HTTP/1.1 - 0x0050: 0d0a 486f 7374 3a20 6c6f 6361 6c68 6f73 ..Host:.localhos - 0x0060: 740d 0a55 7365 722d 4167 656e 743a 2045 t..User-Agent:.E - 0x0070: 4c69 6e6b 732f 302e 3130 2e34 2d37 2d64 Links/0.10.4-7-d - 0x0080: 6562 6961 6e20 2874 6578 746d 6f64 653b ebian.(textmode; - 0x0090: 204c 696e 7578 2032 2e36 2e31 312d 312d .Linux.2.6.11-1- - 0x00a0: 3638 362d 736d 7020 6936 3836 3b20 3133 686-smp.i686;.13 - 0x00b0: 3278 3536 2d32 290d 0a41 6363 6570 743a 2x56-2)..Accept: - 0x00c0: 202a 2f2a 0d0a 4163 6365 7074 2d45 6e63 .*/*..Accept-Enc - 0x00d0: 6f64 696e 673a 2067 7a69 700d 0a41 6363 oding:.gzip..Acc - 0x00e0: 6570 742d 4c61 6e67 7561 6765 3a20 656e ept-Language:.en - 0x00f0: 0d0a 436f 6e6e 6563 7469 6f6e 3a20 4b65 ..Connection:.Ke - 0x0100: 6570 2d41 6c69 7665 0d0a 0d0a ep-Alive.... -23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: . ack 203 win 8192 <nop,nop,timestamp 1306300952 1306300951> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 0034 1fe4 4000 4006 1cde 7f00 0001 7f00 .4..@.@......... - 0x0020: 0001 0050 da70 377a 8df2 3758 8a49 8010 ...P.p7z..7X.I.. - 0x0030: 2000 3703 0000 0101 080a 4ddc 9218 4ddc ..7.......M...M. - 0x0040: 9217 .. -23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: P 1:5560(5559) ack 203 win 8192 <nop,nop,timestamp 1306300953 1306300951> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 15eb 1fe6 4000 4006 0725 7f00 0001 7f00 ....@.@..%...... - 0x0020: 0001 0050 da70 377a 8df2 3758 8a49 8018 ...P.p7z..7X.I.. - 0x0030: 2000 13e0 0000 0101 080a 4ddc 9219 4ddc ..........M...M. - 0x0040: 9217 4854 5450 2f31 2e31 2032 3030 204f ..HTTP/1.1.200.O - 0x0050: 4b0d 0a44 6174 653a 2057 6564 2c20 3036 K..Date:.Wed,.06 - 0x0060: 204a 756c 2032 3030 3520 3033 3a35 373a .Jul.2005.03:57: - 0x0070: 3335 2047 4d54 0d0a 5365 7276 6572 3a20 35.GMT..Server:. - 0x0080: 4170 6163 6865 2f31 2e33 2e33 330d 0a4c Apache/1.3.33..L - 0x0090: 6173 742d 4d6f 6469 6669 6564 3a20 5375 ast-Modified:.Su - 0x00a0: 6e2c 2031 3520 4175 6720 3230 3034 2030 n,.15.Aug.2004.0 - 0x00b0: 303a 3433 3a34 3120 474d 540d 0a45 5461 0:43:41.GMT..ETa - 0x00c0: 673a 2022 3665 3830 6630 2d31 3438 612d g:."6e80f0-148a- - 0x00d0: 3431 3165 6231 6264 220d 0a41 6363 6570 411eb1bd"..Accep - 0x00e0: 742d 5261 6e67 6573 3a20 6279 7465 730d t-Ranges:.bytes. - 0x00f0: 0a43 6f6e 7465 6e74 2d4c 656e 6774 683a .Content-Length: - 0x0100: 2035 3235 380d 0a4b 6565 702d 416c 6976 .5258..Keep-Aliv - 0x0110: 653a 2074 696d 656f 7574 3d31 352c 206d e:.timeout=15,.m - 0x0120: 6178 3d31 3030 0d0a 436f 6e6e 6563 7469 ax=100..Connecti - 0x0130: 6f6e 3a20 4b65 6570 2d41 6c69 7665 0d0a on:.Keep-Alive.. - 0x0140: 436f 6e74 656e 742d 5479 7065 3a20 7465 Content-Type:.te - 0x0150: 7874 2f68 746d 6c3b 2063 6861 7273 6574 xt/html;.charset - 0x0160: 3d69 736f 2d38 3835 392d 310d 0a0d 0a3c =iso-8859-1....< - 0x0170: 2144 4f43 5459 5045 2048 544d 4c20 5055 !DOCTYPE.HTML.PU - 0x0180: 424c 4943 2022 2d2f 2f57 3343 2f2f 4454 BLIC."-//W3C//DT - 0x0190: 4420 4854 4d4c 2034 2e30 3120 5472 616e D.HTML.4.01.Tran - 0x01a0: 7369 7469 6f6e 616c 2f2f 454e 223e 0a3c sitional//EN">.< - 0x01b0: 4854 4d4c 3e0a 3c48 4541 443e 0a20 2020 HTML>.<HEAD>.... - 0x01c0: 3c4d 4554 4120 4854 5450 2d45 5155 4956 <META.HTTP-EQUIV - 0x01d0: 3d22 436f 6e74 656e 742d 5479 7065 2220 ="Content-Type". - 0x01e0: 434f 4e54 454e 543d 2274 6578 742f 6874 CONTENT="text/ht - 0x01f0: 6d6c 3b20 6368 6172 7365 743d 6973 6f2d ml;.charset=iso- - 0x0200: 3838 3539 2d31 223e 0a20 2020 3c4d 4554 8859-1">....<MET - 0x0210: 4120 4e41 4d45 3d22 4465 7363 7269 7074 A.NAME="Descript - 0x0220: 696f 6e22 2043 4f4e 5445 4e54 3d22 5468 ion".CONTENT="Th - 0x0230: 6520 696e 6974 6961 6c20 696e 7374 616c e.initial.instal - 0x0240: 6c61 7469 6f6e 206f 6620 4465 6269 616e lation.of.Debian - 0x0250: 2061 7061 6368 652e 223e 0a20 2020 3c54 .apache.">....<T - 0x0260: 4954 4c45 3e50 6c61 6365 686f 6c64 6572 ITLE>Placeholder - 0x0270: 2070 6167 653c 2f54 4954 4c45 3e0a 3c2f .page</TITLE>.</ - 0x0280: 4845 4144 3e0a 3c42 4f44 5920 5445 5854 HEAD>.<BODY.TEXT - 0x0290: 3d22 2330 3030 3030 3022 2042 4743 4f4c ="#000000".BGCOL - 0x02a0: 4f52 3d22 2346 4646 4646 4622 204c 494e OR="#FFFFFF".LIN - 0x02b0: 4b3d 2223 3030 3030 4546 2220 564c 494e K="#0000EF".VLIN - 0x02c0: 4b3d 2223 3535 3138 3841 2220 414c 494e K="#55188A".ALIN - 0x02d0: 4b3d 2223 4646 3030 3030 223e 0a0a 3c48 K="#FF0000">..<H - 0x02e0: 313e 506c 6163 6568 6f6c 6465 7220 7061 1>Placeholder.pa - 0x02f0: 6765 3c2f 4831 3e0a 3c48 323e 4966 2079 ge</H1>.<H2>If.y - 0x0300: 6f75 2061 7265 206a 7573 7420 6272 6f77 ou.are.just.brow - 0x0310: 7369 6e67 2074 6865 2077 6562 3c2f 6832 sing.the.web</h2 - 0x0320: 3e0a 0a3c 503e 5468 6520 6f77 6e65 7220 >..<P>The.owner. - 0x0330: 6f66 2074 6869 7320 7765 6220 7369 7465 of.this.web.site - 0x0340: 2068 6173 206e 6f74 2070 7574 2075 7020 .has.not.put.up. - 0x0350: 616e 7920 7765 6220 7061 6765 7320 7965 any.web.pages.ye - 0x0360: 742e 0a50 6c65 6173 6520 636f 6d65 2062 t..Please.come.b - 0x0370: 6163 6b20 6c61 7465 722e 3c2f 503e 0a0a ack.later.</P>.. - 0x0380: 3c50 3e3c 534d 414c 4c3e 3c43 4954 453e <P><SMALL><CITE> - 0x0390: 4d6f 7665 2061 6c6f 6e67 2c20 6e6f 7468 Move.along,.noth - 0x03a0: 696e 6720 746f 2073 6565 2068 6572 652e ing.to.see.here. - 0x03b0: 2e2e 3c2f 4349 5445 3e20 3a2d 293c 2f53 ..</CITE>.:-)</S - 0x03c0: 4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832 3e49 MALL></P>..<H2>I - 0x03d0: 6620 796f 7520 6172 6520 7472 7969 6e67 f.you.are.trying - 0x03e0: 2074 6f20 6c6f 6361 7465 2074 6865 2061 .to.locate.the.a - 0x03f0: 646d 696e 6973 7472 6174 6f72 206f 6620 dministrator.of. - 0x0400: 7468 6973 206d 6163 6869 6e65 3c2f 4832 this.machine</H2 - 0x0410: 3e0a 0a3c 503e 4966 2079 6f75 2077 616e >..<P>If.you.wan - 0x0420: 7420 746f 2072 6570 6f72 7420 736f 6d65 t.to.report.some - 0x0430: 7468 696e 6720 6162 6f75 7420 7468 6973 thing.about.this - 0x0440: 2068 6f73 7427 7320 6265 6861 7669 6f72 .host's.behavior - 0x0450: 2c20 706c 6561 7365 0a63 6f6e 7461 6374 ,.please.contact - 0x0460: 2074 6865 2049 6e74 6572 6e65 7420 5365 .the.Internet.Se - 0x0470: 7276 6963 6520 5072 6f76 6964 6572 2028 rvice.Provider.( - 0x0480: 4953 5029 2069 6e76 6f6c 7665 6420 6469 ISP).involved.di - 0x0490: 7265 6374 6c79 2e3c 2f50 3e0a 0a3c 503e rectly.</P>..<P> - 0x04a0: 5365 6520 7468 6520 3c41 2068 7265 663d See.the.<A.href= - 0x04b0: 2268 7474 703a 2f2f 7777 772e 6162 7573 "http://www.abus - 0x04c0: 652e 6e65 742f 223e 4e65 7477 6f72 6b20 e.net/">Network. - 0x04d0: 4162 7573 650a 436c 6561 7269 6e67 686f Abuse.Clearingho - 0x04e0: 7573 653c 2f41 3e20 666f 7220 686f 7720 use</A>.for.how. - 0x04f0: 746f 2064 6f20 7468 6973 2e3c 2f50 3e0a to.do.this.</P>. - 0x0500: 0a3c 4832 3e49 6620 796f 7520 6172 6520 .<H2>If.you.are. - 0x0510: 7468 6520 6164 6d69 6e69 7374 7261 746f the.administrato - 0x0520: 7220 6f66 2074 6869 7320 6d61 6368 696e r.of.this.machin - 0x0530: 653c 2f48 323e 0a0a 3c50 3e54 6865 2069 e</H2>..<P>The.i - 0x0540: 6e69 7469 616c 2069 6e73 7461 6c6c 6174 nitial.installat - 0x0550: 696f 6e20 6f66 203c 4120 6872 6566 3d22 ion.of.<A.href=" - 0x0560: 6874 7470 3a2f 2f77 7777 2e64 6562 6961 http://www.debia - 0x0570: 6e2e 6f72 672f 223e 4465 6269 616e 2773 n.org/">Debian's - 0x0580: 0a61 7061 6368 653c 2f41 3e20 7765 6220 .apache</A>.web. - 0x0590: 7365 7276 6572 2070 6163 6b61 6765 2077 server.package.w - 0x05a0: 6173 2073 7563 6365 7373 6675 6c2e 3c2f as.successful.</ - 0x05b0: 503e 0a0a 3c50 3e3c 5354 524f 4e47 3e59 P>..<P><STRONG>Y - 0x05c0: 6f75 2073 686f 756c 6420 7265 706c 6163 ou.should.replac - 0x05d0: 6520 7468 6973 2070 6167 6520 7769 7468 e.this.page.with - 0x05e0: 2079 6f75 7220 6f77 6e20 7765 6220 7061 .your.own.web.pa - 0x05f0: 6765 7320 6173 0a73 6f6f 6e20 6173 2070 ges.as.soon.as.p - 0x0600: 6f73 7369 626c 652e 3c2f 5354 524f 4e47 ossible.</STRONG - 0x0610: 3e3c 2f50 3e0a 0a3c 503e 556e 6c65 7373 ></P>..<P>Unless - 0x0620: 2079 6f75 2063 6861 6e67 6564 2069 7473 .you.changed.its - 0x0630: 2063 6f6e 6669 6775 7261 7469 6f6e 2c20 .configuration,. - 0x0640: 796f 7572 206e 6577 2073 6572 7665 7220 your.new.server. - 0x0650: 6973 2063 6f6e 6669 6775 7265 6420 6173 is.configured.as - 0x0660: 2066 6f6c 6c6f 7773 3a0a 3c55 4c3e 0a3c .follows:.<UL>.< - 0x0670: 4c49 3e0a 436f 6e66 6967 7572 6174 696f LI>.Configuratio - 0x0680: 6e20 6669 6c65 7320 6361 6e20 6265 2066 n.files.can.be.f - 0x0690: 6f75 6e64 2069 6e20 3c54 543e 2f65 7463 ound.in.<TT>/etc - 0x06a0: 2f61 7061 6368 653c 2f54 543e 2e3c 2f4c /apache</TT>.</L - 0x06b0: 493e 0a0a 3c4c 493e 0a54 6865 203c 5454 I>..<LI>.The.<TT - 0x06c0: 3e44 6f63 756d 656e 7452 6f6f 743c 2f54 >DocumentRoot</T - 0x06d0: 543e 2c20 7768 6963 6820 6973 2074 6865 T>,.which.is.the - 0x06e0: 2064 6972 6563 746f 7279 2075 6e64 6572 .directory.under - 0x06f0: 2077 6869 6368 2061 6c6c 2079 6f75 720a .which.all.your. - 0x0700: 4854 4d4c 2066 696c 6573 2073 686f 756c HTML.files.shoul - 0x0710: 6420 6578 6973 742c 2069 7320 7365 7420 d.exist,.is.set. - 0x0720: 746f 203c 5454 3e2f 7661 722f 7777 773c to.<TT>/var/www< - 0x0730: 2f54 543e 2e3c 2f4c 493e 0a0a 3c4c 493e /TT>.</LI>..<LI> - 0x0740: 0a43 4749 2073 6372 6970 7473 2061 7265 .CGI.scripts.are - 0x0750: 206c 6f6f 6b65 6420 666f 7220 696e 203c .looked.for.in.< - 0x0760: 5454 3e2f 7573 722f 6c69 622f 6367 692d TT>/usr/lib/cgi- - 0x0770: 6269 6e3c 2f54 543e 2c20 7768 6963 6820 bin</TT>,.which. - 0x0780: 6973 2077 6865 7265 0a44 6562 6961 6e20 is.where.Debian. - 0x0790: 7061 636b 6167 6573 2077 696c 6c20 706c packages.will.pl - 0x07a0: 6163 6520 7468 6569 7220 7363 7269 7074 ace.their.script - 0x07b0: 732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 4c6f s.</LI>..<LI>.Lo - 0x07c0: 6720 6669 6c65 7320 6172 6520 706c 6163 g.files.are.plac - 0x07d0: 6564 2069 6e20 3c54 543e 2f76 6172 2f6c ed.in.<TT>/var/l - 0x07e0: 6f67 2f61 7061 6368 653c 2f54 543e 2c20 og/apache</TT>,. - 0x07f0: 616e 6420 7769 6c6c 2062 6520 726f 7461 and.will.be.rota - 0x0800: 7465 640a 7765 656b 6c79 2e20 2054 6865 ted.weekly...The - 0x0810: 2066 7265 7175 656e 6379 206f 6620 726f .frequency.of.ro - 0x0820: 7461 7469 6f6e 2063 616e 2062 6520 6561 tation.can.be.ea - 0x0830: 7369 6c79 2063 6861 6e67 6564 2062 7920 sily.changed.by. - 0x0840: 6564 6974 696e 670a 3c54 543e 2f65 7463 editing.<TT>/etc - 0x0850: 2f6c 6f67 726f 7461 7465 2e64 2f61 7061 /logrotate.d/apa - 0x0860: 6368 653c 2f54 543e 2e3c 2f4c 493e 0a0a che</TT>.</LI>.. - 0x0870: 3c4c 493e 0a54 6865 2064 6566 6175 6c74 <LI>.The.default - 0x0880: 2064 6972 6563 746f 7279 2069 6e64 6578 .directory.index - 0x0890: 2069 7320 3c54 543e 696e 6465 782e 6874 .is.<TT>index.ht - 0x08a0: 6d6c 3c2f 5454 3e2c 206d 6561 6e69 6e67 ml</TT>,.meaning - 0x08b0: 2074 6861 7420 7265 7175 6573 7473 0a66 .that.requests.f - 0x08c0: 6f72 2061 2064 6972 6563 746f 7279 203c or.a.directory.< - 0x08d0: 5454 3e2f 666f 6f2f 6261 722f 3c2f 5454 TT>/foo/bar/</TT - 0x08e0: 3e20 7769 6c6c 2067 6976 6520 7468 6520 >.will.give.the. - 0x08f0: 636f 6e74 656e 7473 206f 6620 7468 6520 contents.of.the. - 0x0900: 6669 6c65 203c 5454 3e2f 7661 722f 7777 file.<TT>/var/ww - 0x0910: 772f 666f 6f2f 6261 722f 696e 6465 782e w/foo/bar/index. - 0x0920: 6874 6d6c 3c2f 5454 3e0a 6966 2069 7420 html</TT>.if.it. - 0x0930: 6578 6973 7473 2028 6173 7375 6d69 6e67 exists.(assuming - 0x0940: 2074 6861 7420 3c54 543e 2f76 6172 2f77 .that.<TT>/var/w - 0x0950: 7777 3c2f 5454 3e20 6973 2079 6f75 7220 ww</TT>.is.your. - 0x0960: 3c54 543e 446f 6375 6d65 6e74 526f 6f74 <TT>DocumentRoot - 0x0970: 3c2f 5454 3e29 2e3c 2f4c 493e 0a0a 3c4c </TT>).</LI>..<L - 0x0980: 493e 0a55 7365 7220 6469 7265 6374 6f72 I>.User.director - 0x0990: 6965 7320 6172 6520 656e 6162 6c65 642c ies.are.enabled, - 0x09a0: 2061 6e64 2075 7365 7220 646f 6375 6d65 .and.user.docume - 0x09b0: 6e74 7320 7769 6c6c 2062 6520 6c6f 6f6b nts.will.be.look - 0x09c0: 6564 2066 6f72 0a69 6e20 7468 6520 3c54 ed.for.in.the.<T - 0x09d0: 543e 7075 626c 6963 5f68 746d 6c3c 2f54 T>public_html</T - 0x09e0: 543e 2064 6972 6563 746f 7279 206f 6620 T>.directory.of. - 0x09f0: 7468 6520 7573 6572 7327 2068 6f6d 6573 the.users'.homes - 0x0a00: 2e20 2054 6865 7365 2064 6972 730a 7368 ...These.dirs.sh - 0x0a10: 6f75 6c64 2062 6520 756e 6465 7220 3c54 ould.be.under.<T - 0x0a20: 543e 2f68 6f6d 653c 2f54 543e 2c20 616e T>/home</TT>,.an - 0x0a30: 6420 7573 6572 7320 7769 6c6c 206e 6f74 d.users.will.not - 0x0a40: 2062 6520 6162 6c65 2074 6f20 7379 6d6c .be.able.to.syml - 0x0a50: 696e 6b0a 746f 2066 696c 6573 2074 6865 ink.to.files.the - 0x0a60: 7920 646f 6e27 7420 6f77 6e2e 3c2f 4c49 y.don't.own.</LI - 0x0a70: 3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074 6865 >..</UL>.All.the - 0x0a80: 2073 7461 6e64 6172 6420 6170 6163 6865 .standard.apache - 0x0a90: 206d 6f64 756c 6573 2061 7265 2061 7661 .modules.are.ava - 0x0aa0: 696c 6162 6c65 2077 6974 6820 7468 6973 ilable.with.this - 0x0ab0: 2072 656c 6561 7365 2061 6e64 2061 7265 .release.and.are - 0x0ac0: 0a6e 6f77 206d 616e 6167 6564 2077 6974 .now.managed.wit - 0x0ad0: 6820 6465 6263 6f6e 662e 2020 5479 7065 h.debconf...Type - 0x0ae0: 203c 5454 3e64 706b 672d 7265 636f 6e66 .<TT>dpkg-reconf - 0x0af0: 6967 7572 6520 6170 6163 6865 3c2f 5454 igure.apache</TT - 0x0b00: 3e20 746f 0a73 656c 6563 7420 7768 6963 >.to.select.whic - 0x0b10: 6820 6d6f 6475 6c65 7320 796f 7520 7761 h.modules.you.wa - 0x0b20: 6e74 2065 6e61 626c 6564 2e20 204d 616e nt.enabled...Man - 0x0b30: 7920 6f74 6865 7220 6d6f 6475 6c65 7320 y.other.modules. - 0x0b40: 6172 6520 6176 6169 6c61 626c 650a 7468 are.available.th - 0x0b50: 726f 7567 6820 7468 6520 4465 6269 616e rough.the.Debian - 0x0b60: 2070 6163 6b61 6765 2073 7973 7465 6d20 .package.system. - 0x0b70: 7769 7468 2074 6865 206e 616d 6573 203c with.the.names.< - 0x0b80: 5454 3e6c 6962 6170 6163 6865 2d6d 6f64 TT>libapache-mod - 0x0b90: 2d2a 3c2f 5454 3e2e 0a49 6620 796f 7520 -*</TT>..If.you. - 0x0ba0: 6e65 6564 2074 6f20 636f 6d70 696c 6520 need.to.compile. - 0x0bb0: 6120 6d6f 6475 6c65 2079 6f75 7273 656c a.module.yoursel - 0x0bc0: 662c 2079 6f75 2077 696c 6c20 6e65 6564 f,.you.will.need - 0x0bd0: 2074 6f20 696e 7374 616c 6c20 7468 650a .to.install.the. - 0x0be0: 3c54 543e 6170 6163 6865 2d64 6576 3c2f <TT>apache-dev</ - 0x0bf0: 5454 3e20 7061 636b 6167 652e 0a0a 3c50 TT>.package...<P - 0x0c00: 3e4d 6f72 6520 646f 6375 6d65 6e74 6174 >More.documentat - 0x0c10: 696f 6e20 6f6e 2041 7061 6368 6520 6361 ion.on.Apache.ca - 0x0c20: 6e20 6265 2066 6f75 6e64 206f 6e3a 0a3c n.be.found.on:.< - 0x0c30: 554c 3e0a 3c4c 493e 0a54 6865 203c 4120 UL>.<LI>.The.<A. - 0x0c40: 4852 4546 3d22 2f64 6f63 2f61 7061 6368 HREF="/doc/apach - 0x0c50: 652d 646f 632f 6d61 6e75 616c 2f22 3e41 e-doc/manual/">A - 0x0c60: 7061 6368 6520 646f 6375 6d65 6e74 6174 pache.documentat - 0x0c70: 696f 6e3c 2f41 3e20 7374 6f72 6564 206f ion</A>.stored.o - 0x0c80: 6e20 796f 7572 2073 6572 7665 722e 3c2f n.your.server.</ - 0x0c90: 4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 LI>..<LI>.The.<A - 0x0ca0: 2048 5245 463d 2268 7474 703a 2f2f 7777 .HREF="http://ww - 0x0cb0: 772e 6170 6163 6865 2e6f 7267 2f22 3e41 w.apache.org/">A - 0x0cc0: 7061 6368 6520 5072 6f6a 6563 743c 2f41 pache.Project</A - 0x0cd0: 3e20 686f 6d65 2073 6974 652e 3c2f 4c49 >.home.site.</LI - 0x0ce0: 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048 >..<LI>.The.<A.H - 0x0cf0: 5245 463d 2268 7474 703a 2f2f 7777 772e REF="http://www. - 0x0d00: 6170 6163 6865 2d73 736c 2e6f 7267 2f22 apache-ssl.org/" - 0x0d10: 3e41 7061 6368 652d 5353 4c3c 2f41 3e20 >Apache-SSL</A>. - 0x0d20: 686f 6d65 2073 6974 652e 3c2f 4c49 3e0a home.site.</LI>. - 0x0d30: 0a3c 4c49 3e0a 5468 6520 3c41 2048 5245 .<LI>.The.<A.HRE - 0x0d40: 463d 2268 7474 703a 2f2f 7065 726c 2e61 F="http://perl.a - 0x0d50: 7061 6368 652e 6f72 672f 223e 6d6f 6420 pache.org/">mod. - 0x0d60: 7065 726c 3c2f 413e 2068 6f6d 6520 7369 perl</A>.home.si - 0x0d70: 7465 2e3c 2f4c 493e 0a0a 3c4c 493e 0a54 te.</LI>..<LI>.T - 0x0d80: 6865 203c 4120 4852 4546 3d22 6874 7470 he.<A.HREF="http - 0x0d90: 3a2f 2f77 7777 2e61 7061 6368 6577 6565 ://www.apachewee - 0x0da0: 6b2e 636f 6d2f 223e 4170 6163 6865 5765 k.com/">ApacheWe - 0x0db0: 656b 3c2f 413e 206e 6577 736c 6574 7465 ek</A>.newslette - 0x0dc0: 722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468 r.</LI>..<LI>.Th - 0x0dd0: 6520 3c41 2048 5245 463d 2268 7474 703a e.<A.HREF="http: - 0x0de0: 2f2f 7777 772e 6465 6269 616e 2e6f 7267 //www.debian.org - 0x0df0: 2f64 6f63 2f22 3e44 6562 6961 6e20 5072 /doc/">Debian.Pr - 0x0e00: 6f6a 6563 740a 446f 6375 6d65 6e74 6174 oject.Documentat - 0x0e10: 696f 6e3c 2f41 3e20 7768 6963 6820 636f ion</A>.which.co - 0x0e20: 6e74 6169 6e73 2048 4f57 544f 732c 2046 ntains.HOWTOs,.F - 0x0e30: 4151 732c 2061 6e64 2073 6f66 7477 6172 AQs,.and.softwar - 0x0e40: 6520 7570 6461 7465 732e 3c2f 4c49 3e0a e.updates.</LI>. - 0x0e50: 3c2f 554c 3e0a 0a3c 503e 596f 7520 6361 </UL>..<P>You.ca - 0x0e60: 6e20 616c 736f 2063 6f6e 7375 6c74 2074 n.also.consult.t - 0x0e70: 6865 206c 6973 7420 6f66 203c 4120 4852 he.list.of.<A.HR - 0x0e80: 4546 3d22 6874 7470 3a2f 2f77 7777 2e62 EF="http://www.b - 0x0e90: 6f75 7465 6c6c 2e63 6f6d 2f66 6171 2f22 outell.com/faq/" - 0x0ea0: 3e57 6f72 6c64 0a57 6964 6520 5765 6220 >World.Wide.Web. - 0x0eb0: 4672 6571 7565 6e74 6c79 2041 736b 6564 Frequently.Asked - 0x0ec0: 2051 7565 7374 696f 6e73 3c2f 413e 2066 .Questions</A>.f - 0x0ed0: 6f72 2069 6e66 6f72 6d61 7469 6f6e 2e0a or.information.. - 0x0ee0: 0a3c 4832 3e4c 6574 206f 7468 6572 2070 .<H2>Let.other.p - 0x0ef0: 656f 706c 6520 6b6e 6f77 2061 626f 7574 eople.know.about - 0x0f00: 2074 6869 7320 7365 7276 6572 3c2f 4832 .this.server</H2 - 0x0f10: 3e0a 0a3c 4120 4852 4546 3d22 6874 7470 >..<A.HREF="http - 0x0f20: 3a2f 2f6e 6574 6372 6166 742e 636f 6d2f ://netcraft.com/ - 0x0f30: 223e 4e65 7463 7261 6674 3c2f 413e 2070 ">Netcraft</A>.p - 0x0f40: 726f 7669 6465 7320 616e 2069 6e74 6572 rovides.an.inter - 0x0f50: 6573 7469 6e67 2066 7265 650a 7365 7276 esting.free.serv - 0x0f60: 6963 6520 666f 7220 7765 6220 7369 7465 ice.for.web.site - 0x0f70: 206d 6f6e 6974 6f72 696e 6720 616e 6420 .monitoring.and. - 0x0f80: 7374 6174 6973 7469 6320 636f 6c6c 6563 statistic.collec - 0x0f90: 7469 6f6e 2e0a 596f 7520 6361 6e20 6c65 tion..You.can.le - 0x0fa0: 7420 7468 656d 206b 6e6f 7720 6162 6f75 t.them.know.abou - 0x0fb0: 7420 796f 7572 2073 6572 7665 7220 7573 t.your.server.us - 0x0fc0: 696e 6720 7468 6569 720a 3c41 2048 5245 ing.their.<A.HRE - 0x0fd0: 463d 2268 7474 703a 2f2f 7570 7469 6d65 F="http://uptime - 0x0fe0: 2e6e 6574 6372 6166 742e 636f 6d2f 223e .netcraft.com/"> - 0x0ff0: 696e 7465 7266 6163 653c 2f41 3e2e 0a45 interface</A>..E - 0x1000: 6e61 626c 696e 6720 7468 6520 6d6f 6e69 nabling.the.moni - 0x1010: 746f 7269 6e67 206f 6620 796f 7572 2073 toring.of.your.s - 0x1020: 6572 7665 7220 7769 6c6c 2070 726f 7669 erver.will.provi - 0x1030: 6465 2061 2062 6574 7465 7220 676c 6f62 de.a.better.glob - 0x1040: 616c 206f 7665 7276 6965 770a 6f66 2077 al.overview.of.w - 0x1050: 686f 2069 7320 7573 696e 6720 7768 6174 ho.is.using.what - 0x1060: 2061 6e64 2077 6865 7265 2c20 616e 6420 .and.where,.and. - 0x1070: 6974 2077 6f75 6c64 2067 6976 6520 4465 it.would.give.De - 0x1080: 6269 616e 2061 2062 6574 7465 720a 6f76 bian.a.better.ov - 0x1090: 6572 7669 6577 206f 6620 7468 6520 6170 erview.of.the.ap - 0x10a0: 6163 6865 2070 6163 6b61 6765 2075 7361 ache.package.usa - 0x10b0: 6765 2e0a 0a3c 4832 3e41 626f 7574 2074 ge...<H2>About.t - 0x10c0: 6869 7320 7061 6765 3c2f 4832 3e0a 0a3c his.page</H2>..< - 0x10d0: 494d 4720 414c 4947 4e3d 2272 6967 6874 IMG.ALIGN="right - 0x10e0: 2220 414c 543d 2222 2048 4549 4748 543d ".ALT="".HEIGHT= - 0x10f0: 2232 3437 2220 5749 4454 483d 2232 3738 "247".WIDTH="278 - 0x1100: 2220 5352 433d 2269 636f 6e73 2f6a 6865 ".SRC="icons/jhe - 0x1110: 3036 312e 706e 6722 3e0a 0a3c 503e 5468 061.png">..<P>Th - 0x1120: 6973 2069 7320 6120 706c 6163 6568 6f6c is.is.a.placehol - 0x1130: 6465 7220 7061 6765 2069 6e73 7461 6c6c der.page.install - 0x1140: 6564 2062 7920 7468 6520 3c41 0a48 5245 ed.by.the.<A.HRE - 0x1150: 463d 2268 7474 703a 2f2f 7777 772e 6465 F="http://www.de - 0x1160: 6269 616e 2e6f 7267 2f22 3e44 6562 6961 bian.org/">Debia - 0x1170: 6e3c 2f41 3e0a 7265 6c65 6173 6520 6f66 n</A>.release.of - 0x1180: 2074 6865 2061 7061 6368 6520 5765 6220 .the.apache.Web. - 0x1190: 7365 7276 6572 2070 6163 6b61 6765 2e0a server.package.. - 0x11a0: 0a3c 503e 5468 6973 2063 6f6d 7075 7465 .<P>This.compute - 0x11b0: 7220 6861 7320 696e 7374 616c 6c65 6420 r.has.installed. - 0x11c0: 7468 6520 4465 6269 616e 2047 4e55 2f4c the.Debian.GNU/L - 0x11d0: 696e 7578 206f 7065 7261 7469 6e67 2073 inux.operating.s - 0x11e0: 7973 7465 6d2c 0a62 7574 2069 7420 6861 ystem,.but.it.ha - 0x11f0: 7320 3c73 7472 6f6e 673e 6e6f 7468 696e s.<strong>nothin - 0x1200: 6720 746f 2064 6f20 7769 7468 2074 6865 g.to.do.with.the - 0x1210: 2044 6562 6961 6e0a 5072 6f6a 6563 743c .Debian.Project< - 0x1220: 2f73 7472 6f6e 673e 2e20 506c 6561 7365 /strong>..Please - 0x1230: 2064 6f20 3c73 7472 6f6e 673e 6e6f 743c .do.<strong>not< - 0x1240: 2f73 7472 6f6e 673e 2063 6f6e 7461 6374 /strong>.contact - 0x1250: 2074 6865 2044 6562 6961 6e0a 5072 6f6a .the.Debian.Proj - 0x1260: 6563 7420 6162 6f75 7420 6974 2e3c 2f50 ect.about.it.</P - 0x1270: 3e0a 0a3c 503e 4966 2079 6f75 2066 696e >..<P>If.you.fin - 0x1280: 6420 6120 6275 6720 696e 2074 6869 7320 d.a.bug.in.this. - 0x1290: 6170 6163 6865 2070 6163 6b61 6765 2c20 apache.package,. - 0x12a0: 6f72 2069 6e20 4170 6163 6865 2069 7473 or.in.Apache.its - 0x12b0: 656c 662c 0a70 6c65 6173 6520 6669 6c65 elf,.please.file - 0x12c0: 2061 2062 7567 2072 6570 6f72 7420 6f6e .a.bug.report.on - 0x12d0: 2069 742e 2020 496e 7374 7275 6374 696f .it...Instructio - 0x12e0: 6e73 206f 6e20 646f 696e 6720 7468 6973 ns.on.doing.this - 0x12f0: 2c20 616e 6420 7468 650a 6c69 7374 206f ,.and.the.list.o - 0x1300: 6620 3c41 2048 5245 463d 2268 7474 703a f.<A.HREF="http: - 0x1310: 2f2f 6275 6773 2e64 6562 6961 6e2e 6f72 //bugs.debian.or - 0x1320: 672f 7372 633a 6170 6163 6865 223e 6b6e g/src:apache">kn - 0x1330: 6f77 6e20 6275 6773 3c2f 413e 206f 6620 own.bugs</A>.of. - 0x1340: 7468 6973 0a70 6163 6b61 6765 2c20 6361 this.package,.ca - 0x1350: 6e20 6265 2066 6f75 6e64 2069 6e20 7468 n.be.found.in.th - 0x1360: 6520 0a3c 4120 4852 4546 3d22 6874 7470 e..<A.HREF="http - 0x1370: 3a2f 2f77 7777 2e64 6562 6961 6e2e 6f72 ://www.debian.or - 0x1380: 672f 4275 6773 2f52 6570 6f72 7469 6e67 g/Bugs/Reporting - 0x1390: 223e 4465 6269 616e 2042 7567 2054 7261 ">Debian.Bug.Tra - 0x13a0: 636b 696e 6720 5379 7374 656d 3c2f 413e cking.System</A> - 0x13b0: 2e0a 0a3c 503e 5468 616e 6b73 2066 6f72 ...<P>Thanks.for - 0x13c0: 2075 7369 6e67 2074 6869 7320 7061 636b .using.this.pack - 0x13d0: 6167 652c 2061 6e64 2063 6f6e 6772 6174 age,.and.congrat - 0x13e0: 756c 6174 696f 6e73 2066 6f72 2079 6f75 ulations.for.you - 0x13f0: 7220 6368 6f69 6365 206f 660a 6120 4465 r.choice.of.a.De - 0x1400: 6269 616e 2073 7973 7465 6d21 3c2f 503e bian.system!</P> - 0x1410: 0a0a 3c44 4956 2061 6c69 676e 3d22 6365 ..<DIV.align="ce - 0x1420: 6e74 6572 223e 0a3c 6120 6872 6566 3d22 nter">.<a.href=" - 0x1430: 6874 7470 3a2f 2f77 7777 2e64 6562 6961 http://www.debia - 0x1440: 6e2e 6f72 672f 223e 0a3c 494d 4720 616c n.org/">.<IMG.al - 0x1450: 6967 6e3d 226d 6964 646c 6522 2068 6569 ign="middle".hei - 0x1460: 6768 743d 2233 3022 2077 6964 7468 3d22 ght="30".width=" - 0x1470: 3235 2220 7372 633d 2269 636f 6e73 2f64 25".src="icons/d - 0x1480: 6562 6961 6e2f 6f70 656e 6c6f 676f 2d32 ebian/openlogo-2 - 0x1490: 352e 6a70 6722 2061 6c74 3d22 4465 6269 5.jpg".alt="Debi - 0x14a0: 616e 223e 0a3c 2f61 3e0a 3c61 2068 7265 an">.</a>.<a.hre - 0x14b0: 663d 2268 7474 703a 2f2f 7777 772e 6170 f="http://www.ap - 0x14c0: 6163 6865 2e6f 7267 2f22 3e0a 3c49 4d47 ache.org/">.<IMG - 0x14d0: 2061 6c69 676e 3d22 6d69 6464 6c65 2220 .align="middle". - 0x14e0: 6865 6967 6874 3d22 3332 2220 7769 6474 height="32".widt - 0x14f0: 683d 2232 3539 2220 7372 633d 2269 636f h="259".src="ico - 0x1500: 6e73 2f61 7061 6368 655f 7062 2e70 6e67 ns/apache_pb.png - 0x1510: 2220 616c 743d 2241 7061 6368 6522 3e0a ".alt="Apache">. - 0x1520: 3c2f 613e 0a3c 2f44 4956 3e0a 0a3c 212d </a>.</DIV>..<!- - 0x1530: 2d0a 2020 5468 6973 2070 6167 6520 7761 -...This.page.wa - 0x1540: 7320 696e 6974 6961 6c6c 7920 6372 6561 s.initially.crea - 0x1550: 7465 6420 6279 204a 6f68 6e69 6520 496e ted.by.Johnie.In - 0x1560: 6772 616d 2028 6874 7470 3a2f 2f6e 6574 gram.(http://net - 0x1570: 676f 642e 6e65 742f 290a 2020 4974 2077 god.net/)...It.w - 0x1580: 6173 206c 6174 6572 2065 6469 7465 6420 as.later.edited. - 0x1590: 6279 204d 6174 7468 6577 2057 696c 636f by.Matthew.Wilco - 0x15a0: 7820 616e 6420 4a6f 7369 7020 526f 6469 x.and.Josip.Rodi - 0x15b0: 6e2e 0a20 204c 6173 7420 6d6f 6469 6669 n....Last.modifi - 0x15c0: 6564 3a20 2444 6174 653a 2032 3030 342f ed:.$Date:.2004/ - 0x15d0: 3036 2f32 3020 3135 3a33 333a 3537 2024 06/20.15:33:57.$ - 0x15e0: 2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44 593e ....-->..</BODY> - 0x15f0: 0a3c 2f48 544d 4c3e 0a .</HTML>. -23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5560 win 12383 <nop,nop,timestamp 1306300953 1306300953> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 0034 1b6e 4000 4006 2154 7f00 0001 7f00 .4.n@.@.!T...... - 0x0020: 0001 da70 0050 3758 8a49 377a a3a9 8010 ...p.P7X.I7z.... - 0x0030: 305f 10ea 0000 0101 080a 4ddc 9219 4ddc 0_........M...M. - 0x0040: 9219 .. -23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: F 203:203(0) ack 5560 win 12383 <nop,nop,timestamp 1306302241 1306300953> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 0034 1b70 4000 4006 2152 7f00 0001 7f00 .4.p@.@.!R...... - 0x0020: 0001 da70 0050 3758 8a49 377a a3a9 8011 ...p.P7X.I7z.... - 0x0030: 305f 0be1 0000 0101 080a 4ddc 9721 4ddc 0_........M..!M. - 0x0040: 9219 .. -23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: F 5560:5560(0) ack 204 win 8192 <nop,nop,timestamp 1306302243 1306302241> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 0034 1fe8 4000 4006 1cda 7f00 0001 7f00 .4..@.@......... - 0x0020: 0001 0050 da70 377a a3a9 3758 8a4a 8011 ...P.p7z..7X.J.. - 0x0030: 2000 1735 0000 0101 080a 4ddc 9723 4ddc ...5......M..#M. - 0x0040: 9721 .! -23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5561 win 12383 <nop,nop,timestamp 1306302243 1306302243> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 0034 1b72 4000 4006 2150 7f00 0001 7f00 .4.r@.@.!P...... - 0x0020: 0001 da70 0050 3758 8a4a 377a a3aa 8010 ...p.P7X.J7z.... - 0x0030: 305f 06d4 0000 0101 080a 4ddc 9723 4ddc 0_........M..#M. - 0x0040: 9723 .# diff --git a/contrib/tcpdump/tests/print-capX.out b/contrib/tcpdump/tests/print-capX.out deleted file mode 100644 index 696316950b3ae..0000000000000 --- a/contrib/tcpdump/tests/print-capX.out +++ /dev/null @@ -1,409 +0,0 @@ -20:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: S 928549246:928549246(0) win 32767 <mss 16396,sackOK,timestamp 1306300950 0,nop,wscale 2> - 0x0000: 4500 003c 1b68 4000 4006 2152 7f00 0001 E..<.h@.@.!R.... - 0x0010: 7f00 0001 da70 0050 3758 897e 0000 0000 .....p.P7X.~.... - 0x0020: a002 7fff 1421 0000 0204 400c 0402 080a .....!....@..... - 0x0030: 4ddc 9216 0000 0000 0103 0302 M........... -20:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: S 930778609:930778609(0) ack 928549247 win 32767 <mss 16396,sackOK,timestamp 1306300950 1306300950,nop,wscale 2> - 0x0000: 4500 003c 0000 4000 4006 3cba 7f00 0001 E..<..@.@.<..... - 0x0010: 7f00 0001 0050 da70 377a 8df1 3758 897f .....P.p7z..7X.. - 0x0020: a012 7fff 6eb1 0000 0204 400c 0402 080a ....n.....@..... - 0x0030: 4ddc 9216 4ddc 9216 0103 0302 M...M....... -20:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 1 win 8192 <nop,nop,timestamp 1306300950 1306300950> - 0x0000: 4500 0034 1b6a 4000 4006 2158 7f00 0001 E..4.j@.@.!X.... - 0x0010: 7f00 0001 da70 0050 3758 897f 377a 8df2 .....p.P7X..7z.. - 0x0020: 8010 2000 37d0 0000 0101 080a 4ddc 9216 ....7.......M... - 0x0030: 4ddc 9216 M... -20:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: P 1:203(202) ack 1 win 8192 <nop,nop,timestamp 1306300951 1306300950> - 0x0000: 4500 00fe 1b6c 4000 4006 208c 7f00 0001 E....l@.@....... - 0x0010: 7f00 0001 da70 0050 3758 897f 377a 8df2 .....p.P7X..7z.. - 0x0020: 8018 2000 fef2 0000 0101 080a 4ddc 9217 ............M... - 0x0030: 4ddc 9216 4745 5420 2f20 4854 5450 2f31 M...GET./.HTTP/1 - 0x0040: 2e31 0d0a 486f 7374 3a20 6c6f 6361 6c68 .1..Host:.localh - 0x0050: 6f73 740d 0a55 7365 722d 4167 656e 743a ost..User-Agent: - 0x0060: 2045 4c69 6e6b 732f 302e 3130 2e34 2d37 .ELinks/0.10.4-7 - 0x0070: 2d64 6562 6961 6e20 2874 6578 746d 6f64 -debian.(textmod - 0x0080: 653b 204c 696e 7578 2032 2e36 2e31 312d e;.Linux.2.6.11- - 0x0090: 312d 3638 362d 736d 7020 6936 3836 3b20 1-686-smp.i686;. - 0x00a0: 3133 3278 3536 2d32 290d 0a41 6363 6570 132x56-2)..Accep - 0x00b0: 743a 202a 2f2a 0d0a 4163 6365 7074 2d45 t:.*/*..Accept-E - 0x00c0: 6e63 6f64 696e 673a 2067 7a69 700d 0a41 ncoding:.gzip..A - 0x00d0: 6363 6570 742d 4c61 6e67 7561 6765 3a20 ccept-Language:. - 0x00e0: 656e 0d0a 436f 6e6e 6563 7469 6f6e 3a20 en..Connection:. - 0x00f0: 4b65 6570 2d41 6c69 7665 0d0a 0d0a Keep-Alive.... -20:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: . ack 203 win 8192 <nop,nop,timestamp 1306300952 1306300951> - 0x0000: 4500 0034 1fe4 4000 4006 1cde 7f00 0001 E..4..@.@....... - 0x0010: 7f00 0001 0050 da70 377a 8df2 3758 8a49 .....P.p7z..7X.I - 0x0020: 8010 2000 3703 0000 0101 080a 4ddc 9218 ....7.......M... - 0x0030: 4ddc 9217 M... -20:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: P 1:5560(5559) ack 203 win 8192 <nop,nop,timestamp 1306300953 1306300951> - 0x0000: 4500 15eb 1fe6 4000 4006 0725 7f00 0001 E.....@.@..%.... - 0x0010: 7f00 0001 0050 da70 377a 8df2 3758 8a49 .....P.p7z..7X.I - 0x0020: 8018 2000 13e0 0000 0101 080a 4ddc 9219 ............M... - 0x0030: 4ddc 9217 4854 5450 2f31 2e31 2032 3030 M...HTTP/1.1.200 - 0x0040: 204f 4b0d 0a44 6174 653a 2057 6564 2c20 .OK..Date:.Wed,. - 0x0050: 3036 204a 756c 2032 3030 3520 3033 3a35 06.Jul.2005.03:5 - 0x0060: 373a 3335 2047 4d54 0d0a 5365 7276 6572 7:35.GMT..Server - 0x0070: 3a20 4170 6163 6865 2f31 2e33 2e33 330d :.Apache/1.3.33. - 0x0080: 0a4c 6173 742d 4d6f 6469 6669 6564 3a20 .Last-Modified:. - 0x0090: 5375 6e2c 2031 3520 4175 6720 3230 3034 Sun,.15.Aug.2004 - 0x00a0: 2030 303a 3433 3a34 3120 474d 540d 0a45 .00:43:41.GMT..E - 0x00b0: 5461 673a 2022 3665 3830 6630 2d31 3438 Tag:."6e80f0-148 - 0x00c0: 612d 3431 3165 6231 6264 220d 0a41 6363 a-411eb1bd"..Acc - 0x00d0: 6570 742d 5261 6e67 6573 3a20 6279 7465 ept-Ranges:.byte - 0x00e0: 730d 0a43 6f6e 7465 6e74 2d4c 656e 6774 s..Content-Lengt - 0x00f0: 683a 2035 3235 380d 0a4b 6565 702d 416c h:.5258..Keep-Al - 0x0100: 6976 653a 2074 696d 656f 7574 3d31 352c ive:.timeout=15, - 0x0110: 206d 6178 3d31 3030 0d0a 436f 6e6e 6563 .max=100..Connec - 0x0120: 7469 6f6e 3a20 4b65 6570 2d41 6c69 7665 tion:.Keep-Alive - 0x0130: 0d0a 436f 6e74 656e 742d 5479 7065 3a20 ..Content-Type:. - 0x0140: 7465 7874 2f68 746d 6c3b 2063 6861 7273 text/html;.chars - 0x0150: 6574 3d69 736f 2d38 3835 392d 310d 0a0d et=iso-8859-1... - 0x0160: 0a3c 2144 4f43 5459 5045 2048 544d 4c20 .<!DOCTYPE.HTML. - 0x0170: 5055 424c 4943 2022 2d2f 2f57 3343 2f2f PUBLIC."-//W3C// - 0x0180: 4454 4420 4854 4d4c 2034 2e30 3120 5472 DTD.HTML.4.01.Tr - 0x0190: 616e 7369 7469 6f6e 616c 2f2f 454e 223e ansitional//EN"> - 0x01a0: 0a3c 4854 4d4c 3e0a 3c48 4541 443e 0a20 .<HTML>.<HEAD>.. - 0x01b0: 2020 3c4d 4554 4120 4854 5450 2d45 5155 ..<META.HTTP-EQU - 0x01c0: 4956 3d22 436f 6e74 656e 742d 5479 7065 IV="Content-Type - 0x01d0: 2220 434f 4e54 454e 543d 2274 6578 742f ".CONTENT="text/ - 0x01e0: 6874 6d6c 3b20 6368 6172 7365 743d 6973 html;.charset=is - 0x01f0: 6f2d 3838 3539 2d31 223e 0a20 2020 3c4d o-8859-1">....<M - 0x0200: 4554 4120 4e41 4d45 3d22 4465 7363 7269 ETA.NAME="Descri - 0x0210: 7074 696f 6e22 2043 4f4e 5445 4e54 3d22 ption".CONTENT=" - 0x0220: 5468 6520 696e 6974 6961 6c20 696e 7374 The.initial.inst - 0x0230: 616c 6c61 7469 6f6e 206f 6620 4465 6269 allation.of.Debi - 0x0240: 616e 2061 7061 6368 652e 223e 0a20 2020 an.apache.">.... - 0x0250: 3c54 4954 4c45 3e50 6c61 6365 686f 6c64 <TITLE>Placehold - 0x0260: 6572 2070 6167 653c 2f54 4954 4c45 3e0a er.page</TITLE>. - 0x0270: 3c2f 4845 4144 3e0a 3c42 4f44 5920 5445 </HEAD>.<BODY.TE - 0x0280: 5854 3d22 2330 3030 3030 3022 2042 4743 XT="#000000".BGC - 0x0290: 4f4c 4f52 3d22 2346 4646 4646 4622 204c OLOR="#FFFFFF".L - 0x02a0: 494e 4b3d 2223 3030 3030 4546 2220 564c INK="#0000EF".VL - 0x02b0: 494e 4b3d 2223 3535 3138 3841 2220 414c INK="#55188A".AL - 0x02c0: 494e 4b3d 2223 4646 3030 3030 223e 0a0a INK="#FF0000">.. - 0x02d0: 3c48 313e 506c 6163 6568 6f6c 6465 7220 <H1>Placeholder. - 0x02e0: 7061 6765 3c2f 4831 3e0a 3c48 323e 4966 page</H1>.<H2>If - 0x02f0: 2079 6f75 2061 7265 206a 7573 7420 6272 .you.are.just.br - 0x0300: 6f77 7369 6e67 2074 6865 2077 6562 3c2f owsing.the.web</ - 0x0310: 6832 3e0a 0a3c 503e 5468 6520 6f77 6e65 h2>..<P>The.owne - 0x0320: 7220 6f66 2074 6869 7320 7765 6220 7369 r.of.this.web.si - 0x0330: 7465 2068 6173 206e 6f74 2070 7574 2075 te.has.not.put.u - 0x0340: 7020 616e 7920 7765 6220 7061 6765 7320 p.any.web.pages. - 0x0350: 7965 742e 0a50 6c65 6173 6520 636f 6d65 yet..Please.come - 0x0360: 2062 6163 6b20 6c61 7465 722e 3c2f 503e .back.later.</P> - 0x0370: 0a0a 3c50 3e3c 534d 414c 4c3e 3c43 4954 ..<P><SMALL><CIT - 0x0380: 453e 4d6f 7665 2061 6c6f 6e67 2c20 6e6f E>Move.along,.no - 0x0390: 7468 696e 6720 746f 2073 6565 2068 6572 thing.to.see.her - 0x03a0: 652e 2e2e 3c2f 4349 5445 3e20 3a2d 293c e...</CITE>.:-)< - 0x03b0: 2f53 4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832 /SMALL></P>..<H2 - 0x03c0: 3e49 6620 796f 7520 6172 6520 7472 7969 >If.you.are.tryi - 0x03d0: 6e67 2074 6f20 6c6f 6361 7465 2074 6865 ng.to.locate.the - 0x03e0: 2061 646d 696e 6973 7472 6174 6f72 206f .administrator.o - 0x03f0: 6620 7468 6973 206d 6163 6869 6e65 3c2f f.this.machine</ - 0x0400: 4832 3e0a 0a3c 503e 4966 2079 6f75 2077 H2>..<P>If.you.w - 0x0410: 616e 7420 746f 2072 6570 6f72 7420 736f ant.to.report.so - 0x0420: 6d65 7468 696e 6720 6162 6f75 7420 7468 mething.about.th - 0x0430: 6973 2068 6f73 7427 7320 6265 6861 7669 is.host's.behavi - 0x0440: 6f72 2c20 706c 6561 7365 0a63 6f6e 7461 or,.please.conta - 0x0450: 6374 2074 6865 2049 6e74 6572 6e65 7420 ct.the.Internet. - 0x0460: 5365 7276 6963 6520 5072 6f76 6964 6572 Service.Provider - 0x0470: 2028 4953 5029 2069 6e76 6f6c 7665 6420 .(ISP).involved. - 0x0480: 6469 7265 6374 6c79 2e3c 2f50 3e0a 0a3c directly.</P>..< - 0x0490: 503e 5365 6520 7468 6520 3c41 2068 7265 P>See.the.<A.hre - 0x04a0: 663d 2268 7474 703a 2f2f 7777 772e 6162 f="http://www.ab - 0x04b0: 7573 652e 6e65 742f 223e 4e65 7477 6f72 use.net/">Networ - 0x04c0: 6b20 4162 7573 650a 436c 6561 7269 6e67 k.Abuse.Clearing - 0x04d0: 686f 7573 653c 2f41 3e20 666f 7220 686f house</A>.for.ho - 0x04e0: 7720 746f 2064 6f20 7468 6973 2e3c 2f50 w.to.do.this.</P - 0x04f0: 3e0a 0a3c 4832 3e49 6620 796f 7520 6172 >..<H2>If.you.ar - 0x0500: 6520 7468 6520 6164 6d69 6e69 7374 7261 e.the.administra - 0x0510: 746f 7220 6f66 2074 6869 7320 6d61 6368 tor.of.this.mach - 0x0520: 696e 653c 2f48 323e 0a0a 3c50 3e54 6865 ine</H2>..<P>The - 0x0530: 2069 6e69 7469 616c 2069 6e73 7461 6c6c .initial.install - 0x0540: 6174 696f 6e20 6f66 203c 4120 6872 6566 ation.of.<A.href - 0x0550: 3d22 6874 7470 3a2f 2f77 7777 2e64 6562 ="http://www.deb - 0x0560: 6961 6e2e 6f72 672f 223e 4465 6269 616e ian.org/">Debian - 0x0570: 2773 0a61 7061 6368 653c 2f41 3e20 7765 's.apache</A>.we - 0x0580: 6220 7365 7276 6572 2070 6163 6b61 6765 b.server.package - 0x0590: 2077 6173 2073 7563 6365 7373 6675 6c2e .was.successful. - 0x05a0: 3c2f 503e 0a0a 3c50 3e3c 5354 524f 4e47 </P>..<P><STRONG - 0x05b0: 3e59 6f75 2073 686f 756c 6420 7265 706c >You.should.repl - 0x05c0: 6163 6520 7468 6973 2070 6167 6520 7769 ace.this.page.wi - 0x05d0: 7468 2079 6f75 7220 6f77 6e20 7765 6220 th.your.own.web. - 0x05e0: 7061 6765 7320 6173 0a73 6f6f 6e20 6173 pages.as.soon.as - 0x05f0: 2070 6f73 7369 626c 652e 3c2f 5354 524f .possible.</STRO - 0x0600: 4e47 3e3c 2f50 3e0a 0a3c 503e 556e 6c65 NG></P>..<P>Unle - 0x0610: 7373 2079 6f75 2063 6861 6e67 6564 2069 ss.you.changed.i - 0x0620: 7473 2063 6f6e 6669 6775 7261 7469 6f6e ts.configuration - 0x0630: 2c20 796f 7572 206e 6577 2073 6572 7665 ,.your.new.serve - 0x0640: 7220 6973 2063 6f6e 6669 6775 7265 6420 r.is.configured. - 0x0650: 6173 2066 6f6c 6c6f 7773 3a0a 3c55 4c3e as.follows:.<UL> - 0x0660: 0a3c 4c49 3e0a 436f 6e66 6967 7572 6174 .<LI>.Configurat - 0x0670: 696f 6e20 6669 6c65 7320 6361 6e20 6265 ion.files.can.be - 0x0680: 2066 6f75 6e64 2069 6e20 3c54 543e 2f65 .found.in.<TT>/e - 0x0690: 7463 2f61 7061 6368 653c 2f54 543e 2e3c tc/apache</TT>.< - 0x06a0: 2f4c 493e 0a0a 3c4c 493e 0a54 6865 203c /LI>..<LI>.The.< - 0x06b0: 5454 3e44 6f63 756d 656e 7452 6f6f 743c TT>DocumentRoot< - 0x06c0: 2f54 543e 2c20 7768 6963 6820 6973 2074 /TT>,.which.is.t - 0x06d0: 6865 2064 6972 6563 746f 7279 2075 6e64 he.directory.und - 0x06e0: 6572 2077 6869 6368 2061 6c6c 2079 6f75 er.which.all.you - 0x06f0: 720a 4854 4d4c 2066 696c 6573 2073 686f r.HTML.files.sho - 0x0700: 756c 6420 6578 6973 742c 2069 7320 7365 uld.exist,.is.se - 0x0710: 7420 746f 203c 5454 3e2f 7661 722f 7777 t.to.<TT>/var/ww - 0x0720: 773c 2f54 543e 2e3c 2f4c 493e 0a0a 3c4c w</TT>.</LI>..<L - 0x0730: 493e 0a43 4749 2073 6372 6970 7473 2061 I>.CGI.scripts.a - 0x0740: 7265 206c 6f6f 6b65 6420 666f 7220 696e re.looked.for.in - 0x0750: 203c 5454 3e2f 7573 722f 6c69 622f 6367 .<TT>/usr/lib/cg - 0x0760: 692d 6269 6e3c 2f54 543e 2c20 7768 6963 i-bin</TT>,.whic - 0x0770: 6820 6973 2077 6865 7265 0a44 6562 6961 h.is.where.Debia - 0x0780: 6e20 7061 636b 6167 6573 2077 696c 6c20 n.packages.will. - 0x0790: 706c 6163 6520 7468 6569 7220 7363 7269 place.their.scri - 0x07a0: 7074 732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a pts.</LI>..<LI>. - 0x07b0: 4c6f 6720 6669 6c65 7320 6172 6520 706c Log.files.are.pl - 0x07c0: 6163 6564 2069 6e20 3c54 543e 2f76 6172 aced.in.<TT>/var - 0x07d0: 2f6c 6f67 2f61 7061 6368 653c 2f54 543e /log/apache</TT> - 0x07e0: 2c20 616e 6420 7769 6c6c 2062 6520 726f ,.and.will.be.ro - 0x07f0: 7461 7465 640a 7765 656b 6c79 2e20 2054 tated.weekly...T - 0x0800: 6865 2066 7265 7175 656e 6379 206f 6620 he.frequency.of. - 0x0810: 726f 7461 7469 6f6e 2063 616e 2062 6520 rotation.can.be. - 0x0820: 6561 7369 6c79 2063 6861 6e67 6564 2062 easily.changed.b - 0x0830: 7920 6564 6974 696e 670a 3c54 543e 2f65 y.editing.<TT>/e - 0x0840: 7463 2f6c 6f67 726f 7461 7465 2e64 2f61 tc/logrotate.d/a - 0x0850: 7061 6368 653c 2f54 543e 2e3c 2f4c 493e pache</TT>.</LI> - 0x0860: 0a0a 3c4c 493e 0a54 6865 2064 6566 6175 ..<LI>.The.defau - 0x0870: 6c74 2064 6972 6563 746f 7279 2069 6e64 lt.directory.ind - 0x0880: 6578 2069 7320 3c54 543e 696e 6465 782e ex.is.<TT>index. - 0x0890: 6874 6d6c 3c2f 5454 3e2c 206d 6561 6e69 html</TT>,.meani - 0x08a0: 6e67 2074 6861 7420 7265 7175 6573 7473 ng.that.requests - 0x08b0: 0a66 6f72 2061 2064 6972 6563 746f 7279 .for.a.directory - 0x08c0: 203c 5454 3e2f 666f 6f2f 6261 722f 3c2f .<TT>/foo/bar/</ - 0x08d0: 5454 3e20 7769 6c6c 2067 6976 6520 7468 TT>.will.give.th - 0x08e0: 6520 636f 6e74 656e 7473 206f 6620 7468 e.contents.of.th - 0x08f0: 6520 6669 6c65 203c 5454 3e2f 7661 722f e.file.<TT>/var/ - 0x0900: 7777 772f 666f 6f2f 6261 722f 696e 6465 www/foo/bar/inde - 0x0910: 782e 6874 6d6c 3c2f 5454 3e0a 6966 2069 x.html</TT>.if.i - 0x0920: 7420 6578 6973 7473 2028 6173 7375 6d69 t.exists.(assumi - 0x0930: 6e67 2074 6861 7420 3c54 543e 2f76 6172 ng.that.<TT>/var - 0x0940: 2f77 7777 3c2f 5454 3e20 6973 2079 6f75 /www</TT>.is.you - 0x0950: 7220 3c54 543e 446f 6375 6d65 6e74 526f r.<TT>DocumentRo - 0x0960: 6f74 3c2f 5454 3e29 2e3c 2f4c 493e 0a0a ot</TT>).</LI>.. - 0x0970: 3c4c 493e 0a55 7365 7220 6469 7265 6374 <LI>.User.direct - 0x0980: 6f72 6965 7320 6172 6520 656e 6162 6c65 ories.are.enable - 0x0990: 642c 2061 6e64 2075 7365 7220 646f 6375 d,.and.user.docu - 0x09a0: 6d65 6e74 7320 7769 6c6c 2062 6520 6c6f ments.will.be.lo - 0x09b0: 6f6b 6564 2066 6f72 0a69 6e20 7468 6520 oked.for.in.the. - 0x09c0: 3c54 543e 7075 626c 6963 5f68 746d 6c3c <TT>public_html< - 0x09d0: 2f54 543e 2064 6972 6563 746f 7279 206f /TT>.directory.o - 0x09e0: 6620 7468 6520 7573 6572 7327 2068 6f6d f.the.users'.hom - 0x09f0: 6573 2e20 2054 6865 7365 2064 6972 730a es...These.dirs. - 0x0a00: 7368 6f75 6c64 2062 6520 756e 6465 7220 should.be.under. - 0x0a10: 3c54 543e 2f68 6f6d 653c 2f54 543e 2c20 <TT>/home</TT>,. - 0x0a20: 616e 6420 7573 6572 7320 7769 6c6c 206e and.users.will.n - 0x0a30: 6f74 2062 6520 6162 6c65 2074 6f20 7379 ot.be.able.to.sy - 0x0a40: 6d6c 696e 6b0a 746f 2066 696c 6573 2074 mlink.to.files.t - 0x0a50: 6865 7920 646f 6e27 7420 6f77 6e2e 3c2f hey.don't.own.</ - 0x0a60: 4c49 3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074 LI>..</UL>.All.t - 0x0a70: 6865 2073 7461 6e64 6172 6420 6170 6163 he.standard.apac - 0x0a80: 6865 206d 6f64 756c 6573 2061 7265 2061 he.modules.are.a - 0x0a90: 7661 696c 6162 6c65 2077 6974 6820 7468 vailable.with.th - 0x0aa0: 6973 2072 656c 6561 7365 2061 6e64 2061 is.release.and.a - 0x0ab0: 7265 0a6e 6f77 206d 616e 6167 6564 2077 re.now.managed.w - 0x0ac0: 6974 6820 6465 6263 6f6e 662e 2020 5479 ith.debconf...Ty - 0x0ad0: 7065 203c 5454 3e64 706b 672d 7265 636f pe.<TT>dpkg-reco - 0x0ae0: 6e66 6967 7572 6520 6170 6163 6865 3c2f nfigure.apache</ - 0x0af0: 5454 3e20 746f 0a73 656c 6563 7420 7768 TT>.to.select.wh - 0x0b00: 6963 6820 6d6f 6475 6c65 7320 796f 7520 ich.modules.you. - 0x0b10: 7761 6e74 2065 6e61 626c 6564 2e20 204d want.enabled...M - 0x0b20: 616e 7920 6f74 6865 7220 6d6f 6475 6c65 any.other.module - 0x0b30: 7320 6172 6520 6176 6169 6c61 626c 650a s.are.available. - 0x0b40: 7468 726f 7567 6820 7468 6520 4465 6269 through.the.Debi - 0x0b50: 616e 2070 6163 6b61 6765 2073 7973 7465 an.package.syste - 0x0b60: 6d20 7769 7468 2074 6865 206e 616d 6573 m.with.the.names - 0x0b70: 203c 5454 3e6c 6962 6170 6163 6865 2d6d .<TT>libapache-m - 0x0b80: 6f64 2d2a 3c2f 5454 3e2e 0a49 6620 796f od-*</TT>..If.yo - 0x0b90: 7520 6e65 6564 2074 6f20 636f 6d70 696c u.need.to.compil - 0x0ba0: 6520 6120 6d6f 6475 6c65 2079 6f75 7273 e.a.module.yours - 0x0bb0: 656c 662c 2079 6f75 2077 696c 6c20 6e65 elf,.you.will.ne - 0x0bc0: 6564 2074 6f20 696e 7374 616c 6c20 7468 ed.to.install.th - 0x0bd0: 650a 3c54 543e 6170 6163 6865 2d64 6576 e.<TT>apache-dev - 0x0be0: 3c2f 5454 3e20 7061 636b 6167 652e 0a0a </TT>.package... - 0x0bf0: 3c50 3e4d 6f72 6520 646f 6375 6d65 6e74 <P>More.document - 0x0c00: 6174 696f 6e20 6f6e 2041 7061 6368 6520 ation.on.Apache. - 0x0c10: 6361 6e20 6265 2066 6f75 6e64 206f 6e3a can.be.found.on: - 0x0c20: 0a3c 554c 3e0a 3c4c 493e 0a54 6865 203c .<UL>.<LI>.The.< - 0x0c30: 4120 4852 4546 3d22 2f64 6f63 2f61 7061 A.HREF="/doc/apa - 0x0c40: 6368 652d 646f 632f 6d61 6e75 616c 2f22 che-doc/manual/" - 0x0c50: 3e41 7061 6368 6520 646f 6375 6d65 6e74 >Apache.document - 0x0c60: 6174 696f 6e3c 2f41 3e20 7374 6f72 6564 ation</A>.stored - 0x0c70: 206f 6e20 796f 7572 2073 6572 7665 722e .on.your.server. - 0x0c80: 3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468 6520 </LI>..<LI>.The. - 0x0c90: 3c41 2048 5245 463d 2268 7474 703a 2f2f <A.HREF="http:// - 0x0ca0: 7777 772e 6170 6163 6865 2e6f 7267 2f22 www.apache.org/" - 0x0cb0: 3e41 7061 6368 6520 5072 6f6a 6563 743c >Apache.Project< - 0x0cc0: 2f41 3e20 686f 6d65 2073 6974 652e 3c2f /A>.home.site.</ - 0x0cd0: 4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 LI>..<LI>.The.<A - 0x0ce0: 2048 5245 463d 2268 7474 703a 2f2f 7777 .HREF="http://ww - 0x0cf0: 772e 6170 6163 6865 2d73 736c 2e6f 7267 w.apache-ssl.org - 0x0d00: 2f22 3e41 7061 6368 652d 5353 4c3c 2f41 /">Apache-SSL</A - 0x0d10: 3e20 686f 6d65 2073 6974 652e 3c2f 4c49 >.home.site.</LI - 0x0d20: 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048 >..<LI>.The.<A.H - 0x0d30: 5245 463d 2268 7474 703a 2f2f 7065 726c REF="http://perl - 0x0d40: 2e61 7061 6368 652e 6f72 672f 223e 6d6f .apache.org/">mo - 0x0d50: 6420 7065 726c 3c2f 413e 2068 6f6d 6520 d.perl</A>.home. - 0x0d60: 7369 7465 2e3c 2f4c 493e 0a0a 3c4c 493e site.</LI>..<LI> - 0x0d70: 0a54 6865 203c 4120 4852 4546 3d22 6874 .The.<A.HREF="ht - 0x0d80: 7470 3a2f 2f77 7777 2e61 7061 6368 6577 tp://www.apachew - 0x0d90: 6565 6b2e 636f 6d2f 223e 4170 6163 6865 eek.com/">Apache - 0x0da0: 5765 656b 3c2f 413e 206e 6577 736c 6574 Week</A>.newslet - 0x0db0: 7465 722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a ter.</LI>..<LI>. - 0x0dc0: 5468 6520 3c41 2048 5245 463d 2268 7474 The.<A.HREF="htt - 0x0dd0: 703a 2f2f 7777 772e 6465 6269 616e 2e6f p://www.debian.o - 0x0de0: 7267 2f64 6f63 2f22 3e44 6562 6961 6e20 rg/doc/">Debian. - 0x0df0: 5072 6f6a 6563 740a 446f 6375 6d65 6e74 Project.Document - 0x0e00: 6174 696f 6e3c 2f41 3e20 7768 6963 6820 ation</A>.which. - 0x0e10: 636f 6e74 6169 6e73 2048 4f57 544f 732c contains.HOWTOs, - 0x0e20: 2046 4151 732c 2061 6e64 2073 6f66 7477 .FAQs,.and.softw - 0x0e30: 6172 6520 7570 6461 7465 732e 3c2f 4c49 are.updates.</LI - 0x0e40: 3e0a 3c2f 554c 3e0a 0a3c 503e 596f 7520 >.</UL>..<P>You. - 0x0e50: 6361 6e20 616c 736f 2063 6f6e 7375 6c74 can.also.consult - 0x0e60: 2074 6865 206c 6973 7420 6f66 203c 4120 .the.list.of.<A. - 0x0e70: 4852 4546 3d22 6874 7470 3a2f 2f77 7777 HREF="http://www - 0x0e80: 2e62 6f75 7465 6c6c 2e63 6f6d 2f66 6171 .boutell.com/faq - 0x0e90: 2f22 3e57 6f72 6c64 0a57 6964 6520 5765 /">World.Wide.We - 0x0ea0: 6220 4672 6571 7565 6e74 6c79 2041 736b b.Frequently.Ask - 0x0eb0: 6564 2051 7565 7374 696f 6e73 3c2f 413e ed.Questions</A> - 0x0ec0: 2066 6f72 2069 6e66 6f72 6d61 7469 6f6e .for.information - 0x0ed0: 2e0a 0a3c 4832 3e4c 6574 206f 7468 6572 ...<H2>Let.other - 0x0ee0: 2070 656f 706c 6520 6b6e 6f77 2061 626f .people.know.abo - 0x0ef0: 7574 2074 6869 7320 7365 7276 6572 3c2f ut.this.server</ - 0x0f00: 4832 3e0a 0a3c 4120 4852 4546 3d22 6874 H2>..<A.HREF="ht - 0x0f10: 7470 3a2f 2f6e 6574 6372 6166 742e 636f tp://netcraft.co - 0x0f20: 6d2f 223e 4e65 7463 7261 6674 3c2f 413e m/">Netcraft</A> - 0x0f30: 2070 726f 7669 6465 7320 616e 2069 6e74 .provides.an.int - 0x0f40: 6572 6573 7469 6e67 2066 7265 650a 7365 eresting.free.se - 0x0f50: 7276 6963 6520 666f 7220 7765 6220 7369 rvice.for.web.si - 0x0f60: 7465 206d 6f6e 6974 6f72 696e 6720 616e te.monitoring.an - 0x0f70: 6420 7374 6174 6973 7469 6320 636f 6c6c d.statistic.coll - 0x0f80: 6563 7469 6f6e 2e0a 596f 7520 6361 6e20 ection..You.can. - 0x0f90: 6c65 7420 7468 656d 206b 6e6f 7720 6162 let.them.know.ab - 0x0fa0: 6f75 7420 796f 7572 2073 6572 7665 7220 out.your.server. - 0x0fb0: 7573 696e 6720 7468 6569 720a 3c41 2048 using.their.<A.H - 0x0fc0: 5245 463d 2268 7474 703a 2f2f 7570 7469 REF="http://upti - 0x0fd0: 6d65 2e6e 6574 6372 6166 742e 636f 6d2f me.netcraft.com/ - 0x0fe0: 223e 696e 7465 7266 6163 653c 2f41 3e2e ">interface</A>. - 0x0ff0: 0a45 6e61 626c 696e 6720 7468 6520 6d6f .Enabling.the.mo - 0x1000: 6e69 746f 7269 6e67 206f 6620 796f 7572 nitoring.of.your - 0x1010: 2073 6572 7665 7220 7769 6c6c 2070 726f .server.will.pro - 0x1020: 7669 6465 2061 2062 6574 7465 7220 676c vide.a.better.gl - 0x1030: 6f62 616c 206f 7665 7276 6965 770a 6f66 obal.overview.of - 0x1040: 2077 686f 2069 7320 7573 696e 6720 7768 .who.is.using.wh - 0x1050: 6174 2061 6e64 2077 6865 7265 2c20 616e at.and.where,.an - 0x1060: 6420 6974 2077 6f75 6c64 2067 6976 6520 d.it.would.give. - 0x1070: 4465 6269 616e 2061 2062 6574 7465 720a Debian.a.better. - 0x1080: 6f76 6572 7669 6577 206f 6620 7468 6520 overview.of.the. - 0x1090: 6170 6163 6865 2070 6163 6b61 6765 2075 apache.package.u - 0x10a0: 7361 6765 2e0a 0a3c 4832 3e41 626f 7574 sage...<H2>About - 0x10b0: 2074 6869 7320 7061 6765 3c2f 4832 3e0a .this.page</H2>. - 0x10c0: 0a3c 494d 4720 414c 4947 4e3d 2272 6967 .<IMG.ALIGN="rig - 0x10d0: 6874 2220 414c 543d 2222 2048 4549 4748 ht".ALT="".HEIGH - 0x10e0: 543d 2232 3437 2220 5749 4454 483d 2232 T="247".WIDTH="2 - 0x10f0: 3738 2220 5352 433d 2269 636f 6e73 2f6a 78".SRC="icons/j - 0x1100: 6865 3036 312e 706e 6722 3e0a 0a3c 503e he061.png">..<P> - 0x1110: 5468 6973 2069 7320 6120 706c 6163 6568 This.is.a.placeh - 0x1120: 6f6c 6465 7220 7061 6765 2069 6e73 7461 older.page.insta - 0x1130: 6c6c 6564 2062 7920 7468 6520 3c41 0a48 lled.by.the.<A.H - 0x1140: 5245 463d 2268 7474 703a 2f2f 7777 772e REF="http://www. - 0x1150: 6465 6269 616e 2e6f 7267 2f22 3e44 6562 debian.org/">Deb - 0x1160: 6961 6e3c 2f41 3e0a 7265 6c65 6173 6520 ian</A>.release. - 0x1170: 6f66 2074 6865 2061 7061 6368 6520 5765 of.the.apache.We - 0x1180: 6220 7365 7276 6572 2070 6163 6b61 6765 b.server.package - 0x1190: 2e0a 0a3c 503e 5468 6973 2063 6f6d 7075 ...<P>This.compu - 0x11a0: 7465 7220 6861 7320 696e 7374 616c 6c65 ter.has.installe - 0x11b0: 6420 7468 6520 4465 6269 616e 2047 4e55 d.the.Debian.GNU - 0x11c0: 2f4c 696e 7578 206f 7065 7261 7469 6e67 /Linux.operating - 0x11d0: 2073 7973 7465 6d2c 0a62 7574 2069 7420 .system,.but.it. - 0x11e0: 6861 7320 3c73 7472 6f6e 673e 6e6f 7468 has.<strong>noth - 0x11f0: 696e 6720 746f 2064 6f20 7769 7468 2074 ing.to.do.with.t - 0x1200: 6865 2044 6562 6961 6e0a 5072 6f6a 6563 he.Debian.Projec - 0x1210: 743c 2f73 7472 6f6e 673e 2e20 506c 6561 t</strong>..Plea - 0x1220: 7365 2064 6f20 3c73 7472 6f6e 673e 6e6f se.do.<strong>no - 0x1230: 743c 2f73 7472 6f6e 673e 2063 6f6e 7461 t</strong>.conta - 0x1240: 6374 2074 6865 2044 6562 6961 6e0a 5072 ct.the.Debian.Pr - 0x1250: 6f6a 6563 7420 6162 6f75 7420 6974 2e3c oject.about.it.< - 0x1260: 2f50 3e0a 0a3c 503e 4966 2079 6f75 2066 /P>..<P>If.you.f - 0x1270: 696e 6420 6120 6275 6720 696e 2074 6869 ind.a.bug.in.thi - 0x1280: 7320 6170 6163 6865 2070 6163 6b61 6765 s.apache.package - 0x1290: 2c20 6f72 2069 6e20 4170 6163 6865 2069 ,.or.in.Apache.i - 0x12a0: 7473 656c 662c 0a70 6c65 6173 6520 6669 tself,.please.fi - 0x12b0: 6c65 2061 2062 7567 2072 6570 6f72 7420 le.a.bug.report. - 0x12c0: 6f6e 2069 742e 2020 496e 7374 7275 6374 on.it...Instruct - 0x12d0: 696f 6e73 206f 6e20 646f 696e 6720 7468 ions.on.doing.th - 0x12e0: 6973 2c20 616e 6420 7468 650a 6c69 7374 is,.and.the.list - 0x12f0: 206f 6620 3c41 2048 5245 463d 2268 7474 .of.<A.HREF="htt - 0x1300: 703a 2f2f 6275 6773 2e64 6562 6961 6e2e p://bugs.debian. - 0x1310: 6f72 672f 7372 633a 6170 6163 6865 223e org/src:apache"> - 0x1320: 6b6e 6f77 6e20 6275 6773 3c2f 413e 206f known.bugs</A>.o - 0x1330: 6620 7468 6973 0a70 6163 6b61 6765 2c20 f.this.package,. - 0x1340: 6361 6e20 6265 2066 6f75 6e64 2069 6e20 can.be.found.in. - 0x1350: 7468 6520 0a3c 4120 4852 4546 3d22 6874 the..<A.HREF="ht - 0x1360: 7470 3a2f 2f77 7777 2e64 6562 6961 6e2e tp://www.debian. - 0x1370: 6f72 672f 4275 6773 2f52 6570 6f72 7469 org/Bugs/Reporti - 0x1380: 6e67 223e 4465 6269 616e 2042 7567 2054 ng">Debian.Bug.T - 0x1390: 7261 636b 696e 6720 5379 7374 656d 3c2f racking.System</ - 0x13a0: 413e 2e0a 0a3c 503e 5468 616e 6b73 2066 A>...<P>Thanks.f - 0x13b0: 6f72 2075 7369 6e67 2074 6869 7320 7061 or.using.this.pa - 0x13c0: 636b 6167 652c 2061 6e64 2063 6f6e 6772 ckage,.and.congr - 0x13d0: 6174 756c 6174 696f 6e73 2066 6f72 2079 atulations.for.y - 0x13e0: 6f75 7220 6368 6f69 6365 206f 660a 6120 our.choice.of.a. - 0x13f0: 4465 6269 616e 2073 7973 7465 6d21 3c2f Debian.system!</ - 0x1400: 503e 0a0a 3c44 4956 2061 6c69 676e 3d22 P>..<DIV.align=" - 0x1410: 6365 6e74 6572 223e 0a3c 6120 6872 6566 center">.<a.href - 0x1420: 3d22 6874 7470 3a2f 2f77 7777 2e64 6562 ="http://www.deb - 0x1430: 6961 6e2e 6f72 672f 223e 0a3c 494d 4720 ian.org/">.<IMG. - 0x1440: 616c 6967 6e3d 226d 6964 646c 6522 2068 align="middle".h - 0x1450: 6569 6768 743d 2233 3022 2077 6964 7468 eight="30".width - 0x1460: 3d22 3235 2220 7372 633d 2269 636f 6e73 ="25".src="icons - 0x1470: 2f64 6562 6961 6e2f 6f70 656e 6c6f 676f /debian/openlogo - 0x1480: 2d32 352e 6a70 6722 2061 6c74 3d22 4465 -25.jpg".alt="De - 0x1490: 6269 616e 223e 0a3c 2f61 3e0a 3c61 2068 bian">.</a>.<a.h - 0x14a0: 7265 663d 2268 7474 703a 2f2f 7777 772e ref="http://www. - 0x14b0: 6170 6163 6865 2e6f 7267 2f22 3e0a 3c49 apache.org/">.<I - 0x14c0: 4d47 2061 6c69 676e 3d22 6d69 6464 6c65 MG.align="middle - 0x14d0: 2220 6865 6967 6874 3d22 3332 2220 7769 ".height="32".wi - 0x14e0: 6474 683d 2232 3539 2220 7372 633d 2269 dth="259".src="i - 0x14f0: 636f 6e73 2f61 7061 6368 655f 7062 2e70 cons/apache_pb.p - 0x1500: 6e67 2220 616c 743d 2241 7061 6368 6522 ng".alt="Apache" - 0x1510: 3e0a 3c2f 613e 0a3c 2f44 4956 3e0a 0a3c >.</a>.</DIV>..< - 0x1520: 212d 2d0a 2020 5468 6973 2070 6167 6520 !--...This.page. - 0x1530: 7761 7320 696e 6974 6961 6c6c 7920 6372 was.initially.cr - 0x1540: 6561 7465 6420 6279 204a 6f68 6e69 6520 eated.by.Johnie. - 0x1550: 496e 6772 616d 2028 6874 7470 3a2f 2f6e Ingram.(http://n - 0x1560: 6574 676f 642e 6e65 742f 290a 2020 4974 etgod.net/)...It - 0x1570: 2077 6173 206c 6174 6572 2065 6469 7465 .was.later.edite - 0x1580: 6420 6279 204d 6174 7468 6577 2057 696c d.by.Matthew.Wil - 0x1590: 636f 7820 616e 6420 4a6f 7369 7020 526f cox.and.Josip.Ro - 0x15a0: 6469 6e2e 0a20 204c 6173 7420 6d6f 6469 din....Last.modi - 0x15b0: 6669 6564 3a20 2444 6174 653a 2032 3030 fied:.$Date:.200 - 0x15c0: 342f 3036 2f32 3020 3135 3a33 333a 3537 4/06/20.15:33:57 - 0x15d0: 2024 2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44 .$....-->..</BOD - 0x15e0: 593e 0a3c 2f48 544d 4c3e 0a Y>.</HTML>. -20:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5560 win 12383 <nop,nop,timestamp 1306300953 1306300953> - 0x0000: 4500 0034 1b6e 4000 4006 2154 7f00 0001 E..4.n@.@.!T.... - 0x0010: 7f00 0001 da70 0050 3758 8a49 377a a3a9 .....p.P7X.I7z.. - 0x0020: 8010 305f 10ea 0000 0101 080a 4ddc 9219 ..0_........M... - 0x0030: 4ddc 9219 M... -20:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: F 203:203(0) ack 5560 win 12383 <nop,nop,timestamp 1306302241 1306300953> - 0x0000: 4500 0034 1b70 4000 4006 2152 7f00 0001 E..4.p@.@.!R.... - 0x0010: 7f00 0001 da70 0050 3758 8a49 377a a3a9 .....p.P7X.I7z.. - 0x0020: 8011 305f 0be1 0000 0101 080a 4ddc 9721 ..0_........M..! - 0x0030: 4ddc 9219 M... -20:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: F 5560:5560(0) ack 204 win 8192 <nop,nop,timestamp 1306302243 1306302241> - 0x0000: 4500 0034 1fe8 4000 4006 1cda 7f00 0001 E..4..@.@....... - 0x0010: 7f00 0001 0050 da70 377a a3a9 3758 8a4a .....P.p7z..7X.J - 0x0020: 8011 2000 1735 0000 0101 080a 4ddc 9723 .....5......M..# - 0x0030: 4ddc 9721 M..! -20:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5561 win 12383 <nop,nop,timestamp 1306302243 1306302243> - 0x0000: 4500 0034 1b72 4000 4006 2150 7f00 0001 E..4.r@.@.!P.... - 0x0010: 7f00 0001 da70 0050 3758 8a4a 377a a3aa .....p.P7X.J7z.. - 0x0020: 8010 305f 06d4 0000 0101 080a 4ddc 9723 ..0_........M..# - 0x0030: 4ddc 9723 M..# diff --git a/contrib/tcpdump/tests/print-capXX.out b/contrib/tcpdump/tests/print-capXX.out deleted file mode 100644 index 7c57e0cfd6d31..0000000000000 --- a/contrib/tcpdump/tests/print-capXX.out +++ /dev/null @@ -1,419 +0,0 @@ -20:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: S 928549246:928549246(0) win 32767 <mss 16396,sackOK,timestamp 1306300950 0,nop,wscale 2> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 003c 1b68 4000 4006 2152 7f00 0001 7f00 .<.h@.@.!R...... - 0x0020: 0001 da70 0050 3758 897e 0000 0000 a002 ...p.P7X.~...... - 0x0030: 7fff 1421 0000 0204 400c 0402 080a 4ddc ...!....@.....M. - 0x0040: 9216 0000 0000 0103 0302 .......... -20:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: S 930778609:930778609(0) ack 928549247 win 32767 <mss 16396,sackOK,timestamp 1306300950 1306300950,nop,wscale 2> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 003c 0000 4000 4006 3cba 7f00 0001 7f00 .<..@.@.<....... - 0x0020: 0001 0050 da70 377a 8df1 3758 897f a012 ...P.p7z..7X.... - 0x0030: 7fff 6eb1 0000 0204 400c 0402 080a 4ddc ..n.....@.....M. - 0x0040: 9216 4ddc 9216 0103 0302 ..M....... -20:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 1 win 8192 <nop,nop,timestamp 1306300950 1306300950> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 0034 1b6a 4000 4006 2158 7f00 0001 7f00 .4.j@.@.!X...... - 0x0020: 0001 da70 0050 3758 897f 377a 8df2 8010 ...p.P7X..7z.... - 0x0030: 2000 37d0 0000 0101 080a 4ddc 9216 4ddc ..7.......M...M. - 0x0040: 9216 .. -20:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: P 1:203(202) ack 1 win 8192 <nop,nop,timestamp 1306300951 1306300950> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 00fe 1b6c 4000 4006 208c 7f00 0001 7f00 ...l@.@......... - 0x0020: 0001 da70 0050 3758 897f 377a 8df2 8018 ...p.P7X..7z.... - 0x0030: 2000 fef2 0000 0101 080a 4ddc 9217 4ddc ..........M...M. - 0x0040: 9216 4745 5420 2f20 4854 5450 2f31 2e31 ..GET./.HTTP/1.1 - 0x0050: 0d0a 486f 7374 3a20 6c6f 6361 6c68 6f73 ..Host:.localhos - 0x0060: 740d 0a55 7365 722d 4167 656e 743a 2045 t..User-Agent:.E - 0x0070: 4c69 6e6b 732f 302e 3130 2e34 2d37 2d64 Links/0.10.4-7-d - 0x0080: 6562 6961 6e20 2874 6578 746d 6f64 653b ebian.(textmode; - 0x0090: 204c 696e 7578 2032 2e36 2e31 312d 312d .Linux.2.6.11-1- - 0x00a0: 3638 362d 736d 7020 6936 3836 3b20 3133 686-smp.i686;.13 - 0x00b0: 3278 3536 2d32 290d 0a41 6363 6570 743a 2x56-2)..Accept: - 0x00c0: 202a 2f2a 0d0a 4163 6365 7074 2d45 6e63 .*/*..Accept-Enc - 0x00d0: 6f64 696e 673a 2067 7a69 700d 0a41 6363 oding:.gzip..Acc - 0x00e0: 6570 742d 4c61 6e67 7561 6765 3a20 656e ept-Language:.en - 0x00f0: 0d0a 436f 6e6e 6563 7469 6f6e 3a20 4b65 ..Connection:.Ke - 0x0100: 6570 2d41 6c69 7665 0d0a 0d0a ep-Alive.... -20:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: . ack 203 win 8192 <nop,nop,timestamp 1306300952 1306300951> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 0034 1fe4 4000 4006 1cde 7f00 0001 7f00 .4..@.@......... - 0x0020: 0001 0050 da70 377a 8df2 3758 8a49 8010 ...P.p7z..7X.I.. - 0x0030: 2000 3703 0000 0101 080a 4ddc 9218 4ddc ..7.......M...M. - 0x0040: 9217 .. -20:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: P 1:5560(5559) ack 203 win 8192 <nop,nop,timestamp 1306300953 1306300951> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 15eb 1fe6 4000 4006 0725 7f00 0001 7f00 ....@.@..%...... - 0x0020: 0001 0050 da70 377a 8df2 3758 8a49 8018 ...P.p7z..7X.I.. - 0x0030: 2000 13e0 0000 0101 080a 4ddc 9219 4ddc ..........M...M. - 0x0040: 9217 4854 5450 2f31 2e31 2032 3030 204f ..HTTP/1.1.200.O - 0x0050: 4b0d 0a44 6174 653a 2057 6564 2c20 3036 K..Date:.Wed,.06 - 0x0060: 204a 756c 2032 3030 3520 3033 3a35 373a .Jul.2005.03:57: - 0x0070: 3335 2047 4d54 0d0a 5365 7276 6572 3a20 35.GMT..Server:. - 0x0080: 4170 6163 6865 2f31 2e33 2e33 330d 0a4c Apache/1.3.33..L - 0x0090: 6173 742d 4d6f 6469 6669 6564 3a20 5375 ast-Modified:.Su - 0x00a0: 6e2c 2031 3520 4175 6720 3230 3034 2030 n,.15.Aug.2004.0 - 0x00b0: 303a 3433 3a34 3120 474d 540d 0a45 5461 0:43:41.GMT..ETa - 0x00c0: 673a 2022 3665 3830 6630 2d31 3438 612d g:."6e80f0-148a- - 0x00d0: 3431 3165 6231 6264 220d 0a41 6363 6570 411eb1bd"..Accep - 0x00e0: 742d 5261 6e67 6573 3a20 6279 7465 730d t-Ranges:.bytes. - 0x00f0: 0a43 6f6e 7465 6e74 2d4c 656e 6774 683a .Content-Length: - 0x0100: 2035 3235 380d 0a4b 6565 702d 416c 6976 .5258..Keep-Aliv - 0x0110: 653a 2074 696d 656f 7574 3d31 352c 206d e:.timeout=15,.m - 0x0120: 6178 3d31 3030 0d0a 436f 6e6e 6563 7469 ax=100..Connecti - 0x0130: 6f6e 3a20 4b65 6570 2d41 6c69 7665 0d0a on:.Keep-Alive.. - 0x0140: 436f 6e74 656e 742d 5479 7065 3a20 7465 Content-Type:.te - 0x0150: 7874 2f68 746d 6c3b 2063 6861 7273 6574 xt/html;.charset - 0x0160: 3d69 736f 2d38 3835 392d 310d 0a0d 0a3c =iso-8859-1....< - 0x0170: 2144 4f43 5459 5045 2048 544d 4c20 5055 !DOCTYPE.HTML.PU - 0x0180: 424c 4943 2022 2d2f 2f57 3343 2f2f 4454 BLIC."-//W3C//DT - 0x0190: 4420 4854 4d4c 2034 2e30 3120 5472 616e D.HTML.4.01.Tran - 0x01a0: 7369 7469 6f6e 616c 2f2f 454e 223e 0a3c sitional//EN">.< - 0x01b0: 4854 4d4c 3e0a 3c48 4541 443e 0a20 2020 HTML>.<HEAD>.... - 0x01c0: 3c4d 4554 4120 4854 5450 2d45 5155 4956 <META.HTTP-EQUIV - 0x01d0: 3d22 436f 6e74 656e 742d 5479 7065 2220 ="Content-Type". - 0x01e0: 434f 4e54 454e 543d 2274 6578 742f 6874 CONTENT="text/ht - 0x01f0: 6d6c 3b20 6368 6172 7365 743d 6973 6f2d ml;.charset=iso- - 0x0200: 3838 3539 2d31 223e 0a20 2020 3c4d 4554 8859-1">....<MET - 0x0210: 4120 4e41 4d45 3d22 4465 7363 7269 7074 A.NAME="Descript - 0x0220: 696f 6e22 2043 4f4e 5445 4e54 3d22 5468 ion".CONTENT="Th - 0x0230: 6520 696e 6974 6961 6c20 696e 7374 616c e.initial.instal - 0x0240: 6c61 7469 6f6e 206f 6620 4465 6269 616e lation.of.Debian - 0x0250: 2061 7061 6368 652e 223e 0a20 2020 3c54 .apache.">....<T - 0x0260: 4954 4c45 3e50 6c61 6365 686f 6c64 6572 ITLE>Placeholder - 0x0270: 2070 6167 653c 2f54 4954 4c45 3e0a 3c2f .page</TITLE>.</ - 0x0280: 4845 4144 3e0a 3c42 4f44 5920 5445 5854 HEAD>.<BODY.TEXT - 0x0290: 3d22 2330 3030 3030 3022 2042 4743 4f4c ="#000000".BGCOL - 0x02a0: 4f52 3d22 2346 4646 4646 4622 204c 494e OR="#FFFFFF".LIN - 0x02b0: 4b3d 2223 3030 3030 4546 2220 564c 494e K="#0000EF".VLIN - 0x02c0: 4b3d 2223 3535 3138 3841 2220 414c 494e K="#55188A".ALIN - 0x02d0: 4b3d 2223 4646 3030 3030 223e 0a0a 3c48 K="#FF0000">..<H - 0x02e0: 313e 506c 6163 6568 6f6c 6465 7220 7061 1>Placeholder.pa - 0x02f0: 6765 3c2f 4831 3e0a 3c48 323e 4966 2079 ge</H1>.<H2>If.y - 0x0300: 6f75 2061 7265 206a 7573 7420 6272 6f77 ou.are.just.brow - 0x0310: 7369 6e67 2074 6865 2077 6562 3c2f 6832 sing.the.web</h2 - 0x0320: 3e0a 0a3c 503e 5468 6520 6f77 6e65 7220 >..<P>The.owner. - 0x0330: 6f66 2074 6869 7320 7765 6220 7369 7465 of.this.web.site - 0x0340: 2068 6173 206e 6f74 2070 7574 2075 7020 .has.not.put.up. - 0x0350: 616e 7920 7765 6220 7061 6765 7320 7965 any.web.pages.ye - 0x0360: 742e 0a50 6c65 6173 6520 636f 6d65 2062 t..Please.come.b - 0x0370: 6163 6b20 6c61 7465 722e 3c2f 503e 0a0a ack.later.</P>.. - 0x0380: 3c50 3e3c 534d 414c 4c3e 3c43 4954 453e <P><SMALL><CITE> - 0x0390: 4d6f 7665 2061 6c6f 6e67 2c20 6e6f 7468 Move.along,.noth - 0x03a0: 696e 6720 746f 2073 6565 2068 6572 652e ing.to.see.here. - 0x03b0: 2e2e 3c2f 4349 5445 3e20 3a2d 293c 2f53 ..</CITE>.:-)</S - 0x03c0: 4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832 3e49 MALL></P>..<H2>I - 0x03d0: 6620 796f 7520 6172 6520 7472 7969 6e67 f.you.are.trying - 0x03e0: 2074 6f20 6c6f 6361 7465 2074 6865 2061 .to.locate.the.a - 0x03f0: 646d 696e 6973 7472 6174 6f72 206f 6620 dministrator.of. - 0x0400: 7468 6973 206d 6163 6869 6e65 3c2f 4832 this.machine</H2 - 0x0410: 3e0a 0a3c 503e 4966 2079 6f75 2077 616e >..<P>If.you.wan - 0x0420: 7420 746f 2072 6570 6f72 7420 736f 6d65 t.to.report.some - 0x0430: 7468 696e 6720 6162 6f75 7420 7468 6973 thing.about.this - 0x0440: 2068 6f73 7427 7320 6265 6861 7669 6f72 .host's.behavior - 0x0450: 2c20 706c 6561 7365 0a63 6f6e 7461 6374 ,.please.contact - 0x0460: 2074 6865 2049 6e74 6572 6e65 7420 5365 .the.Internet.Se - 0x0470: 7276 6963 6520 5072 6f76 6964 6572 2028 rvice.Provider.( - 0x0480: 4953 5029 2069 6e76 6f6c 7665 6420 6469 ISP).involved.di - 0x0490: 7265 6374 6c79 2e3c 2f50 3e0a 0a3c 503e rectly.</P>..<P> - 0x04a0: 5365 6520 7468 6520 3c41 2068 7265 663d See.the.<A.href= - 0x04b0: 2268 7474 703a 2f2f 7777 772e 6162 7573 "http://www.abus - 0x04c0: 652e 6e65 742f 223e 4e65 7477 6f72 6b20 e.net/">Network. - 0x04d0: 4162 7573 650a 436c 6561 7269 6e67 686f Abuse.Clearingho - 0x04e0: 7573 653c 2f41 3e20 666f 7220 686f 7720 use</A>.for.how. - 0x04f0: 746f 2064 6f20 7468 6973 2e3c 2f50 3e0a to.do.this.</P>. - 0x0500: 0a3c 4832 3e49 6620 796f 7520 6172 6520 .<H2>If.you.are. - 0x0510: 7468 6520 6164 6d69 6e69 7374 7261 746f the.administrato - 0x0520: 7220 6f66 2074 6869 7320 6d61 6368 696e r.of.this.machin - 0x0530: 653c 2f48 323e 0a0a 3c50 3e54 6865 2069 e</H2>..<P>The.i - 0x0540: 6e69 7469 616c 2069 6e73 7461 6c6c 6174 nitial.installat - 0x0550: 696f 6e20 6f66 203c 4120 6872 6566 3d22 ion.of.<A.href=" - 0x0560: 6874 7470 3a2f 2f77 7777 2e64 6562 6961 http://www.debia - 0x0570: 6e2e 6f72 672f 223e 4465 6269 616e 2773 n.org/">Debian's - 0x0580: 0a61 7061 6368 653c 2f41 3e20 7765 6220 .apache</A>.web. - 0x0590: 7365 7276 6572 2070 6163 6b61 6765 2077 server.package.w - 0x05a0: 6173 2073 7563 6365 7373 6675 6c2e 3c2f as.successful.</ - 0x05b0: 503e 0a0a 3c50 3e3c 5354 524f 4e47 3e59 P>..<P><STRONG>Y - 0x05c0: 6f75 2073 686f 756c 6420 7265 706c 6163 ou.should.replac - 0x05d0: 6520 7468 6973 2070 6167 6520 7769 7468 e.this.page.with - 0x05e0: 2079 6f75 7220 6f77 6e20 7765 6220 7061 .your.own.web.pa - 0x05f0: 6765 7320 6173 0a73 6f6f 6e20 6173 2070 ges.as.soon.as.p - 0x0600: 6f73 7369 626c 652e 3c2f 5354 524f 4e47 ossible.</STRONG - 0x0610: 3e3c 2f50 3e0a 0a3c 503e 556e 6c65 7373 ></P>..<P>Unless - 0x0620: 2079 6f75 2063 6861 6e67 6564 2069 7473 .you.changed.its - 0x0630: 2063 6f6e 6669 6775 7261 7469 6f6e 2c20 .configuration,. - 0x0640: 796f 7572 206e 6577 2073 6572 7665 7220 your.new.server. - 0x0650: 6973 2063 6f6e 6669 6775 7265 6420 6173 is.configured.as - 0x0660: 2066 6f6c 6c6f 7773 3a0a 3c55 4c3e 0a3c .follows:.<UL>.< - 0x0670: 4c49 3e0a 436f 6e66 6967 7572 6174 696f LI>.Configuratio - 0x0680: 6e20 6669 6c65 7320 6361 6e20 6265 2066 n.files.can.be.f - 0x0690: 6f75 6e64 2069 6e20 3c54 543e 2f65 7463 ound.in.<TT>/etc - 0x06a0: 2f61 7061 6368 653c 2f54 543e 2e3c 2f4c /apache</TT>.</L - 0x06b0: 493e 0a0a 3c4c 493e 0a54 6865 203c 5454 I>..<LI>.The.<TT - 0x06c0: 3e44 6f63 756d 656e 7452 6f6f 743c 2f54 >DocumentRoot</T - 0x06d0: 543e 2c20 7768 6963 6820 6973 2074 6865 T>,.which.is.the - 0x06e0: 2064 6972 6563 746f 7279 2075 6e64 6572 .directory.under - 0x06f0: 2077 6869 6368 2061 6c6c 2079 6f75 720a .which.all.your. - 0x0700: 4854 4d4c 2066 696c 6573 2073 686f 756c HTML.files.shoul - 0x0710: 6420 6578 6973 742c 2069 7320 7365 7420 d.exist,.is.set. - 0x0720: 746f 203c 5454 3e2f 7661 722f 7777 773c to.<TT>/var/www< - 0x0730: 2f54 543e 2e3c 2f4c 493e 0a0a 3c4c 493e /TT>.</LI>..<LI> - 0x0740: 0a43 4749 2073 6372 6970 7473 2061 7265 .CGI.scripts.are - 0x0750: 206c 6f6f 6b65 6420 666f 7220 696e 203c .looked.for.in.< - 0x0760: 5454 3e2f 7573 722f 6c69 622f 6367 692d TT>/usr/lib/cgi- - 0x0770: 6269 6e3c 2f54 543e 2c20 7768 6963 6820 bin</TT>,.which. - 0x0780: 6973 2077 6865 7265 0a44 6562 6961 6e20 is.where.Debian. - 0x0790: 7061 636b 6167 6573 2077 696c 6c20 706c packages.will.pl - 0x07a0: 6163 6520 7468 6569 7220 7363 7269 7074 ace.their.script - 0x07b0: 732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 4c6f s.</LI>..<LI>.Lo - 0x07c0: 6720 6669 6c65 7320 6172 6520 706c 6163 g.files.are.plac - 0x07d0: 6564 2069 6e20 3c54 543e 2f76 6172 2f6c ed.in.<TT>/var/l - 0x07e0: 6f67 2f61 7061 6368 653c 2f54 543e 2c20 og/apache</TT>,. - 0x07f0: 616e 6420 7769 6c6c 2062 6520 726f 7461 and.will.be.rota - 0x0800: 7465 640a 7765 656b 6c79 2e20 2054 6865 ted.weekly...The - 0x0810: 2066 7265 7175 656e 6379 206f 6620 726f .frequency.of.ro - 0x0820: 7461 7469 6f6e 2063 616e 2062 6520 6561 tation.can.be.ea - 0x0830: 7369 6c79 2063 6861 6e67 6564 2062 7920 sily.changed.by. - 0x0840: 6564 6974 696e 670a 3c54 543e 2f65 7463 editing.<TT>/etc - 0x0850: 2f6c 6f67 726f 7461 7465 2e64 2f61 7061 /logrotate.d/apa - 0x0860: 6368 653c 2f54 543e 2e3c 2f4c 493e 0a0a che</TT>.</LI>.. - 0x0870: 3c4c 493e 0a54 6865 2064 6566 6175 6c74 <LI>.The.default - 0x0880: 2064 6972 6563 746f 7279 2069 6e64 6578 .directory.index - 0x0890: 2069 7320 3c54 543e 696e 6465 782e 6874 .is.<TT>index.ht - 0x08a0: 6d6c 3c2f 5454 3e2c 206d 6561 6e69 6e67 ml</TT>,.meaning - 0x08b0: 2074 6861 7420 7265 7175 6573 7473 0a66 .that.requests.f - 0x08c0: 6f72 2061 2064 6972 6563 746f 7279 203c or.a.directory.< - 0x08d0: 5454 3e2f 666f 6f2f 6261 722f 3c2f 5454 TT>/foo/bar/</TT - 0x08e0: 3e20 7769 6c6c 2067 6976 6520 7468 6520 >.will.give.the. - 0x08f0: 636f 6e74 656e 7473 206f 6620 7468 6520 contents.of.the. - 0x0900: 6669 6c65 203c 5454 3e2f 7661 722f 7777 file.<TT>/var/ww - 0x0910: 772f 666f 6f2f 6261 722f 696e 6465 782e w/foo/bar/index. - 0x0920: 6874 6d6c 3c2f 5454 3e0a 6966 2069 7420 html</TT>.if.it. - 0x0930: 6578 6973 7473 2028 6173 7375 6d69 6e67 exists.(assuming - 0x0940: 2074 6861 7420 3c54 543e 2f76 6172 2f77 .that.<TT>/var/w - 0x0950: 7777 3c2f 5454 3e20 6973 2079 6f75 7220 ww</TT>.is.your. - 0x0960: 3c54 543e 446f 6375 6d65 6e74 526f 6f74 <TT>DocumentRoot - 0x0970: 3c2f 5454 3e29 2e3c 2f4c 493e 0a0a 3c4c </TT>).</LI>..<L - 0x0980: 493e 0a55 7365 7220 6469 7265 6374 6f72 I>.User.director - 0x0990: 6965 7320 6172 6520 656e 6162 6c65 642c ies.are.enabled, - 0x09a0: 2061 6e64 2075 7365 7220 646f 6375 6d65 .and.user.docume - 0x09b0: 6e74 7320 7769 6c6c 2062 6520 6c6f 6f6b nts.will.be.look - 0x09c0: 6564 2066 6f72 0a69 6e20 7468 6520 3c54 ed.for.in.the.<T - 0x09d0: 543e 7075 626c 6963 5f68 746d 6c3c 2f54 T>public_html</T - 0x09e0: 543e 2064 6972 6563 746f 7279 206f 6620 T>.directory.of. - 0x09f0: 7468 6520 7573 6572 7327 2068 6f6d 6573 the.users'.homes - 0x0a00: 2e20 2054 6865 7365 2064 6972 730a 7368 ...These.dirs.sh - 0x0a10: 6f75 6c64 2062 6520 756e 6465 7220 3c54 ould.be.under.<T - 0x0a20: 543e 2f68 6f6d 653c 2f54 543e 2c20 616e T>/home</TT>,.an - 0x0a30: 6420 7573 6572 7320 7769 6c6c 206e 6f74 d.users.will.not - 0x0a40: 2062 6520 6162 6c65 2074 6f20 7379 6d6c .be.able.to.syml - 0x0a50: 696e 6b0a 746f 2066 696c 6573 2074 6865 ink.to.files.the - 0x0a60: 7920 646f 6e27 7420 6f77 6e2e 3c2f 4c49 y.don't.own.</LI - 0x0a70: 3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074 6865 >..</UL>.All.the - 0x0a80: 2073 7461 6e64 6172 6420 6170 6163 6865 .standard.apache - 0x0a90: 206d 6f64 756c 6573 2061 7265 2061 7661 .modules.are.ava - 0x0aa0: 696c 6162 6c65 2077 6974 6820 7468 6973 ilable.with.this - 0x0ab0: 2072 656c 6561 7365 2061 6e64 2061 7265 .release.and.are - 0x0ac0: 0a6e 6f77 206d 616e 6167 6564 2077 6974 .now.managed.wit - 0x0ad0: 6820 6465 6263 6f6e 662e 2020 5479 7065 h.debconf...Type - 0x0ae0: 203c 5454 3e64 706b 672d 7265 636f 6e66 .<TT>dpkg-reconf - 0x0af0: 6967 7572 6520 6170 6163 6865 3c2f 5454 igure.apache</TT - 0x0b00: 3e20 746f 0a73 656c 6563 7420 7768 6963 >.to.select.whic - 0x0b10: 6820 6d6f 6475 6c65 7320 796f 7520 7761 h.modules.you.wa - 0x0b20: 6e74 2065 6e61 626c 6564 2e20 204d 616e nt.enabled...Man - 0x0b30: 7920 6f74 6865 7220 6d6f 6475 6c65 7320 y.other.modules. - 0x0b40: 6172 6520 6176 6169 6c61 626c 650a 7468 are.available.th - 0x0b50: 726f 7567 6820 7468 6520 4465 6269 616e rough.the.Debian - 0x0b60: 2070 6163 6b61 6765 2073 7973 7465 6d20 .package.system. - 0x0b70: 7769 7468 2074 6865 206e 616d 6573 203c with.the.names.< - 0x0b80: 5454 3e6c 6962 6170 6163 6865 2d6d 6f64 TT>libapache-mod - 0x0b90: 2d2a 3c2f 5454 3e2e 0a49 6620 796f 7520 -*</TT>..If.you. - 0x0ba0: 6e65 6564 2074 6f20 636f 6d70 696c 6520 need.to.compile. - 0x0bb0: 6120 6d6f 6475 6c65 2079 6f75 7273 656c a.module.yoursel - 0x0bc0: 662c 2079 6f75 2077 696c 6c20 6e65 6564 f,.you.will.need - 0x0bd0: 2074 6f20 696e 7374 616c 6c20 7468 650a .to.install.the. - 0x0be0: 3c54 543e 6170 6163 6865 2d64 6576 3c2f <TT>apache-dev</ - 0x0bf0: 5454 3e20 7061 636b 6167 652e 0a0a 3c50 TT>.package...<P - 0x0c00: 3e4d 6f72 6520 646f 6375 6d65 6e74 6174 >More.documentat - 0x0c10: 696f 6e20 6f6e 2041 7061 6368 6520 6361 ion.on.Apache.ca - 0x0c20: 6e20 6265 2066 6f75 6e64 206f 6e3a 0a3c n.be.found.on:.< - 0x0c30: 554c 3e0a 3c4c 493e 0a54 6865 203c 4120 UL>.<LI>.The.<A. - 0x0c40: 4852 4546 3d22 2f64 6f63 2f61 7061 6368 HREF="/doc/apach - 0x0c50: 652d 646f 632f 6d61 6e75 616c 2f22 3e41 e-doc/manual/">A - 0x0c60: 7061 6368 6520 646f 6375 6d65 6e74 6174 pache.documentat - 0x0c70: 696f 6e3c 2f41 3e20 7374 6f72 6564 206f ion</A>.stored.o - 0x0c80: 6e20 796f 7572 2073 6572 7665 722e 3c2f n.your.server.</ - 0x0c90: 4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 LI>..<LI>.The.<A - 0x0ca0: 2048 5245 463d 2268 7474 703a 2f2f 7777 .HREF="http://ww - 0x0cb0: 772e 6170 6163 6865 2e6f 7267 2f22 3e41 w.apache.org/">A - 0x0cc0: 7061 6368 6520 5072 6f6a 6563 743c 2f41 pache.Project</A - 0x0cd0: 3e20 686f 6d65 2073 6974 652e 3c2f 4c49 >.home.site.</LI - 0x0ce0: 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048 >..<LI>.The.<A.H - 0x0cf0: 5245 463d 2268 7474 703a 2f2f 7777 772e REF="http://www. - 0x0d00: 6170 6163 6865 2d73 736c 2e6f 7267 2f22 apache-ssl.org/" - 0x0d10: 3e41 7061 6368 652d 5353 4c3c 2f41 3e20 >Apache-SSL</A>. - 0x0d20: 686f 6d65 2073 6974 652e 3c2f 4c49 3e0a home.site.</LI>. - 0x0d30: 0a3c 4c49 3e0a 5468 6520 3c41 2048 5245 .<LI>.The.<A.HRE - 0x0d40: 463d 2268 7474 703a 2f2f 7065 726c 2e61 F="http://perl.a - 0x0d50: 7061 6368 652e 6f72 672f 223e 6d6f 6420 pache.org/">mod. - 0x0d60: 7065 726c 3c2f 413e 2068 6f6d 6520 7369 perl</A>.home.si - 0x0d70: 7465 2e3c 2f4c 493e 0a0a 3c4c 493e 0a54 te.</LI>..<LI>.T - 0x0d80: 6865 203c 4120 4852 4546 3d22 6874 7470 he.<A.HREF="http - 0x0d90: 3a2f 2f77 7777 2e61 7061 6368 6577 6565 ://www.apachewee - 0x0da0: 6b2e 636f 6d2f 223e 4170 6163 6865 5765 k.com/">ApacheWe - 0x0db0: 656b 3c2f 413e 206e 6577 736c 6574 7465 ek</A>.newslette - 0x0dc0: 722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468 r.</LI>..<LI>.Th - 0x0dd0: 6520 3c41 2048 5245 463d 2268 7474 703a e.<A.HREF="http: - 0x0de0: 2f2f 7777 772e 6465 6269 616e 2e6f 7267 //www.debian.org - 0x0df0: 2f64 6f63 2f22 3e44 6562 6961 6e20 5072 /doc/">Debian.Pr - 0x0e00: 6f6a 6563 740a 446f 6375 6d65 6e74 6174 oject.Documentat - 0x0e10: 696f 6e3c 2f41 3e20 7768 6963 6820 636f ion</A>.which.co - 0x0e20: 6e74 6169 6e73 2048 4f57 544f 732c 2046 ntains.HOWTOs,.F - 0x0e30: 4151 732c 2061 6e64 2073 6f66 7477 6172 AQs,.and.softwar - 0x0e40: 6520 7570 6461 7465 732e 3c2f 4c49 3e0a e.updates.</LI>. - 0x0e50: 3c2f 554c 3e0a 0a3c 503e 596f 7520 6361 </UL>..<P>You.ca - 0x0e60: 6e20 616c 736f 2063 6f6e 7375 6c74 2074 n.also.consult.t - 0x0e70: 6865 206c 6973 7420 6f66 203c 4120 4852 he.list.of.<A.HR - 0x0e80: 4546 3d22 6874 7470 3a2f 2f77 7777 2e62 EF="http://www.b - 0x0e90: 6f75 7465 6c6c 2e63 6f6d 2f66 6171 2f22 outell.com/faq/" - 0x0ea0: 3e57 6f72 6c64 0a57 6964 6520 5765 6220 >World.Wide.Web. - 0x0eb0: 4672 6571 7565 6e74 6c79 2041 736b 6564 Frequently.Asked - 0x0ec0: 2051 7565 7374 696f 6e73 3c2f 413e 2066 .Questions</A>.f - 0x0ed0: 6f72 2069 6e66 6f72 6d61 7469 6f6e 2e0a or.information.. - 0x0ee0: 0a3c 4832 3e4c 6574 206f 7468 6572 2070 .<H2>Let.other.p - 0x0ef0: 656f 706c 6520 6b6e 6f77 2061 626f 7574 eople.know.about - 0x0f00: 2074 6869 7320 7365 7276 6572 3c2f 4832 .this.server</H2 - 0x0f10: 3e0a 0a3c 4120 4852 4546 3d22 6874 7470 >..<A.HREF="http - 0x0f20: 3a2f 2f6e 6574 6372 6166 742e 636f 6d2f ://netcraft.com/ - 0x0f30: 223e 4e65 7463 7261 6674 3c2f 413e 2070 ">Netcraft</A>.p - 0x0f40: 726f 7669 6465 7320 616e 2069 6e74 6572 rovides.an.inter - 0x0f50: 6573 7469 6e67 2066 7265 650a 7365 7276 esting.free.serv - 0x0f60: 6963 6520 666f 7220 7765 6220 7369 7465 ice.for.web.site - 0x0f70: 206d 6f6e 6974 6f72 696e 6720 616e 6420 .monitoring.and. - 0x0f80: 7374 6174 6973 7469 6320 636f 6c6c 6563 statistic.collec - 0x0f90: 7469 6f6e 2e0a 596f 7520 6361 6e20 6c65 tion..You.can.le - 0x0fa0: 7420 7468 656d 206b 6e6f 7720 6162 6f75 t.them.know.abou - 0x0fb0: 7420 796f 7572 2073 6572 7665 7220 7573 t.your.server.us - 0x0fc0: 696e 6720 7468 6569 720a 3c41 2048 5245 ing.their.<A.HRE - 0x0fd0: 463d 2268 7474 703a 2f2f 7570 7469 6d65 F="http://uptime - 0x0fe0: 2e6e 6574 6372 6166 742e 636f 6d2f 223e .netcraft.com/"> - 0x0ff0: 696e 7465 7266 6163 653c 2f41 3e2e 0a45 interface</A>..E - 0x1000: 6e61 626c 696e 6720 7468 6520 6d6f 6e69 nabling.the.moni - 0x1010: 746f 7269 6e67 206f 6620 796f 7572 2073 toring.of.your.s - 0x1020: 6572 7665 7220 7769 6c6c 2070 726f 7669 erver.will.provi - 0x1030: 6465 2061 2062 6574 7465 7220 676c 6f62 de.a.better.glob - 0x1040: 616c 206f 7665 7276 6965 770a 6f66 2077 al.overview.of.w - 0x1050: 686f 2069 7320 7573 696e 6720 7768 6174 ho.is.using.what - 0x1060: 2061 6e64 2077 6865 7265 2c20 616e 6420 .and.where,.and. - 0x1070: 6974 2077 6f75 6c64 2067 6976 6520 4465 it.would.give.De - 0x1080: 6269 616e 2061 2062 6574 7465 720a 6f76 bian.a.better.ov - 0x1090: 6572 7669 6577 206f 6620 7468 6520 6170 erview.of.the.ap - 0x10a0: 6163 6865 2070 6163 6b61 6765 2075 7361 ache.package.usa - 0x10b0: 6765 2e0a 0a3c 4832 3e41 626f 7574 2074 ge...<H2>About.t - 0x10c0: 6869 7320 7061 6765 3c2f 4832 3e0a 0a3c his.page</H2>..< - 0x10d0: 494d 4720 414c 4947 4e3d 2272 6967 6874 IMG.ALIGN="right - 0x10e0: 2220 414c 543d 2222 2048 4549 4748 543d ".ALT="".HEIGHT= - 0x10f0: 2232 3437 2220 5749 4454 483d 2232 3738 "247".WIDTH="278 - 0x1100: 2220 5352 433d 2269 636f 6e73 2f6a 6865 ".SRC="icons/jhe - 0x1110: 3036 312e 706e 6722 3e0a 0a3c 503e 5468 061.png">..<P>Th - 0x1120: 6973 2069 7320 6120 706c 6163 6568 6f6c is.is.a.placehol - 0x1130: 6465 7220 7061 6765 2069 6e73 7461 6c6c der.page.install - 0x1140: 6564 2062 7920 7468 6520 3c41 0a48 5245 ed.by.the.<A.HRE - 0x1150: 463d 2268 7474 703a 2f2f 7777 772e 6465 F="http://www.de - 0x1160: 6269 616e 2e6f 7267 2f22 3e44 6562 6961 bian.org/">Debia - 0x1170: 6e3c 2f41 3e0a 7265 6c65 6173 6520 6f66 n</A>.release.of - 0x1180: 2074 6865 2061 7061 6368 6520 5765 6220 .the.apache.Web. - 0x1190: 7365 7276 6572 2070 6163 6b61 6765 2e0a server.package.. - 0x11a0: 0a3c 503e 5468 6973 2063 6f6d 7075 7465 .<P>This.compute - 0x11b0: 7220 6861 7320 696e 7374 616c 6c65 6420 r.has.installed. - 0x11c0: 7468 6520 4465 6269 616e 2047 4e55 2f4c the.Debian.GNU/L - 0x11d0: 696e 7578 206f 7065 7261 7469 6e67 2073 inux.operating.s - 0x11e0: 7973 7465 6d2c 0a62 7574 2069 7420 6861 ystem,.but.it.ha - 0x11f0: 7320 3c73 7472 6f6e 673e 6e6f 7468 696e s.<strong>nothin - 0x1200: 6720 746f 2064 6f20 7769 7468 2074 6865 g.to.do.with.the - 0x1210: 2044 6562 6961 6e0a 5072 6f6a 6563 743c .Debian.Project< - 0x1220: 2f73 7472 6f6e 673e 2e20 506c 6561 7365 /strong>..Please - 0x1230: 2064 6f20 3c73 7472 6f6e 673e 6e6f 743c .do.<strong>not< - 0x1240: 2f73 7472 6f6e 673e 2063 6f6e 7461 6374 /strong>.contact - 0x1250: 2074 6865 2044 6562 6961 6e0a 5072 6f6a .the.Debian.Proj - 0x1260: 6563 7420 6162 6f75 7420 6974 2e3c 2f50 ect.about.it.</P - 0x1270: 3e0a 0a3c 503e 4966 2079 6f75 2066 696e >..<P>If.you.fin - 0x1280: 6420 6120 6275 6720 696e 2074 6869 7320 d.a.bug.in.this. - 0x1290: 6170 6163 6865 2070 6163 6b61 6765 2c20 apache.package,. - 0x12a0: 6f72 2069 6e20 4170 6163 6865 2069 7473 or.in.Apache.its - 0x12b0: 656c 662c 0a70 6c65 6173 6520 6669 6c65 elf,.please.file - 0x12c0: 2061 2062 7567 2072 6570 6f72 7420 6f6e .a.bug.report.on - 0x12d0: 2069 742e 2020 496e 7374 7275 6374 696f .it...Instructio - 0x12e0: 6e73 206f 6e20 646f 696e 6720 7468 6973 ns.on.doing.this - 0x12f0: 2c20 616e 6420 7468 650a 6c69 7374 206f ,.and.the.list.o - 0x1300: 6620 3c41 2048 5245 463d 2268 7474 703a f.<A.HREF="http: - 0x1310: 2f2f 6275 6773 2e64 6562 6961 6e2e 6f72 //bugs.debian.or - 0x1320: 672f 7372 633a 6170 6163 6865 223e 6b6e g/src:apache">kn - 0x1330: 6f77 6e20 6275 6773 3c2f 413e 206f 6620 own.bugs</A>.of. - 0x1340: 7468 6973 0a70 6163 6b61 6765 2c20 6361 this.package,.ca - 0x1350: 6e20 6265 2066 6f75 6e64 2069 6e20 7468 n.be.found.in.th - 0x1360: 6520 0a3c 4120 4852 4546 3d22 6874 7470 e..<A.HREF="http - 0x1370: 3a2f 2f77 7777 2e64 6562 6961 6e2e 6f72 ://www.debian.or - 0x1380: 672f 4275 6773 2f52 6570 6f72 7469 6e67 g/Bugs/Reporting - 0x1390: 223e 4465 6269 616e 2042 7567 2054 7261 ">Debian.Bug.Tra - 0x13a0: 636b 696e 6720 5379 7374 656d 3c2f 413e cking.System</A> - 0x13b0: 2e0a 0a3c 503e 5468 616e 6b73 2066 6f72 ...<P>Thanks.for - 0x13c0: 2075 7369 6e67 2074 6869 7320 7061 636b .using.this.pack - 0x13d0: 6167 652c 2061 6e64 2063 6f6e 6772 6174 age,.and.congrat - 0x13e0: 756c 6174 696f 6e73 2066 6f72 2079 6f75 ulations.for.you - 0x13f0: 7220 6368 6f69 6365 206f 660a 6120 4465 r.choice.of.a.De - 0x1400: 6269 616e 2073 7973 7465 6d21 3c2f 503e bian.system!</P> - 0x1410: 0a0a 3c44 4956 2061 6c69 676e 3d22 6365 ..<DIV.align="ce - 0x1420: 6e74 6572 223e 0a3c 6120 6872 6566 3d22 nter">.<a.href=" - 0x1430: 6874 7470 3a2f 2f77 7777 2e64 6562 6961 http://www.debia - 0x1440: 6e2e 6f72 672f 223e 0a3c 494d 4720 616c n.org/">.<IMG.al - 0x1450: 6967 6e3d 226d 6964 646c 6522 2068 6569 ign="middle".hei - 0x1460: 6768 743d 2233 3022 2077 6964 7468 3d22 ght="30".width=" - 0x1470: 3235 2220 7372 633d 2269 636f 6e73 2f64 25".src="icons/d - 0x1480: 6562 6961 6e2f 6f70 656e 6c6f 676f 2d32 ebian/openlogo-2 - 0x1490: 352e 6a70 6722 2061 6c74 3d22 4465 6269 5.jpg".alt="Debi - 0x14a0: 616e 223e 0a3c 2f61 3e0a 3c61 2068 7265 an">.</a>.<a.hre - 0x14b0: 663d 2268 7474 703a 2f2f 7777 772e 6170 f="http://www.ap - 0x14c0: 6163 6865 2e6f 7267 2f22 3e0a 3c49 4d47 ache.org/">.<IMG - 0x14d0: 2061 6c69 676e 3d22 6d69 6464 6c65 2220 .align="middle". - 0x14e0: 6865 6967 6874 3d22 3332 2220 7769 6474 height="32".widt - 0x14f0: 683d 2232 3539 2220 7372 633d 2269 636f h="259".src="ico - 0x1500: 6e73 2f61 7061 6368 655f 7062 2e70 6e67 ns/apache_pb.png - 0x1510: 2220 616c 743d 2241 7061 6368 6522 3e0a ".alt="Apache">. - 0x1520: 3c2f 613e 0a3c 2f44 4956 3e0a 0a3c 212d </a>.</DIV>..<!- - 0x1530: 2d0a 2020 5468 6973 2070 6167 6520 7761 -...This.page.wa - 0x1540: 7320 696e 6974 6961 6c6c 7920 6372 6561 s.initially.crea - 0x1550: 7465 6420 6279 204a 6f68 6e69 6520 496e ted.by.Johnie.In - 0x1560: 6772 616d 2028 6874 7470 3a2f 2f6e 6574 gram.(http://net - 0x1570: 676f 642e 6e65 742f 290a 2020 4974 2077 god.net/)...It.w - 0x1580: 6173 206c 6174 6572 2065 6469 7465 6420 as.later.edited. - 0x1590: 6279 204d 6174 7468 6577 2057 696c 636f by.Matthew.Wilco - 0x15a0: 7820 616e 6420 4a6f 7369 7020 526f 6469 x.and.Josip.Rodi - 0x15b0: 6e2e 0a20 204c 6173 7420 6d6f 6469 6669 n....Last.modifi - 0x15c0: 6564 3a20 2444 6174 653a 2032 3030 342f ed:.$Date:.2004/ - 0x15d0: 3036 2f32 3020 3135 3a33 333a 3537 2024 06/20.15:33:57.$ - 0x15e0: 2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44 593e ....-->..</BODY> - 0x15f0: 0a3c 2f48 544d 4c3e 0a .</HTML>. -20:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5560 win 12383 <nop,nop,timestamp 1306300953 1306300953> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 0034 1b6e 4000 4006 2154 7f00 0001 7f00 .4.n@.@.!T...... - 0x0020: 0001 da70 0050 3758 8a49 377a a3a9 8010 ...p.P7X.I7z.... - 0x0030: 305f 10ea 0000 0101 080a 4ddc 9219 4ddc 0_........M...M. - 0x0040: 9219 .. -20:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: F 203:203(0) ack 5560 win 12383 <nop,nop,timestamp 1306302241 1306300953> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 0034 1b70 4000 4006 2152 7f00 0001 7f00 .4.p@.@.!R...... - 0x0020: 0001 da70 0050 3758 8a49 377a a3a9 8011 ...p.P7X.I7z.... - 0x0030: 305f 0be1 0000 0101 080a 4ddc 9721 4ddc 0_........M..!M. - 0x0040: 9219 .. -20:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: F 5560:5560(0) ack 204 win 8192 <nop,nop,timestamp 1306302243 1306302241> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 0034 1fe8 4000 4006 1cda 7f00 0001 7f00 .4..@.@......... - 0x0020: 0001 0050 da70 377a a3a9 3758 8a4a 8011 ...P.p7z..7X.J.. - 0x0030: 2000 1735 0000 0101 080a 4ddc 9723 4ddc ...5......M..#M. - 0x0040: 9721 .! -20:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5561 win 12383 <nop,nop,timestamp 1306302243 1306302243> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 0034 1b72 4000 4006 2150 7f00 0001 7f00 .4.r@.@.!P...... - 0x0020: 0001 da70 0050 3758 8a4a 377a a3aa 8010 ...p.P7X.J7z.... - 0x0030: 305f 06d4 0000 0101 080a 4ddc 9723 4ddc 0_........M..#M. - 0x0040: 9723 .# diff --git a/contrib/tcpdump/tests/print-flags.puu b/contrib/tcpdump/tests/print-flags.puu deleted file mode 100644 index bcd8b99268391..0000000000000 --- a/contrib/tcpdump/tests/print-flags.puu +++ /dev/null @@ -1,151 +0,0 @@ -begin 644 print-flags.pcap -MU,.RH0(`!````````````/__```!````KU;+0E)0#@!*````2@`````````` -M``````````@`10``/!MH0`!`!B%2?P```7\```':<`!0-UB)?@````"@`G__ -M%"$```($0`P$`@@*3=R2%@`````!`P,"KU;+0HI0#@!*````2@`````````` -M``````````@`10``/```0`!`!CRZ?P```7\```$`4-IP-WJ-\3=8B7^@$G__ -M;K$```($0`P$`@@*3=R2%DW<DA8!`P,"KU;+0K=0#@!"````0@`````````` -M``````````@`10``-!MJ0`!`!B%8?P```7\```':<`!0-UB)?S=ZC?*`$"`` -M-]````$!"`I-W)(63=R2%J]6RT*?50X`#`$```P!```````````````````( -M`$4``/X;;$``0`8@C'\```%_```!VG``4#=8B7\W>HWR@!@@`/[R```!`0@* -M3=R2%TW<DA9'150@+R!(5%10+S$N,0T*2&]S=#H@;&]C86QH;W-T#0I5<V5R -M+4%G96YT.B!%3&EN:W,O,"XQ,"XT+3<M9&5B:6%N("AT97AT;6]D93L@3&EN -M=7@@,BXV+C$Q+3$M-C@V+7-M<"!I-C@V.R`Q,S)X-38M,BD-"D%C8V5P=#H@ -M*B\J#0I!8V-E<'0M16YC;V1I;F<Z(&=Z:7`-"D%C8V5P="U,86YG=6%G93H@ -M96X-"D-O;FYE8W1I;VXZ($ME97`M06QI=F4-"@T*KU;+0KI9#@!"````0@`` -M``````````````````@`10``-!_D0`!`!AS>?P```7\```$`4-IP-WJ-\C=8 -MBDF`$"``-P,```$!"`I-W)(83=R2%Z]6RT*P7`X`^14``/D5```````````` -M```````(`$4`%>L?YD``0`8')7\```%_```!`%#:<#=ZC?(W6(I)@!@@`!/@ -M```!`0@*3=R2&4W<DA=(5%10+S$N,2`R,#`@3TL-"D1A=&4Z(%=E9"P@,#8@ -M2G5L(#(P,#4@,#,Z-3<Z,S4@1TU4#0I397)V97(Z($%P86-H92\Q+C,N,S,- -M"DQA<W0M36]D:69I960Z(%-U;BP@,34@075G(#(P,#0@,#`Z-#,Z-#$@1TU4 -M#0I%5&%G.B`B-F4X,&8P+3$T.&$M-#$Q96(Q8F0B#0I!8V-E<'0M4F%N9V5S -M.B!B>71E<PT*0V]N=&5N="U,96YG=&@Z(#4R-3@-"DME97`M06QI=F4Z('1I -M;65O=70],34L(&UA>#TQ,#`-"D-O;FYE8W1I;VXZ($ME97`M06QI=F4-"D-O -M;G1E;G0M5'EP93H@=&5X="]H=&UL.R!C:&%R<V5T/6ES;RTX.#4Y+3$-"@T* -M/"%$3T-465!%($A434P@4%5"3$E#("(M+R]7,T,O+T141"!(5$U,(#0N,#$@ -M5')A;G-I=&EO;F%L+R]%3B(^"CQ(5$U,/@H\2$5!1#X*("`@/$U%5$$@2%14 -M4"U%455)5CTB0V]N=&5N="U4>7!E(B!#3TY414Y4/2)T97AT+VAT;6P[(&-H -M87)S970]:7-O+3@X-3DM,2(^"B`@(#Q-151!($Y!344](D1E<V-R:7!T:6]N -M(B!#3TY414Y4/2)4:&4@:6YI=&EA;"!I;G-T86QL871I;VX@;V8@1&5B:6%N -M(&%P86-H92XB/@H@("`\5$E43$4^4&QA8V5H;VQD97(@<&%G93PO5$E43$4^ -M"CPO2$5!1#X*/$)/1%D@5$585#TB(S`P,#`P,"(@0D=#3TQ/4CTB(T9&1D9& -M1B(@3$E.2STB(S`P,#!%1B(@5DQ)3DL](B,U-3$X.$$B($%,24Y+/2(C1D8P -M,#`P(CX*"CQ(,3Y0;&%C96AO;&1E<B!P86=E/"](,3X*/$@R/DEF('EO=2!A -M<F4@:G5S="!B<F]W<VEN9R!T:&4@=V5B/"]H,CX*"CQ0/E1H92!O=VYE<B!O -M9B!T:&ES('=E8B!S:71E(&AA<R!N;W0@<'5T('5P(&%N>2!W96(@<&%G97,@ -M>65T+@I0;&5A<V4@8V]M92!B86-K(&QA=&5R+CPO4#X*"CQ0/CQ334%,3#X\ -M0TE413Y-;W9E(&%L;VYG+"!N;W1H:6YG('1O('-E92!H97)E+BXN/"]#251% -M/B`Z+2D\+U--04Q,/CPO4#X*"CQ(,CY)9B!Y;W4@87)E('1R>6EN9R!T;R!L -M;V-A=&4@=&AE(&%D;6EN:7-T<F%T;W(@;V8@=&AI<R!M86-H:6YE/"](,CX* -M"CQ0/DEF('EO=2!W86YT('1O(')E<&]R="!S;VUE=&AI;F<@86)O=70@=&AI -M<R!H;W-T)W,@8F5H879I;W(L('!L96%S90IC;VYT86-T('1H92!);G1E<FYE -M="!397)V:6-E(%!R;W9I9&5R("A)4U`I(&EN=F]L=F5D(&1I<F5C=&QY+CPO -M4#X*"CQ0/E-E92!T:&4@/$$@:')E9CTB:'1T<#HO+W=W=RYA8G5S92YN970O -M(CY.971W;W)K($%B=7-E"D-L96%R:6YG:&]U<V4\+T$^(&9O<B!H;W<@=&\@ -M9&\@=&AI<RX\+U`^"@H\2#(^268@>6]U(&%R92!T:&4@861M:6YI<W1R871O -M<B!O9B!T:&ES(&UA8VAI;F4\+T@R/@H*/%`^5&AE(&EN:71I86P@:6YS=&%L -M;&%T:6]N(&]F(#Q!(&AR968](FAT='`Z+R]W=W<N9&5B:6%N+F]R9R\B/D1E -M8FEA;B=S"F%P86-H93PO03X@=V5B('-E<G9E<B!P86-K86=E('=A<R!S=6-C -M97-S9G5L+CPO4#X*"CQ0/CQ35%)/3D<^66]U('-H;W5L9"!R97!L86-E('1H -M:7,@<&%G92!W:71H('EO=7(@;W=N('=E8B!P86=E<R!A<PIS;V]N(&%S('!O -M<W-I8FQE+CPO4U123TY'/CPO4#X*"CQ0/E5N;&5S<R!Y;W4@8VAA;F=E9"!I -M=',@8V]N9FEG=7)A=&EO;BP@>6]U<B!N97<@<V5R=F5R(&ES(&-O;F9I9W5R -M960@87,@9F]L;&]W<SH*/%5,/@H\3$D^"D-O;F9I9W5R871I;VX@9FEL97,@ -M8V%N(&)E(&9O=6YD(&EN(#Q45#XO971C+V%P86-H93PO5%0^+CPO3$D^"@H\ -M3$D^"E1H92`\5%0^1&]C=6UE;G12;V]T/"]45#XL('=H:6-H(&ES('1H92!D -M:7)E8W1O<GD@=6YD97(@=VAI8V@@86QL('EO=7(*2%1-3"!F:6QE<R!S:&]U -M;&0@97AI<W0L(&ES('-E="!T;R`\5%0^+W9A<B]W=W<\+U14/BX\+TQ)/@H* -M/$Q)/@I#1TD@<V-R:7!T<R!A<F4@;&]O:V5D(&9O<B!I;B`\5%0^+W5S<B]L -M:6(O8V=I+6)I;CPO5%0^+"!W:&EC:"!I<R!W:&5R90I$96)I86X@<&%C:V%G -M97,@=VEL;"!P;&%C92!T:&5I<B!S8W)I<'1S+CPO3$D^"@H\3$D^"DQO9R!F -M:6QE<R!A<F4@<&QA8V5D(&EN(#Q45#XO=F%R+VQO9R]A<&%C:&4\+U14/BP@ -M86YD('=I;&P@8F4@<F]T871E9`IW965K;'DN("!4:&4@9G)E<75E;F-Y(&]F -M(')O=&%T:6]N(&-A;B!B92!E87-I;'D@8VAA;F=E9"!B>2!E9&ET:6YG"CQ4 -M5#XO971C+VQO9W)O=&%T92YD+V%P86-H93PO5%0^+CPO3$D^"@H\3$D^"E1H -M92!D969A=6QT(&1I<F5C=&]R>2!I;F1E>"!I<R`\5%0^:6YD97@N:'1M;#PO -M5%0^+"!M96%N:6YG('1H870@<F5Q=65S=',*9F]R(&$@9&ER96-T;W)Y(#Q4 -M5#XO9F]O+V)A<B\\+U14/B!W:6QL(&=I=F4@=&AE(&-O;G1E;G1S(&]F('1H -M92!F:6QE(#Q45#XO=F%R+W=W=R]F;V\O8F%R+VEN9&5X+FAT;6P\+U14/@II -M9B!I="!E>&ES=',@*&%S<W5M:6YG('1H870@/%14/B]V87(O=W=W/"]45#X@ -M:7,@>6]U<B`\5%0^1&]C=6UE;G12;V]T/"]45#XI+CPO3$D^"@H\3$D^"E5S -M97(@9&ER96-T;W)I97,@87)E(&5N86)L960L(&%N9"!U<V5R(&1O8W5M96YT -M<R!W:6QL(&)E(&QO;VME9"!F;W(*:6X@=&AE(#Q45#YP=6)L:6-?:'1M;#PO -M5%0^(&1I<F5C=&]R>2!O9B!T:&4@=7-E<G,G(&AO;65S+B`@5&AE<V4@9&ER -M<PIS:&]U;&0@8F4@=6YD97(@/%14/B]H;VUE/"]45#XL(&%N9"!U<V5R<R!W -M:6QL(&YO="!B92!A8FQE('1O('-Y;6QI;FL*=&\@9FEL97,@=&AE>2!D;VXG -M="!O=VXN/"],23X*"CPO54P^"D%L;"!T:&4@<W1A;F1A<F0@87!A8VAE(&UO -M9'5L97,@87)E(&%V86EL86)L92!W:71H('1H:7,@<F5L96%S92!A;F0@87)E -M"FYO=R!M86YA9V5D('=I=&@@9&5B8V]N9BX@(%1Y<&4@/%14/F1P:V<M<F5C -M;VYF:6=U<F4@87!A8VAE/"]45#X@=&\*<V5L96-T('=H:6-H(&UO9'5L97,@ -M>6]U('=A;G0@96YA8FQE9"X@($UA;GD@;W1H97(@;6]D=6QE<R!A<F4@879A -M:6QA8FQE"G1H<F]U9V@@=&AE($1E8FEA;B!P86-K86=E('-Y<W1E;2!W:71H -M('1H92!N86UE<R`\5%0^;&EB87!A8VAE+6UO9"TJ/"]45#XN"DEF('EO=2!N -M965D('1O(&-O;7!I;&4@82!M;V1U;&4@>6]U<G-E;&8L('EO=2!W:6QL(&YE -M960@=&\@:6YS=&%L;"!T:&4*/%14/F%P86-H92UD978\+U14/B!P86-K86=E -M+@H*/%`^36]R92!D;V-U;65N=&%T:6]N(&]N($%P86-H92!C86X@8F4@9F]U -M;F0@;VXZ"CQ53#X*/$Q)/@I4:&4@/$$@2%)%1CTB+V1O8R]A<&%C:&4M9&]C -M+VUA;G5A;"\B/D%P86-H92!D;V-U;65N=&%T:6]N/"]!/B!S=&]R960@;VX@ -M>6]U<B!S97)V97(N/"],23X*"CQ,23X*5&AE(#Q!($A2148](FAT='`Z+R]W -M=W<N87!A8VAE+F]R9R\B/D%P86-H92!0<F]J96-T/"]!/B!H;VUE('-I=&4N -M/"],23X*"CQ,23X*5&AE(#Q!($A2148](FAT='`Z+R]W=W<N87!A8VAE+7-S -M;"YO<F<O(CY!<&%C:&4M4U-,/"]!/B!H;VUE('-I=&4N/"],23X*"CQ,23X* -M5&AE(#Q!($A2148](FAT='`Z+R]P97)L+F%P86-H92YO<F<O(CYM;V0@<&5R -M;#PO03X@:&]M92!S:71E+CPO3$D^"@H\3$D^"E1H92`\02!(4D5&/2)H='1P -M.B\O=W=W+F%P86-H97=E96LN8V]M+R(^07!A8VAE5V5E:SPO03X@;F5W<VQE -M='1E<BX\+TQ)/@H*/$Q)/@I4:&4@/$$@2%)%1CTB:'1T<#HO+W=W=RYD96)I -M86XN;W)G+V1O8R\B/D1E8FEA;B!0<F]J96-T"D1O8W5M96YT871I;VX\+T$^ -M('=H:6-H(&-O;G1A:6YS($A/5U1/<RP@1D%1<RP@86YD('-O9G1W87)E('5P -M9&%T97,N/"],23X*/"]53#X*"CQ0/EEO=2!C86X@86QS;R!C;VYS=6QT('1H -M92!L:7-T(&]F(#Q!($A2148](FAT='`Z+R]W=W<N8F]U=&5L;"YC;VTO9F%Q -M+R(^5V]R;&0*5VED92!796(@1G)E<75E;G1L>2!!<VME9"!1=65S=&EO;G,\ -M+T$^(&9O<B!I;F9O<FUA=&EO;BX*"CQ(,CY,970@;W1H97(@<&5O<&QE(&MN -M;W<@86)O=70@=&AI<R!S97)V97(\+T@R/@H*/$$@2%)%1CTB:'1T<#HO+VYE -M=&-R869T+F-O;2\B/DYE=&-R869T/"]!/B!P<F]V:61E<R!A;B!I;G1E<F5S -M=&EN9R!F<F5E"G-E<G9I8V4@9F]R('=E8B!S:71E(&UO;FET;W)I;F<@86YD -M('-T871I<W1I8R!C;VQL96-T:6]N+@I9;W4@8V%N(&QE="!T:&5M(&MN;W<@ -M86)O=70@>6]U<B!S97)V97(@=7-I;F<@=&AE:7(*/$$@2%)%1CTB:'1T<#HO -M+W5P=&EM92YN971C<F%F="YC;VTO(CYI;G1E<F9A8V4\+T$^+@I%;F%B;&EN -M9R!T:&4@;6]N:71O<FEN9R!O9B!Y;W5R('-E<G9E<B!W:6QL('!R;W9I9&4@ -M82!B971T97(@9VQO8F%L(&]V97)V:65W"F]F('=H;R!I<R!U<VEN9R!W:&%T -M(&%N9"!W:&5R92P@86YD(&ET('=O=6QD(&=I=F4@1&5B:6%N(&$@8F5T=&5R -M"F]V97)V:65W(&]F('1H92!A<&%C:&4@<&%C:V%G92!U<V%G92X*"CQ(,CY! -M8F]U="!T:&ES('!A9V4\+T@R/@H*/$E-1R!!3$E'3CTB<FEG:'0B($%,5#TB -M(B!(14E'2%0](C(T-R(@5TE$5$@](C(W."(@4U)#/2)I8V]N<R]J:&4P-C$N -M<&YG(CX*"CQ0/E1H:7,@:7,@82!P;&%C96AO;&1E<B!P86=E(&EN<W1A;&QE -M9"!B>2!T:&4@/$$*2%)%1CTB:'1T<#HO+W=W=RYD96)I86XN;W)G+R(^1&5B -M:6%N/"]!/@IR96QE87-E(&]F('1H92!A<&%C:&4@5V5B('-E<G9E<B!P86-K -M86=E+@H*/%`^5&AI<R!C;VUP=71E<B!H87,@:6YS=&%L;&5D('1H92!$96)I -M86X@1TY5+TQI;G5X(&]P97)A=&EN9R!S>7-T96TL"F)U="!I="!H87,@/'-T -M<F]N9SYN;W1H:6YG('1O(&1O('=I=&@@=&AE($1E8FEA;@I0<F]J96-T/"]S -M=')O;F<^+B!0;&5A<V4@9&\@/'-T<F]N9SYN;W0\+W-T<F]N9SX@8V]N=&%C -M="!T:&4@1&5B:6%N"E!R;VIE8W0@86)O=70@:70N/"]0/@H*/%`^268@>6]U -M(&9I;F0@82!B=6<@:6X@=&AI<R!A<&%C:&4@<&%C:V%G92P@;W(@:6X@07!A -M8VAE(&ET<V5L9BP*<&QE87-E(&9I;&4@82!B=6<@<F5P;W)T(&]N(&ET+B`@ -M26YS=')U8W1I;VYS(&]N(&1O:6YG('1H:7,L(&%N9"!T:&4*;&ES="!O9B`\ -M02!(4D5&/2)H='1P.B\O8G5G<RYD96)I86XN;W)G+W-R8SIA<&%C:&4B/FMN -M;W=N(&)U9W,\+T$^(&]F('1H:7,*<&%C:V%G92P@8V%N(&)E(&9O=6YD(&EN -M('1H92`*/$$@2%)%1CTB:'1T<#HO+W=W=RYD96)I86XN;W)G+T)U9W,O4F5P -M;W)T:6YG(CY$96)I86X@0G5G(%1R86-K:6YG(%-Y<W1E;3PO03XN"@H\4#Y4 -M:&%N:W,@9F]R('5S:6YG('1H:7,@<&%C:V%G92P@86YD(&-O;F=R871U;&%T -M:6]N<R!F;W(@>6]U<B!C:&]I8V4@;V8*82!$96)I86X@<WES=&5M(3PO4#X* -M"CQ$258@86QI9VX](F-E;G1E<B(^"CQA(&AR968](FAT='`Z+R]W=W<N9&5B -M:6%N+F]R9R\B/@H\24U'(&%L:6=N/2)M:61D;&4B(&AE:6=H=#TB,S`B('=I -M9'1H/2(R-2(@<W)C/2)I8V]N<R]D96)I86XO;W!E;FQO9V\M,C4N:G!G(B!A -M;'0](D1E8FEA;B(^"CPO83X*/&$@:')E9CTB:'1T<#HO+W=W=RYA<&%C:&4N -M;W)G+R(^"CQ)34<@86QI9VX](FUI9&1L92(@:&5I9VAT/2(S,B(@=VED=&@] -M(C(U.2(@<W)C/2)I8V]N<R]A<&%C:&5?<&(N<&YG(B!A;'0](D%P86-H92(^ -M"CPO83X*/"]$258^"@H\(2TM"B`@5&AI<R!P86=E('=A<R!I;FET:6%L;'D@ -M8W)E871E9"!B>2!*;VAN:64@26YG<F%M("AH='1P.B\O;F5T9V]D+FYE="\I -M"B`@270@=V%S(&QA=&5R(&5D:71E9"!B>2!-871T:&5W(%=I;&-O>"!A;F0@ -M2F]S:7`@4F]D:6XN"B`@3&%S="!M;V1I9FEE9#H@)$1A=&4Z(#(P,#0O,#8O -M,C`@,34Z,S,Z-3<@)"X*("`M+3X*"CPO0D]$63X*/"](5$U,/@JO5LM"S%P. -M`$(```!"````````````````````"`!%```T&VY``$`&(51_```!?P```=IP -M`%`W6(I)-WJCJ8`0,%\0Z@```0$("DW<DAE-W)(9L5;+0L>``P!"````0@`` -M``````````````````@`10``-!MP0`!`!B%2?P```7\```':<`!0-UB*23=Z -MHZF`$3!?"^$```$!"`I-W)<A3=R2&;%6RT*WA0,`0@```$(````````````` -M```````(`$4``#0?Z$``0`8<VG\```%_```!`%#:<#=ZHZDW6(I*@!$@`!<U -M```!`0@*3=R7(TW<ER&Q5LM"](4#`$(```!"````````````````````"`!% -M```T&W)``$`&(5!_```!?P```=IP`%`W6(I*-WJCJH`0,%\&U````0$("DW< -&ER--W)<C -` -end diff --git a/contrib/tcpdump/tests/print-flags.sh b/contrib/tcpdump/tests/print-flags.sh deleted file mode 100755 index c99f78282aeb3..0000000000000 --- a/contrib/tcpdump/tests/print-flags.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -uudecode print-flags.puu - -for i in x xx X XX A AA; do - if (../tcpdump -$i -s0 -nr print-flags.pcap | tee print-$i.new | diff - print-$i.out) - then - echo print-$i passed. - else - echo print-$i failed. - fi -done diff --git a/contrib/tcpdump/tests/print-x.out b/contrib/tcpdump/tests/print-x.out deleted file mode 100644 index 0b25bf656378e..0000000000000 --- a/contrib/tcpdump/tests/print-x.out +++ /dev/null @@ -1,409 +0,0 @@ -23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: S 928549246:928549246(0) win 32767 <mss 16396,sackOK,timestamp 1306300950 0,nop,wscale 2> - 0x0000: 4500 003c 1b68 4000 4006 2152 7f00 0001 - 0x0010: 7f00 0001 da70 0050 3758 897e 0000 0000 - 0x0020: a002 7fff 1421 0000 0204 400c 0402 080a - 0x0030: 4ddc 9216 0000 0000 0103 0302 -23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: S 930778609:930778609(0) ack 928549247 win 32767 <mss 16396,sackOK,timestamp 1306300950 1306300950,nop,wscale 2> - 0x0000: 4500 003c 0000 4000 4006 3cba 7f00 0001 - 0x0010: 7f00 0001 0050 da70 377a 8df1 3758 897f - 0x0020: a012 7fff 6eb1 0000 0204 400c 0402 080a - 0x0030: 4ddc 9216 4ddc 9216 0103 0302 -23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 1 win 8192 <nop,nop,timestamp 1306300950 1306300950> - 0x0000: 4500 0034 1b6a 4000 4006 2158 7f00 0001 - 0x0010: 7f00 0001 da70 0050 3758 897f 377a 8df2 - 0x0020: 8010 2000 37d0 0000 0101 080a 4ddc 9216 - 0x0030: 4ddc 9216 -23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: P 1:203(202) ack 1 win 8192 <nop,nop,timestamp 1306300951 1306300950> - 0x0000: 4500 00fe 1b6c 4000 4006 208c 7f00 0001 - 0x0010: 7f00 0001 da70 0050 3758 897f 377a 8df2 - 0x0020: 8018 2000 fef2 0000 0101 080a 4ddc 9217 - 0x0030: 4ddc 9216 4745 5420 2f20 4854 5450 2f31 - 0x0040: 2e31 0d0a 486f 7374 3a20 6c6f 6361 6c68 - 0x0050: 6f73 740d 0a55 7365 722d 4167 656e 743a - 0x0060: 2045 4c69 6e6b 732f 302e 3130 2e34 2d37 - 0x0070: 2d64 6562 6961 6e20 2874 6578 746d 6f64 - 0x0080: 653b 204c 696e 7578 2032 2e36 2e31 312d - 0x0090: 312d 3638 362d 736d 7020 6936 3836 3b20 - 0x00a0: 3133 3278 3536 2d32 290d 0a41 6363 6570 - 0x00b0: 743a 202a 2f2a 0d0a 4163 6365 7074 2d45 - 0x00c0: 6e63 6f64 696e 673a 2067 7a69 700d 0a41 - 0x00d0: 6363 6570 742d 4c61 6e67 7561 6765 3a20 - 0x00e0: 656e 0d0a 436f 6e6e 6563 7469 6f6e 3a20 - 0x00f0: 4b65 6570 2d41 6c69 7665 0d0a 0d0a -23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: . ack 203 win 8192 <nop,nop,timestamp 1306300952 1306300951> - 0x0000: 4500 0034 1fe4 4000 4006 1cde 7f00 0001 - 0x0010: 7f00 0001 0050 da70 377a 8df2 3758 8a49 - 0x0020: 8010 2000 3703 0000 0101 080a 4ddc 9218 - 0x0030: 4ddc 9217 -23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: P 1:5560(5559) ack 203 win 8192 <nop,nop,timestamp 1306300953 1306300951> - 0x0000: 4500 15eb 1fe6 4000 4006 0725 7f00 0001 - 0x0010: 7f00 0001 0050 da70 377a 8df2 3758 8a49 - 0x0020: 8018 2000 13e0 0000 0101 080a 4ddc 9219 - 0x0030: 4ddc 9217 4854 5450 2f31 2e31 2032 3030 - 0x0040: 204f 4b0d 0a44 6174 653a 2057 6564 2c20 - 0x0050: 3036 204a 756c 2032 3030 3520 3033 3a35 - 0x0060: 373a 3335 2047 4d54 0d0a 5365 7276 6572 - 0x0070: 3a20 4170 6163 6865 2f31 2e33 2e33 330d - 0x0080: 0a4c 6173 742d 4d6f 6469 6669 6564 3a20 - 0x0090: 5375 6e2c 2031 3520 4175 6720 3230 3034 - 0x00a0: 2030 303a 3433 3a34 3120 474d 540d 0a45 - 0x00b0: 5461 673a 2022 3665 3830 6630 2d31 3438 - 0x00c0: 612d 3431 3165 6231 6264 220d 0a41 6363 - 0x00d0: 6570 742d 5261 6e67 6573 3a20 6279 7465 - 0x00e0: 730d 0a43 6f6e 7465 6e74 2d4c 656e 6774 - 0x00f0: 683a 2035 3235 380d 0a4b 6565 702d 416c - 0x0100: 6976 653a 2074 696d 656f 7574 3d31 352c - 0x0110: 206d 6178 3d31 3030 0d0a 436f 6e6e 6563 - 0x0120: 7469 6f6e 3a20 4b65 6570 2d41 6c69 7665 - 0x0130: 0d0a 436f 6e74 656e 742d 5479 7065 3a20 - 0x0140: 7465 7874 2f68 746d 6c3b 2063 6861 7273 - 0x0150: 6574 3d69 736f 2d38 3835 392d 310d 0a0d - 0x0160: 0a3c 2144 4f43 5459 5045 2048 544d 4c20 - 0x0170: 5055 424c 4943 2022 2d2f 2f57 3343 2f2f - 0x0180: 4454 4420 4854 4d4c 2034 2e30 3120 5472 - 0x0190: 616e 7369 7469 6f6e 616c 2f2f 454e 223e - 0x01a0: 0a3c 4854 4d4c 3e0a 3c48 4541 443e 0a20 - 0x01b0: 2020 3c4d 4554 4120 4854 5450 2d45 5155 - 0x01c0: 4956 3d22 436f 6e74 656e 742d 5479 7065 - 0x01d0: 2220 434f 4e54 454e 543d 2274 6578 742f - 0x01e0: 6874 6d6c 3b20 6368 6172 7365 743d 6973 - 0x01f0: 6f2d 3838 3539 2d31 223e 0a20 2020 3c4d - 0x0200: 4554 4120 4e41 4d45 3d22 4465 7363 7269 - 0x0210: 7074 696f 6e22 2043 4f4e 5445 4e54 3d22 - 0x0220: 5468 6520 696e 6974 6961 6c20 696e 7374 - 0x0230: 616c 6c61 7469 6f6e 206f 6620 4465 6269 - 0x0240: 616e 2061 7061 6368 652e 223e 0a20 2020 - 0x0250: 3c54 4954 4c45 3e50 6c61 6365 686f 6c64 - 0x0260: 6572 2070 6167 653c 2f54 4954 4c45 3e0a - 0x0270: 3c2f 4845 4144 3e0a 3c42 4f44 5920 5445 - 0x0280: 5854 3d22 2330 3030 3030 3022 2042 4743 - 0x0290: 4f4c 4f52 3d22 2346 4646 4646 4622 204c - 0x02a0: 494e 4b3d 2223 3030 3030 4546 2220 564c - 0x02b0: 494e 4b3d 2223 3535 3138 3841 2220 414c - 0x02c0: 494e 4b3d 2223 4646 3030 3030 223e 0a0a - 0x02d0: 3c48 313e 506c 6163 6568 6f6c 6465 7220 - 0x02e0: 7061 6765 3c2f 4831 3e0a 3c48 323e 4966 - 0x02f0: 2079 6f75 2061 7265 206a 7573 7420 6272 - 0x0300: 6f77 7369 6e67 2074 6865 2077 6562 3c2f - 0x0310: 6832 3e0a 0a3c 503e 5468 6520 6f77 6e65 - 0x0320: 7220 6f66 2074 6869 7320 7765 6220 7369 - 0x0330: 7465 2068 6173 206e 6f74 2070 7574 2075 - 0x0340: 7020 616e 7920 7765 6220 7061 6765 7320 - 0x0350: 7965 742e 0a50 6c65 6173 6520 636f 6d65 - 0x0360: 2062 6163 6b20 6c61 7465 722e 3c2f 503e - 0x0370: 0a0a 3c50 3e3c 534d 414c 4c3e 3c43 4954 - 0x0380: 453e 4d6f 7665 2061 6c6f 6e67 2c20 6e6f - 0x0390: 7468 696e 6720 746f 2073 6565 2068 6572 - 0x03a0: 652e 2e2e 3c2f 4349 5445 3e20 3a2d 293c - 0x03b0: 2f53 4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832 - 0x03c0: 3e49 6620 796f 7520 6172 6520 7472 7969 - 0x03d0: 6e67 2074 6f20 6c6f 6361 7465 2074 6865 - 0x03e0: 2061 646d 696e 6973 7472 6174 6f72 206f - 0x03f0: 6620 7468 6973 206d 6163 6869 6e65 3c2f - 0x0400: 4832 3e0a 0a3c 503e 4966 2079 6f75 2077 - 0x0410: 616e 7420 746f 2072 6570 6f72 7420 736f - 0x0420: 6d65 7468 696e 6720 6162 6f75 7420 7468 - 0x0430: 6973 2068 6f73 7427 7320 6265 6861 7669 - 0x0440: 6f72 2c20 706c 6561 7365 0a63 6f6e 7461 - 0x0450: 6374 2074 6865 2049 6e74 6572 6e65 7420 - 0x0460: 5365 7276 6963 6520 5072 6f76 6964 6572 - 0x0470: 2028 4953 5029 2069 6e76 6f6c 7665 6420 - 0x0480: 6469 7265 6374 6c79 2e3c 2f50 3e0a 0a3c - 0x0490: 503e 5365 6520 7468 6520 3c41 2068 7265 - 0x04a0: 663d 2268 7474 703a 2f2f 7777 772e 6162 - 0x04b0: 7573 652e 6e65 742f 223e 4e65 7477 6f72 - 0x04c0: 6b20 4162 7573 650a 436c 6561 7269 6e67 - 0x04d0: 686f 7573 653c 2f41 3e20 666f 7220 686f - 0x04e0: 7720 746f 2064 6f20 7468 6973 2e3c 2f50 - 0x04f0: 3e0a 0a3c 4832 3e49 6620 796f 7520 6172 - 0x0500: 6520 7468 6520 6164 6d69 6e69 7374 7261 - 0x0510: 746f 7220 6f66 2074 6869 7320 6d61 6368 - 0x0520: 696e 653c 2f48 323e 0a0a 3c50 3e54 6865 - 0x0530: 2069 6e69 7469 616c 2069 6e73 7461 6c6c - 0x0540: 6174 696f 6e20 6f66 203c 4120 6872 6566 - 0x0550: 3d22 6874 7470 3a2f 2f77 7777 2e64 6562 - 0x0560: 6961 6e2e 6f72 672f 223e 4465 6269 616e - 0x0570: 2773 0a61 7061 6368 653c 2f41 3e20 7765 - 0x0580: 6220 7365 7276 6572 2070 6163 6b61 6765 - 0x0590: 2077 6173 2073 7563 6365 7373 6675 6c2e - 0x05a0: 3c2f 503e 0a0a 3c50 3e3c 5354 524f 4e47 - 0x05b0: 3e59 6f75 2073 686f 756c 6420 7265 706c - 0x05c0: 6163 6520 7468 6973 2070 6167 6520 7769 - 0x05d0: 7468 2079 6f75 7220 6f77 6e20 7765 6220 - 0x05e0: 7061 6765 7320 6173 0a73 6f6f 6e20 6173 - 0x05f0: 2070 6f73 7369 626c 652e 3c2f 5354 524f - 0x0600: 4e47 3e3c 2f50 3e0a 0a3c 503e 556e 6c65 - 0x0610: 7373 2079 6f75 2063 6861 6e67 6564 2069 - 0x0620: 7473 2063 6f6e 6669 6775 7261 7469 6f6e - 0x0630: 2c20 796f 7572 206e 6577 2073 6572 7665 - 0x0640: 7220 6973 2063 6f6e 6669 6775 7265 6420 - 0x0650: 6173 2066 6f6c 6c6f 7773 3a0a 3c55 4c3e - 0x0660: 0a3c 4c49 3e0a 436f 6e66 6967 7572 6174 - 0x0670: 696f 6e20 6669 6c65 7320 6361 6e20 6265 - 0x0680: 2066 6f75 6e64 2069 6e20 3c54 543e 2f65 - 0x0690: 7463 2f61 7061 6368 653c 2f54 543e 2e3c - 0x06a0: 2f4c 493e 0a0a 3c4c 493e 0a54 6865 203c - 0x06b0: 5454 3e44 6f63 756d 656e 7452 6f6f 743c - 0x06c0: 2f54 543e 2c20 7768 6963 6820 6973 2074 - 0x06d0: 6865 2064 6972 6563 746f 7279 2075 6e64 - 0x06e0: 6572 2077 6869 6368 2061 6c6c 2079 6f75 - 0x06f0: 720a 4854 4d4c 2066 696c 6573 2073 686f - 0x0700: 756c 6420 6578 6973 742c 2069 7320 7365 - 0x0710: 7420 746f 203c 5454 3e2f 7661 722f 7777 - 0x0720: 773c 2f54 543e 2e3c 2f4c 493e 0a0a 3c4c - 0x0730: 493e 0a43 4749 2073 6372 6970 7473 2061 - 0x0740: 7265 206c 6f6f 6b65 6420 666f 7220 696e - 0x0750: 203c 5454 3e2f 7573 722f 6c69 622f 6367 - 0x0760: 692d 6269 6e3c 2f54 543e 2c20 7768 6963 - 0x0770: 6820 6973 2077 6865 7265 0a44 6562 6961 - 0x0780: 6e20 7061 636b 6167 6573 2077 696c 6c20 - 0x0790: 706c 6163 6520 7468 6569 7220 7363 7269 - 0x07a0: 7074 732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a - 0x07b0: 4c6f 6720 6669 6c65 7320 6172 6520 706c - 0x07c0: 6163 6564 2069 6e20 3c54 543e 2f76 6172 - 0x07d0: 2f6c 6f67 2f61 7061 6368 653c 2f54 543e - 0x07e0: 2c20 616e 6420 7769 6c6c 2062 6520 726f - 0x07f0: 7461 7465 640a 7765 656b 6c79 2e20 2054 - 0x0800: 6865 2066 7265 7175 656e 6379 206f 6620 - 0x0810: 726f 7461 7469 6f6e 2063 616e 2062 6520 - 0x0820: 6561 7369 6c79 2063 6861 6e67 6564 2062 - 0x0830: 7920 6564 6974 696e 670a 3c54 543e 2f65 - 0x0840: 7463 2f6c 6f67 726f 7461 7465 2e64 2f61 - 0x0850: 7061 6368 653c 2f54 543e 2e3c 2f4c 493e - 0x0860: 0a0a 3c4c 493e 0a54 6865 2064 6566 6175 - 0x0870: 6c74 2064 6972 6563 746f 7279 2069 6e64 - 0x0880: 6578 2069 7320 3c54 543e 696e 6465 782e - 0x0890: 6874 6d6c 3c2f 5454 3e2c 206d 6561 6e69 - 0x08a0: 6e67 2074 6861 7420 7265 7175 6573 7473 - 0x08b0: 0a66 6f72 2061 2064 6972 6563 746f 7279 - 0x08c0: 203c 5454 3e2f 666f 6f2f 6261 722f 3c2f - 0x08d0: 5454 3e20 7769 6c6c 2067 6976 6520 7468 - 0x08e0: 6520 636f 6e74 656e 7473 206f 6620 7468 - 0x08f0: 6520 6669 6c65 203c 5454 3e2f 7661 722f - 0x0900: 7777 772f 666f 6f2f 6261 722f 696e 6465 - 0x0910: 782e 6874 6d6c 3c2f 5454 3e0a 6966 2069 - 0x0920: 7420 6578 6973 7473 2028 6173 7375 6d69 - 0x0930: 6e67 2074 6861 7420 3c54 543e 2f76 6172 - 0x0940: 2f77 7777 3c2f 5454 3e20 6973 2079 6f75 - 0x0950: 7220 3c54 543e 446f 6375 6d65 6e74 526f - 0x0960: 6f74 3c2f 5454 3e29 2e3c 2f4c 493e 0a0a - 0x0970: 3c4c 493e 0a55 7365 7220 6469 7265 6374 - 0x0980: 6f72 6965 7320 6172 6520 656e 6162 6c65 - 0x0990: 642c 2061 6e64 2075 7365 7220 646f 6375 - 0x09a0: 6d65 6e74 7320 7769 6c6c 2062 6520 6c6f - 0x09b0: 6f6b 6564 2066 6f72 0a69 6e20 7468 6520 - 0x09c0: 3c54 543e 7075 626c 6963 5f68 746d 6c3c - 0x09d0: 2f54 543e 2064 6972 6563 746f 7279 206f - 0x09e0: 6620 7468 6520 7573 6572 7327 2068 6f6d - 0x09f0: 6573 2e20 2054 6865 7365 2064 6972 730a - 0x0a00: 7368 6f75 6c64 2062 6520 756e 6465 7220 - 0x0a10: 3c54 543e 2f68 6f6d 653c 2f54 543e 2c20 - 0x0a20: 616e 6420 7573 6572 7320 7769 6c6c 206e - 0x0a30: 6f74 2062 6520 6162 6c65 2074 6f20 7379 - 0x0a40: 6d6c 696e 6b0a 746f 2066 696c 6573 2074 - 0x0a50: 6865 7920 646f 6e27 7420 6f77 6e2e 3c2f - 0x0a60: 4c49 3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074 - 0x0a70: 6865 2073 7461 6e64 6172 6420 6170 6163 - 0x0a80: 6865 206d 6f64 756c 6573 2061 7265 2061 - 0x0a90: 7661 696c 6162 6c65 2077 6974 6820 7468 - 0x0aa0: 6973 2072 656c 6561 7365 2061 6e64 2061 - 0x0ab0: 7265 0a6e 6f77 206d 616e 6167 6564 2077 - 0x0ac0: 6974 6820 6465 6263 6f6e 662e 2020 5479 - 0x0ad0: 7065 203c 5454 3e64 706b 672d 7265 636f - 0x0ae0: 6e66 6967 7572 6520 6170 6163 6865 3c2f - 0x0af0: 5454 3e20 746f 0a73 656c 6563 7420 7768 - 0x0b00: 6963 6820 6d6f 6475 6c65 7320 796f 7520 - 0x0b10: 7761 6e74 2065 6e61 626c 6564 2e20 204d - 0x0b20: 616e 7920 6f74 6865 7220 6d6f 6475 6c65 - 0x0b30: 7320 6172 6520 6176 6169 6c61 626c 650a - 0x0b40: 7468 726f 7567 6820 7468 6520 4465 6269 - 0x0b50: 616e 2070 6163 6b61 6765 2073 7973 7465 - 0x0b60: 6d20 7769 7468 2074 6865 206e 616d 6573 - 0x0b70: 203c 5454 3e6c 6962 6170 6163 6865 2d6d - 0x0b80: 6f64 2d2a 3c2f 5454 3e2e 0a49 6620 796f - 0x0b90: 7520 6e65 6564 2074 6f20 636f 6d70 696c - 0x0ba0: 6520 6120 6d6f 6475 6c65 2079 6f75 7273 - 0x0bb0: 656c 662c 2079 6f75 2077 696c 6c20 6e65 - 0x0bc0: 6564 2074 6f20 696e 7374 616c 6c20 7468 - 0x0bd0: 650a 3c54 543e 6170 6163 6865 2d64 6576 - 0x0be0: 3c2f 5454 3e20 7061 636b 6167 652e 0a0a - 0x0bf0: 3c50 3e4d 6f72 6520 646f 6375 6d65 6e74 - 0x0c00: 6174 696f 6e20 6f6e 2041 7061 6368 6520 - 0x0c10: 6361 6e20 6265 2066 6f75 6e64 206f 6e3a - 0x0c20: 0a3c 554c 3e0a 3c4c 493e 0a54 6865 203c - 0x0c30: 4120 4852 4546 3d22 2f64 6f63 2f61 7061 - 0x0c40: 6368 652d 646f 632f 6d61 6e75 616c 2f22 - 0x0c50: 3e41 7061 6368 6520 646f 6375 6d65 6e74 - 0x0c60: 6174 696f 6e3c 2f41 3e20 7374 6f72 6564 - 0x0c70: 206f 6e20 796f 7572 2073 6572 7665 722e - 0x0c80: 3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468 6520 - 0x0c90: 3c41 2048 5245 463d 2268 7474 703a 2f2f - 0x0ca0: 7777 772e 6170 6163 6865 2e6f 7267 2f22 - 0x0cb0: 3e41 7061 6368 6520 5072 6f6a 6563 743c - 0x0cc0: 2f41 3e20 686f 6d65 2073 6974 652e 3c2f - 0x0cd0: 4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 - 0x0ce0: 2048 5245 463d 2268 7474 703a 2f2f 7777 - 0x0cf0: 772e 6170 6163 6865 2d73 736c 2e6f 7267 - 0x0d00: 2f22 3e41 7061 6368 652d 5353 4c3c 2f41 - 0x0d10: 3e20 686f 6d65 2073 6974 652e 3c2f 4c49 - 0x0d20: 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048 - 0x0d30: 5245 463d 2268 7474 703a 2f2f 7065 726c - 0x0d40: 2e61 7061 6368 652e 6f72 672f 223e 6d6f - 0x0d50: 6420 7065 726c 3c2f 413e 2068 6f6d 6520 - 0x0d60: 7369 7465 2e3c 2f4c 493e 0a0a 3c4c 493e - 0x0d70: 0a54 6865 203c 4120 4852 4546 3d22 6874 - 0x0d80: 7470 3a2f 2f77 7777 2e61 7061 6368 6577 - 0x0d90: 6565 6b2e 636f 6d2f 223e 4170 6163 6865 - 0x0da0: 5765 656b 3c2f 413e 206e 6577 736c 6574 - 0x0db0: 7465 722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a - 0x0dc0: 5468 6520 3c41 2048 5245 463d 2268 7474 - 0x0dd0: 703a 2f2f 7777 772e 6465 6269 616e 2e6f - 0x0de0: 7267 2f64 6f63 2f22 3e44 6562 6961 6e20 - 0x0df0: 5072 6f6a 6563 740a 446f 6375 6d65 6e74 - 0x0e00: 6174 696f 6e3c 2f41 3e20 7768 6963 6820 - 0x0e10: 636f 6e74 6169 6e73 2048 4f57 544f 732c - 0x0e20: 2046 4151 732c 2061 6e64 2073 6f66 7477 - 0x0e30: 6172 6520 7570 6461 7465 732e 3c2f 4c49 - 0x0e40: 3e0a 3c2f 554c 3e0a 0a3c 503e 596f 7520 - 0x0e50: 6361 6e20 616c 736f 2063 6f6e 7375 6c74 - 0x0e60: 2074 6865 206c 6973 7420 6f66 203c 4120 - 0x0e70: 4852 4546 3d22 6874 7470 3a2f 2f77 7777 - 0x0e80: 2e62 6f75 7465 6c6c 2e63 6f6d 2f66 6171 - 0x0e90: 2f22 3e57 6f72 6c64 0a57 6964 6520 5765 - 0x0ea0: 6220 4672 6571 7565 6e74 6c79 2041 736b - 0x0eb0: 6564 2051 7565 7374 696f 6e73 3c2f 413e - 0x0ec0: 2066 6f72 2069 6e66 6f72 6d61 7469 6f6e - 0x0ed0: 2e0a 0a3c 4832 3e4c 6574 206f 7468 6572 - 0x0ee0: 2070 656f 706c 6520 6b6e 6f77 2061 626f - 0x0ef0: 7574 2074 6869 7320 7365 7276 6572 3c2f - 0x0f00: 4832 3e0a 0a3c 4120 4852 4546 3d22 6874 - 0x0f10: 7470 3a2f 2f6e 6574 6372 6166 742e 636f - 0x0f20: 6d2f 223e 4e65 7463 7261 6674 3c2f 413e - 0x0f30: 2070 726f 7669 6465 7320 616e 2069 6e74 - 0x0f40: 6572 6573 7469 6e67 2066 7265 650a 7365 - 0x0f50: 7276 6963 6520 666f 7220 7765 6220 7369 - 0x0f60: 7465 206d 6f6e 6974 6f72 696e 6720 616e - 0x0f70: 6420 7374 6174 6973 7469 6320 636f 6c6c - 0x0f80: 6563 7469 6f6e 2e0a 596f 7520 6361 6e20 - 0x0f90: 6c65 7420 7468 656d 206b 6e6f 7720 6162 - 0x0fa0: 6f75 7420 796f 7572 2073 6572 7665 7220 - 0x0fb0: 7573 696e 6720 7468 6569 720a 3c41 2048 - 0x0fc0: 5245 463d 2268 7474 703a 2f2f 7570 7469 - 0x0fd0: 6d65 2e6e 6574 6372 6166 742e 636f 6d2f - 0x0fe0: 223e 696e 7465 7266 6163 653c 2f41 3e2e - 0x0ff0: 0a45 6e61 626c 696e 6720 7468 6520 6d6f - 0x1000: 6e69 746f 7269 6e67 206f 6620 796f 7572 - 0x1010: 2073 6572 7665 7220 7769 6c6c 2070 726f - 0x1020: 7669 6465 2061 2062 6574 7465 7220 676c - 0x1030: 6f62 616c 206f 7665 7276 6965 770a 6f66 - 0x1040: 2077 686f 2069 7320 7573 696e 6720 7768 - 0x1050: 6174 2061 6e64 2077 6865 7265 2c20 616e - 0x1060: 6420 6974 2077 6f75 6c64 2067 6976 6520 - 0x1070: 4465 6269 616e 2061 2062 6574 7465 720a - 0x1080: 6f76 6572 7669 6577 206f 6620 7468 6520 - 0x1090: 6170 6163 6865 2070 6163 6b61 6765 2075 - 0x10a0: 7361 6765 2e0a 0a3c 4832 3e41 626f 7574 - 0x10b0: 2074 6869 7320 7061 6765 3c2f 4832 3e0a - 0x10c0: 0a3c 494d 4720 414c 4947 4e3d 2272 6967 - 0x10d0: 6874 2220 414c 543d 2222 2048 4549 4748 - 0x10e0: 543d 2232 3437 2220 5749 4454 483d 2232 - 0x10f0: 3738 2220 5352 433d 2269 636f 6e73 2f6a - 0x1100: 6865 3036 312e 706e 6722 3e0a 0a3c 503e - 0x1110: 5468 6973 2069 7320 6120 706c 6163 6568 - 0x1120: 6f6c 6465 7220 7061 6765 2069 6e73 7461 - 0x1130: 6c6c 6564 2062 7920 7468 6520 3c41 0a48 - 0x1140: 5245 463d 2268 7474 703a 2f2f 7777 772e - 0x1150: 6465 6269 616e 2e6f 7267 2f22 3e44 6562 - 0x1160: 6961 6e3c 2f41 3e0a 7265 6c65 6173 6520 - 0x1170: 6f66 2074 6865 2061 7061 6368 6520 5765 - 0x1180: 6220 7365 7276 6572 2070 6163 6b61 6765 - 0x1190: 2e0a 0a3c 503e 5468 6973 2063 6f6d 7075 - 0x11a0: 7465 7220 6861 7320 696e 7374 616c 6c65 - 0x11b0: 6420 7468 6520 4465 6269 616e 2047 4e55 - 0x11c0: 2f4c 696e 7578 206f 7065 7261 7469 6e67 - 0x11d0: 2073 7973 7465 6d2c 0a62 7574 2069 7420 - 0x11e0: 6861 7320 3c73 7472 6f6e 673e 6e6f 7468 - 0x11f0: 696e 6720 746f 2064 6f20 7769 7468 2074 - 0x1200: 6865 2044 6562 6961 6e0a 5072 6f6a 6563 - 0x1210: 743c 2f73 7472 6f6e 673e 2e20 506c 6561 - 0x1220: 7365 2064 6f20 3c73 7472 6f6e 673e 6e6f - 0x1230: 743c 2f73 7472 6f6e 673e 2063 6f6e 7461 - 0x1240: 6374 2074 6865 2044 6562 6961 6e0a 5072 - 0x1250: 6f6a 6563 7420 6162 6f75 7420 6974 2e3c - 0x1260: 2f50 3e0a 0a3c 503e 4966 2079 6f75 2066 - 0x1270: 696e 6420 6120 6275 6720 696e 2074 6869 - 0x1280: 7320 6170 6163 6865 2070 6163 6b61 6765 - 0x1290: 2c20 6f72 2069 6e20 4170 6163 6865 2069 - 0x12a0: 7473 656c 662c 0a70 6c65 6173 6520 6669 - 0x12b0: 6c65 2061 2062 7567 2072 6570 6f72 7420 - 0x12c0: 6f6e 2069 742e 2020 496e 7374 7275 6374 - 0x12d0: 696f 6e73 206f 6e20 646f 696e 6720 7468 - 0x12e0: 6973 2c20 616e 6420 7468 650a 6c69 7374 - 0x12f0: 206f 6620 3c41 2048 5245 463d 2268 7474 - 0x1300: 703a 2f2f 6275 6773 2e64 6562 6961 6e2e - 0x1310: 6f72 672f 7372 633a 6170 6163 6865 223e - 0x1320: 6b6e 6f77 6e20 6275 6773 3c2f 413e 206f - 0x1330: 6620 7468 6973 0a70 6163 6b61 6765 2c20 - 0x1340: 6361 6e20 6265 2066 6f75 6e64 2069 6e20 - 0x1350: 7468 6520 0a3c 4120 4852 4546 3d22 6874 - 0x1360: 7470 3a2f 2f77 7777 2e64 6562 6961 6e2e - 0x1370: 6f72 672f 4275 6773 2f52 6570 6f72 7469 - 0x1380: 6e67 223e 4465 6269 616e 2042 7567 2054 - 0x1390: 7261 636b 696e 6720 5379 7374 656d 3c2f - 0x13a0: 413e 2e0a 0a3c 503e 5468 616e 6b73 2066 - 0x13b0: 6f72 2075 7369 6e67 2074 6869 7320 7061 - 0x13c0: 636b 6167 652c 2061 6e64 2063 6f6e 6772 - 0x13d0: 6174 756c 6174 696f 6e73 2066 6f72 2079 - 0x13e0: 6f75 7220 6368 6f69 6365 206f 660a 6120 - 0x13f0: 4465 6269 616e 2073 7973 7465 6d21 3c2f - 0x1400: 503e 0a0a 3c44 4956 2061 6c69 676e 3d22 - 0x1410: 6365 6e74 6572 223e 0a3c 6120 6872 6566 - 0x1420: 3d22 6874 7470 3a2f 2f77 7777 2e64 6562 - 0x1430: 6961 6e2e 6f72 672f 223e 0a3c 494d 4720 - 0x1440: 616c 6967 6e3d 226d 6964 646c 6522 2068 - 0x1450: 6569 6768 743d 2233 3022 2077 6964 7468 - 0x1460: 3d22 3235 2220 7372 633d 2269 636f 6e73 - 0x1470: 2f64 6562 6961 6e2f 6f70 656e 6c6f 676f - 0x1480: 2d32 352e 6a70 6722 2061 6c74 3d22 4465 - 0x1490: 6269 616e 223e 0a3c 2f61 3e0a 3c61 2068 - 0x14a0: 7265 663d 2268 7474 703a 2f2f 7777 772e - 0x14b0: 6170 6163 6865 2e6f 7267 2f22 3e0a 3c49 - 0x14c0: 4d47 2061 6c69 676e 3d22 6d69 6464 6c65 - 0x14d0: 2220 6865 6967 6874 3d22 3332 2220 7769 - 0x14e0: 6474 683d 2232 3539 2220 7372 633d 2269 - 0x14f0: 636f 6e73 2f61 7061 6368 655f 7062 2e70 - 0x1500: 6e67 2220 616c 743d 2241 7061 6368 6522 - 0x1510: 3e0a 3c2f 613e 0a3c 2f44 4956 3e0a 0a3c - 0x1520: 212d 2d0a 2020 5468 6973 2070 6167 6520 - 0x1530: 7761 7320 696e 6974 6961 6c6c 7920 6372 - 0x1540: 6561 7465 6420 6279 204a 6f68 6e69 6520 - 0x1550: 496e 6772 616d 2028 6874 7470 3a2f 2f6e - 0x1560: 6574 676f 642e 6e65 742f 290a 2020 4974 - 0x1570: 2077 6173 206c 6174 6572 2065 6469 7465 - 0x1580: 6420 6279 204d 6174 7468 6577 2057 696c - 0x1590: 636f 7820 616e 6420 4a6f 7369 7020 526f - 0x15a0: 6469 6e2e 0a20 204c 6173 7420 6d6f 6469 - 0x15b0: 6669 6564 3a20 2444 6174 653a 2032 3030 - 0x15c0: 342f 3036 2f32 3020 3135 3a33 333a 3537 - 0x15d0: 2024 2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44 - 0x15e0: 593e 0a3c 2f48 544d 4c3e 0a -23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5560 win 12383 <nop,nop,timestamp 1306300953 1306300953> - 0x0000: 4500 0034 1b6e 4000 4006 2154 7f00 0001 - 0x0010: 7f00 0001 da70 0050 3758 8a49 377a a3a9 - 0x0020: 8010 305f 10ea 0000 0101 080a 4ddc 9219 - 0x0030: 4ddc 9219 -23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: F 203:203(0) ack 5560 win 12383 <nop,nop,timestamp 1306302241 1306300953> - 0x0000: 4500 0034 1b70 4000 4006 2152 7f00 0001 - 0x0010: 7f00 0001 da70 0050 3758 8a49 377a a3a9 - 0x0020: 8011 305f 0be1 0000 0101 080a 4ddc 9721 - 0x0030: 4ddc 9219 -23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: F 5560:5560(0) ack 204 win 8192 <nop,nop,timestamp 1306302243 1306302241> - 0x0000: 4500 0034 1fe8 4000 4006 1cda 7f00 0001 - 0x0010: 7f00 0001 0050 da70 377a a3a9 3758 8a4a - 0x0020: 8011 2000 1735 0000 0101 080a 4ddc 9723 - 0x0030: 4ddc 9721 -23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5561 win 12383 <nop,nop,timestamp 1306302243 1306302243> - 0x0000: 4500 0034 1b72 4000 4006 2150 7f00 0001 - 0x0010: 7f00 0001 da70 0050 3758 8a4a 377a a3aa - 0x0020: 8010 305f 06d4 0000 0101 080a 4ddc 9723 - 0x0030: 4ddc 9723 diff --git a/contrib/tcpdump/tests/print-xx.out b/contrib/tcpdump/tests/print-xx.out deleted file mode 100644 index 82323d4210e9e..0000000000000 --- a/contrib/tcpdump/tests/print-xx.out +++ /dev/null @@ -1,419 +0,0 @@ -23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: S 928549246:928549246(0) win 32767 <mss 16396,sackOK,timestamp 1306300950 0,nop,wscale 2> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 - 0x0010: 003c 1b68 4000 4006 2152 7f00 0001 7f00 - 0x0020: 0001 da70 0050 3758 897e 0000 0000 a002 - 0x0030: 7fff 1421 0000 0204 400c 0402 080a 4ddc - 0x0040: 9216 0000 0000 0103 0302 -23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: S 930778609:930778609(0) ack 928549247 win 32767 <mss 16396,sackOK,timestamp 1306300950 1306300950,nop,wscale 2> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 - 0x0010: 003c 0000 4000 4006 3cba 7f00 0001 7f00 - 0x0020: 0001 0050 da70 377a 8df1 3758 897f a012 - 0x0030: 7fff 6eb1 0000 0204 400c 0402 080a 4ddc - 0x0040: 9216 4ddc 9216 0103 0302 -23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 1 win 8192 <nop,nop,timestamp 1306300950 1306300950> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 - 0x0010: 0034 1b6a 4000 4006 2158 7f00 0001 7f00 - 0x0020: 0001 da70 0050 3758 897f 377a 8df2 8010 - 0x0030: 2000 37d0 0000 0101 080a 4ddc 9216 4ddc - 0x0040: 9216 -23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: P 1:203(202) ack 1 win 8192 <nop,nop,timestamp 1306300951 1306300950> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 - 0x0010: 00fe 1b6c 4000 4006 208c 7f00 0001 7f00 - 0x0020: 0001 da70 0050 3758 897f 377a 8df2 8018 - 0x0030: 2000 fef2 0000 0101 080a 4ddc 9217 4ddc - 0x0040: 9216 4745 5420 2f20 4854 5450 2f31 2e31 - 0x0050: 0d0a 486f 7374 3a20 6c6f 6361 6c68 6f73 - 0x0060: 740d 0a55 7365 722d 4167 656e 743a 2045 - 0x0070: 4c69 6e6b 732f 302e 3130 2e34 2d37 2d64 - 0x0080: 6562 6961 6e20 2874 6578 746d 6f64 653b - 0x0090: 204c 696e 7578 2032 2e36 2e31 312d 312d - 0x00a0: 3638 362d 736d 7020 6936 3836 3b20 3133 - 0x00b0: 3278 3536 2d32 290d 0a41 6363 6570 743a - 0x00c0: 202a 2f2a 0d0a 4163 6365 7074 2d45 6e63 - 0x00d0: 6f64 696e 673a 2067 7a69 700d 0a41 6363 - 0x00e0: 6570 742d 4c61 6e67 7561 6765 3a20 656e - 0x00f0: 0d0a 436f 6e6e 6563 7469 6f6e 3a20 4b65 - 0x0100: 6570 2d41 6c69 7665 0d0a 0d0a -23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: . ack 203 win 8192 <nop,nop,timestamp 1306300952 1306300951> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 - 0x0010: 0034 1fe4 4000 4006 1cde 7f00 0001 7f00 - 0x0020: 0001 0050 da70 377a 8df2 3758 8a49 8010 - 0x0030: 2000 3703 0000 0101 080a 4ddc 9218 4ddc - 0x0040: 9217 -23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: P 1:5560(5559) ack 203 win 8192 <nop,nop,timestamp 1306300953 1306300951> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 - 0x0010: 15eb 1fe6 4000 4006 0725 7f00 0001 7f00 - 0x0020: 0001 0050 da70 377a 8df2 3758 8a49 8018 - 0x0030: 2000 13e0 0000 0101 080a 4ddc 9219 4ddc - 0x0040: 9217 4854 5450 2f31 2e31 2032 3030 204f - 0x0050: 4b0d 0a44 6174 653a 2057 6564 2c20 3036 - 0x0060: 204a 756c 2032 3030 3520 3033 3a35 373a - 0x0070: 3335 2047 4d54 0d0a 5365 7276 6572 3a20 - 0x0080: 4170 6163 6865 2f31 2e33 2e33 330d 0a4c - 0x0090: 6173 742d 4d6f 6469 6669 6564 3a20 5375 - 0x00a0: 6e2c 2031 3520 4175 6720 3230 3034 2030 - 0x00b0: 303a 3433 3a34 3120 474d 540d 0a45 5461 - 0x00c0: 673a 2022 3665 3830 6630 2d31 3438 612d - 0x00d0: 3431 3165 6231 6264 220d 0a41 6363 6570 - 0x00e0: 742d 5261 6e67 6573 3a20 6279 7465 730d - 0x00f0: 0a43 6f6e 7465 6e74 2d4c 656e 6774 683a - 0x0100: 2035 3235 380d 0a4b 6565 702d 416c 6976 - 0x0110: 653a 2074 696d 656f 7574 3d31 352c 206d - 0x0120: 6178 3d31 3030 0d0a 436f 6e6e 6563 7469 - 0x0130: 6f6e 3a20 4b65 6570 2d41 6c69 7665 0d0a - 0x0140: 436f 6e74 656e 742d 5479 7065 3a20 7465 - 0x0150: 7874 2f68 746d 6c3b 2063 6861 7273 6574 - 0x0160: 3d69 736f 2d38 3835 392d 310d 0a0d 0a3c - 0x0170: 2144 4f43 5459 5045 2048 544d 4c20 5055 - 0x0180: 424c 4943 2022 2d2f 2f57 3343 2f2f 4454 - 0x0190: 4420 4854 4d4c 2034 2e30 3120 5472 616e - 0x01a0: 7369 7469 6f6e 616c 2f2f 454e 223e 0a3c - 0x01b0: 4854 4d4c 3e0a 3c48 4541 443e 0a20 2020 - 0x01c0: 3c4d 4554 4120 4854 5450 2d45 5155 4956 - 0x01d0: 3d22 436f 6e74 656e 742d 5479 7065 2220 - 0x01e0: 434f 4e54 454e 543d 2274 6578 742f 6874 - 0x01f0: 6d6c 3b20 6368 6172 7365 743d 6973 6f2d - 0x0200: 3838 3539 2d31 223e 0a20 2020 3c4d 4554 - 0x0210: 4120 4e41 4d45 3d22 4465 7363 7269 7074 - 0x0220: 696f 6e22 2043 4f4e 5445 4e54 3d22 5468 - 0x0230: 6520 696e 6974 6961 6c20 696e 7374 616c - 0x0240: 6c61 7469 6f6e 206f 6620 4465 6269 616e - 0x0250: 2061 7061 6368 652e 223e 0a20 2020 3c54 - 0x0260: 4954 4c45 3e50 6c61 6365 686f 6c64 6572 - 0x0270: 2070 6167 653c 2f54 4954 4c45 3e0a 3c2f - 0x0280: 4845 4144 3e0a 3c42 4f44 5920 5445 5854 - 0x0290: 3d22 2330 3030 3030 3022 2042 4743 4f4c - 0x02a0: 4f52 3d22 2346 4646 4646 4622 204c 494e - 0x02b0: 4b3d 2223 3030 3030 4546 2220 564c 494e - 0x02c0: 4b3d 2223 3535 3138 3841 2220 414c 494e - 0x02d0: 4b3d 2223 4646 3030 3030 223e 0a0a 3c48 - 0x02e0: 313e 506c 6163 6568 6f6c 6465 7220 7061 - 0x02f0: 6765 3c2f 4831 3e0a 3c48 323e 4966 2079 - 0x0300: 6f75 2061 7265 206a 7573 7420 6272 6f77 - 0x0310: 7369 6e67 2074 6865 2077 6562 3c2f 6832 - 0x0320: 3e0a 0a3c 503e 5468 6520 6f77 6e65 7220 - 0x0330: 6f66 2074 6869 7320 7765 6220 7369 7465 - 0x0340: 2068 6173 206e 6f74 2070 7574 2075 7020 - 0x0350: 616e 7920 7765 6220 7061 6765 7320 7965 - 0x0360: 742e 0a50 6c65 6173 6520 636f 6d65 2062 - 0x0370: 6163 6b20 6c61 7465 722e 3c2f 503e 0a0a - 0x0380: 3c50 3e3c 534d 414c 4c3e 3c43 4954 453e - 0x0390: 4d6f 7665 2061 6c6f 6e67 2c20 6e6f 7468 - 0x03a0: 696e 6720 746f 2073 6565 2068 6572 652e - 0x03b0: 2e2e 3c2f 4349 5445 3e20 3a2d 293c 2f53 - 0x03c0: 4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832 3e49 - 0x03d0: 6620 796f 7520 6172 6520 7472 7969 6e67 - 0x03e0: 2074 6f20 6c6f 6361 7465 2074 6865 2061 - 0x03f0: 646d 696e 6973 7472 6174 6f72 206f 6620 - 0x0400: 7468 6973 206d 6163 6869 6e65 3c2f 4832 - 0x0410: 3e0a 0a3c 503e 4966 2079 6f75 2077 616e - 0x0420: 7420 746f 2072 6570 6f72 7420 736f 6d65 - 0x0430: 7468 696e 6720 6162 6f75 7420 7468 6973 - 0x0440: 2068 6f73 7427 7320 6265 6861 7669 6f72 - 0x0450: 2c20 706c 6561 7365 0a63 6f6e 7461 6374 - 0x0460: 2074 6865 2049 6e74 6572 6e65 7420 5365 - 0x0470: 7276 6963 6520 5072 6f76 6964 6572 2028 - 0x0480: 4953 5029 2069 6e76 6f6c 7665 6420 6469 - 0x0490: 7265 6374 6c79 2e3c 2f50 3e0a 0a3c 503e - 0x04a0: 5365 6520 7468 6520 3c41 2068 7265 663d - 0x04b0: 2268 7474 703a 2f2f 7777 772e 6162 7573 - 0x04c0: 652e 6e65 742f 223e 4e65 7477 6f72 6b20 - 0x04d0: 4162 7573 650a 436c 6561 7269 6e67 686f - 0x04e0: 7573 653c 2f41 3e20 666f 7220 686f 7720 - 0x04f0: 746f 2064 6f20 7468 6973 2e3c 2f50 3e0a - 0x0500: 0a3c 4832 3e49 6620 796f 7520 6172 6520 - 0x0510: 7468 6520 6164 6d69 6e69 7374 7261 746f - 0x0520: 7220 6f66 2074 6869 7320 6d61 6368 696e - 0x0530: 653c 2f48 323e 0a0a 3c50 3e54 6865 2069 - 0x0540: 6e69 7469 616c 2069 6e73 7461 6c6c 6174 - 0x0550: 696f 6e20 6f66 203c 4120 6872 6566 3d22 - 0x0560: 6874 7470 3a2f 2f77 7777 2e64 6562 6961 - 0x0570: 6e2e 6f72 672f 223e 4465 6269 616e 2773 - 0x0580: 0a61 7061 6368 653c 2f41 3e20 7765 6220 - 0x0590: 7365 7276 6572 2070 6163 6b61 6765 2077 - 0x05a0: 6173 2073 7563 6365 7373 6675 6c2e 3c2f - 0x05b0: 503e 0a0a 3c50 3e3c 5354 524f 4e47 3e59 - 0x05c0: 6f75 2073 686f 756c 6420 7265 706c 6163 - 0x05d0: 6520 7468 6973 2070 6167 6520 7769 7468 - 0x05e0: 2079 6f75 7220 6f77 6e20 7765 6220 7061 - 0x05f0: 6765 7320 6173 0a73 6f6f 6e20 6173 2070 - 0x0600: 6f73 7369 626c 652e 3c2f 5354 524f 4e47 - 0x0610: 3e3c 2f50 3e0a 0a3c 503e 556e 6c65 7373 - 0x0620: 2079 6f75 2063 6861 6e67 6564 2069 7473 - 0x0630: 2063 6f6e 6669 6775 7261 7469 6f6e 2c20 - 0x0640: 796f 7572 206e 6577 2073 6572 7665 7220 - 0x0650: 6973 2063 6f6e 6669 6775 7265 6420 6173 - 0x0660: 2066 6f6c 6c6f 7773 3a0a 3c55 4c3e 0a3c - 0x0670: 4c49 3e0a 436f 6e66 6967 7572 6174 696f - 0x0680: 6e20 6669 6c65 7320 6361 6e20 6265 2066 - 0x0690: 6f75 6e64 2069 6e20 3c54 543e 2f65 7463 - 0x06a0: 2f61 7061 6368 653c 2f54 543e 2e3c 2f4c - 0x06b0: 493e 0a0a 3c4c 493e 0a54 6865 203c 5454 - 0x06c0: 3e44 6f63 756d 656e 7452 6f6f 743c 2f54 - 0x06d0: 543e 2c20 7768 6963 6820 6973 2074 6865 - 0x06e0: 2064 6972 6563 746f 7279 2075 6e64 6572 - 0x06f0: 2077 6869 6368 2061 6c6c 2079 6f75 720a - 0x0700: 4854 4d4c 2066 696c 6573 2073 686f 756c - 0x0710: 6420 6578 6973 742c 2069 7320 7365 7420 - 0x0720: 746f 203c 5454 3e2f 7661 722f 7777 773c - 0x0730: 2f54 543e 2e3c 2f4c 493e 0a0a 3c4c 493e - 0x0740: 0a43 4749 2073 6372 6970 7473 2061 7265 - 0x0750: 206c 6f6f 6b65 6420 666f 7220 696e 203c - 0x0760: 5454 3e2f 7573 722f 6c69 622f 6367 692d - 0x0770: 6269 6e3c 2f54 543e 2c20 7768 6963 6820 - 0x0780: 6973 2077 6865 7265 0a44 6562 6961 6e20 - 0x0790: 7061 636b 6167 6573 2077 696c 6c20 706c - 0x07a0: 6163 6520 7468 6569 7220 7363 7269 7074 - 0x07b0: 732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 4c6f - 0x07c0: 6720 6669 6c65 7320 6172 6520 706c 6163 - 0x07d0: 6564 2069 6e20 3c54 543e 2f76 6172 2f6c - 0x07e0: 6f67 2f61 7061 6368 653c 2f54 543e 2c20 - 0x07f0: 616e 6420 7769 6c6c 2062 6520 726f 7461 - 0x0800: 7465 640a 7765 656b 6c79 2e20 2054 6865 - 0x0810: 2066 7265 7175 656e 6379 206f 6620 726f - 0x0820: 7461 7469 6f6e 2063 616e 2062 6520 6561 - 0x0830: 7369 6c79 2063 6861 6e67 6564 2062 7920 - 0x0840: 6564 6974 696e 670a 3c54 543e 2f65 7463 - 0x0850: 2f6c 6f67 726f 7461 7465 2e64 2f61 7061 - 0x0860: 6368 653c 2f54 543e 2e3c 2f4c 493e 0a0a - 0x0870: 3c4c 493e 0a54 6865 2064 6566 6175 6c74 - 0x0880: 2064 6972 6563 746f 7279 2069 6e64 6578 - 0x0890: 2069 7320 3c54 543e 696e 6465 782e 6874 - 0x08a0: 6d6c 3c2f 5454 3e2c 206d 6561 6e69 6e67 - 0x08b0: 2074 6861 7420 7265 7175 6573 7473 0a66 - 0x08c0: 6f72 2061 2064 6972 6563 746f 7279 203c - 0x08d0: 5454 3e2f 666f 6f2f 6261 722f 3c2f 5454 - 0x08e0: 3e20 7769 6c6c 2067 6976 6520 7468 6520 - 0x08f0: 636f 6e74 656e 7473 206f 6620 7468 6520 - 0x0900: 6669 6c65 203c 5454 3e2f 7661 722f 7777 - 0x0910: 772f 666f 6f2f 6261 722f 696e 6465 782e - 0x0920: 6874 6d6c 3c2f 5454 3e0a 6966 2069 7420 - 0x0930: 6578 6973 7473 2028 6173 7375 6d69 6e67 - 0x0940: 2074 6861 7420 3c54 543e 2f76 6172 2f77 - 0x0950: 7777 3c2f 5454 3e20 6973 2079 6f75 7220 - 0x0960: 3c54 543e 446f 6375 6d65 6e74 526f 6f74 - 0x0970: 3c2f 5454 3e29 2e3c 2f4c 493e 0a0a 3c4c - 0x0980: 493e 0a55 7365 7220 6469 7265 6374 6f72 - 0x0990: 6965 7320 6172 6520 656e 6162 6c65 642c - 0x09a0: 2061 6e64 2075 7365 7220 646f 6375 6d65 - 0x09b0: 6e74 7320 7769 6c6c 2062 6520 6c6f 6f6b - 0x09c0: 6564 2066 6f72 0a69 6e20 7468 6520 3c54 - 0x09d0: 543e 7075 626c 6963 5f68 746d 6c3c 2f54 - 0x09e0: 543e 2064 6972 6563 746f 7279 206f 6620 - 0x09f0: 7468 6520 7573 6572 7327 2068 6f6d 6573 - 0x0a00: 2e20 2054 6865 7365 2064 6972 730a 7368 - 0x0a10: 6f75 6c64 2062 6520 756e 6465 7220 3c54 - 0x0a20: 543e 2f68 6f6d 653c 2f54 543e 2c20 616e - 0x0a30: 6420 7573 6572 7320 7769 6c6c 206e 6f74 - 0x0a40: 2062 6520 6162 6c65 2074 6f20 7379 6d6c - 0x0a50: 696e 6b0a 746f 2066 696c 6573 2074 6865 - 0x0a60: 7920 646f 6e27 7420 6f77 6e2e 3c2f 4c49 - 0x0a70: 3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074 6865 - 0x0a80: 2073 7461 6e64 6172 6420 6170 6163 6865 - 0x0a90: 206d 6f64 756c 6573 2061 7265 2061 7661 - 0x0aa0: 696c 6162 6c65 2077 6974 6820 7468 6973 - 0x0ab0: 2072 656c 6561 7365 2061 6e64 2061 7265 - 0x0ac0: 0a6e 6f77 206d 616e 6167 6564 2077 6974 - 0x0ad0: 6820 6465 6263 6f6e 662e 2020 5479 7065 - 0x0ae0: 203c 5454 3e64 706b 672d 7265 636f 6e66 - 0x0af0: 6967 7572 6520 6170 6163 6865 3c2f 5454 - 0x0b00: 3e20 746f 0a73 656c 6563 7420 7768 6963 - 0x0b10: 6820 6d6f 6475 6c65 7320 796f 7520 7761 - 0x0b20: 6e74 2065 6e61 626c 6564 2e20 204d 616e - 0x0b30: 7920 6f74 6865 7220 6d6f 6475 6c65 7320 - 0x0b40: 6172 6520 6176 6169 6c61 626c 650a 7468 - 0x0b50: 726f 7567 6820 7468 6520 4465 6269 616e - 0x0b60: 2070 6163 6b61 6765 2073 7973 7465 6d20 - 0x0b70: 7769 7468 2074 6865 206e 616d 6573 203c - 0x0b80: 5454 3e6c 6962 6170 6163 6865 2d6d 6f64 - 0x0b90: 2d2a 3c2f 5454 3e2e 0a49 6620 796f 7520 - 0x0ba0: 6e65 6564 2074 6f20 636f 6d70 696c 6520 - 0x0bb0: 6120 6d6f 6475 6c65 2079 6f75 7273 656c - 0x0bc0: 662c 2079 6f75 2077 696c 6c20 6e65 6564 - 0x0bd0: 2074 6f20 696e 7374 616c 6c20 7468 650a - 0x0be0: 3c54 543e 6170 6163 6865 2d64 6576 3c2f - 0x0bf0: 5454 3e20 7061 636b 6167 652e 0a0a 3c50 - 0x0c00: 3e4d 6f72 6520 646f 6375 6d65 6e74 6174 - 0x0c10: 696f 6e20 6f6e 2041 7061 6368 6520 6361 - 0x0c20: 6e20 6265 2066 6f75 6e64 206f 6e3a 0a3c - 0x0c30: 554c 3e0a 3c4c 493e 0a54 6865 203c 4120 - 0x0c40: 4852 4546 3d22 2f64 6f63 2f61 7061 6368 - 0x0c50: 652d 646f 632f 6d61 6e75 616c 2f22 3e41 - 0x0c60: 7061 6368 6520 646f 6375 6d65 6e74 6174 - 0x0c70: 696f 6e3c 2f41 3e20 7374 6f72 6564 206f - 0x0c80: 6e20 796f 7572 2073 6572 7665 722e 3c2f - 0x0c90: 4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 - 0x0ca0: 2048 5245 463d 2268 7474 703a 2f2f 7777 - 0x0cb0: 772e 6170 6163 6865 2e6f 7267 2f22 3e41 - 0x0cc0: 7061 6368 6520 5072 6f6a 6563 743c 2f41 - 0x0cd0: 3e20 686f 6d65 2073 6974 652e 3c2f 4c49 - 0x0ce0: 3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048 - 0x0cf0: 5245 463d 2268 7474 703a 2f2f 7777 772e - 0x0d00: 6170 6163 6865 2d73 736c 2e6f 7267 2f22 - 0x0d10: 3e41 7061 6368 652d 5353 4c3c 2f41 3e20 - 0x0d20: 686f 6d65 2073 6974 652e 3c2f 4c49 3e0a - 0x0d30: 0a3c 4c49 3e0a 5468 6520 3c41 2048 5245 - 0x0d40: 463d 2268 7474 703a 2f2f 7065 726c 2e61 - 0x0d50: 7061 6368 652e 6f72 672f 223e 6d6f 6420 - 0x0d60: 7065 726c 3c2f 413e 2068 6f6d 6520 7369 - 0x0d70: 7465 2e3c 2f4c 493e 0a0a 3c4c 493e 0a54 - 0x0d80: 6865 203c 4120 4852 4546 3d22 6874 7470 - 0x0d90: 3a2f 2f77 7777 2e61 7061 6368 6577 6565 - 0x0da0: 6b2e 636f 6d2f 223e 4170 6163 6865 5765 - 0x0db0: 656b 3c2f 413e 206e 6577 736c 6574 7465 - 0x0dc0: 722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468 - 0x0dd0: 6520 3c41 2048 5245 463d 2268 7474 703a - 0x0de0: 2f2f 7777 772e 6465 6269 616e 2e6f 7267 - 0x0df0: 2f64 6f63 2f22 3e44 6562 6961 6e20 5072 - 0x0e00: 6f6a 6563 740a 446f 6375 6d65 6e74 6174 - 0x0e10: 696f 6e3c 2f41 3e20 7768 6963 6820 636f - 0x0e20: 6e74 6169 6e73 2048 4f57 544f 732c 2046 - 0x0e30: 4151 732c 2061 6e64 2073 6f66 7477 6172 - 0x0e40: 6520 7570 6461 7465 732e 3c2f 4c49 3e0a - 0x0e50: 3c2f 554c 3e0a 0a3c 503e 596f 7520 6361 - 0x0e60: 6e20 616c 736f 2063 6f6e 7375 6c74 2074 - 0x0e70: 6865 206c 6973 7420 6f66 203c 4120 4852 - 0x0e80: 4546 3d22 6874 7470 3a2f 2f77 7777 2e62 - 0x0e90: 6f75 7465 6c6c 2e63 6f6d 2f66 6171 2f22 - 0x0ea0: 3e57 6f72 6c64 0a57 6964 6520 5765 6220 - 0x0eb0: 4672 6571 7565 6e74 6c79 2041 736b 6564 - 0x0ec0: 2051 7565 7374 696f 6e73 3c2f 413e 2066 - 0x0ed0: 6f72 2069 6e66 6f72 6d61 7469 6f6e 2e0a - 0x0ee0: 0a3c 4832 3e4c 6574 206f 7468 6572 2070 - 0x0ef0: 656f 706c 6520 6b6e 6f77 2061 626f 7574 - 0x0f00: 2074 6869 7320 7365 7276 6572 3c2f 4832 - 0x0f10: 3e0a 0a3c 4120 4852 4546 3d22 6874 7470 - 0x0f20: 3a2f 2f6e 6574 6372 6166 742e 636f 6d2f - 0x0f30: 223e 4e65 7463 7261 6674 3c2f 413e 2070 - 0x0f40: 726f 7669 6465 7320 616e 2069 6e74 6572 - 0x0f50: 6573 7469 6e67 2066 7265 650a 7365 7276 - 0x0f60: 6963 6520 666f 7220 7765 6220 7369 7465 - 0x0f70: 206d 6f6e 6974 6f72 696e 6720 616e 6420 - 0x0f80: 7374 6174 6973 7469 6320 636f 6c6c 6563 - 0x0f90: 7469 6f6e 2e0a 596f 7520 6361 6e20 6c65 - 0x0fa0: 7420 7468 656d 206b 6e6f 7720 6162 6f75 - 0x0fb0: 7420 796f 7572 2073 6572 7665 7220 7573 - 0x0fc0: 696e 6720 7468 6569 720a 3c41 2048 5245 - 0x0fd0: 463d 2268 7474 703a 2f2f 7570 7469 6d65 - 0x0fe0: 2e6e 6574 6372 6166 742e 636f 6d2f 223e - 0x0ff0: 696e 7465 7266 6163 653c 2f41 3e2e 0a45 - 0x1000: 6e61 626c 696e 6720 7468 6520 6d6f 6e69 - 0x1010: 746f 7269 6e67 206f 6620 796f 7572 2073 - 0x1020: 6572 7665 7220 7769 6c6c 2070 726f 7669 - 0x1030: 6465 2061 2062 6574 7465 7220 676c 6f62 - 0x1040: 616c 206f 7665 7276 6965 770a 6f66 2077 - 0x1050: 686f 2069 7320 7573 696e 6720 7768 6174 - 0x1060: 2061 6e64 2077 6865 7265 2c20 616e 6420 - 0x1070: 6974 2077 6f75 6c64 2067 6976 6520 4465 - 0x1080: 6269 616e 2061 2062 6574 7465 720a 6f76 - 0x1090: 6572 7669 6577 206f 6620 7468 6520 6170 - 0x10a0: 6163 6865 2070 6163 6b61 6765 2075 7361 - 0x10b0: 6765 2e0a 0a3c 4832 3e41 626f 7574 2074 - 0x10c0: 6869 7320 7061 6765 3c2f 4832 3e0a 0a3c - 0x10d0: 494d 4720 414c 4947 4e3d 2272 6967 6874 - 0x10e0: 2220 414c 543d 2222 2048 4549 4748 543d - 0x10f0: 2232 3437 2220 5749 4454 483d 2232 3738 - 0x1100: 2220 5352 433d 2269 636f 6e73 2f6a 6865 - 0x1110: 3036 312e 706e 6722 3e0a 0a3c 503e 5468 - 0x1120: 6973 2069 7320 6120 706c 6163 6568 6f6c - 0x1130: 6465 7220 7061 6765 2069 6e73 7461 6c6c - 0x1140: 6564 2062 7920 7468 6520 3c41 0a48 5245 - 0x1150: 463d 2268 7474 703a 2f2f 7777 772e 6465 - 0x1160: 6269 616e 2e6f 7267 2f22 3e44 6562 6961 - 0x1170: 6e3c 2f41 3e0a 7265 6c65 6173 6520 6f66 - 0x1180: 2074 6865 2061 7061 6368 6520 5765 6220 - 0x1190: 7365 7276 6572 2070 6163 6b61 6765 2e0a - 0x11a0: 0a3c 503e 5468 6973 2063 6f6d 7075 7465 - 0x11b0: 7220 6861 7320 696e 7374 616c 6c65 6420 - 0x11c0: 7468 6520 4465 6269 616e 2047 4e55 2f4c - 0x11d0: 696e 7578 206f 7065 7261 7469 6e67 2073 - 0x11e0: 7973 7465 6d2c 0a62 7574 2069 7420 6861 - 0x11f0: 7320 3c73 7472 6f6e 673e 6e6f 7468 696e - 0x1200: 6720 746f 2064 6f20 7769 7468 2074 6865 - 0x1210: 2044 6562 6961 6e0a 5072 6f6a 6563 743c - 0x1220: 2f73 7472 6f6e 673e 2e20 506c 6561 7365 - 0x1230: 2064 6f20 3c73 7472 6f6e 673e 6e6f 743c - 0x1240: 2f73 7472 6f6e 673e 2063 6f6e 7461 6374 - 0x1250: 2074 6865 2044 6562 6961 6e0a 5072 6f6a - 0x1260: 6563 7420 6162 6f75 7420 6974 2e3c 2f50 - 0x1270: 3e0a 0a3c 503e 4966 2079 6f75 2066 696e - 0x1280: 6420 6120 6275 6720 696e 2074 6869 7320 - 0x1290: 6170 6163 6865 2070 6163 6b61 6765 2c20 - 0x12a0: 6f72 2069 6e20 4170 6163 6865 2069 7473 - 0x12b0: 656c 662c 0a70 6c65 6173 6520 6669 6c65 - 0x12c0: 2061 2062 7567 2072 6570 6f72 7420 6f6e - 0x12d0: 2069 742e 2020 496e 7374 7275 6374 696f - 0x12e0: 6e73 206f 6e20 646f 696e 6720 7468 6973 - 0x12f0: 2c20 616e 6420 7468 650a 6c69 7374 206f - 0x1300: 6620 3c41 2048 5245 463d 2268 7474 703a - 0x1310: 2f2f 6275 6773 2e64 6562 6961 6e2e 6f72 - 0x1320: 672f 7372 633a 6170 6163 6865 223e 6b6e - 0x1330: 6f77 6e20 6275 6773 3c2f 413e 206f 6620 - 0x1340: 7468 6973 0a70 6163 6b61 6765 2c20 6361 - 0x1350: 6e20 6265 2066 6f75 6e64 2069 6e20 7468 - 0x1360: 6520 0a3c 4120 4852 4546 3d22 6874 7470 - 0x1370: 3a2f 2f77 7777 2e64 6562 6961 6e2e 6f72 - 0x1380: 672f 4275 6773 2f52 6570 6f72 7469 6e67 - 0x1390: 223e 4465 6269 616e 2042 7567 2054 7261 - 0x13a0: 636b 696e 6720 5379 7374 656d 3c2f 413e - 0x13b0: 2e0a 0a3c 503e 5468 616e 6b73 2066 6f72 - 0x13c0: 2075 7369 6e67 2074 6869 7320 7061 636b - 0x13d0: 6167 652c 2061 6e64 2063 6f6e 6772 6174 - 0x13e0: 756c 6174 696f 6e73 2066 6f72 2079 6f75 - 0x13f0: 7220 6368 6f69 6365 206f 660a 6120 4465 - 0x1400: 6269 616e 2073 7973 7465 6d21 3c2f 503e - 0x1410: 0a0a 3c44 4956 2061 6c69 676e 3d22 6365 - 0x1420: 6e74 6572 223e 0a3c 6120 6872 6566 3d22 - 0x1430: 6874 7470 3a2f 2f77 7777 2e64 6562 6961 - 0x1440: 6e2e 6f72 672f 223e 0a3c 494d 4720 616c - 0x1450: 6967 6e3d 226d 6964 646c 6522 2068 6569 - 0x1460: 6768 743d 2233 3022 2077 6964 7468 3d22 - 0x1470: 3235 2220 7372 633d 2269 636f 6e73 2f64 - 0x1480: 6562 6961 6e2f 6f70 656e 6c6f 676f 2d32 - 0x1490: 352e 6a70 6722 2061 6c74 3d22 4465 6269 - 0x14a0: 616e 223e 0a3c 2f61 3e0a 3c61 2068 7265 - 0x14b0: 663d 2268 7474 703a 2f2f 7777 772e 6170 - 0x14c0: 6163 6865 2e6f 7267 2f22 3e0a 3c49 4d47 - 0x14d0: 2061 6c69 676e 3d22 6d69 6464 6c65 2220 - 0x14e0: 6865 6967 6874 3d22 3332 2220 7769 6474 - 0x14f0: 683d 2232 3539 2220 7372 633d 2269 636f - 0x1500: 6e73 2f61 7061 6368 655f 7062 2e70 6e67 - 0x1510: 2220 616c 743d 2241 7061 6368 6522 3e0a - 0x1520: 3c2f 613e 0a3c 2f44 4956 3e0a 0a3c 212d - 0x1530: 2d0a 2020 5468 6973 2070 6167 6520 7761 - 0x1540: 7320 696e 6974 6961 6c6c 7920 6372 6561 - 0x1550: 7465 6420 6279 204a 6f68 6e69 6520 496e - 0x1560: 6772 616d 2028 6874 7470 3a2f 2f6e 6574 - 0x1570: 676f 642e 6e65 742f 290a 2020 4974 2077 - 0x1580: 6173 206c 6174 6572 2065 6469 7465 6420 - 0x1590: 6279 204d 6174 7468 6577 2057 696c 636f - 0x15a0: 7820 616e 6420 4a6f 7369 7020 526f 6469 - 0x15b0: 6e2e 0a20 204c 6173 7420 6d6f 6469 6669 - 0x15c0: 6564 3a20 2444 6174 653a 2032 3030 342f - 0x15d0: 3036 2f32 3020 3135 3a33 333a 3537 2024 - 0x15e0: 2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44 593e - 0x15f0: 0a3c 2f48 544d 4c3e 0a -23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5560 win 12383 <nop,nop,timestamp 1306300953 1306300953> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 - 0x0010: 0034 1b6e 4000 4006 2154 7f00 0001 7f00 - 0x0020: 0001 da70 0050 3758 8a49 377a a3a9 8010 - 0x0030: 305f 10ea 0000 0101 080a 4ddc 9219 4ddc - 0x0040: 9219 -23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: F 203:203(0) ack 5560 win 12383 <nop,nop,timestamp 1306302241 1306300953> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 - 0x0010: 0034 1b70 4000 4006 2152 7f00 0001 7f00 - 0x0020: 0001 da70 0050 3758 8a49 377a a3a9 8011 - 0x0030: 305f 0be1 0000 0101 080a 4ddc 9721 4ddc - 0x0040: 9219 -23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: F 5560:5560(0) ack 204 win 8192 <nop,nop,timestamp 1306302243 1306302241> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 - 0x0010: 0034 1fe8 4000 4006 1cda 7f00 0001 7f00 - 0x0020: 0001 0050 da70 377a a3a9 3758 8a4a 8011 - 0x0030: 2000 1735 0000 0101 080a 4ddc 9723 4ddc - 0x0040: 9721 -23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: . ack 5561 win 12383 <nop,nop,timestamp 1306302243 1306302243> - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 - 0x0010: 0034 1b72 4000 4006 2150 7f00 0001 7f00 - 0x0020: 0001 da70 0050 3758 8a4a 377a a3aa 8010 - 0x0030: 305f 06d4 0000 0101 080a 4ddc 9723 4ddc - 0x0040: 9723 diff --git a/contrib/tcpdump/timed.h b/contrib/tcpdump/timed.h deleted file mode 100644 index 0a5c5fe57a7d2..0000000000000 --- a/contrib/tcpdump/timed.h +++ /dev/null @@ -1,92 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/timed.h,v 1.5 2002/12/11 07:14:12 guy Exp $ (LBL) */ -/* - * Copyright (c) 1983, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)timed.h 8.1 (Berkeley) 6/2/93 - */ - -#ifndef _PROTOCOLS_TIMED_H_ -#define _PROTOCOLS_TIMED_H_ - -/* - * Time Synchronization Protocol - */ - -#define TSPVERSION 1 -#define ANYADDR NULL - -struct tsp { - u_int8_t tsp_type; - u_int8_t tsp_vers; - u_int16_t tsp_seq; - union { - struct timeval tspu_time; - int8_t tspu_hopcnt; - } tsp_u; - int8_t tsp_name[256]; -}; - -#define tsp_time tsp_u.tspu_time -#define tsp_hopcnt tsp_u.tspu_hopcnt - -/* - * Command types. - */ -#define TSP_ANY 0 /* match any types */ -#define TSP_ADJTIME 1 /* send adjtime */ -#define TSP_ACK 2 /* generic acknowledgement */ -#define TSP_MASTERREQ 3 /* ask for master's name */ -#define TSP_MASTERACK 4 /* acknowledge master request */ -#define TSP_SETTIME 5 /* send network time */ -#define TSP_MASTERUP 6 /* inform slaves that master is up */ -#define TSP_SLAVEUP 7 /* slave is up but not polled */ -#define TSP_ELECTION 8 /* advance candidature for master */ -#define TSP_ACCEPT 9 /* support candidature of master */ -#define TSP_REFUSE 10 /* reject candidature of master */ -#define TSP_CONFLICT 11 /* two or more masters present */ -#define TSP_RESOLVE 12 /* masters' conflict resolution */ -#define TSP_QUIT 13 /* reject candidature if master is up */ -#define TSP_DATE 14 /* reset the time (date command) */ -#define TSP_DATEREQ 15 /* remote request to reset the time */ -#define TSP_DATEACK 16 /* acknowledge time setting */ -#define TSP_TRACEON 17 /* turn tracing on */ -#define TSP_TRACEOFF 18 /* turn tracing off */ -#define TSP_MSITE 19 /* find out master's site */ -#define TSP_MSITEREQ 20 /* remote master's site request */ -#define TSP_TEST 21 /* for testing election algo */ -#define TSP_SETDATE 22 /* New from date command */ -#define TSP_SETDATEREQ 23 /* New remote for above */ -#define TSP_LOOP 24 /* loop detection packet */ - -#define TSPTYPENUMBER 25 - -#endif /* !_TIMED_H_ */ diff --git a/contrib/tcpdump/token.h b/contrib/tcpdump/token.h deleted file mode 100644 index 8e7fd6d4e27df..0000000000000 --- a/contrib/tcpdump/token.h +++ /dev/null @@ -1,52 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/token.h,v 1.6 2002/12/11 07:14:12 guy Exp $ (LBL) */ -/* - * Copyright (c) 1998, Larry Lile - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice unmodified, this list of conditions, and the following - * disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ - -#define TOKEN_HDRLEN 14 -#define TOKEN_RING_MAC_LEN 6 -#define ROUTING_SEGMENT_MAX 16 -#define IS_SOURCE_ROUTED(trp) ((trp)->token_shost[0] & 0x80) -#define FRAME_TYPE(trp) (((trp)->token_fc & 0xC0) >> 6) -#define TOKEN_FC_LLC 1 - -#define BROADCAST(trp) ((ntohs((trp)->token_rcf) & 0xE000) >> 13) -#define RIF_LENGTH(trp) ((ntohs((trp)->token_rcf) & 0x1f00) >> 8) -#define DIRECTION(trp) ((ntohs((trp)->token_rcf) & 0x0080) >> 7) -#define LARGEST_FRAME(trp) ((ntohs((trp)->token_rcf) & 0x0070) >> 4) -#define RING_NUMBER(trp, x) ((ntohs((trp)->token_rseg[x]) & 0xfff0) >> 4) -#define BRIDGE_NUMBER(trp, x) ((ntohs((trp)->token_rseg[x]) & 0x000f)) -#define SEGMENT_COUNT(trp) ((int)((RIF_LENGTH(trp) - 2) / 2)) - -struct token_header { - u_int8_t token_ac; - u_int8_t token_fc; - u_int8_t token_dhost[TOKEN_RING_MAC_LEN]; - u_int8_t token_shost[TOKEN_RING_MAC_LEN]; - u_int16_t token_rcf; - u_int16_t token_rseg[ROUTING_SEGMENT_MAX]; -}; diff --git a/contrib/tcpdump/udp.h b/contrib/tcpdump/udp.h deleted file mode 100644 index 001b05972f9b7..0000000000000 --- a/contrib/tcpdump/udp.h +++ /dev/null @@ -1,88 +0,0 @@ -/* @(#) $Header: /tcpdump/master/tcpdump/udp.h,v 1.8 2005/04/06 21:33:28 mcr Exp $ (LBL) */ -/* - * Copyright (c) 1982, 1986, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)udp.h 8.1 (Berkeley) 6/10/93 - */ - -/* - * Udp protocol header. - * Per RFC 768, September, 1981. - */ -struct udphdr { - u_int16_t uh_sport; /* source port */ - u_int16_t uh_dport; /* destination port */ - u_int16_t uh_ulen; /* udp length */ - u_int16_t uh_sum; /* udp checksum */ -}; - -#define TFTP_PORT 69 /*XXX*/ -#define KERBEROS_PORT 88 /*XXX*/ -#define SUNRPC_PORT 111 /*XXX*/ -#define SNMP_PORT 161 /*XXX*/ -#define NTP_PORT 123 /*XXX*/ -#define SNMPTRAP_PORT 162 /*XXX*/ -#define ISAKMP_PORT 500 /*XXX*/ -#define SYSLOG_PORT 514 /* rfc3164 */ -#define TIMED_PORT 525 /*XXX*/ -#define RIP_PORT 520 /*XXX*/ -#define LDP_PORT 646 -#define AODV_PORT 654 /*XXX*/ -#define KERBEROS_SEC_PORT 750 /*XXX*/ -#define L2TP_PORT 1701 /*XXX*/ -#define SIP_PORT 5060 -#define ISAKMP_PORT_NATT 4500 /* rfc3948 */ -#define ISAKMP_PORT_USER1 7500 /*XXX - nonstandard*/ -#define ISAKMP_PORT_USER2 8500 /*XXX - nonstandard*/ -#define RX_PORT_LOW 7000 /*XXX*/ -#define RX_PORT_HIGH 7009 /*XXX*/ -#define NETBIOS_NS_PORT 137 -#define NETBIOS_DGRAM_PORT 138 -#define CISCO_AUTORP_PORT 496 /*XXX*/ -#define RADIUS_PORT 1645 -#define RADIUS_NEW_PORT 1812 -#define RADIUS_ACCOUNTING_PORT 1646 -#define RADIUS_NEW_ACCOUNTING_PORT 1813 -#define HSRP_PORT 1985 /*XXX*/ -#define LWRES_PORT 921 -#define ZEPHYR_SRV_PORT 2103 -#define ZEPHYR_CLT_PORT 2104 -#define MPLS_LSP_PING_PORT 3503 /* draft-ietf-mpls-lsp-ping-02.txt */ -#define BFD_CONTROL_PORT 3784 /* draft-katz-ward-bfd-v4v6-1hop-00.txt */ -#define BFD_ECHO_PORT 3785 /* draft-katz-ward-bfd-v4v6-1hop-00.txt */ -#define LMP_PORT 49998 /* unofficial - no IANA assignment yet */ - -#ifdef INET6 -#define RIPNG_PORT 521 /*XXX*/ -#define DHCP6_SERV_PORT 546 /*XXX*/ -#define DHCP6_CLI_PORT 547 /*XXX*/ -#endif diff --git a/contrib/tcpdump/util.c b/contrib/tcpdump/util.c deleted file mode 100644 index c078f0b79e0a7..0000000000000 --- a/contrib/tcpdump/util.c +++ /dev/null @@ -1,528 +0,0 @@ -/* - * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996, 1997 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/util.c,v 1.95.2.5 2005/06/16 01:19:57 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <sys/stat.h> - -#include <errno.h> -#ifdef HAVE_FCNTL_H -#include <fcntl.h> -#endif -#include <pcap.h> -#include <stdio.h> -#include <stdarg.h> -#include <stdlib.h> -#include <string.h> - -#include "interface.h" - -/* - * Print out a null-terminated filename (or other ascii string). - * If ep is NULL, assume no truncation check is needed. - * Return true if truncated. - */ -int -fn_print(register const u_char *s, register const u_char *ep) -{ - register int ret; - register u_char c; - - ret = 1; /* assume truncated */ - while (ep == NULL || s < ep) { - c = *s++; - if (c == '\0') { - ret = 0; - break; - } - if (!isascii(c)) { - c = toascii(c); - putchar('M'); - putchar('-'); - } - if (!isprint(c)) { - c ^= 0x40; /* DEL to ?, others to alpha */ - putchar('^'); - } - putchar(c); - } - return(ret); -} - -/* - * Print out a counted filename (or other ascii string). - * If ep is NULL, assume no truncation check is needed. - * Return true if truncated. - */ -int -fn_printn(register const u_char *s, register u_int n, - register const u_char *ep) -{ - register u_char c; - - while (n > 0 && (ep == NULL || s < ep)) { - n--; - c = *s++; - if (!isascii(c)) { - c = toascii(c); - putchar('M'); - putchar('-'); - } - if (!isprint(c)) { - c ^= 0x40; /* DEL to ?, others to alpha */ - putchar('^'); - } - putchar(c); - } - return (n == 0) ? 0 : 1; -} - -/* - * Print out a null-padded filename (or other ascii string). - * If ep is NULL, assume no truncation check is needed. - * Return true if truncated. - */ -int -fn_printzp(register const u_char *s, register u_int n, - register const u_char *ep) -{ - register int ret; - register u_char c; - - ret = 1; /* assume truncated */ - while (n > 0 && (ep == NULL || s < ep)) { - n--; - c = *s++; - if (c == '\0') { - ret = 0; - break; - } - if (!isascii(c)) { - c = toascii(c); - putchar('M'); - putchar('-'); - } - if (!isprint(c)) { - c ^= 0x40; /* DEL to ?, others to alpha */ - putchar('^'); - } - putchar(c); - } - return (n == 0) ? 0 : ret; -} - -/* - * Print the timestamp - */ -void -ts_print(register const struct timeval *tvp) -{ - register int s; - struct tm *tm; - time_t Time; - static unsigned b_sec; - static unsigned b_usec; - - switch (tflag) { - - case 0: /* Default */ - s = (tvp->tv_sec + thiszone) % 86400; - (void)printf("%02d:%02d:%02d.%06u ", - s / 3600, (s % 3600) / 60, s % 60, - (unsigned)tvp->tv_usec); - break; - - case 1: /* No time stamp */ - break; - - case 2: /* Unix timeval style */ - (void)printf("%u.%06u ", - (unsigned)tvp->tv_sec, - (unsigned)tvp->tv_usec); - break; - - case 3: /* Microseconds since previous packet */ - if (b_sec == 0) { - printf("000000 "); - } else { - int d_usec = tvp->tv_usec - b_usec; - int d_sec = tvp->tv_sec - b_sec; - - while (d_usec < 0) { - d_usec += 1000000; - d_sec--; - } - if (d_sec) - printf("%d. ", d_sec); - printf("%06d ", d_usec); - } - b_sec = tvp->tv_sec; - b_usec = tvp->tv_usec; - break; - - case 4: /* Default + Date*/ - s = (tvp->tv_sec + thiszone) % 86400; - Time = (tvp->tv_sec + thiszone) - s; - tm = gmtime (&Time); - if (!tm) - printf("Date fail "); - else - printf("%04d-%02d-%02d ", - tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday); - printf("%02d:%02d:%02d.%06u ", - s / 3600, (s % 3600) / 60, s % 60, (unsigned)tvp->tv_usec); - break; - } -} - -/* - * Print a relative number of seconds (e.g. hold time, prune timer) - * in the form 5m1s. This does no truncation, so 32230861 seconds - * is represented as 1y1w1d1h1m1s. - */ -void -relts_print(int secs) -{ - static const char *lengths[] = {"y", "w", "d", "h", "m", "s"}; - static const int seconds[] = {31536000, 604800, 86400, 3600, 60, 1}; - const char **l = lengths; - const int *s = seconds; - - if (secs == 0) { - (void)printf("0s"); - return; - } - if (secs < 0) { - (void)printf("-"); - secs = -secs; - } - while (secs > 0) { - if (secs >= *s) { - (void)printf("%d%s", secs / *s, *l); - secs -= (secs / *s) * *s; - } - s++; - l++; - } -} - -/* - * this is a generic routine for printing unknown data; - * we pass on the linefeed plus indentation string to - * get a proper output - returns 0 on error - */ - -int -print_unknown_data(const u_char *cp,const char *ident,int len) -{ - if (len < 0) { - printf("%sDissector error: print_unknown_data called with negative length", - ident); - return(0); - } - if (snapend - cp < len) - len = snapend - cp; - if (len < 0) { - printf("%sDissector error: print_unknown_data called with pointer past end of packet", - ident); - return(0); - } - hex_print(ident,cp,len); - return(1); /* everything is ok */ -} - -/* - * Convert a token value to a string; use "fmt" if not found. - */ -const char * -tok2strbuf(register const struct tok *lp, register const char *fmt, - register int v, char *buf, size_t bufsize) -{ - if (lp != NULL) { - while (lp->s != NULL) { - if (lp->v == v) - return (lp->s); - ++lp; - } - } - if (fmt == NULL) - fmt = "#%d"; - - (void)snprintf(buf, bufsize, fmt, v); - return (const char *)buf; -} - -/* - * Convert a token value to a string; use "fmt" if not found. - */ -const char * -tok2str(register const struct tok *lp, register const char *fmt, - register int v) -{ - static char buf[4][128]; - static int idx = 0; - char *ret; - - ret = buf[idx]; - idx = (idx+1) & 3; - return tok2strbuf(lp, fmt, v, ret, sizeof(buf[0])); -} - -/* - * Convert a bit token value to a string; use "fmt" if not found. - * this is useful for parsing bitfields, the output strings are comma seperated - */ -char * -bittok2str(register const struct tok *lp, register const char *fmt, - register int v) -{ - static char buf[256]; /* our stringbuffer */ - int buflen=0; - register int rotbit; /* this is the bit we rotate through all bitpositions */ - register int tokval; - - while (lp->s != NULL && lp != NULL) { - tokval=lp->v; /* load our first value */ - rotbit=1; - while (rotbit != 0) { - /* - * lets AND the rotating bit with our token value - * and see if we have got a match - */ - if (tokval == (v&rotbit)) { - /* ok we have found something */ - buflen+=snprintf(buf+buflen, sizeof(buf)-buflen, "%s, ",lp->s); - break; - } - rotbit=rotbit<<1; /* no match - lets shift and try again */ - } - lp++; - } - - if (buflen != 0) { /* did we find anything */ - /* yep, set the the trailing zero 2 bytes before to eliminate the last comma & whitespace */ - buf[buflen-2] = '\0'; - return (buf); - } - else { - /* bummer - lets print the "unknown" message as advised in the fmt string if we got one */ - if (fmt == NULL) - fmt = "#%d"; - (void)snprintf(buf, sizeof(buf), fmt, v); - return (buf); - } -} - -/* - * Convert a value to a string using an array; the macro - * tok2strary() in <interface.h> is the public interface to - * this function and ensures that the second argument is - * correct for bounds-checking. - */ -const char * -tok2strary_internal(register const char **lp, int n, register const char *fmt, - register int v) -{ - static char buf[128]; - - if (v >= 0 && v < n && lp[v] != NULL) - return lp[v]; - if (fmt == NULL) - fmt = "#%d"; - (void)snprintf(buf, sizeof(buf), fmt, v); - return (buf); -} - -/* - * Convert a 32-bit netmask to prefixlen if possible - * the function returns the prefix-len; if plen == -1 - * then conversion was not possible; - */ - -int -mask2plen (u_int32_t mask) -{ - u_int32_t bitmasks[33] = { - 0x00000000, - 0x80000000, 0xc0000000, 0xe0000000, 0xf0000000, - 0xf8000000, 0xfc000000, 0xfe000000, 0xff000000, - 0xff800000, 0xffc00000, 0xffe00000, 0xfff00000, - 0xfff80000, 0xfffc0000, 0xfffe0000, 0xffff0000, - 0xffff8000, 0xffffc000, 0xffffe000, 0xfffff000, - 0xfffff800, 0xfffffc00, 0xfffffe00, 0xffffff00, - 0xffffff80, 0xffffffc0, 0xffffffe0, 0xfffffff0, - 0xfffffff8, 0xfffffffc, 0xfffffffe, 0xffffffff - }; - int prefix_len = 32; - - /* let's see if we can transform the mask into a prefixlen */ - while (prefix_len >= 0) { - if (bitmasks[prefix_len] == mask) - break; - prefix_len--; - } - return (prefix_len); -} - -/* VARARGS */ -void -error(const char *fmt, ...) -{ - va_list ap; - - (void)fprintf(stderr, "%s: ", program_name); - va_start(ap, fmt); - (void)vfprintf(stderr, fmt, ap); - va_end(ap); - if (*fmt) { - fmt += strlen(fmt); - if (fmt[-1] != '\n') - (void)fputc('\n', stderr); - } - exit(1); - /* NOTREACHED */ -} - -/* VARARGS */ -void -warning(const char *fmt, ...) -{ - va_list ap; - - (void)fprintf(stderr, "%s: WARNING: ", program_name); - va_start(ap, fmt); - (void)vfprintf(stderr, fmt, ap); - va_end(ap); - if (*fmt) { - fmt += strlen(fmt); - if (fmt[-1] != '\n') - (void)fputc('\n', stderr); - } -} - -/* - * Copy arg vector into a new buffer, concatenating arguments with spaces. - */ -char * -copy_argv(register char **argv) -{ - register char **p; - register u_int len = 0; - char *buf; - char *src, *dst; - - p = argv; - if (*p == 0) - return 0; - - while (*p) - len += strlen(*p++) + 1; - - buf = (char *)malloc(len); - if (buf == NULL) - error("copy_argv: malloc"); - - p = argv; - dst = buf; - while ((src = *p++) != NULL) { - while ((*dst++ = *src++) != '\0') - ; - dst[-1] = ' '; - } - dst[-1] = '\0'; - - return buf; -} - -/* - * On Windows, we need to open the file in binary mode, so that - * we get all the bytes specified by the size we get from "fstat()". - * On UNIX, that's not necessary. O_BINARY is defined on Windows; - * we define it as 0 if it's not defined, so it does nothing. - */ -#ifndef O_BINARY -#define O_BINARY 0 -#endif - -char * -read_infile(char *fname) -{ - register int i, fd, cc; - register char *cp; - struct stat buf; - - fd = open(fname, O_RDONLY|O_BINARY); - if (fd < 0) - error("can't open %s: %s", fname, pcap_strerror(errno)); - - if (fstat(fd, &buf) < 0) - error("can't stat %s: %s", fname, pcap_strerror(errno)); - - cp = malloc((u_int)buf.st_size + 1); - if (cp == NULL) - error("malloc(%d) for %s: %s", (u_int)buf.st_size + 1, - fname, pcap_strerror(errno)); - cc = read(fd, cp, (u_int)buf.st_size); - if (cc < 0) - error("read %s: %s", fname, pcap_strerror(errno)); - if (cc != buf.st_size) - error("short read %s (%d != %d)", fname, cc, (int)buf.st_size); - - close(fd); - /* replace "# comment" with spaces */ - for (i = 0; i < cc; i++) { - if (cp[i] == '#') - while (i < cc && cp[i] != '\n') - cp[i++] = ' '; - } - cp[cc] = '\0'; - return (cp); -} - -void -safeputs(const char *s) -{ - while (*s) { - safeputchar(*s); - s++; - } -} - -void -safeputchar(int c) -{ - unsigned char ch; - - ch = (unsigned char)(c & 0xff); - if (ch < 0x80 && isprint(ch)) - printf("%c", ch); - else - printf("\\%03o", ch); -} diff --git a/contrib/tcpdump/vfprintf.c b/contrib/tcpdump/vfprintf.c deleted file mode 100644 index 354406ce2c43a..0000000000000 --- a/contrib/tcpdump/vfprintf.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 1995 - * The Regents of the University of California. All rights reserved. - * - * 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, (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, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * 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. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/vfprintf.c,v 1.6 2003/11/16 09:36:45 guy Exp $ (LBL)"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <sys/types.h> - -#include <stdio.h> -#include <stdarg.h> -#include <stdlib.h> -#include <unistd.h> - -#include "interface.h" - -/* - * Stock 4.3 doesn't have vfprintf. - * This routine is due to Chris Torek. - */ -vfprintf(f, fmt, args) - FILE *f; - char *fmt; - va_list args; -{ - int ret; - - if ((f->_flag & _IOWRT) == 0) { - if (f->_flag & _IORW) - f->_flag |= _IOWRT; - else - return EOF; - } - ret = _doprnt(fmt, args, f); - return ferror(f) ? EOF : ret; -} |