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