Errata

Understanding Linux Network Internals

Errata for Understanding Linux Network Internals

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. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted By Date submitted Date corrected
Printed
Page 2
should be (3)

Anonymous    May 01, 2008
Printed
Page 3
should be (4)

Anonymous    May 01, 2008
Printed
Page 4
should be (5)

Add (2) to the right of the icon for Router RT1.

Anonymous    May 01, 2008
Printed
Page 14
3rd par

Because of the waste cause by looping ...
should be
Because of the waste caused by looping ...

Anonymous    May 01, 2008
Printed
Page 39
code line above "Cloning and copying buffers"

skb_shinfo(skb)->dataref++;
should be
skb_shinfo(skb)->nr_frags++;

Anonymous    Feb 01, 2007
Printed
Page 39
code line above "Cloning and copying buffers"

skb_shinfo(skb)->dataref++;
should be
skb_shinfo(skb)->nr_frags++;

Anonymous    May 01, 2008
Printed
Page 40
Figure 2-9

Interchange sk_shinfo(clone) and sk_shinfo(skb

Anonymous    May 01, 2008
Printed
Page 42
Code at bottom of page

___function_name
should be
__function_name

Anonymous    Feb 01, 2007
Printed
Page 42
Code at bottom of page

___function_name
should be
__function_name

Anonymous    May 01, 2008
Printed
Page 47
unsigned char addr_len, line 3

Ethernet addresses are 6 octets long.
8
should be:
6

Anonymous    Feb 01, 2007
Printed
Page 47
unsigned char addr_len, line 3

Ethernet addresses are 6 octets long.
8
should be:
6

Anonymous    May 01, 2008
Printed
Page 51
3rd paragraph

all_multi
should be
allmulti

Anonymous    May 01, 2008
Printed
Page 57
figure 2-11

One of the directories, listed in the figure reads "kernal", but that
should be "kernel".

Anonymous    May 01, 2008
Printed
Page 68
Figure 3-3

sysctel_jiffies should be sysctl_jiffies
sysctel_local_port_range should be sysctl_local_port_range
sysct1_local_port_range should be sysctl_local_port_range

Anonymous    May 01, 2008
Printed
Page 69
Figure 3-4

SIOC S DEL DLCI should be SIOC DEL DLCI

Anonymous    May 01, 2008
Printed
Page 76
Figure 4-2

The connection from Network A to Network F is not shown.There is one line missing between Network F
and Network A (it would be a line like the one between Network E
and Network F).

Anonymous    May 01, 2008
Printed
Page 93
First call of module_param()

module_param(multicast_filter_limit, int 0444);
should be
module_param(multicast_filter_limit, int, 0444);

Anonymous    May 01, 2008
Printed
Page 97
Figure 5-3.

request_model should be request_module.
Under request_module, arg[i] should be arg[1].
Under /sbin/modprobe, insmod3c59x should be "insmod 3c59x".

Anonymous    May 01, 2008
Printed
Page 98
kmod bullet 1 line 4

prorobe.conf should be modprobe.conf.

Anonymous    Feb 01, 2007
Printed
Page 98
kmod bullet 1 line 4

prorobe.conf should be modprobe.conf.

Anonymous    May 01, 2008
Printed
Page 131
12th line from the bottom

However, a few architectures discard it a runtime...
should be
However, a few architectures discard it at runtime...

Anonymous    May 01, 2008
Printed
Page 140
Figure 8-1 (a)

the second call of alloc_etherdev() should be alloc_netdev()

Anonymous    May 01, 2008
Printed
Page 144
Footnote +

In line 2, "habit" should be "habitat".

Anonymous    May 01, 2008
Printed
Page 150
Split Operations: netdev_run_todo last line of first paragraph after head

reference to Figure 8-4 should be 8-5(a)

Anonymous    Feb 01, 2007
Printed
Page 150
Split Operations: netdev_run_todo last line of first paragraph after head

reference to Figure 8-4 should be 8-5(a)

Anonymous    May 01, 2008
Printed
Page 150
Figure 8-4

dev->unit should be dev->uninit
"dev->destruct or" should be dev->destructor

Anonymous    May 01, 2008
Printed
Page 160
Figure 8-6

The transision
[Send notification]-><Any linkwatch event pending on the device>
should not be labeled with the word "no."

Anonymous    May 01, 2008
Printed
Page 164
Figure 8-7

kevent_wq
should be
keventd_wq

Anonymous    May 01, 2008
Printed
Page 167
Figure 8-8

The second ocurrence of SIOCGMIIREG should be SIOCSMIIREG
The first ocurrence of SIOCGMIIRG should be SIOCGMIIREG
The second ocurrence of SIOCGMIIRG should be SIOCSMIIREG

Anonymous    May 01, 2008
Printed
Page 168
Last line of first paragraph

8-9 should be 8-8.

Anonymous    Feb 01, 2007
Printed
Page 168
Last line of first paragraph

8-9 should be 8-8.

Anonymous    May 01, 2008
Printed
Page 178
Line 2 of paragraph 3

"the does" should be "does".

Anonymous    May 01, 2008
Printed
Page 183
2nd paragraph

"vortex_interrupt keeps processing incoming frames until the register says..." should
be "vortex_interrupt keeps processing incoming frames as long as the register
says..."

Anonymous    May 01, 2008
Printed
Page 192
do_IRQ line 3

"transmission" should be "execution"

Anonymous    May 01, 2008
Printed
Page 194
raise_softirq_irqoff line 1

__cpu_raise_softirq should be __raise_softirq_irqoff

Anonymous    May 01, 2008
Printed
Page 195
line 30 (including lines of code)

"(there are no softirqs pending, etc.)"
should be:
"(there are softirqs pending, etc.)"

Anonymous    Feb 01, 2007
Printed
Page 195
line 30 (including lines of code)

"(there are no softirqs pending, etc.)"
should be:
"(there are softirqs pending, etc.)"

Anonymous    May 01, 2008
Printed
Page 204
Talklet Processing, line 1

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

Anonymous    May 01, 2008
Printed
Page 209
First line of last paragraph.

softnet_data->blog_dev
should be
softnet_data.backlog_dev

Anonymous    May 01, 2008
Printed
Page 211
Line 3 of last paragraph.

open
should be
opened

Anonymous    May 01, 2008
Printed
Page 216
Figure 10-1

_LINK_STATE_RX_SCHED
should be
__LINK_STATE_RX_SCHED

Anonymous    May 01, 2008
Printed
Page 220
in Figure 10-3

NETROLL should be NETPOLL

and

Move cpu out of the throttling stats
should be
Move cpu out of the throttling state

Anonymous    May 01, 2008
Printed
Page 232
First line of last paragraph.

dev->quota
should be
backlog_dev->quota

Anonymous    May 01, 2008
Printed
Page 233
Figure 10-6

refont
should be
reference count

Anonymous    May 01, 2008
Printed
Page 237
Line 4 of fourth paragraph from the bottom

above
should be
upper

Anonymous    May 01, 2008
Printed
Page 238
bullet 1

L4
should be
L3

Anonymous    May 01, 2008
Printed
Page 240
Figure 11-1 (a)

(__LINK_STATE_RX_SCHED))
should be
(__LINK_STATE_RX_SCHED)

Anonymous    May 01, 2008
Printed
Page 240
Figure 11-1 (b)

engress
should be
egress

Anonymous    May 01, 2008
Printed
Page 244
1st paragraph

.., output_queue is used by both NAPI and non-NAPI devices, and poll_list is used
only to handle NON-NAPI devices
should be
.., output_queue is used by both NAPI and non-NAPI devices, and poll_list is used
only to handle NAPI devices

Anonymous    Feb 01, 2007
Printed
Page 244
1st paragraph

.., output_queue is used by both NAPI and non-NAPI devices, and poll_list is used
only to handle NON-NAPI devices
should be
.., output_queue is used by both NAPI and non-NAPI devices, and poll_list is used
only to handle NAPI devices

Anonymous    May 01, 2008
Printed
Page 250
2nd bullet in middle of page

"In this case, the function does not actually fail, but generates a warning with a call to BUG()"
should be
"In this case, the BUG macro is invoked, leading to a kernel panic"

Anonymous    Feb 01, 2007
Printed
Page 250
2nd bullet in middle of page

"In this case, the function does not actually fail, but generates a warning with a call to BUG()"
should be
"In this case, the BUG macro is invoked, leading to a kernel panic"

Anonymous    May 01, 2008
Printed
Page 254
Figure 11-4 (b)

netif_x
should be
netif_rx

Anonymous    May 01, 2008
Printed
Page 268
5th(?) paragraph - near middle of the page

In "...and Ethereal are common users of AF_SOCKET sockets.", AF_SOCKET should be
AF_PACKET

Anonymous    Feb 01, 2007
Printed
Page 268
5th(?) paragraph - near middle of the page

In "...and Ethereal are common users of AF_SOCKET sockets.", AF_SOCKET should be
AF_PACKET

Anonymous    May 01, 2008
Printed
Page 273
Figure 13-4 (occurs twice in figure)

Dst MAC-00:20....
should be
Dst MAC=00:20...

Anonymous    May 01, 2008
Printed
Page 281
Last line of last paragraph

isdiscussed
should be
is discussed

Anonymous    May 01, 2008
Printed
Page 283
Figure 13-8 (a), Protocol field

1534
should be
1536

Anonymous    May 01, 2008
Printed
Page 284
last paragraph (above 1st bullet)

"The two most significant bits of the first byte..." should read "The two least
significant bits of the first byte..."

Anonymous    Feb 01, 2007
Printed
Page 284
last paragraph (above 1st bullet)

"The two most significant bits of the first byte..." should read "The two least
significant bits of the first byte..."

Anonymous    May 01, 2008
Printed
Page 305
3rd paragraph

In the sentence "...from Bridge 1's perspective, Hosts A, B, C and D are all located
in LAN2,..."
Bridge 1
should be:
Bridge 2

Anonymous    Feb 01, 2007
Printed
Page 305
3rd paragraph

In the sentence "...from Bridge 1's perspective, Hosts A, B, C and D are all located
in LAN2,..."
Bridge 1
should be:
Bridge 2

Anonymous    May 01, 2008
Printed
Page 308
Last paragraph, line 5.

14-8
should be
14-9

Anonymous    May 01, 2008
Printed
Page 324
Figure 15-8(b) caption.

BPDU
should be
TCN BPDU

Anonymous    May 01, 2008
Printed
Page 347
Ingress BPDUs, paragraph 2, line 2.

Figure 15-7
should be
Figure 15-8

Anonymous    May 01, 2008
Printed
Page 351
2nd-to-last bullet, line 2

old, disabled
should be
old disabled

Anonymous    May 01, 2008
Printed
Page 361
Paragraph 1, line 3.

Ethernel
should be
Ethernet

Anonymous    May 01, 2008
Printed
Page 371
Figure 16-11

ENGRESS
should be
EGRESS

Anonymous    May 01, 2008
Printed
Page 377
Figure 16-12

E thernet
should be
Ethernet

Anonymous    May 01, 2008
Printed
Page 385
br_transmit_config line 2

...in Chapter 15."
should be
...in Chapter 15.

Anonymous    May 01, 2008
Printed
Page 390
NETDEV_UP, line 2.

br_stp_enabled_port
should be
br_stp_enable_port

Anonymous    May 01, 2008
Printed
Page 395
Table 17-3, argument for showstp

BRCTL_SET_BRIDGE_INFO
should be
BRCTL_GET_BRIDGE_INFO

Anonymous    May 01, 2008
Printed
Page 397
CLASS_DEV_ATTR line

S_IURGO
should be
S_IRUGO

Anonymous    May 01, 2008
Printed
Page 398
BRPORT_ATTR line

S_IURGO
should be
S_IRUGO

Anonymous    May 01, 2008
Printed
Page 432
Checksums, line 2

Some checksums cannot only detect errors...
should be
Some checksums can not only detect errors...

Anonymous    May 01, 2008
Printed
Page 444
third bullet from the top

(see the section ?Long-Living IP Peer Information? in Chapter 23.
should be
(see the section ?Long-Living IP Peer Information? in Chapter 23).

Anonymous    May 01, 2008
Printed
Page 451
line 1 and 2

'See the section "Local Delivery" in Chapter 20
should be
...in Chapter 35

Anonymous    Feb 01, 2007
Printed
Page 451
line 1 and 2

'See the section "Local Delivery" in Chapter 20
should be
...in Chapter 35

Anonymous    May 01, 2008
Printed
Page 452
Paragraph 2, line 2.

ip_option
should be
ip_options

Anonymous    May 01, 2008
Printed
Page 471
ip_forward_finish line 5

if (unlikely(opt->optlen) {
should be
if (unlikely(opt->optlen) )

Anonymous    May 01, 2008
Printed
Page 490
Figure 21-7

X+S1+S2<+PMTU
should be
X+S1+S2<=PMTU

Anonymous    May 01, 2008
Printed
Page 491
Figure 21-8

dala_len
should be
data_len

Anonymous    May 01, 2008
Printed
Page 493
Further handling of the buffers, paragraph 1, line3

sw_write_queue
should be
sk_write_queue

Anonymous    May 01, 2008
Printed
Page 500
Figure 21-11.

MSG_MOER
should be
MSG_MORE

Anonymous    May 01, 2008
Printed
Page 506
Figure 21-12(b)

ip_push_peinding_frames caller
should be
ip_push_peinding_frame's caller

Anonymous    May 01, 2008
Printed
Page 517
Line 1 of 3rd displayed block of code

sk2
should be
skb2

Anonymous    May 01, 2008
Printed
Page 524
Line4 from the bottom

Last Recently Used (LRU)
should be
Least Recently Used (LRU)

Anonymous    May 01, 2008
Printed
Page 531
Last line above Figure 22-2.

both F3 and F4 (which is completely included).
should be
both F3 (which is completely included) and F4.

Anonymous    May 01, 2008
Printed
Page 536
Last line of paragraph 2

base
should be
basis

Anonymous    May 01, 2008
Printed
Page 537
Line 5 of bullet 2.

the most recently used
should be
the least recently used

Anonymous    May 01, 2008
Printed
Page 539
Figure 23-1

Delete the "No" above "Is the Create flag set?", and add a "Yes" below.

Anonymous    May 01, 2008
Printed
Page 542
Paragraph 2, line 3.

IPSTATS_MIX_XXX
should be
IPSTATS_MIB_XXX

Anonymous    May 01, 2008
Printed
Page 553
Table 23-2

ipfrag_high_tresh
should be
ipfrag_high_thresh

and

ipfrag_low_tresh
should be
ipfrag_low_thresh

Anonymous    May 01, 2008
Printed
Page 556
Figure 23-3

skhuff.h
should be
skbuff.h

Anonymous    May 01, 2008
Printed
Page 577
Paragraph 2, line 7.

The figure also shows that...
should be
Figure 24-4 also shows that...

Anonymous    May 01, 2008
Printed
Page 581
Paragraph 4, line 8.

traceroute, which needs to plays with...
should be
traceroute, which needs to play with...

Anonymous    May 01, 2008
Printed
Page 581
Last paragraph, line 1.

...and the ones used to store...
should be
...and the one used to store...

Anonymous    May 01, 2008
Printed
Page 592
Bottom of page

Add:
5. Router RT2 forwards the packet to Host Y.

Anonymous    May 01, 2008
Printed
Page 592
Figure 25-3

Anonymous    May 01, 2008
Printed
Page 593
ICMP_TIME_EXCEEDED paragraph 2, line 3.

The intermediate host that drops the packet...
should be
The intermediate router that drops the packet...

Anonymous    May 01, 2008
Printed
Page 610
Paragraph 2, line 1

xlim_allow
should be
xrlim_allow

Anonymous    May 01, 2008
Printed
Page 615
Figure 25-13

Low Warning Message
should be
Log Warning Message

Anonymous    May 01, 2008
Printed
Page 615
Figure 25-13

Delete the "Yes" on the arrow out of [Deliver ICMP to raw IP sockets].

Anonymous    May 01, 2008
Printed
Page 619
ICMP_MIB_INXXX, ICMP_MIB_OUTXXX

there is one per-ICMP
should be
there is one per ICMP

Anonymous    May 01, 2008
Printed
Page 631
Line 3.

CMSA/CD
should be
CSMA/CD

Anonymous    May 01, 2008
Printed
Page 658
Paragraph 4, line 4.

"Figure 26-12" should be "Figure 26-13".

Anonymous    May 01, 2008
Printed
Page 658
Figure 27-4

The arrow pointing from NUD_STALE to NUD_REACHABLE should actually point the other
way around (from NUD_REACHABLE to NUD_STALE).

Anonymous    May 01, 2008
Printed
Page 661
Last line.

the section "Final Common Processing in Chapter 28).
should be
the section "Final Common Processing" in Chapter 28).

Anonymous    May 01, 2008
Printed
Page 662
2nd line

NEIGH_UPDATE_ISROUTER
Should be
NEIGH_UPDATE_F_ISROUTER

Anonymous    May 01, 2008
Printed
Page 663
Figure 27-5(a), block b.

NUD_VALUE
should be
NUD_VALID

Anonymous    May 01, 2008
Printed
Page 681
Figure 27-9, top left

Form?
should be
From?

Anonymous    May 01, 2008
Printed
Page 681
Figure 27-9, lower middle

proxy_len
should be
proxy_qlen

Anonymous    May 01, 2008
Printed
Page 692
5th paragraph, 1st sentence

"The input skb buffer, ip_finish_output2, includes the packet data..." should read
"The skb buffer input to ip_finish_output2, includes the packet data..." or "The
input skb buffer includes the packet data..."

Anonymous    May 01, 2008
Printed
Page 694
Figure 27-13(a), lower left

dst->hh (neigh hh init)
should be
dst->hh (neigh_hh_init)

Anonymous    May 01, 2008
Printed
Page 707
Figure 28-5 (error occurs in three places)

AROP_
should be
ARPOP_

Anonymous    May 01, 2008
Printed
Page 712
First line of last paragraph.

HostC
should be
Host C

Anonymous    May 01, 2008
Printed
Page 721
Last line of first displayed source code.

Delete the final #endif

Anonymous    May 01, 2008
Printed
Page 742
Bullet (b), line 1 of paragraph 2

A2
should be
A

Anonymous    May 01, 2008
Printed
Page 742
Bullet (b), line 3 of paragraph 3.

accordingly to
should be
according to

Anonymous    May 01, 2008
Printed
Page 744
ARPD, line 3.

system performances
should be
system performance

Anonymous    May 01, 2008
Printed
Page 745
First entry under Kernel Side

neigh_apps_ns
should be
neigh_app_ns

Anonymous    May 01, 2008
Printed
Page 745
Figure 28-22 (error occurs in two places)

RTN_
should be
RTM_

Anonymous    May 01, 2008
Printed
Page 747
Figure 28-23 (error occurs in two places)

RTN_
should be RTM_

Anonymous    May 01, 2008
Printed
Page 759
unsigned long confirmed, last line.

...described in .
should be
...described in "Updating a Neighbor's Information: neigh_update" in Chapter 27.

Anonymous    May 01, 2008
Printed
Page 762
int entry_size, line 2.

...includes a field whose size depends on the protocol (primary_key),
should be
...includes a field (primary_key) whose size depends on the protocol,

Anonymous    May 01, 2008
Printed
Page 813
Figure 31-5(c)

In the last line of the ip route add command, 10.0.0.2.1 should be 10.0.2.1

Anonymous    May 01, 2008
Printed
Page 849
Figure 32-6.

The No branch of "Have all next hops been marked DEAD?" is not labeled.

Anonymous    May 01, 2008
Printed
Page 885
First line.

"is" should be "is not".

Anonymous    May 01, 2008
Printed
Page 893
Bullet 2, line 4.

"any" should be "an".

Anonymous    May 01, 2008
Printed
Page 898
Bullet 4, line 1.

"indegiven" should be "given".

Anonymous    May 01, 2008
Printed
Page 934
Figure 35-8(b) caption.

p_route_output_slow should be ip_route_output_slow.

Anonymous    May 01, 2008
Printed
Page 961
Footnote +, line 5.

"where as" should be "whereas".

Anonymous    May 01, 2008
Printed
Page 982
metrics, paragraph 2, line 3.

"options" should be "option".

Anonymous    May 01, 2008