1@(#) $Id: INSTALL,v 1.13 2000/11/23 20:07:29 leres Exp $ (LBL)
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.
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.
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.
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:
21        ftp://prep.ai.mit.edu/pub/gnu/gcc-*.tar.gz
23If you get the error message:
25	traceroute: unknown protocol icmp
27it usually means you're missing the icmp line in /etc/protocols.
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
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.
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
56	ip->ip_ttl = MAXTTL;
58after the line:
60	ip->ip_src = t;
62(or anywhere before the call to icmp_send) in routine icmp_reflect.
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
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