1@(#) $Id: INSTALL,v 1.13 2000/11/23 20:07:29 leres Exp $ (LBL) 2 3Traceroute is known to build and run under SunOS 4.1.4 and Solaris 5.4. 4If you are running a really old kernel, see the instructions under the 5title "KERNEL MODIFICATIONS" further down. 6 7To build traceroute, first customize any paths in Makefile.in, then run 8"./configure" (a shell script). The configure script will determine 9your system attributes and generate an appropriate Makefile from 10Makefile.in. Next run "make". If everything goes well you can su to 11root and run "make install" and "make install-man". Note that traceroute 12must be installed setuid to root or run as root. 13 14If configure fails for some reason and decide to submit a bug report to 15traceroute@ee.lbl.gov, please include a copy of config.log. 16 17You will need an ANSI C compiler to build libpcap. The configure script 18will abort if your compiler is not ANSI compliant. If this happens, use 19the GNU C compiler, available via anonymous ftp: 20 21 ftp://prep.ai.mit.edu/pub/gnu/gcc-*.tar.gz 22 23If you get the error message: 24 25 traceroute: unknown protocol icmp 26 27it usually means you're missing the icmp line in /etc/protocols. 28 29If you are using Solaris 2.5.1 (and possibly higher), traceroute cannot 30calculate checksums; configure automatically changes the default to 31reflect this. The kernel updates the ip_id field with some unknown 32value and the ip_off field with the IP_DF bit. Also, if the the udp 33uh_sum field is non-zero, it gets updated with the value of the uh_ulen 34field... This means that the icmp echo option (-I flag) is not as 35useful. 36 37KERNEL MODIFICATIONS 38-------------------- 39If yor have a really old system, it may be necessary to modify your 40kernel before traceroute will work. If you want to hack on your kernel, 41a modified version of the routine rip_output (normally found in the 42file /sys/netinet/raw_ip.c) can be found in rip_output.c. This code may 43or may not resemble the code in your kernel. It may offer you a place 44to start but we make no promises. If you do hack your kernel, remember 45to test everything that uses raw ip sockets (e.g., ping and 46egpup/gated) & make sure they still work. We wish you the best of luck 47and you're on your own. 48 49Some older kernels forward icmp packets that have a ttl of zero. If 50your system has this bug, you might want to fix it while you're in the 51kernel. (This bug appears in all releases of BSD up to but not 52including 4.3tahoe. If your version of netinet/ip_icmp.c is any earlier 53than 7.3 (April, '87), it has the bug.) The fix is just to add the 54line: 55 56 ip->ip_ttl = MAXTTL; 57 58after the line: 59 60 ip->ip_src = t; 61 62(or anywhere before the call to icmp_send) in routine icmp_reflect. 63 64If you're running this on a pre-4.3bsd system (e.g., SunOS 3) that 65strips ip headers from icmp messages, add -DARCHAIC to CFLAGS in the 66Makefile. Also note that rip_output contains a conditional for a 674.2/4.3 change in the location of a raw socket's protocol number. I've 68checked this under 4.3 & SunOS 3 but you should double-check your 69system to make sure the appropriate branch of the #if is taken (check 70the line that assigned to ip->ip_p in your system's original 71rip_output). 72 73 74FILES 75----- 76CHANGES - description of differences between releases 77FILES - list of files exported as part of the distribution 78INSTALL - this file 79Makefile.in - compilation rules (input to the configure script) 80README - description of distribution 81VERSION - version of this release 82aclocal.m4 - autoconf macros 83config.guess - autoconf support 84config.sub - autoconf support 85configure - configure script (run this first) 86configure.in - configure script source 87findsaddr-generic.c - generic source address code 88findsaddr-linux.c - linux source address code 89findsaddr-socket.c - socket based soruce address code 90findsaddr.h - source address prototypes 91ifaddrlist.c - inet address routines 92ifaddrlist.h - inet address prototypes 93install-sh - BSD style install script 94lbl/gnuc.h - gcc macros and defines 95lbl/os-*.h - os dependent defines and prototypes 96linux-include/* - network include files missing on Linux 97mean.awk - awk script to print out the mean time along a route 98median.awk - awk script to print out the median time along a route 99mkdep - construct Makefile dependency list 100rip_output.c - sample rip_output() from /sys/netinet/raw_ip.c 101strerror.c - emulation routine 102traceroute.8 - manual entry 103traceroute.c - main program 104traceroute.h - global prototypes 105usleep.c - missing system call emulation 106