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.
| Version |
Location |
Description |
Submitted By |
Date Submitted |
| 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 11
2nd paragraph |
To say "When no optional block is required, placeholder is just a pointer to the end of the structure" is not entirely accurate. It is certainly true for a variety of structures, however it is only true when previous data causes your placeholder be aligned to the same alignment as the structure. Case in point:
struct abc {
int age;
char whatever;
char placeholder[0];
};
in this case, placeholder[0] certainly does not point to the end of the structure. This is because the compiler may align struct abc to keep age on an architecture specific alignment (perhaps a multiple of 4 for example). Here you could actually think of placeholder taking up 3 bytes if the structure alignment were 4. I've seen others make similar mistakes. It is not correct to think that the offsetof the placeholder field is equal to the sizeof the structure, UNLESS you guarantee that placeholder is aligned properly. You can do that with an align attribute (gcc). For a more compiler independent solution, using a more strongly aligned datatype for placeholder might suffice (perhaps double placeholder[0]).
|
Anonymous |
Feb 22, 2012 |
| 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 |
Aug 27, 2009 |
| 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 51
3rd paragraph |
This means 50% of the possible addresses are multicast....
An example i captured by the wireshark is listed
Destination: IPv4mcast_00:00:58 (01:00:5e:00:00:58)
As it shows, the MAC multicast address is NOT 50%
|
augustine |
Jun 23, 2010 |
| 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 |
Dec 11, 2008 |
| 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 |
|
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 |
|
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 |
|
Anonymous |
|
| Printed |
Page 347
Three bullets and preceding line. |
Delete; all three are shown in the figure.
|
Anonymous |
|
| Printed |
Page 358
Figure 16-4 |
|
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. |
|
Anonymous |
|
| Printed |
Page 556
Figure 23-3 |
ip_options is defined in net/inet_sock.h
|
Anonymous |
|
| Printed |
Page 557
unsigned char _data[0] |
|
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 |
Sep 18, 2009 |
| 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 |
Sep 18, 2009 |
| 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 |
Sep 21, 2009 |
| 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. |
|
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. |
|
Anonymous |
|
| Printed |
Page 780
Varieties of Routing Configurations, paragraph 2, line 2 |
|
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 784
Table 30-1 |
The class B network: last address is shown as "192.255.255.255.". It should be 191.255.255.255.
|
Fengliang Hu |
Nov 17, 2010 |
| 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 805
Table 31-2 |
Table 31-2, "RT1" should be changed to "Routing Table 1".
Similarly, in Table 31-2, "RT2" should be changed to "Routing Table 2".
In Figure 31-1, there are routers called "RT1" and "RT2". So re-using the same term "RT1" and "RT2" could confuse the readers.
|
Feng |
Nov 18, 2010 |
| 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 842
4th paragraph |
Regarding the explanation of the macros "change_nexthops, for_nexthops, endfor_nexthops", the description
"Note that for each macro there are two versions: one used when there is Policy Routing support in the kernel and one when there is no Policy routing. The second one is optimized by ....".
In Linux routing, Policy routing refers to multiple routing tables. I believe that the author refers to Multipath support. Also I checked the Linux source code, the macros are defined differently like
"#ifdef CONFIG_IP_ROUTE_MULTIPATH" ...
I believe that the text incorrectly referred to Policy Routing. It should be Multipath support instead.
|
Feng |
Nov 22, 2010 |
| Printed |
Page 856
NETDEV_UP, line 3. |
"IP" should be "IP address"
|
Anonymous |
|
| Printed |
Page 862
3rd paragraph |
"
rt_hash_mask
rt_hash_log
The size (number of buckets) of the hash table rt_hash_table, and the base two logarithm of that number....
"
The description of rt_hash_log is accurate. However, rt_hash_mask is not described accurately. It is the size (number of buckets) of the hash table - 1. And the size (number of buckets) is guaranteed to be the power of 2. That's why rt_hash_mask is all 1s and named "mask".
|
Feng |
Nov 23, 2010 |
| 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. |
|
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. |
|
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 921
Figure 35-3 |
"ip_local_driver" was referenced twice in the figure. It should be changed to "ip_local_deliver".
|
Feng |
Nov 29, 2010 |
| 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. |
|
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 |
|
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. |
|
Anonymous |
|