@(#) $Header: INSTALL,v 1.1 95/08/27 16:58:00 leres Exp $ (LBL)

Traceroute is know to build and run under SunOS 4.1.4 and Solaris 5.4.
If you are running a really old kernel, see the instructions under the
title "KERNEL MODIFICATIONS" further down.

To build traceroute, libpcap, first customize any paths in Makefile.in,
then run ./configure (a shell script).  "configure" will determine your
system attributes and generate an appropriate Makefile from
Makefile.in.  Next run "make", and if everything goes well, su and run
"make install" and "make install-man".

You will need an ANSI C compiler to build traceroute. If your compiler
is not ANSI compliant, use the GNU C compiler, available via anonymous
ftp:

        ftp://prep.ai.mit.edu/pub/gnu/gcc-*.tar.gz

If you do use gcc, you must run the "fixincludes" script. The configure
script automatically detects this possible configuration problem.

KERNEL MODIFICATIONS
--------------------
If yor have a really old system, it may be necessary to modify your
kernel before traceroute will work. If you want to hack on your kernel,
a modified version of the routine rip_output (normally found in the
file /sys/netinet/raw_ip.c) can be found in rip_output.c. This code may
or may not resemble the code in your kernel. It may offer you a place
to start but we make no promises. If you do hack your kernel, remember
to test everything that uses raw ip sockets (e.g., ping and
egpup/gated) & make sure they still work. We wish you the best of luck
and you're on your own.

Some older kernels forward icmp packets that have a ttl of zero. If
your system has this bug, you might want to fix it while you're in the
kernel.  (This bug appears in all releases of BSD up to but not
including 4.3tahoe. If your version of netinet/ip_icmp.c is any earlier
than 7.3 (April, '87), it has the bug.)  The fix is just to add the
line:

	ip->ip_ttl = MAXTTL;

after the line:

	ip->ip_src = t;

(or anywhere before the call to icmp_send) in routine icmp_reflect.

If you're running this on a pre-4.3bsd system (e.g., SunOS 3) that
strips ip headers from icmp messages, add -DARCHAIC to CFLAGS in the
Makefile.  Also note that rip_output contains a conditional for a
4.2/4.3 change in the location of a raw socket's protocol number.  I've
checked this under 4.3 & SunOS 3 but you should double-check your
system to make sure the appropriate branch of the #if is taken (check
the line that assigned to ip->ip_p in your system's original
rip_output).


-------------------- rip_output from /sys/netinet/raw_ip.c
