Errata


Print Print Icon

Submit your own errata for this product.


The errata list is a list of errors and their corrections that were found after the product was released.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.


Color Key: Serious Technical Mistake Minor Technical Mistake Language or formatting error Typo Question



Version Location Description Submitted By
Printed Page xvi
top of page

"I could work on my image processing projects at home on an i286/486 computer without having to compete with other students for access to the few Sun stations available at the university labs."

Linux doesn't run on a i286 -- it starts at a i386.

Anonymous 
Printed Page 36
Below figure 2-6

Maybe a mistake, maybe not.

I could be wrong here, but I suspect that the real reason for the skb_reserve(skb,2) is to keep the IP header aligned on a 4 byte boundary rather than a 16 byte boundary. 4 byte alignment makes sense as the IP, TCP and UDP header fields are all aligned on 32 bit boundaries to optimize access by 32 bit processors. A 16 byte alignment would be harder to explain unless the cache line size of the processor happened to be 16 bytes, in which case the code to do this would be over in the arch directory someplace.

Jeffrey Haran 
Printed Page 38
2nd-to-last paragraph

In the sentence "skb_pull removes a block of data from the head of the buffer by moving the head pointer forward", the
"head pointer" should be "data pointer"

Anonymous 
Printed Page 40
First line after Figure 2-9

In the sentence "The skb_clone routine can be used to check the cloned status of an skb buffer", the "skb_clone" should
be "skb_cloned".
skb_clone was already described prior to Figure 2-9, and it will make a "copy," not check the existing skb to see if it
was cloned.

Anonymous 
Printed Page 40
the last line

In "between skb->start and skb->end", skb->start should be skb->head

Anonymous 
Printed Page 62
line 22

ctl_data should be ctl_table

Anonymous 
Printed Page 76
Figure 4-1

Network E is not shown in the figure, but the text (last sentence on page 75 and
continues on page 76) talks about Network E in figure 4-1.

Anonymous 
Printed Page 121
4

In last text paragraph on the page, the symbol "dev->name" has been broken with a line break.

Anonymous 
Printed Page 126 - 1
*(126 - 1) should be 126*(126 - 1).

Anonymous 
Printed Page 139
3rd paragraph

This paragraph says that dev_alloc_name is called by alloc_netdev. However, this
function is called by register_netdev. The problem with this is that the name member
of the allocated netdev is still a format string after the call to alloc_netdev and
cannot be used to properly identify the device.

Anonymous 
Printed Page 204
First line of Tasklet Processing

"low-latency" should be "low-priority".
"high-latency" should be "high-priority"

Anonymous 
Printed Page 238
last paragraph

Since net_rx_action represents
should be
Since netif_receive_skb represents

Anonymous 
Printed Page 268
Paragraph 5

For consistency with Figure 13-2 and the rest of the text, AF_PACKET should probably
be PF_PACKET in 3 places. (You might also consider adding an explanation of the
relationship between the two names.)

Anonymous 
Printed Page 285
Last paragraph, line 4

PF_SOCKETS should be PF_PACKET.

Anonymous 
Printed Page 289
Bullet 3, line 1

AF_LLC should be PF_LLC to conform with the subsequent text.

Anonymous 
Printed Page 291
Table 13-4

The AppleTalk Address Resolution Protocol and IPX have the same 24-bit OUI.
00:00:00 belongs to Xerox.

Anonymous 
Printed Page 301
Figure 14-2

"IE, one instead of eye" should be "1F" in 8 places.

Anonymous 
Printed Page 307
Line 1

Delete "hosts located in".

Anonymous 
Printed Page 309
Line 3.

"states" should be "nodes".

Anonymous 
Printed Page 321
Bridge ID

Append "See Figure 15-7(a)."

Anonymous 
Printed Page 322
Figure 15-7(b)

"Port ID" should be "Port number" in two places.

Anonymous 
Printed Page 322
Bullet 2

Add a footnote that MAC addresses can be cloned, so they are not necessarily unique.

Anonymous 
Printed Page 325
Last line before Priority Vector

"ticks (1/256th of second)" should be "1/256th of a second".

Anonymous 
Printed Page 327
Line 2 of last paragraph

Figure 15-9 refers to DT, but does not define it.

Anonymous 
Printed Page 327
Third line from the bottom

Delete "ticks".

Anonymous 
Printed Page 332
Second to last paragraph

"Bridge ID BR3 < Bridge ID BR4" should be "Bridge ID BR2 < Bridge ID BR3"

Anonymous 
Printed Page 332
Line 1, last paragraph

BR4 should be BR3.

Anonymous 
Printed Page 333
Figure 15-13(a)

There are two BR4s; the right middle one should be BR3.
In the BPDU from BR4 to BR3, the Cost should be 110.

Anonymous 
Printed Page 334
Line 4 of first full paragraph

"than BR2's" should be "than BR3's".

Anonymous 
Printed Page 340
Last line of last paragraph before Topology Changes

BR2 should be BR1.

Anonymous 
Printed Page 347
Three bullets and preceding line.

Delete; all three are shown in the figure.

Anonymous 
Printed Page 358
Figure 16-4

eth2 should be eth0.

Anonymous 
Printed Page 360
Initialization of Bridging Code, paragraph 1, line 2.

br_uninit should be br_deinit.

Anonymous 
Printed Page 383
line 3

"bridge device" should be "STP".

Anonymous 
Printed Page 400
designated_cost line 2

16 should be 15 in two places.

Anonymous 
Printed Page 420
Figure 18-9

IPa should be IP1a in 6 places.

Anonymous 
Printed Page 421
Figure 18-10

The "4" to calculate OFFSET should read "8".

Anonymous 
Printed Page 421
Figure 18-10

The OFFSETs should be i*(MTU/8), i = 0..5
(And the MF and OFFSET should be under the IP header.)

Anonymous 
Printed Page 424
ID lines 3-4.

The reference should be to the section "Selecting the IP Header's ID Field".

Anonymous 
Printed Page 428
Line 3.

151.41.21.194 should be 151.41.221.194

Anonymous 
Printed Page 440
in_device structure, paragraph 2, line 1

in_dev should be in_device.

Anonymous 
Printed Page 442
CHECKSUM_UNNECESSARY, lines 1-2.

"L4 header and checksum" should be "L4 header and payload".

Anonymous 
Printed Page 448
Last paragraph

The explaination applies to the code that follows, which is not shown.

The first check is that the size of the L3 data is not less than the size of the IP
packet as recorded in the IP header.

The second check is that the size of the L3 data is not less than the size of the IP
header as recorded in the IP header.

Anonymous 
Printed Page 449
Last paragraph

If len is greater than the minimum L2 payload size, then there is no L2 padding, so
the L4 checksum computed in hardware does not include L2 padding.

Anonymous 
Printed Page 491
skb_is_nonlinear

non-null should be non-zero

Anonymous 
Printed Page 495
*hdrlen line 5

Encapsulation Security Payload
should be
Encapsulating Security Payload

Anonymous 
Printed Page 499
Paragraph 2, line 3.

fraghdrlen should be maxfraglen.

Anonymous 
Printed Page 508
Line 1.

dst_input should be dst_output.

Anonymous 
Printed Page 523
Figure 22-1

128 should be 228 in 3 places.
384 should be 484.

Anonymous 
Printed Page 540
Paragraph 3, line 4.

MF should be DF.

Anonymous 
Printed Page 556
Figure 23-3

ip_options is defined in net/inet_sock.h

Anonymous 
Printed Page 557
unsigned char _data[0]

_data should be __data.

Anonymous 
Printed Page 557
unsigned char _data[0], last line of first paragraph

Should be replaced with something like "declaring an array that will be defined by an
immediately succeeding declaration."

Anonymous 
Printed Page 558
struct ipq **pprev

"head" should be "previous element".

Anonymous 
Printed Page 559
int meat, line 2.

"the packet has been conpletely received" should be "there are no gaps in the
received fragments".

Anonymous 
Printed Page 565
Table 23-3.

The column headings:
"/proc filename" should be "Name",
"Associated kernel variable" should be "Description".
Add "Functions" at the top of the first column.

Anonymous 
Printed Page 573
Paragraph 2, line 2.

"hash" should be "protocol".

Anonymous 
Printed Page 580
Bullet 2, line 1.

"destination" should be "remote".

Anonymous 
Printed Page 580
Last paragraph, lines 9-10.

Interchange REQUEST and REPLY.

Anonymous 
Printed Page 582
Figure 24-8.

The Source and Destination addresses each should be 4 words.

Anonymous 
Printed Page 606
Figure 25-9(b).

Switch the labels on the exits of <Routing lookup>.
The Failure exit on <Lock> should go to (End).
The other two Failure exits and the Dropped exit should go to [Unlock].

Anonymous 
Printed Page 614
Bullet 2, line 3

Delete "non-" in "non-zero"

Anonymous 
Printed Page 617
Second #define

(ICMP_MIB_MAX + 1) should be (__ICMP_MIB_MAX + 1).

Anonymous 
Printed Page 619
Line beginning "ICMP_MIB_INXXX"

Interchange ICMP_MIB_INXXX and ICMP_MIB_OUTXXX.

Anonymous 
Printed Page 623
Lines 1-2.

Interchange "two" and "three".
Interchange "IP" and "Ethernet".

Anonymous 
Printed Page 647
1st paragraph

NUD_IN_TIMER should include NUD_REACHABLE too.

Anonymous 
Printed Page 650
Indented paragraph 2, line 3.

"NUD_STALE" should be "NUD_DELAY or NUD_PROBE".

Anonymous 
Printed Page 658
Figure 27-4.

The transition from NUD_STALE to NUD_REACHABLE should be reversed.
Figure 26-13 doesn't show a transition from NUD_REACHABLE to NUD_DELAY.

Anonymous 
Printed Page 659
Line 1 of paragraph 2 from the bottom.

Figure 26-13 does not show a transition from NUD_REACHABLE to NUD_DELAY.

Anonymous 
Printed Page 670
3rd paragraph

The follow sentences are incorrect:

Whenever a packet is sent out, the associated sk_buff buffer holds a
reference to a neighbour structure. so neighbour->refcnt is
incremented to make sure that the transmission can complete without
problems. Once the packet has been transmitted, the count is
decremented again.


A sk_buff buffer does not hold a direct reference to a neighbour
strucure. It refers to a neighbour indirectly via its dst.

Anonymous 
Printed Page 672
Lines 3-4 of first regular paragraph.

"and global statistics" should be "and to update global statistics".

Anonymous 
Printed Page 673
Paragraph 2, line 4.

"one half" should be "twice".

Anonymous 
Printed Page 673
Paragraph 2, line 5.

Delete "a little faster than usual".

Anonymous 
Printed Page 675
Line 1.

"eliminating" should be "reclaiming".

Anonymous 
Printed Page 675
Asynchronous cleanup, line 1.

"remove" should be "reclaim".

Anonymous 
Printed Page 675
Regular paragraph 3, line 3.

"deleting" should be "reclaiming".

Anonymous 
Printed Page 692
Interaction Between Neighboring Protocols and L3 Transmission Function,

paragraph 2, line 1.;
"input skb buffer, ip_finish_output2," should be "ip_finish_output2 input skb
buffer".

Anonymous 
Printed Page 697
Figue 27-13(a), label on (6).

The ethernet address should be 00:20:ED:78:1E:12.

Anonymous 
Printed Page 700
Figure 28-1

Swap eth souce addr and eth dest addr in Figure 28-1. The same error
occurs in Figure 27-1 and 27-10 too.

Anonymous 
Printed Page 710
Figure 28-6

arp_announce should be arp_ignore in 4 places.

Anonymous 
Printed Page 714
Figure 28-9

Host B eth0 should be 10.0.0.5/24.

Anonymous 
Printed Page 727
Initial Common Processing, line 2.

"broadcast" should be "loopback".

Anonymous 
Printed Page 730
Figure 28-17

The "Yes" and "No" edges out of "ARP filter or ARP ignore?" should be swapped.
NUD_STATE should be NUD_STALE.

Anonymous 
Printed Page 738
Line 4 of last paragraph

Anonymous 
Printed Page 739
Line 1.

/24 should be /25.

Anonymous 
Printed Page 740
Figure 28-21.

The labels "Host D" and "Host E" have been cut off.

Anonymous 
Printed Page 741
Last line of paragraph 3

"eth1 and eth2" should be "eth0 and eth1".

Anonymous 
Printed Page 751
Table 29-1.

NLM_F should be NLM_F_DUMP in two places.

Anonymous 
Printed Page 763
int key_len, line 2.

8 should be 16

Anonymous 
Printed Page 780
Varieties of Routing Configurations, paragraph 2, line 2

Rn should be RTn.

Anonymous 
Printed Page 783
Last line.

Delete the parenthetical remark.

Anonymous 
Printed Page 784
Table 30-1

"192.255.255.255" should read "191.255.255.255"
"11111" should read "11110"

Anonymous 
Printed Page 784
Table 30-2

To be consistent, "65,535" should read "65,536"

Anonymous 
Printed Page 784
Table 30-3, line 3.

"192.168.0.0./16" should be "192.168.0.0/24 to 192.168.255.0/24"

Anonymous 
Printed Page 787
Figure 30-6.

The LINK box should include all the hosts on the 10.0.1.0/24 subnet.

Anonymous 
Printed Page 790
Figure 30-7(a,b).

The host 10.0.0.200 should be labeled "A"

Anonymous 
Printed Page 793
Output of second ip address list command, line 4.

"brd 192.168.1.255" should be "brd 192.168.1.127"

Anonymous 
Printed Page 818
Figure 31-7

In the Routes, delete "from" in two places.

Anonymous 
Printed Page 824
Second sentence in the first paragraph after the three bullet points

The sentence reads "The hosts of subnet 10.0.0.0/24 and 10.0.0.2/24 ...".
The second subnet should be 10.0.2.0/24, not 10.0.0.2/24.

Anonymous 
Printed Page 834
struct rt_cache_stat, line 2

"counters" should be "statistics"

Anonymous 
Printed Page 839
Paragraph 2, line 5

fib_scope should be nh_scope

Anonymous 
Printed Page 856
NETDEV_UP, line 3.

"IP" should be "IP address"

Anonymous 
Printed Page 869
Figure 33-3.(a) caption

ip_route_input_key should be ip_route_input

Anonymous 
Printed Page 869
3rd paragraph

figure 33-3(b)

In case of a Miss, ip_route_output_slow() should be called and
not ip_route_input_slow

Anonymous 
Printed Page 877
Figure 33-4.

network=0.10 should be network=10.0 in 4 places

Anonymous 
Printed Page 878
Round-Robin Algorithm, paragraph 1, last line.

"the one" should be "one"

Anonymous 
Printed Page 882
Figure 33-7(b)

"input/output/child" should be "child/input/output"

Anonymous 
Printed Page 890
Line 5 from the bottom.

"how" should be "when"

Anonymous 
Printed Page 900
Figure 34-1

fib_tables should be labeled.
fx_divisor should be fz_divisor.
*nh_hash should be nh_hash in 4 places.
*nh_parent should be nh_parent in 4 places.

Anonymous 
Printed Page 901
Second line before Dynamic resizing of per-netmask hash tables.

"right" should be "left"

Anonymous 
Printed Page 908
Figure 34-3(b).

"Create new fib_info instance" should be "Create new fib_node instance"

Anonymous 
Printed Page 916
Semantic Matching on Subsidiary Criteria, paragraph 2, line 2.

fib_info should be fib_node

Anonymous 
Printed Page 921
Table 35-3, Description of dst_discard_out.

"input" should be "output"

Anonymous 
Printed Page 922
Bullet 2, line 3..

ip_rt_error should be ip_rt_bug

Anonymous 
Printed Page 922
Initialization of Function Pointers for Egress Traffic, bullet 1, line 3..

ip_rt_error should be ip_rt_bug

Anonymous 
Printed Page 922
Bullet 3, sentence 2.

States that there is no need to initialize dst->output, but Figure 35-3
on p. 921 shows it initialized to ip_rt_bug in this case.

Anonymous 
Printed Page 932
Figure 35-7

The top "Return -ENOBUFF" should be "Return -EINVAL"

Anonymous 
Printed Page 934
Figure 35-8(b).

"KEY: Set Dest IP = Source IP" should be KEY: Set Source IP = Dest IP"

Anonymous 
Printed Page 935
Search Key Initialization, line 1.

ip_route_input should be ip_route_output

Anonymous 
Printed Page 938
Figure 35-10.

ip_rev should be ip_rcv

Anonymous 
Printed Page 944
Line 2 from the bottom.

"priority" should be "preference"

Anonymous 
Printed Page 945
Line 2.

"priority" should be "preference"

Anonymous 
Printed Page 945
Paragraph 1.

Append "In fact, preferences are between 0 and 0x7FFF."

Anonymous 
Printed Page 957
Change Notifications, paragraph 1, last line.

RTGRM_IPV4_ROUTE should be RTMGRP_IPV4_ROUTE

Anonymous 
Printed Page 970
fz_order, line 1.

fz_hashmask should be fz_mask

Anonymous 
Printed Page 971
fn_key

su32 should be u32

Anonymous 
Printed Page 971
fa_state, FA_S_ACCESSED.

line 2: fib_node should be fib_info
line 4: fib_node should be fib_alias

Anonymous 
Printed Page 972
fib_clntref, line 1.

fib_node should be fib_alias

Anonymous 
Printed Page 978
Last line.

"table's" should be "table"

Anonymous 
Printed Page 981
next, line 1.

"table's" should be "table"

Anonymous 
Printed Page 987
Table 36-13.

"fib_rules_detach/fib_rules_attach"
should be
"fib_rules_attach/fib_rules_detach"

"__ip_route_output_key ip_route_output_flow"
should be
"__ip_route_output_key/ip_route_output_flow"

Anonymous 
Printed Page 987
Table 36-13, rtmsg_fib, line 1.

"on" should be "to"

Anonymous 


"In this most excellent book, the author shows you how Linux carries out the complicated tasks assigned to it by the IP protocols."
--John Vacca, Amazon.com