Add sample strace output to illustrate the timeout problem.
[obnox/wireshark/wip.git] / README.linux
1 $Id: README.linux,v 1.2 1999/12/29 21:33:06 gerald Exp $
2
3 The standard libpcap compiled for Linux has a timeout problem.
4 If you use Ethereal with this libpcap on a not-so-busy network, at
5 times you will see that the Ethereal GUI freezes. It will freeze until
6 one more packet is received.
7
8 As of version 0.4 of libpcap this problem still exists. This is the
9 version of libpcap that comes with the standard Linux distributions.
10 If the freezing really annoys you, you can apply a patch to the libpcap
11 source code.
12
13 Libpcap can be obtained from ftp://ftp.ee.lbl.gov
14
15 You can download the Linux patch at http://ethereal.zing.org/~gerald/
16
17 Modified RedHat 6.0 and 6.1 libpcap RPMs are available at
18 ftp://ethereal.zing.org/pub/ethereal/rpms
19
20
21 To illustrate the problem, below is the output of strace on Ethereal
22 using a stock version of libpcap, followed by a "fixed" version.
23 Note that in the "fixed" version select() is called before recvfrom().
24 The use of select() allows the packet capture to time out if there is
25 no incoming data.
26
27 30677 08:30:30 poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}], 2, 0) = 0
28 30677 08:30:30 recvfrom(8, "\0\20{\357;\333\10\0 }\200\302\10\0E\0\0(\22\23@\0\377"..., 65535, 0x20, {sa_family=17, sa_data="\10\0\0\0\0\2\0\1\3\6\10\0 }"}, [20]) = 60
29
30 30914 09:05:48 poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}], 2, 0) = 0
31 30914 09:05:48 select(9, [8], NULL, NULL, {0, 250000}) = 1 (in [8], left {0, 250000})
32 30914 09:05:48 recvfrom(8, "\10\0 }\200\302\0\20{\357;\333\10\0E\10\5\334-\323@\0\363"..., 65535, 0x20, {sa_family=17, sa_data="\10\0\0\0\0\2\0\1\3\6\0\20{\357"}, [20]) = 1514
33