A common mistake, Warning – Lucent Technologies Ethereal User Manual

Page 122

Advertising
background image

English

C-like

Description and example

eth.src[2] == 83

The example above uses the n format to specify a single range. In this case the ele-
ment in the sequence at offset n is selected. This is equivalent to n:1.

eth.src[0:3,1-2,:4,4:,2] ==
00:00:83:00:83:00:00:83:00:20:20:83

Ethereal allows you to string together single ranges in a comma separated list to form
compound ranges as shown above.

6.3.4. A common mistake

Warning!

Using the != operator on combined expressions like: eth.addr, ip.addr, tcp.port,
udp.port and alike will probably not work as expected!

Often people use a filter string to display something like ip.addr == 1.2.3.4 which will display all
packets containing the IP address 1.2.3.4.

Then they use ip.addr != 1.2.3.4 to see all packets not containing the IP address 1.2.3.4 in it. Unfor-
tunately, this does not do the expected.

Instead, that expression will even be true for packets where either source or destination IP address
equals 1.2.3.4. The reason for this, is that the expression ip.addr != 1.2.3.4 must be read as "the
packet contains a field named ip.addr with a value different from 1.2.3.4". As an IP datagram con-
tains both a source and a destination address, the expression will evaluate to true whenever at least
one of the two addresses differs from 1.2.3.4.

If you want to filter out all packets containing IP datagrams to or from IP address 1.2.3.4, then the
correct filter is !(ip.addr == 1.2.3.4) as it reads "show me all the packets for which it is not true that
a field named ip.addr exists with a value of 1.2.3.4", or in other words, "filter out all packets for
which there are no occurrences of a field named ip.addr with the value 1.2.3.4".

Working with captured packets

108

Advertising