1100784Sfenner@(#) $Id: INSTALL,v 1.13 2000/11/23 20:07:29 leres Exp $ (LBL) 218579Sfenner 318579SfennerTraceroute is known to build and run under SunOS 4.1.4 and Solaris 5.4. 418579SfennerIf you are running a really old kernel, see the instructions under the 518579Sfennertitle "KERNEL MODIFICATIONS" further down. 618579Sfenner 718579SfennerTo build traceroute, first customize any paths in Makefile.in, then run 818579Sfenner"./configure" (a shell script). The configure script will determine 918579Sfenneryour system attributes and generate an appropriate Makefile from 1018579SfennerMakefile.in. Next run "make". If everything goes well you can su to 1118579Sfennerroot and run "make install" and "make install-man". Note that traceroute 1218579Sfennermust be installed setuid to root or run as root. 1318579Sfenner 1418579SfennerIf configure fails for some reason and decide to submit a bug report to 1518579Sfennertraceroute@ee.lbl.gov, please include a copy of config.log. 1618579Sfenner 1718579SfennerYou will need an ANSI C compiler to build libpcap. The configure script 1818579Sfennerwill abort if your compiler is not ANSI compliant. If this happens, use 1918579Sfennerthe GNU C compiler, available via anonymous ftp: 2018579Sfenner 2118579Sfenner ftp://prep.ai.mit.edu/pub/gnu/gcc-*.tar.gz 2218579Sfenner 23100784SfennerIf you get the error message: 24100784Sfenner 25100784Sfenner traceroute: unknown protocol icmp 26100784Sfenner 27100784Sfennerit usually means you're missing the icmp line in /etc/protocols. 28100784Sfenner 29100784SfennerIf you are using Solaris 2.5.1 (and possibly higher), traceroute cannot 30100784Sfennercalculate checksums; configure automatically changes the default to 31100784Sfennerreflect this. The kernel updates the ip_id field with some unknown 32100784Sfennervalue and the ip_off field with the IP_DF bit. Also, if the the udp 33100784Sfenneruh_sum field is non-zero, it gets updated with the value of the uh_ulen 34100784Sfennerfield... This means that the icmp echo option (-I flag) is not as 35100784Sfenneruseful. 36100784Sfenner 3718579SfennerKERNEL MODIFICATIONS 3818579Sfenner-------------------- 3918579SfennerIf yor have a really old system, it may be necessary to modify your 4018579Sfennerkernel before traceroute will work. If you want to hack on your kernel, 4118579Sfennera modified version of the routine rip_output (normally found in the 4218579Sfennerfile /sys/netinet/raw_ip.c) can be found in rip_output.c. This code may 4318579Sfenneror may not resemble the code in your kernel. It may offer you a place 4418579Sfennerto start but we make no promises. If you do hack your kernel, remember 4518579Sfennerto test everything that uses raw ip sockets (e.g., ping and 4618579Sfenneregpup/gated) & make sure they still work. We wish you the best of luck 4718579Sfennerand you're on your own. 4818579Sfenner 4918579SfennerSome older kernels forward icmp packets that have a ttl of zero. If 5018579Sfenneryour system has this bug, you might want to fix it while you're in the 5118579Sfennerkernel. (This bug appears in all releases of BSD up to but not 5218579Sfennerincluding 4.3tahoe. If your version of netinet/ip_icmp.c is any earlier 5318579Sfennerthan 7.3 (April, '87), it has the bug.) The fix is just to add the 5418579Sfennerline: 5518579Sfenner 5618579Sfenner ip->ip_ttl = MAXTTL; 5718579Sfenner 5818579Sfennerafter the line: 5918579Sfenner 6018579Sfenner ip->ip_src = t; 6118579Sfenner 6218579Sfenner(or anywhere before the call to icmp_send) in routine icmp_reflect. 6318579Sfenner 6418579SfennerIf you're running this on a pre-4.3bsd system (e.g., SunOS 3) that 6518579Sfennerstrips ip headers from icmp messages, add -DARCHAIC to CFLAGS in the 6618579SfennerMakefile. Also note that rip_output contains a conditional for a 6718579Sfenner4.2/4.3 change in the location of a raw socket's protocol number. I've 6818579Sfennerchecked this under 4.3 & SunOS 3 but you should double-check your 6918579Sfennersystem to make sure the appropriate branch of the #if is taken (check 7018579Sfennerthe line that assigned to ip->ip_p in your system's original 7118579Sfennerrip_output). 7218579Sfenner 7318579Sfenner 7418579SfennerFILES 7518579Sfenner----- 7618579SfennerCHANGES - description of differences between releases 7718579SfennerFILES - list of files exported as part of the distribution 7818579SfennerINSTALL - this file 7918579SfennerMakefile.in - compilation rules (input to the configure script) 8018579SfennerREADME - description of distribution 8118579SfennerVERSION - version of this release 82100784Sfenneraclocal.m4 - autoconf macros 8318579Sfennerconfig.guess - autoconf support 8418579Sfennerconfig.sub - autoconf support 8518579Sfennerconfigure - configure script (run this first) 8618579Sfennerconfigure.in - configure script source 87100784Sfennerfindsaddr-generic.c - generic source address code 88100784Sfennerfindsaddr-linux.c - linux source address code 89100784Sfennerfindsaddr-socket.c - socket based soruce address code 90100784Sfennerfindsaddr.h - source address prototypes 91100784Sfennerifaddrlist.c - inet address routines 92100784Sfennerifaddrlist.h - inet address prototypes 9318579Sfennerinstall-sh - BSD style install script 9418579Sfennerlbl/gnuc.h - gcc macros and defines 9518579Sfennerlbl/os-*.h - os dependent defines and prototypes 96100784Sfennerlinux-include/* - network include files missing on Linux 9718579Sfennermean.awk - awk script to print out the mean time along a route 9818579Sfennermedian.awk - awk script to print out the median time along a route 9918579Sfennermkdep - construct Makefile dependency list 10018579Sfennerrip_output.c - sample rip_output() from /sys/netinet/raw_ip.c 101100784Sfennerstrerror.c - emulation routine 10218579Sfennertraceroute.8 - manual entry 10318579Sfennertraceroute.c - main program 104100784Sfennertraceroute.h - global prototypes 105100784Sfennerusleep.c - missing system call emulation 106