aboutsummaryrefslogtreecommitdiffstats
path: root/README.linux
blob: bb0efe3edbc3fa605713f2e67a494e9857c11f26 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$Id: README.linux,v 1.2 1999/12/29 21:33:06 gerald Exp $

The standard libpcap compiled for Linux has a timeout problem.
If you use Ethereal with this libpcap on a not-so-busy network, at
times you will see that the Ethereal GUI freezes. It will freeze until
one more packet is received.

As of version 0.4 of libpcap this problem still exists. This is the
version of libpcap that comes with the standard Linux distributions.
If the freezing really annoys you, you can apply a patch to the libpcap
source code.

Libpcap can be obtained from ftp://ftp.ee.lbl.gov

You can download the Linux patch at http://ethereal.zing.org/~gerald/

Modified RedHat 6.0 and 6.1 libpcap RPMs are available at
ftp://ethereal.zing.org/pub/ethereal/rpms


To illustrate the problem, below is the output of strace on Ethereal
using a stock version of libpcap, followed by a "fixed" version.
Note that in the "fixed" version select() is called before recvfrom().
The use of select() allows the packet capture to time out if there is
no incoming data.

30677 08:30:30 poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}], 2, 0) = 0
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

30914 09:05:48 poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}], 2, 0) = 0
30914 09:05:48 select(9, [8], NULL, NULL, {0, 250000}) = 1 (in [8], left {0, 250000})
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