First Edition Januar 2006
ISBN 978-0-596-00255-8
Weitere Informationen zu diesem Buch
Inhaltsverzeichnis |
Index |
Probekapitel |
Rezensionen |
Index
[ Numbers ], [ A ], [ B ], [ C ], [ D ], [ E ], [ F ], [ G ], [ H ], [ I ], [ J ], [ K ], [ L ], [ M ], [ N ], [ O ], [ P ], [ Q ], [ R ], [ S ], [ T ], [ U ], [ V ], [ W ], [ X ], [ Y ], [ Z ],
Numbers[ Top ]
802.1d device (see bridge)
802.1D-1998 standard, 309
802.1D-2004 standard, 309
802.1Q device, 101, 102
802.1Q-2002 standard, 309
802.1s standard, 309
802.1w standard, 309
802.3 standard, compared to Ethernet protocols, 281-287
802.4 device (see Token Bus device)
802.5 device (see Token Ring 4 MB/s device)
A[ Top ]
aarp_rcv function, 291
accept_fastpath function pointer, net_device structure, 56
accept_redirects file, 963, 965
accept_redirects variable, 963
accept_source_route file, 963, 965
accept_source_route variable, 963
access bridges, 312
addbr command, brctl utility, 392, 395
addif command, brctl utility, 395
addifr command, brctl utility, 392
addr field
bridge_id structure, 399
cork structure, 565
net_bridge_fdb_entry structure, 399
addrconf.c file, 44
address class, 783
address learning by bridge, 302-305
Address Resolution Protocol (see ARP)
addr_len field, net_device structure, 47, 142
AF_PACKET sockets, 268
af_packet_priv field, packet_type structure, 280
ageing_time field, net_bridge structure, 401
ageing_timer field, net_bridge_fdb_entry structure, 399
age_list field, net_bridge structure, 401
age_list structure, 360
aging
of addresses, by bridge, 304, 336, 341
of BPDUs, 326
Aging timer, STP, 336, 341
AH (IP Authentication Header Protocol), 570
alg_table_lock lock, 844, 986
aliasing interfaces, 101, 792
allmulti field, net_device structure, 51
alloc_etherdev function, 139
alloc_fcdev function, 139
alloc_fddidev function, 139
alloc_hippi_dev function, 139
alloc_irdadev function, 139
alloc_netdev function, 138, 140, 145, 172
allocs field, neigh_statistics structure, 771
alloc_skb function, 33-35
alloc_trdev function, 139
alloc_xxxdev functions, 172
anycast_delay field, neigh_parms structure, 767
anycast_delay file, 755
anycast_delay variable, 755
AppleTalk Address Resolution Protocol, 291
AppleTalk Datagram Delivery Protocol, 291
AppleTalk protocol, xxi
application layer
communication choices made by, 271
data units for (messages), 267
app_probes field, neigh_parms structure, 767
app_probes variable, 755
app_solicit file, 755
arch_initcall macro, 126
Arkin, Ofir ("ICMP Usage in Scanning"), 585
ARP (Address Resolution Protocol)
compared to ND, 748
compile-time options, 708
configuration, 708-714
destination address types, 701
devices needing, 720
devices not needing, 720
events generated, 743
events received, 742
examples, 740-742
flux problem, 707
gratuitous ARP, 702-707
initialization, 714-716
LVS (Linux Virtual Servers) and, 709
packet format, 700-702
proxying, 735-740
receiving packets, 722, 726-734
responding from multiple interfaces, 707
routing and, 800
RTO_ONLINK flag and, 873
solicitation requests, 724
transaction, example of, 702
transmitting packets, 722-726
Wake-on-LAN (WOL) events, 743
ARP cache
arpd daemon implementing, 746
binding routing cache to, 868
updated with gratuitous ARP, 704
viewing contents of, 714
arp command, 749, 750, 752
arp file, 714, 753
ARP over IP protocol, 687
ARP protocol, 635
direct calls to, 634
initialization and cleanup, 687
instance of neigh_ops structure for, 657
proxying for, 637-640
arp_announce file, 757
ARP_ANNOUNCE option, 709, 725
arp_bind_neighbour function, 868
arp_broken_ops structure, 718
arp_cache file, 753
arp_constructor function, 719, 720
arpd daemon, 665, 744-746
ARPD option, 708
arp_direct_ops structure, 718
arp_error_report function, 743
arp_filter file, 757
ARP_FILTER option, 711
arp_find function, 773
arp_fwd_proxy function, 714
arp_generic_ops structure, 718
arphdr structure, 700
arp_hh_ops structure, 718
arp_ignore file, 757
ARP_IGNORE option, 707, 709
arping command, 18, 704
arp_init function, 687, 714-716
ARPOP_REPLY packets, 701, 727, 733-734
ARPOP_REQUEST message type, 702
ARPOP_REQUEST packets, 701, 727, 729-732, 734
arp_parms field, in_device structure, 562
arp_process function, 711, 727-734, 735
arp_queue field, neighbour structure, 696, 761
arp_rcv function, 281, 722, 726, 773
arp_req_delete function, 752
arp_req_set function, 752
arp_send function, 722
arp_solicit function, 709, 724
arp_tbl structure, 715, 761, 773
ARP_UNSOLICITED option, 708
arrays (vectors), 3
asymmetric routes, 783, 828
asynchronous garbage collection, 8
neighboring infrastructure, 675, 677
routing cache, 796, 891
atalk_ptr field, net_device structure, 50
atalk_rcv function, 276, 291
atm_clip_exit function, 687
atm_clip_init function, 687
attribution for code examples, xxii
autoconfig field, ipv4_config structure, 564
avg_blog field, softnet_data structure, 207, 208, 226, 227
AVL data structure, 536
avl_height field, inet_peer structure, 561
avl_left field, inet_peer structure, 561
avl_right field, inet_peer structure, 561
AX25 device, tx_queue_len value for, 52
ax25_kiss_rcv function, 276
ax25_ptr field, net_device structure, 50
B[ Top ]
backlog queue, 223, 231-235
backlog_dev field, softnet_data structure, 207
BADCLASS macro, 843, 986
base_addr field, net_device structure, 44, 142
base_reachable_time field, neigh_parms structure, 766
base_reachable_time file, 755
base_reachable_time variable, 755
bf_fdb_change_addr function, 404
BH (see bottom half)
Big Endian format, 15
big_endian.h file, 16
BIRD routing protocol daemon, 820, 860
black hole route, 794
bonding device, 43, 101
notifications on, 170
processing of ingress frames, 237
tx_queue_len value for, 53
books (see publications)
BOOTP protocol, IP configuration using, 545
boot-time initialization routines, 128-130
boot-time kernel options, 85, 93, 116-122
boot-time PCI device activities, 112
bottom half (BH), 4
bottom half handlers, 184-186
implementations of, 186
old style, concurrency and, 187
requirements for, 190
software interrupts for (version 2.4 and higher), 193-196
tasklets for, 196-198
version 2.2 and earlier, 190-193
BPDUs (Bridge Protocol Data Units), 316, 323-328
aging of, 326
compared to data frames, 376
configuration BPDUs, 323, 324-326
encapsulation of, 344
ingress BPDUs, handling, 347, 383
processing of, 371-372
TCN BPDU, 323
transmitting, 385
bpq_rcv function, 282
br field, net_bridge_port structure, 399
br_add_bridge function, 361, 392, 403
br_add_if function, 361, 364, 374, 392, 403
br_become_designated_port function, 381
br_become_root_bridge function, 381, 389
br.c file, 360
br_change_mtu function, 363
br_config_bpdu structure, 360, 404
br_configuration_update function, 381, 386
brctl utility, 391
commands, list of, 391
configuring bridge devices and ports, 395
creating bridge devices and ports, 395
br_deinit function, 361, 403
br_del_bridge function, 361, 364, 392, 403
br_del_if function, 361, 392, 403
br_deliver function, 372
br_designated_port_selection function, 381
br_dev_close function, 363
br_dev_ioctl function, 363
br_dev_open function, 363, 367
br_dev_setup function, 363
br_dev_stop function, 368
br_dev_xmit function, 363, 380
br_fdb_cache variable, 404
br_fdb_change_addr function, 374
br_fdb_cleanup function, 375, 404
br_fdb_delete_by_port function, 375
_ _br_fdb_get function, 373, 404
br_fdb_get function, 373, 374, 404
br_fdb_init function, 373, 403
br_fdb_insert function, 366, 374, 404
br_fdb_put function, 374
br_fdb_update function, 375, 404
br_features_recompute function, 367
br_flood function, 372, 404
br_forward function, 372, 404
br_forward_delay_timer_expired function, 388, 389
br_get_port function, 382
br_get_tick function, 386, 404
br_handle_bridge function, 375
br_handle_frame function, 376, 404
br_handle_frame_finish function, 376, 378, 404
br_handle_frame_hook function pointer, 360
br_handle_frame_hook variable, 404
br_hello_timer_expired function, 388
br_hold_timer_expired function, 388
bridge, 101, 297-299
access bridges, 312
adding ports to, 364
address learning by, 302-305
aging mechanism for addresses, 304, 336, 341
bridge (continued)
between LANs of different technologies, 302
binding real device to, 355
broadcast address, handling, 304
compared to switch, 299
creating, 361, 362, 395
cut-through bridge, 298
deleting, 364
deleting ports from, 367
disabling, 363, 367
enabling, 363, 367
enabling STP on, 383
flooding by, 304
forwarding database for, 373-375
frames addressed to, 299
garbage collection timer for, 375
host for, 300
loop topology not working with, 307
merging LANs using, 300
multicast address, handling, 304
multiple, advantages of, 314
multiple bridge scenarios, 305-309
naming, 362
net_device field for, 53
notifying of topology change, 342
passive learning by, 302
setup routine for, 362
store and forward bridge, 298
transparency of, 305, 307
tx_queue_len value for, 53
bridge ID, STP, 321, 322, 359, 382
bridge MAC address, 382
bridge ports, 311
adding to bridge, 364
changing state of, 340, 370
creating, 361, 395
deleting, 367
disabling, 368-369
enabling, 368-369
RSTP, 351
STP, 318-320
bridge priority, STP, 321, 322, 323
Bridge Protocol Data Units (see BPDUs)
bridge timers, STP, 336, 388
bridged network, 311
bridge_fdb_entry structure, 404
bridge_forward_delay field, net_bridge structure, 402
bridge_hello_time field, net_bridge structure, 402
bridge_id field, net_bridge structure, 401
bridge_id structure, 359, 398, 404
bridge_max_age field, net_bridge structure, 402
bridging
abstraction of bridge device, 355-357
configuration, 396
configuring, user-space tools for, 391-396
data structures for, 359-360, 398-402, 404
data structures for, list of, 404
files and directories for, list of, 405
frame processing by, 371-372
functions for, list of, 403
ingress traffic, handling, 375-380
initialization of code for, 360
performance of, 355
solicitation request processing and, 641
statistics on, 398
transmission using, 380
variables for, list of, 404
Bridging-Firewalling, 360
br_init function, 360, 403
br_initial_port_cost function, 366
br_ioctl_hook function pointer, 360
br_is_designated_for_some_port function, 381
br_is_designated_port function, 381
br_is_root_bridge function, 381
br_make_blocking function, 370, 388, 404
br_make_forwarding function, 370, 404
br_make_port_id function, 366
BR_MAX_PORTS variable, 404
br_message_age_timer_expired function, 386, 388
br_min_mtu function, 403
br_netfilter_init function, 360, 403
broadcast address, 284
bridge handling of, 304
static translation of, 633
broadcast field, net_device structure, 47, 142
broadcasts
ARP handling, 702
directed broadcasts, 788
ICMP, 607
ignoring, 621
limited broadcasts, 930
local delivery of, 929
packet, testing for, 464
packet type for, 284
subnet broadcasts, 930
Brooks, Frederick P. (quote about data), 22
br_pass_frame_up function, 378, 379, 404
br_pass_frame_up_finish function, 379, 404
br_port field, net_device structure, 53, 376
br_port_state_selection function, 369, 382
br_private.h file, 360
br_private_stp.h file, 360
br_received_config_bpdu function, 385, 386, 404
br_received_tcn function, 389
br_received_tcn_bpdu function, 385, 404
br_record_config_information function, 382
br_record_config_timeout_values function, 382
br_reply function, 385, 404
br_root_selection function, 381
br_send_bpdu function, 404
br_set_tick function, 386, 404
br_should_become_designated_port function, 381
br_should_become_root_port function, 381
BR_STATE_BLOCKING state, 370
BR_STATE_DISABLED state, 366
BR_STATE_FORWARDING state, 369, 370, 376, 389
BR_STATE_LEARNING state, 370, 389
BR_STATE_LISTENING state, 370
BR_STATE_XXX enumeration list, 399
br_stp_change_bridge_id function, 386, 387
br_stp_disable_bridge function, 403
br_stp_disable_port function, 368, 386, 387, 403
br_stp_enable_bridge function, 367, 403
br_stp_enable_port function, 368, 403
br_stp_handle_bpdu function, 376, 383, 386, 404
br_stp_port_timer_init function, 388, 403
br_stp_recalculate_bridge function, 403
br_stp_recalculate_bridge_id function, 363, 366, 382
br_stp_set_bridge_priority function, 386, 387, 392
br_stp_set_path_cost function, 386, 392
br_stp_set_port_priority function, 392
br_stp_timer_init function, 375, 388, 403
br_supersedes_port_info function, 381
br_sysfs_addbr function, 403
br_sysfs_addif function, 366, 403
br_sysfs_delbr function, 403
br_sysfs_removeif function, 403
br_tcn_timer_expired function, 388
br_topology_change_acknowledge function, 382
br_topology_change_acknowledged function, 382
br_topology_change_detection function, 382
br_topology_change_timer_expired function, 388
br_transmit_config function, 385, 386, 404
br_transmit_tcn function, 385, 404
br_uninit function, 360
buffers (see sk_buff structure)
bug catching, 17
BUG_ON macro, 17
BUG_TRAP macro, 17
byteorder.h file, 16
byte-ordering conversions, 15
bytes, 3
C[ Top ]
caching
hash tables implementing, 6
in neighboring subsystem, 666-668
L2 headers, 683-687
memory caches, 5
multipath caching, 836, 873-878, 943
multipath routing, 811-812
(see also ARP cache; DST; routing cache)
call_usermodehelper function, 96, 104
Carrier Sense Multiple Access with Collision Detection protocol (CSMA/CD), 630-631
cb field, sk_buff structure, 29
change_mtu function pointer, net_device structure, 56, 142
change_nexthops macro, 842, 942
channeling, 779
check virtual function, dst_ops structure, 880, 983
checksum field, ICMP header, 587
CHECKSUM_HW flag, 442, 443
CHECKSUM_NONE flag, 441, 443
checksums, 432-438
algorithms for, 432
for frame transmission, 250
functions for, 434-436
L3 checksum, 473
L4 checksum, 437-438, 473, 502, 533
net_device structure fields for, 441
reliability of, 432
sk_buff structure fields for, 441-443
status values for, 441
updating, when required, 433
CHECKSUM_UNNECESSARY flag, 442, 443
child field, dst_entry structure, 981
class A addresses, 784
class B addresses, 784
class C addresses, 784
class D addresses, 784
class E addresses, 784
class_dev field, net_device structure, 54
cleanup_module function, 122, 135
cleanup_once function, 540
Click router, xxi
clip_tbl structure, 761, 773
cloned field, sk_buff structure, 30, 40
cnf field, in_device structure, 562
cng_level field, softnet_data structure, 207, 208, 226, 227
code examples, use of, xxii
code field, ICMP header, 586
coding patterns, 4-18
bug catching, 17
byte-ordering conversions, 15
condition checks, compile-time optimization for, 13
conditional directives, 11-13
function pointers, 8-10
garbage collection, 8
goto statement, 10
hash tables, 6
measuring time, 17
memory caches, 5
mutual exclusion, 14-15
reference counts, 6
statistics, 17
vector definitions, 11
VFT (virtual function table), 10
collisions, 630
compile options, finding symbols associated with, 24
compiler directives, conditional, 11-13
completion_queue field, softnet_data structure, 207
components (see subsystems)
concurrency, interrupts and, 186
condition checks, compile-time optimization for, 13
conditional directives, 11-13
CONFIG_ARPD option, 708
CONFIG_HOTPLUG symbol, 133
CONFIG_IP_ACCEPT_UNSOLICITED_ARP option, 708
CONFIG_IP_MROUTE symbol, 831
CONFIG_IP_MULTIPLE_TABLES symbol, 832
CONFIG_IP_MULTIPLE_TABLES variable, 911
CONFIG_IP_PIMSM_V1 symbol, 831
CONFIG_IP_PIMSM_V2 symbol, 831
CONFIG_IP_ROUTE_FWMARK symbol, 832
CONFIG_IP_ROUTE_MULTIPATH symbol, 832
CONFIG_IP_ROUTE_MULTIPATH_CACHED symbol, 832
CONFIG_IP_ROUTE_NAT symbol, 833
CONFIG_IP_ROUTE_VERBOSE symbol, 833
CONFIG_MODULE symbol, 132
CONFIG_NET_CLS_ACT symbol, 24
CONFIG_NET_FASTROUTE symbol, 833
CONFIG_NET_HW_FLOWCONTROL symbol, 833
CONFIG_NET_SCHED symbol, 24
config_pending field, net_bridge_port structure, 400
configuration
bridging, 396
changes to, serialization used for, 71
device initialization, 103
Ethernet, 293
frame reception, 262
ICMPv4, 620
initialization options for, 85, 93
IPv4, 553-555
neighboring subsystem, 752-757
PCI layer, 114
routing, 958-966
Token Ring, 293
virtual devices, 102
configuration BPDUs, 323, 324-326
ingress, handling, 347
ingress, processing, 385
priority vector, 325
transmitting, 346, 386
when to transmit, 326
configuration updates, STP, 386
CONFIG_WAN_ROUTER symbol, 832
confirmed field, neighbour structure, 759
congestion control algorithms, fragmentation incompatible with, 424
congestion management for reception of frames, 225-228
connected_output function, neigh_ops structure, 770
constructor function, neigh_table structure, 672, 763
contact information for this book, xxiii
conventions used in this book, xxii
core_initcall macro, 126
cork structure, 440, 508, 564
cpu_collision field, netif_rx_stats structure, 262
CPU_DEAD notification, 204
CPU_ONLINE notification, 203
CPU_PREPARE_UP notification, 204
CPU_UP_CANCELLED notification, 204
CPU_UP_PREPARE notification, 203
cscope tool, 19
CSMA/CD (Carrier Sense Multiple Access with Collision Detection protocol), 630-631
csum field, sk_buff structure, 30, 441-443
csum_add function, 533
csum_block_add function, 436
csum_block_sub function, 436
csum_fold function, 435
csum_partial function, 436
csum_tcpudp_magic function, 436
ctl_data structure, 62
ctl_table structure, 62
initializing, 64
instances of, location of, 67
cut-through bridge, 298
D[ Top ]
daddr field, ipq structure, 559
_data field, ip_options structure, 557
data field, sk_buff structure, 26
data structures, 22
(see also specific data structures)
data units, terminology for, 4, 267
data_len field, icmp_bxm structure, 602
data_len field, sk_buff structure, 26
datalink_proto structure, 291, 293
dataref field, sk_buff structure, 40
dead code, 19
dead field
in_device structure, 562
neighbour structure, 760
neigh_parms structure, 767
debugging, bug catching macros for, 17
DECnet protocol, xxi, 687
default gateway, 788
selection of, 939, 940
selection of, with policy routing, 946
default route, 779
defragmentation of packets (see fragmentation/defragmentation of packets)
delay_first_probe_time file, 755
delay_probe_time field, neigh_parms structure, 766
delay_probe_time variable, 755
delbr command, brctl utility, 395
del_br function, 364
delbrr command, brctl utility, 392
delif command, brctl utility, 395
delifr command, brctl utility, 392
Denial of Service (DoS) attacks
directed broadcasts used for, 788
fragmentation timer for, 424, 512
randomization of hash table for, 6, 666
randomization of timer delays and, 95
dequeue function, 246
designated bridges, STP, 318
designated port, STP, 320, 330
designated_bridge field, net_bridge_port structure, 400
designated_cost field, net_bridge_port structure, 400
designated_port field, net_bridge_port structure, 400
designated_root field
net_bridge structure, 401
net_bridge_port structure, 400
Destination Address field, IP header, 414
destination cache (see DST)
Destination NAT (DNAT), 736
Destination Service Access Point (DSAP), 268, 287, 290
destination-based proxying, 639
destroy virtual function, dst_ops structure, 880, 983
destroys field, neigh_statistics structure, 771
destructor function pointer
neigh_ops structure, 769
net_device structure, 55, 156, 169
sk_buff structure, 27
dev field
dst_entry structure, 981
in_device structure, 562
neighbour structure, 759
net_bridge structure, 401
net_bridge_port structure, 399
packet_type structure, 279
sk_buff structure, 27
dev file, 103
dev_activate function, 160
dev_add_pack function, 279, 280, 293, 444
dev_addr field, net_device structure, 47, 363
dev_alloc_name function, 139, 172
dev_alloc_skb function, 33-35
dev_base variable, 43, 145, 146, 172
dev_base_lock variable, 172
dev_boot_phase variable, 96, 104
dev_boot_setup variable, 135
dev_close function, 160
dev_cpu_callback function, 95
dev_deactivate function, 161
dev_ethtool function, 168, 172
_ _devexit macro, 127, 132, 134
_ _devexitdata macro, 127, 134
_ _devexit_p macro, 127, 134
dev_get_by_index function, 147
dev_get_by_name function, 147
dev_hold function, 158, 172
device driver
disabling transmissions, 89
initializations by, 143
loading, causing registration of device, 137
notifying kernel of frame reception, 178-183
unloading, causing unregistration of device, 138
device round-robin algorithm, multipath routing, 811, 812, 878
device status changes, handling, 856-858
device-based proxying, 639
device_initcall macro, 126
devices (see network devices; virtual devices)
dev_id field
irqaction structure, 92
net_device structure, 44
dev_index_head hash table, 146, 172
devinet_init function, 845, 987
devinet_sysctl_forward function, 967
_ _devinit macro, 127, 132, 134
_ _devinitdata macro, 124, 127, 132, 134
dev_ioctl function, 362
dev_kfree_skb function, 35, 264
dev_kfree_skb_any function, 264
dev_kfree_skb_irq function, 255, 257, 264
dev_mcast file, 103
dev_mcast_init function, 95, 103
dev_name_head hash table, 146, 172
dev_new_index function, 155
dev_open function, 159
dev_proc_init function, 95, 103
dev_put function, 158, 172
dev_queue_xmit function, 239, 243, 249-255, 264
bridging code using, 372
connected to L3 protocols via neighboring layer, 655
neighboring subsystem and, 635, 660, 693, 772
dev_remove_pack function, 281, 293
dev_set_mtu function, 366
dev_set_promiscuity function, 366
dev_shutdown function, 157
dev_watchdog function, 259
dev_weight file, 263
DF (Don't Fragment) field, IP header, 413, 423, 507
DHCP protocol
duplicate addresses and, 703
IP configuration using, 545, 632
DiffServ Code Point (see DSCP)
directed broadcasts, 788
directives, conditional, 11-13
directories
bridging, list of, 405
component initialization, list of, 135
device registration and initialization, list of, 173
ICMP, list of, 622
IPv4, list of, 568
L4 protocols, list of, 583
neighboring subsystem, list of, 774
network device initialization, list of, 105
networking, list of, 66
notification chains, list of, 83
PCI layer, list of, 115
protocol handlers, list of, 294
routing, list of, 989
transmission and reception, list of, 265
disabling network devices, 137
divert field, net_device structure, 53
Diverter
allocating configuration block for, 155
net_device fields for, 53
processing ingress frames, 238
dma field, net_device structure, 44
DMA, Scatter/Gather, 155
DMA transmission, 89
dma.c file, 44
DNAT (Destination NAT), 736
dn_dev_create function, 768
dn_neigh_cleanup function, 687
dn_neigh_init function, 687
dn_neigh_table structure, 761, 773
dn_ptr field, net_device structure, 50
dn_route_rcv function, 282
do_basic_setup function, 85
do_bottom_half function, 192
do_initcalls macro, 85, 128, 134
do_ioctl function pointer, net_device structure, 56, 142, 168
do_IRQ function, 192, 195, 264
Don't Fragment (DF) field, IP header, 413, 423, 507
DOS attacks (see Denial of Service attacks)
_ _do_softirq function, 200
do_softirq function, 199, 202, 264
dropped field, netif_rx_stats structure, 262
drr_select_route function, 878
DSAP (Destination Service Access Point), 268, 287, 290
DSCP (DiffServ Code Point), 412, 803
DST, 836, 861
external events, handling, 883
initialization, 95
interface to calling protocols, 879-885
interface to IPsec, 882
dst field
net_bridge_fdb_entry structure, 399
sk_buff structure, 29, 445, 450
dst_alloc function, 865, 880, 987
DST_BALANCED flag, 875
dst.c file, 879
dst_confirm function, 649
dst_destroy function, 880, 893, 988
dst_dev_event function, 988
dst_discard_in function, 921, 923
dst_discard_out function, 921, 923
dst_entry structure, 836, 981-983
garbage collection for, 886
interface to higher layers, 879
neighboring subsystem and, 652
routing cache and, 862, 864
dst_free function, 893, 988
dst_garbage_list variable, 894, 988
dst_gc_timer timer, 894
dst_gc_timer_expires variable, 894
dst_gc_timer_inc variable, 894
dst.h file, 879
dst_ifdown function, 881, 988
dst_init function, 95, 987
dst_input function, 453, 988
dst_link_failure function, 881, 988
dst_negative_advice function, 881, 988
dst_ops structure, 836, 879-881, 983
dst_output function, 471, 474, 507, 566, 988
dst_pmtu function, 445
dst_release function, 893
dst_set_expires function, 892, 988
dtime field, inet_peer structure, 561
dynamic macro definition, 132-134
dynamic probing for device driver, 109
dynids field, pci_driver structure, 108
E[ Top ]
early_param macro, 118
ebtables framework, 376
econet_rcv function, 276
ec_ptr field, net_device structure, 50
editors, 19
egress (output), 4
(see also transmission)
egress queues, 212, 241-243
Emacs editor, 19
embedded devices, Linux used for, xv
enable_wake function, pci_driver structure, 108
Encapsulating Security Payload Protocol (ESP), 570
end field, sk_buff structure, 26
End of Options List, IP option type field, 415, 416
endfor_ifa macro, 841, 986
endfor_nexthops macro, 842
endianness, 15
enqueue function, 246
entries field
dst_ops structure, 983
neigh_parms structure, 766
neigh_table structure, 763
entry_size field
dst_ops structure, 983
neigh_table structure, 762
EQL device, tx_queue_len value for, 52
equalization algorithm, per packet distribution, 814
equalizer load balancer (EQL device), 52
err_handler function pointer
inet6_protocol structure, 582
inet_protocol structure, 616, 619
net_protocol structure, 571
error field
dst_entry structure, 982
icmp_control structure, 601
error messages, ICMP, 587, 605
(see also ICMP messages)
error_burst file, 960, 962
error_cost file, 960, 962
error_report function, neigh_ops structure, 689, 743, 769
ESP (IP Encapsulating Security Payload Protocol), 570
ether= keyword, 117, 120
EtherChannel device, 43
MTU value for, 46
tx_queue_len value for, 52
Ethernet device
alloc_netdev wrapper for, 139
MTU value for, 46
transmission failure by, 89
tx_queue_len value for, 52
Ethernet protocols
choice of, 268
compared to 802.3 standard, 281-287
configuration, 293
CSMA/CD support, 631
header for, 282
list of, 281
LLC protocol, 287-290
packet type, setting, 284
setting protocol and length, 286
SNAP protocol, 290-292
(see also L2)
Ethernet: The Definitive Guide (O'Reilly), 630
ethhdr structure, 282
ETH_P_8021Q protocol, 282
ETH_P_802_2 protocol, 276
ETH_P_802_3 protocol, 276
ETH_P_ALL protocol, 276, 279
ETH_P_ARP protocol, 281
ETH_P_AX25 protocol, 276
ETH_P_BPQ protocol, 282
ETH_P_DNA_RT protocol, 282
ETH_P_ECONET protocol, 276
ETH_P_HDLC protocol, 276
ETH_P_IP protocol, 281
ETH_P_IPV6 protocol, 282
ETH_P_IPX protocol, 282
ETH_P_IRDA protocol, 276
ETH_P_LOCALTALK protocol, 276
ETH_P_PPP_DISC protocol, 282
ETH_P_PPP_SES protocol, 282
ETH_P_PPPTALK protocol, 276
ETH_P_RARP protocol, 282
ETH_P_TR_802_2 protocol, 276
ETH_P_WAN_PPP protocol, 276
ETH_P_X25 protocol, 281
ethtool tool, 166-168
ethtool_ops function pointer, net_device structure, 55, 142, 166
eth_type_trans function, 283, 293
packet type, setting, 284
setting protocol and length, 286
examples (see code examples)
_ _exit macro, 124, 126, 131, 133, 134
_ _exitcall macro, 126, 129, 131, 134
_ _exitdata macro, 126, 134
expires field, dst_entry structure, 982
F[ Top ]
faddr field, ip_options structure, 557
failover system, gratuitous ARP used for, 704
fa_info field, fib_alias structure, 971
fa_list field, fib_alias structure, 971
family field
dst_ops structure, 983
neigh_ops structure, 769
neigh_table structure, 762
fa_scope field, fib_alias structure, 838, 971
fast network translation, 833
fast switching, 56, 833
fa_state field, fib_alias structure, 971
fastroute_defer field, netif_rx_stats structure, 262
fastroute_deferred_out field, netif_rx_stats structure, 262
fastroute_hit field, netif_rx_stats structure, 262
fastroute_latency_reduction field, netif_rx_stats structure, 262
fastroute_success field, netif_rx_stats structure, 262
fa_tos field, fib_alias structure, 971
fa_type field, fib_alias structure, 971
fdb_create function, 373, 404
fdb_delete function, 375
fdb_find function, 373
FDDI device
alloc_netdev wrapper for, 139
MTU value for, 46
tx_queue_len value for, 52
feature initialization, 86
features field, net_device structure, 45, 142, 441
fi field, fib_result structure, 978
FIB (Forwarding Information Base) (see routing table)
fib_add_ifaddr function, 850-854, 987
fib_advmss macro, 974
fib_alias structure, 835, 899, 906, 916, 971
fib_clntref field, fib_info structure, 972
fib_combine_itag function, 949
fib_create_info function, 839, 902
fib_dead field, fib_info structure, 972
fib_del_ifaddr function, 854, 987
fib_dev macro, 974
fib_disable_ip function, 849
Fiber Distributed Data Interface (see FDDI device)
fib_flags field, fib_info structure, 972
fib_flush function, 848, 910
fib_get_table function, 842, 911
fib_hash field, fib_info structure, 972
fib_hash_init function, 904, 987
fib_hash_lock lock, 843, 909, 986
fib_inetaddr_event function, 846-849, 849-856, 987
fib_info structure, 835, 899, 902, 971-974
fib_info_cnt variable, 902, 988
fib_info_devhash hash table, 904, 989
fib_info_hash hash table, 902, 988
fib_info_laddrhash hash table, 902, 988
fib_info_lock lock, 843, 986
fib_iter_state structure, 836
fib_lhash field, fib_info structure, 972
fib_lookup function, 919, 987
double definition of, 911, 912
input routing and, 927
policy routing and, 944
fib_magic function, 958, 987
fib_metrics field, fib_info structure, 973
fib_mp_alg field, fib_info structure, 974
fib_mtu macro, 974
fib_multipath_lock lock, 844, 986
fib_netdev_event function, 846-849, 856, 987
fib_new_table function, 843, 911
fib_nh field, fib_info structure, 942, 974
fib_nh structure, 835, 903, 975
fib_nhs field, fib_info structure, 942, 974
fib_node structure, 835, 899, 970
fib_power field, fib_info structure, 942, 943, 974
fib_prefsrc field, fib_info structure, 973
fib_priority field, fib_info structure, 973
fib_props array, 919, 989
fib_protocol field, fib_info structure, 972
Fibre Channel device
alloc_netdev wrapper for, 139
tx_queue_len value for, 52
fib_result structure, 834, 978
FIB_RES_XXX macros, 842, 986
fib_rtt macro, 974
fib_rule structure, 835, 944, 976
fib_rules variable, 988
fib_rules_attach function, 857, 987
fib_rules.c file, 912
fib_rules_detach function, 857, 987
fib_rules_event function, 845, 856
fib_rules_init function, 845, 987
fib_rules_lock lock, 843, 986
fib_rules_tclass function, 949
fib_scope field, fib_nh structure, 839
fib_select_default function, 911, 938, 939, 940, 987
fib_select_multipath function, 938, 939, 941-944, 987
fib_semantic_match function, 916, 916-919, 987
fib_semantics.c file, 919
fib_sync_down function, 846, 910
fib_sync_up function, 848
fib_table structure, 835, 899, 905, 968
fib_tables variable, 988
fib_treeref field, fib_info structure, 972
fib_validate_source function, 913, 928
fib_window macro, 974
files
bridging, list of, 405
component initialization, list of, 135
data structures, list of, 57
device registration and initialization, list of, 173
ICMP, list of, 622
IPv4, list of, 568
L4 protocols, list of, 583
neighboring subsystem, list of, 774
network device initialization, list of, 105
networking, list of, 66
notification chains, list of, 83
PCI layer, list of, 115
protocol handlers, list of, 294
routing, list of, 989
transmission and reception, list of, 265
filesystems, network, xxi
find_portno function, 382
firewall-based classifier, 808, 818, 832, 859
firewalling (see Netfilter)
fl field
cork structure, 565
rtable structure, 980
flags field
cork structure, 564
dst_entry structure, 982
flowi structure, 984
irqaction structure, 92
neighbour structure, 759
net_device structure, 45, 142, 147, 154
flooding, by bridge, 304
flowi structure, 835, 984
FLOWI_FLAG_MULTIPATHOLDROUTE flag, 984
flush file, 961, 962
flush_delay variable, 962
flux problem, ARP, 707
fn_alias field, fb_node structure, 970
fn_hash field, fb_node structure, 970
fn_hash structure, 835
fn_hash_delete function, 858, 905, 906, 988
fn_hash_dump function, 905
fn_hash_flush function, 905
fn_hash_insert function, 839, 858, 905, 988
fn_hash_kmem memory pool, 904
fn_hash_lookup function, 905, 912, 914-919, 987
fn_hash_select_default function, 905, 941
fn_key field, fb_node structure, 971
fn_key variable, 899
fn_new_zone function, 902
fn_rehash_zone function, 906
fn_zone structure, 835, 899, 969
fonts used in this book, xxii
forced_gc_runs field, neigh_statistics structure, 771
for_ifa macro, 548, 567, 841, 986
for_nexthops macro, 842
for_primary_ifa macro, 548, 567, 841, 986
Forward Delay timer, STP, 336, 338, 388
forward_delay field, net_bridge structure, 402
forward_delay_timer field, net_bridge_port structure, 400
forwarding database, 373-375
adding entries to, 374
aging of, 375
lookups in, 373
reference counts for, 374
removing entries from, 375
updating entries in, 374
forwarding, enabling and disabling, 966
forwarding file, 963, 965, 967
Forwarding Information Base (FIB) (see routing table)
forwarding packets, 411, 455, 466-471
forwarding variable, 963
Fragment Offset field, IP header, 413, 423
fragmentation/defragmentation of packets, 411, 420-422, 512
associating fragments with packets, 426
checksum updates triggered by, 433
defragmentation, 521-526
effect on higher layers, 422
example of, 485
fast fragmentation, 513, 519-520
functions for, 474, 514, 524
garbage collection for, 533
handling fragmented buffers, 491-496
hash table for, 521, 534
initialization of, 512
IP header fields for, 423
IP ID generation for, 427
ip_append_data creating fragments, 496-501
ip_append_data function creating fragments, 481, 484-490
NAT and, problems with, 427
path MTU discovery and, 429-432
problems with, 424-428
resources used by, 422
retransmissions, 424
slow fragmentation, 513, 516-519
statistics about, 544
fragments field, ipq structure, 559
frags vector, 487, 488, 492
fragsize field, cork structure, 565
frame diverter, xxi
frames, 4, 267
bridging code processing of, 371-372
compared to BPDUs, 376
multiple, processing during interrupt, 180
paths taken by, 178
reception of (see reception of frames)
transmission of (see transmission of frames)
free_fib_info function, 902
free_init_mem function, 85
free_irq function, 88, 104
free_netdev function, 141, 172
fs_initcall macro, 126
func field, packet_type structure, 280
function pointers, 8-10
(see also specific functions)
fz_divisor field, fn_zone structure, 901, 970
fz_hash field, fn_zone structure, 901, 970
fz_hashmask field, fn_zone structure, 970
FZ_HASHMASK macro, 970
fz_mask field, fn_zone structure, 970
FZ_MASK macro, 970
fz_nent field, fn_zone structure, 970
fz_next field, fn_zone structure, 969
fz_order field, fn_zone structure, 970
G[ Top ]
garbage collection, 8
inet_peer structure, 538
IP fragmentation, 533
neighboring subsystem, 669, 675-679
routing cache, 796-798, 886-896
routing table, 910
garbage collection timer, 375
GateD routing protocol daemon, 820, 860
gateway, 297
gc field, dst_ops structure, 983
gc virtual function, dst_ops structure, 880, 887
gc_dst_overflow field, rt_cache_stat structure, 985
gc_elasticity file, 960, 962
gc_goal_miss field, rt_cache_stat structure, 985
gc_ignored field, rt_cache_stat structure, 985
gc_interval field, neigh_table structure, 764
gc_interval file, 755, 892, 960, 962
gc_interval variable, 755
gc_min_interval file, 960
gc_min_interval_ms file, 962
gc_staletime field, neigh_parms structure, 766
gc_stale_time file, 755
gc_staletime variable, 755
gc_thresh field, dst_ops structure, 983
gc_thresh file, 960, 962
gc_thresh1 field, neigh_table structure, 764
gc_thresh1 file, 755
gc_thresh1 variable, 755
gc_thresh2 field, neigh_table structure, 764
gc_thresh2 file, 755
gc_thresh2 variable, 755
gc_thresh3 field, neigh_table structure, 764
gc_thresh3 file, 755
gc_thresh3 variable, 755
gc_timeout file, 960, 962
gc_timer field
neigh_table structure, 669, 764
net_bridge structure, 375, 402
gc_total field, rt_cache_stat structure, 985
Generalized Routing Encapsulation (GRE), 101, 570
generic.h file, 16
getfrag function, 497, 566
get_mss virtual function
dst_entry structure, 983
dst_ops structure, 881
get_page function, 504
get_random_bytes function, 535
get_sample_stats function, 226, 227
get_stats function pointer, net_device structure, 48, 55, 142
get_wireless_stats function pointer, net_device structure, 48, 55, 142
gflags field, net_device structure, 45
goto statement, 10
granularity of timer-driven interrupt, 181
gratuitous ARP, 702-707
GRE (Generalized Routing Encapsulation), 101, 570
H[ Top ]
h field, sk_buff structure, 28
ha field, neighbour structure, 717, 760
handle_bridge function, 372, 375, 404
handle_diverter function, 238
handler function pointer
icmp_control structure, 601
inet6_protocol structure, 582
irqaction structure, 91
net_protocol structure, 571
hard_header function pointer, net_device structure, 55, 142, 685
hard_header_cache function pointer, net_device structure, 55, 142, 685
hard_header_len field, net_device structure, 46, 142
hard_header_parse function pointer, net_device structure, 55, 142, 686
hard_start_xmit function pointer, net_device structure, 55, 142, 243, 249
HARD_TX_LOCK macro, 255
HARD_TX_UNLOCK macro, 255
hardware address (see L2 address)
hardware initialization, 86
hardware interrupts, 88-92
Hardware size field, arphdr structure, 700
Hardware type field, arphdr structure, 700
hash field, net_bridge structure, 401
hash function, neigh_table structure, 763
hash tables, 6
IP fragmentation, 521, 534
neighboring subsystem, 666
net_device structure, 146
hash_buckets field, neigh_table structure, 653, 763
hash_chain_gc field, neigh_table structure, 764
hash_grows field, neigh_statistics structure, 771
hash_lock field, net_bridge structure, 401
hash_mask field, neigh_table structure, 763
hash_rnd field, neigh_table structure, 764
hdlc_rcv function, 276
head field, sk_buff structure, 26
Header Checksum field, IP header, 414
Header Length (IHL) field, IP header, 412
header_cache_update function pointer, net_device structure, 55, 142, 685
header_len field, dst_entry structure, 981
header_length field, datalink_proto structure, 291
head_len field, icmp_bxm structure, 602
heartbeat timer, 704
Hello timer, 336, 352, 383, 388
hello_time field, net_bridge structure, 402
hello_timer field, net_bridge structure, 402
hh field
dst_entry structure, 982
neighbour structure, 760
hh_cache structure, 652, 655, 683, 770
hh_data field, hh_cache structure, 771
hh_len field, hh_cache structure, 770
hh_lock field, hh_cache structure, 770
hh_next field, hh_cache structure, 770
hh_output function
hh_cache structure, 770
neigh_ops structure, 770
hh_refcnt field, hh_cache structure, 770
hh_type field, hh_cache structure, 770
hierarchical switched L2 topology, 311-314
High Performance Parallel Interface (see HIPPI device)
HIPPI device
alloc_netdev wrapper for, 139
sk_buff field for, 32
tx_queue_len value for, 52
HI_SOFTIRQ type, 193, 196, 198
hits field, neigh_statistics structure, 771
hlist_head structure, 837
hlist_node structure, 837
Hold timer, 338, 347, 388
hold_timer field, net_bridge_port structure, 400
host byte order, converting, 15
host scope for IP addresses, 785
host scope for routes, 786, 838
hosts, 300
configured with multiple addresses, 787
nonrouting multihomed hosts, 779
hotplug helper, 96, 98-100, 103
hot-pluggable devices, 84, 96, 98-100
inserting, causing registration of device, 137
name changes of, 139
removing, causing unregistration of device, 138
htonl macro, 16
htons macro, 16
HTTP proxying, 637
Hyperchannel device, MTU value for, 46
I[ Top ]
ic_bootp_recv function, 281
ICMP header, 586, 600
ICMP messages
categories of, 587
ingress, replying to, 607
pinging and, 578
rate limiting, 608-610
receiving, 611-617
sending to multicast IP address, 611
transmitting, 602-610
types, list of, 588-590
Verbose Monitoring generating, 822
ICMP payload, 587
ICMP protocol, 569
(see also L4)
"ICMP Usage in Scanning" (Arkin), 585
icmp_address function, 611
ICMP_ADDRESS message type, 594, 611
icmp_address_reply function, 611
ICMP_ADDRESSREPLY message type, 594, 611, 617
icmp_bxm structure, 600, 602, 622
icmp_control structure, 600, 601, 611, 622
ICMP_DEST_UNREACH message type, 590, 597, 604, 611, 614, 620
icmp_echo function, 611
ICMP_ECHO message type, 590, 595, 608, 611, 613
icmp_echo_ignore_all flag, 620
icmp_echo_ignore_broadcasts file, 960
icmp_echo_ignore_broadcasts flag, 621
ICMP_ECHOREPLY message type, 590, 595, 596, 604, 607, 613
ICMP_ECHO_REQUEST message type, 928
icmp_err_convert function, 620, 622
icmp_errors_use_inbound_ifaddr flag, 621
ICMP_EXC_FRAGTIME message type, 593, 604
ICMP_EXC_TTL message type, 593, 595, 604
ICMP_FRAGMENTATION_NEEDED message type, 797, 892
ICMP_FRAG_NEEDED message type, 590, 604, 614, 620
icmp_glue_bits function, 497
icmph field, icmp_bxm structure, 602
icmp.h file, 588
icmphdr structure, 600, 622
ICMP_HOST_ANO message type, 591, 604, 620
ICMP_HOST_ISOLATED message type, 590, 620
ICMP_HOST_UNKNOWN message type, 590, 620
ICMP_HOST_UNREACH message type, 590, 604, 620
ICMP_HOST_UNR_TOS message type, 591, 620
icmp_ignore_bogus_error_responses flag, 621
ICMP_INC_STATS macro, 618, 622
ICMP_INC_STATS_BH macro, 618, 622
ICMP_INC_STATS_USER macro, 618, 622
ICMP_INFO_REPLY message type, 594
ICMP_INFO_REQUEST message type, 594
icmp_init function, 599, 622
icmp_mib structure, 617, 622
ICMP_MIB_INERRORS field, 618
ICMP_MIB_INMSG field, 618
ICMP_MIB_INXXX field, 619
ICMP_MIB_OUTERRORS field, 619
ICMP_MIB_OUTMSG field, 619
ICMP_MIB_OUTXXX field, 619
ICMP_NET_ANO message type, 591, 604, 620
ICMP_NET_UNKNOWN message type, 590, 620
ICMP_NET_UNREACH message type, 590, 604, 620
ICMP_NET_UNR_TOS message type, 591, 620
icmp_out_count function, 622
ICMP_PARAMETERPROB message type, 593, 604, 611, 614
ICMP_PKT_FILTERED message type, 591, 604, 620
icmp_pointers vector, 611
ICMP_PORT_UNREACH message type, 590, 597, 604, 620
ICMP_PREC_CUTOFF message type, 591, 620
ICMP_PREC_VIOLATION message type, 591, 620
ICMP_PROT_UNREACH message type, 590, 604, 620
icmp_ratelimit flag, 621
icmp_ratemask flag, 621
icmp_rcv function, 611, 619, 622
icmp_redirect function, 611, 616
ICMP_REDIRECT message type, 467, 470, 591, 604, 611, 616, 798
adding routing cache entries when received, 865
next-hop router structures and, 904
processing, 827
rate limiting for, 896
routing and, 822-828
transmitting, 825
Verbose Monitoring and, 822
ICMP_REDIR_HOST message type, 592
ICMP_REDIR_HOSTTOS message type, 592
ICMP_REDIR_NET message type, 592
ICMP_REDIR_NETTOS message type, 592
icmp_reply function, 599, 602, 622
icmp_send function, 599, 602, 605, 622
icmp_socket macro, 600
ICMP_SOURCE_QUENCH message type, 591, 611, 614
ICMP_SR_FAILED message type, 590, 604, 614, 620
icmp_statistics variable, 622
ICMP_TIME_EXCEEDED message type, 593, 595, 604, 611
icmp_timestamp function, 611
ICMP_TIMESTAMP message type, 593, 611, 616
ICMP_TIMESTAMPREPLY message type, 593, 604, 616
icmp_unreach function, 611, 614
ICMP_UNREACHABLE message type, 797, 892, 927, 931
ICMPv4 (Internet Control Message Protocol Version 4), 585
configuration, 620
data structures for, 600-602, 622
files and directories for, list of, 622
functions for, list of, 622
initialization, 599
ping command using, 595
RFCs about, 585
security and, 585
statistics for, 617-619
subsystems interacting with, 598-599
traceroute command using, 595
variables for, list of, 622
icmpv4_xrlim_allow function, 622
icmp_xmit_lock function, 603, 622
icmp_xmit_unlock function, 603, 622
icons used in this book, xxii, xxiii
ic_rarp_recv function, 282
id field
ipq structure, 559
neigh_table structure, 762
ID field, IP header, 424
Identification field, IP header, 412
idev field, rtable structure, 979
id_table field, pci_driver structure, 107
IEEE 802.1d device (see bridge)
IEEE 802.1D-1998 standard, 309
IEEE 802.1D-2004 standard, 309
IEEE 802.1Q device, 101, 102
IEEE 802.1Q-2002 standard, 309
IEEE 802.1s standard, 309
IEEE 802.1w standard, 309
IEEE 802.4 device (see Token Bus device)
IEEE 802.5 device (see Token Ring 4 MB/s device)
ifa_address field, in_ifaddr structure, 563
ifa_anycast field, in_ifaddr structure, 563
ifa_broadcast field, in_ifaddr structure, 563
ifa_dev field, in_ifaddr structure, 563
ifa_flags field, in_ifaddr structure, 563
IFA_F_SECONDARY flag, 841
ifa_label field, in_ifaddr structure, 563
ifa_list field, in_device structure, 562
ifa_local field, in_ifaddr structure, 563
ifa_mask field, in_ifaddr structure, 563
ifa_next field, in_ifaddr structure, 563
ifa_prefixlen field, in_ifaddr structure, 563
if_arp.h file, 46, 701
ifa_scope field, in_ifaddr structure, 563, 839
ifconfig command, 67, 166, 550
address configuration using, 792
IP configuration using, 545
#ifdef directive, 11
ifdown virtual function, dst_ops structure, 881, 983
if_ether.h file, 31, 46
IFF_EBRIDGE flag, 363
IFF_PROMISC flag, 285
IFF_UP flag, 147, 160, 161
if.h file, 45
ifindex field, net_device structure, 44
iflink field, net_device structure, 44
ifmap structure, 135
#ifndef directive, 12
ifobj field, net_bridge structure, 401
if_packet.h file, 30
if_port field, net_device structure, 44, 142
IGMP (Internet Group Management Protocol), 570
IHL (Header Length) field, IP header, 412
iif field
flowi structure, 984
ipq structure, 560
in_brd field, rt_cache_stat structure, 985
IN_DEV_ARP_ANNOUNCE macro, 708
IN_DEV_ARPFILTER macro, 708
IN_DEV_ARP_IGNORE macro, 708
_ _in_dev_get function, 440
in_dev_get function, 440, 566
in_device structure, 440, 561, 653
IN_DEV_PROXY_ARP macro, 735
in_dev_put function, 440
IN_DEV_XXX macros, 964
index_hlist field, net_device structure, 50
inet6_add_protocol function, 582
inet6addr_chain, 78, 81
inet6_del_protocol function, 582
inet6_dev structure, 653
inet6_protos table, 582
inet_add_protocol function, 571-574, 583
inetaddr_chain, 78, 81
inetaddr_chain notification chain, 548
inet_addr_onlink function, 725
inet_addr_type function, 701, 725
inet_alloc_ifa function, 546, 567
inet_del_ifa function, 546, 567
inet_del_protocol function, 571-574, 583
inetdev_destroy function, 546
inetdev_event function, 858
inetdevice.h file, 757
inetdev_init function, 546, 768
inet_dump_fib function, 954
inet_dump_ifaddr function, 567
inet_dumpifaddr function, 550
inet_dump_rules function, 955
inet_fill_ifaddr function, 548
inet_forward_change function, 967
inet_free_ifa function, 546, 567
inet_getpeer function, 537, 540, 567
inet_ifa_byprefix function, 842
inet_ifa_match function, 548, 567
inet_init function, 583
inet_initpeers function, 537, 567
inet_insert_ifa function, 546, 567
inet_make_mask function, 547, 567
inet_mask_len function, 547, 567
inet_peer structure, 439, 536, 560, 834
fields used in, 538
garbage collection for, 538
initialization for, 537
lookups for, 537
setting packet ID using, 541
inet_peer_gc_maxtime file, 554, 555
inet_peer_gc_maxtime variable, 538, 554
inet_peer_gc_mintime file, 554, 555
inet_peer_gc_mintime variable, 538, 554
inet_peer_maxttl file, 554, 555
inet_peer_maxttl variable, 538, 554
inet_peer_minttl file, 554, 555
inet_peer_minttl variable, 538, 554
inet_peer_threshold file, 554, 555
inet_peer_threshold variable, 537, 538, 554, 568
inet_peer_unused_head variable, 538
inet_peer_unused_lock variable, 539, 568
inet_peer_unused_tailp variable, 538
inet_protocol structure, 619
inet_proto_lock lock, 572
inet_protos table, 571, 581, 583
inet_rtm_deladdr function, 550, 567
inet_rtm_delroute function, 954, 955
inet_rtm_delrule function, 955
inet_rtm_getroute function, 954
inet_rtm_newaddr function, 550, 567
inet_rtm_newroute function, 954, 955
inet_rtm_newrule function, 955
inet_select_addr function, 547, 567, 725, 913
inet_set_ifa function, 547, 567
inet_skb_parm structure, 451
inet_sock structure, 476
info field, dst_entry structure, 983
Infrared Data Association device, alloc_netdev wrapper for, 139
ingress (input), 4
(see also reception)
ingress queues, 212, 223-225
ingress_lock field, net_device structure, 52, 171
in.h file, 571
in_hit counter, 870
in_hit field, rt_cache_stat structure, 984
in_hlist_search field, rt_cache_stat structure, 985
in_ifaddr structure, 440, 562
in_interrupt function, 187
in_irq function, 188
init function pointer, net_device structure, 55, 142, 149, 169
_ _init macro, 124, 126, 131, 133, 134
init program, 85
init_bh function, 191
_ _initcall macro, 126, 129, 130, 134
xxx_initcall macros, 128
_ _initdata macro, 126, 134
initialization, 84
boot-time initialization routines, 128-130
boot-time kernel options, 85, 93, 116-122
configuration parameters for, 103
data structures for, list of, 134
device handling layer, 94-96
files and directories for, list of, 135
functions for, list of, 134
interrupts, 85
IPv4, 443
memory optimization, 130-134
module options, 93
modules, 122-125
net_device structure fields, 141-145
network devices, 86, 141-145
NICs, 86
options, 85, 93, 116-122
PCI devices and, 112
subsystems, 116
timers, 85
user-space tools for, 96-100
variables for, list of, 134
virtual devices, 101
init_ipv4_mibs function, 542, 617
init_module function, 122, 135
in_martian_dst field, rt_cache_stat structure, 985
in_martian_src field, rt_cache_stat structure, 985
in_no_route field, rt_cache_stat structure, 985
input virtual function, dst_entry structure, 920-922, 923, 982
input_dev field, sk_buff structure, 28
input_entry field, icmp_control structure, 601
input_pkt_queue field, softnet_data structure, 207
in_slow_mc field, rt_cache_stat structure, 984
in_slow_tot field, rt_cache_stat structure, 984
in_softirq function, 187
interface, 311
Internet Control Message Protocol Version 4 (see ICMPv4)
Internet Group Management Protocol (IGMP), 570
Internet Protocol Version 4 (see IPv4)
Internet Protocol Version 6 (see IPv6)
Internet Service Provider (ISP), 783
interrupt context, 184
interrupt handlers, 88
bottom half handlers, 184-186
implementations of, 186
old style, concurrency and, 187
requirements for, 190
software interrupts for (version 2.4 and higher), 193-196
tasklets for, 196-198
version 2.2 and earlier, 190-193
events started by, 210
interrupts (IRQ), 4
concurrency and, 186
devices communicating with kernel using, 87, 180
enabling and disabling, 187-188
events started by, 184, 185
hardware interrupts, 88-92
initialization of, 85
locking and, 186
mapping to handlers, 90
mixing with polling (see NAPI)
multiple frames processed during, 180
sharing, 90
software interrupts, 193-196
concurrency and, 187
initialization of, 198
kernel threads for, 202-204
networking code's use of, 206
pending, handling of, 199-201
per-architecture processing of, 202
timer-driven interrupts, 181
types of, 88
invoke_softirq function, 264
I/O ports for NICs, 87
ioctl command, 59, 67
bridging configuration using, 392-393
IP configuration using, 545
serialization used by, 71
ip addr add command, 852
ip addr commands, 567
ip address command, 792
IP addresses
adding, 850-854
address classes for, 783
configuration changes, handling, 849-856
configuring, 792
dynamic configuration of, 632
functions for manipulation and configuration of, 546-548
multiple, configured on one NIC, 789-793, 841
netmask for, 789
nonroutable, 784
preferred source IP address, 928
primary addresses, 789-793, 841
removing, 854
routable, 784
scope of, 785-788, 839, 936
secondary addresses, 789-793, 841
IP Authentication Header Protocol (AH), 570
ip command
ip addr add command, 852
ip addr commands, 567
ip address command, 792
IP configuration using, 545, 549
ip link command, 166
ip link set command, 852
ip monitor route command, 957
ip route command, 811, 817, 859, 954
ip rule command, 816, 954, 976
neighbor administration, 749, 750-752
routing configuration, 952, 954-956
IP configuration, 545-550
changes, handling, 849-856
device status changes affecting, 858
IP Encapsulating Security Payload Protocol (ESP), 570
IP header, 411-414
building for transmission, 480
ID for, selecting, 540
pseudoheader from, 437
IP ID field
defragmentation and, 426
generation of, 427
ip link command, 166
ip link set command, 852
ip monitor route command, 957
IP multicast (see multicast)
IP Payload Compression Protocol (IPcomp), 570
ip route command, 811, 817, 859, 954
ip rule command, 816, 954, 976
IP Security protocol (see IPsec)
IP tunneling (see IPIP)
IP virtual server, xxi
ip6_output_finish function, 773
ip6_ptr field, net_device structure, 50
ip_append_data function, 475, 481-503, 566
memory allocation for, 484-486
memory allocation with Scatter/Gather I/O, 487-490
using with ip_push_pending_frames function, 508
ip_append_page function, 503
ip_autoconfig file, 553, 554
ip_build_and_send_pkt function, 475
ip_build_xmit_slow function, 513
ip_call_ra_chain function, 467, 567
ip_check_mc function, 871
ipcm_cookie structure, 439, 558
IPcomp (IP Payload Compression Protocol), 570
ip_compute_csum function, 435
ip-cref.ps file, 815
ip_decrease_ttl function, 435, 566
ip_default_ttl file, 553, 554
ip_defrag function, 472, 511, 524, 526, 566
ip_dont_fragment function, 514, 566
ip_dynaddr file, 554, 555
ip_error function, 921, 931
ip_evictor function, 524, 526, 533, 566
ip_expire function, 534, 566
ip_fallback_id variable, 541
ip_fast_csum function, 434, 435, 448, 566
ip_fib_check_default function, 904
ip_fib.h file, 912, 919
ip_fib_init function, 845, 904, 987
ip_fib_local_table routing table, 904, 910
ip_fib_local_table variable, 988
ip_fib_main_table routing table, 904, 910
ip_fib_main_table variable, 988
ip_find function, 525, 526, 566
ip_finish_output function, 471, 510, 566
ip_finish_output2 function, 566, 692, 773
ip_forward file, 553, 554, 960, 967
ip_forward function, 455, 466, 467-470, 566, 921
ip_forward_finish function, 455, 466, 470, 566
ip_forward_options function, 454, 470, 566
ip_frag_destroy function, 525, 566
ipfrag_hash_rnd variable, 535
ipfrag_high_thresh file, 554, 555
ipfrag_init function, 512, 535, 566
ipfrag_lock variable, 560, 567
ipfrag_low_thresh file, 554, 555
ip_frag_mem variable, 533, 567
ip_fragment fragment, 511
ip_fragment function, 512, 514, 566
ip_frag_queue function, 525, 526, 527-533, 566
ip_frag_reasm function, 525, 527, 533, 566
ipfrag_secret_interval file, 554, 555
ipfrag_secret_rebuild function, 535
ipfrag_time file, 554, 555
ip_generic_getfrag function, 497
ip.h file, 545
iphdr structure, 439, 556
ip_id_count field, inet_peer structure, 538, 561
IP_INC_STATS macro, 544, 567
IP_INC_STATS_BH macro, 544, 567
IP_INC_STATS_USER macro, 544, 567
ip_init function, 443, 565
IPIP (IP-over-IP tunneling), 101, 550, 570, 800
ip_local_deliver function, 472, 566, 921, 922
ip_local_deliver_finish function, 472, 566, 574-582, 583, 599
ip_local_port_range file, 67, 554, 555
ip_mc_output function, 921, 923
ip_mkroute_input function, 923, 931, 987
ip_mkroute_input_def function, 923, 987
ip_mkroute_output function, 923, 987
ip_mkroute_output_def function, 923, 987
ip_mp_alg_ops structure, 836, 874, 986
ip_mr_cache file, 966
ip_mr_input function, 921
ip_mr_vif file, 966
ip_netdev_event function, 856
ip_nonlocal_bind file, 553, 554
ip_no_pmtu_disc file, 553, 554
ip_option_compile function, 451
ip_options structure, 439, 457, 556
ip_options_build function, 454, 481, 506, 566
ip_options_compile function, 453, 455, 457, 566
ip_options_echo function, 455
ip_options_fragment function, 454, 514
ip_options_get function, 454
ip_options_parse function, 566
ip_options_rcv_srr function, 452, 946
ip_output function, 455, 921, 922
IP-over-IP (see IPIP)
IPPROTO_XXX symbols, 571
ip_ptr field, net_device structure, 50, 440
ip_push_pending_frames function, 474, 481, 504-509, 566
ipq structure, 439, 522, 558-560
adding fragment to, 527
functions for, 524
garbage collection and, 534
new instance initialization, 526
ipq_hash table, 522, 534, 560
ipq_kill function, 525, 534
ipq_put function, 525
ip_queue_xmit function, 474, 477-481, 566
ipq_unlink function, 534
ip_rcv function, 281, 446, 565, 922
ip_rcv_finish function, 450-453, 922
ip_reply_glue_bits function, 497
IPROUTE2 package, 18
aliasing devices and, 793
configuring routes, 821
ip addr add command, 852
ip addr commands, 567
ip address command, 792
IP configuration using, 545, 549
ip link command, 166
ip link set command, 852
ip monitor route command, 957
ip route command, 811, 817, 859, 954
ip rule command, 816, 954, 976
neighbor administration, 749, 750-752
routing configuration, 952, 954-956
tc command, 689
ip_route_connect function, 987
ip_route_input function, 445, 868, 870-872, 922, 987
ip_route_input_mc function, 987
ip_route_input_slow function, 869, 872, 922, 923-933, 987
ip_route_newports function, 987
ip_route_output_flow function, 445, 473, 478, 479, 987
_ _ip_route_output_key function, 869, 872-873, 922, 987
ip_route_output_key function, 599, 868, 987
ip_route_output_slow function, 869, 872, 922, 923, 933-941, 987
ip_rt_acct structure, 834
ip_rt_bug function, 921
ip_rt_error_burst variable, 962
ip_rt_error_cost variable, 962
ip_rt_frag_needed function, 599
ip_rt_gc_elasticity variable, 865, 868, 962
ip_rt_gc_interval variable, 892, 962
ip_rt_gc_min_interval variable, 868, 887, 962
ip_rt_gc_timeout variable, 962
ip_rt_init function, 844, 861, 987
ip_rt_max_delay variable, 962
ip_rt_max_size variable, 888, 962
ip_rt_min_advmss variable, 962
ip_rt_min_delay variable, 962
ip_rt_min_pmtu variable, 962
ip_rt_mtu_expires variable, 962
ip_rt_redirect function, 599, 616
ip_rt_redirect_load variable, 897, 962
ip_rt_redirect_number variable, 897, 962
ip_rt_redirect_silence variable, 897, 962
ip_rt_secret_interval variable, 886, 962
ip_run_ipprot function, 572
IPsec, xx, 570
dst_entry structure used by, 882
forwarding packets and, 467
interaction with neighboring subsystem, 689
L4 packet delivery and, 582
sk_buff field for, 32
transformation bundles, 882
ip_select_fb_ident function, 541
_ _ip_select_ident function, 540
ip_select_ident function, 540, 567
ip_select_ident_more function, 481, 540, 567
ip_send_check function, 435, 566
ip_send_reply function, 475, 497
ip_statistics structure, 542
ip_statistics variable, 544, 568
ipstats_mib structure, 440, 542, 561
IPSTATS_MIB_FRAGCREATES field, 544
IPSTATS_MIB_FRAGFAILS field, 544
IPSTATS_MIB_FRAGOKS field, 544
IPSTATS_MIB_INADDRERRORS field, 543
IPSTATS_MIB_INDELIVERS field, 543
IPSTATS_MIB_INDISCARDS field, 543
IPSTATS_MIB_INHDRERRORS field, 542
IPSTATS_MIB_INMCASTPKTS field, 543
IPSTATS_MIB_INNOROUTES field, 542
IPSTATS_MIB_INRECEIVES field, 542
IPSTATS_MIB_INTOOBIGERRORS field, 542
IPSTATS_MIB_INTRUNCATEDPKTS field, 543
IPSTATS_MIB_INUNKNOWNPROTOS field, 543
IPSTATS_MIB_OUTDISCARDS field, 543
IPSTATS_MIB_OUTFORWDATAGRAMS field, 543
IPSTATS_MIB_OUTMCASTPKTS field, 543
IPSTATS_MIB_OUTNOROUTES field, 543
IPSTATS_MIB_OUTREQUESTS field, 543
IPSTATS_MIB_REASMFAILS field, 544
IPSTATS_MIB_REASMOKS field, 544
IPSTATS_MIB_REASMREQDS field, 544
IPSTATS_MIB_REASMTIMEOUT field, 544
IPSTATS_MIB_XXX enumeration list, 542
ip_summed field, sk_buff structure, 30, 441-443
iputils tool, 18
IPv4 (Internet Protocol Version 4), 409-411
ARP protocol and, 635
checksums, 432-438, 440-443, 473, 502
configuration, 545-550, 553-555
data structures for, 439-443, 555-565, 568
files and directories for, list of, 568
forwarding packets, 466-471
functions for, list of, 565-567
ICMP interactions with, 599
initialization, 443
input packets, handling, 446-453
interface to neighboring subsystem, 510
IP header, 411-414
L3 to L4 protocol interface and, 582
local delivery of packets, 472
long-living peer information kept by, 536-540
Netfilter and, 444
options, 411, 414, 414-420, 453-465
problems with, 551-553
routing subsystem and, 445
security and, 552
statistics for, 541-545
transmission of packets, 473-476, 504-509
variables for, list of, 567
(see also fragmentation/defragmentation of packets; L3)
ipv4_config structure, 440, 564
ipv4_config.autoconfig variable, 553
ipv4_config.no_pmtu_disc variable, 553
ipv4_devconf structure, 440, 564, 567, 757
ipv4_devconf.arp_announce variable, 757
ipv4_devconf.arp_filter variable, 757
ipv4_devconf.arp_ignore variable, 757
ipv4_devconf_dflt variable, 567
ipv4_devconf.forwarding variable, 553, 960
ipv4_devconf.medium_id variable, 757
ipv4_devconf.proxy_arp variable, 757
ipv4_dst_ops.gc_thresh variable, 962
IPv4-over-IPv4 (see IPIP)
ipv4_sysctl_forward function, 967
IPv6 (Internet Protocol Version 6), xx
fragmentation, 428
improvements over IPv4, 551
L3 to L4 protocol interface and, 582
ND protocol and, 635
(see also L3)
ipv6_add_dev function, 768
IPv6-over-IPv4 (Simple Internet Transition, SIT), 570
IPv6-over-IPv6, 570
ipv6_rcv function, 282
IPX protocol, xxi, 288, 291
ipx_rcv function, 276, 282, 288, 291
irlap_driver_rcv function, 276
irq field, net_device structure, 44, 142
IRQ lines for NICs, 87
IRQ (see interrupts)
irq_action structure, 105
irqaction structure, 91-92
irq.c file, 88
irq_desc variable, 91, 104
irq_exit function, 195
is_changed field, ip_options structure, 556
is_data field, ip_options structure, 557
ISDN device
MTU value for, 46
tx_queue_len value for, 52
is_local field, net_bridge_fdb_entry structure, 399
ISP (Internet Service Provider), 783
is_setbyuser field, ip_options structure, 557
is_static field, net_bridge_fdb_entry structure, 399
is_strictroute field, ip_options structure, 557
iw_statistics field, 48
J[ Top ]
jiffies global variable, 17
K[ Top ]
kconfig files, 24
kernel component, 5
(see also subsystems)
kernel (see Linux kernel)
kernel_param structure, 119, 135
kern_rta structure, 836
key_len field, neigh_table structure, 763
keywords, registering, 117
kfree function, 5
kfree_skb function, 35
kmalloc function, 5
kmem_cache_alloc function, 5, 6
kmem_cache_create function, 5
kmem_cache_destroy function, 5
kmem_cache_free function, 5
kmem_cachep field
dst_ops structure, 983
neigh_table structure, 763
kmod kernel module loader, 98
kobj field, net_bridge_port structure, 400
kobject_hotplug function, 99
ksoftirqd function, 202
ksoftirqd kernel threads, 202-204
L[ Top ]
L2 address
change of, gratuitous ARP used for, 702
configuring, 632
static translation of L3 address to, 633
translating L3 address to, 628-634
L2 bridged topology, 311-314
L2 headers, caching, 683-687
L2 (link layer), 3, 4
communication choices made by, 272, 273
data units for (frames), 267
protocol choices for, 268, 274
L2 network, 311
L3 address
changing, situations for, 632
duplicate, gratuitous ARP used for, 703-704
static translation to L2 address, 633
translating to L2 address, 628-634
(see also IP addresses)
L3 (network layer), 3, 4
communication choices made by, 271, 273
data units for (packets), 267
L3 to L4 packet delivery, 574-582
VFT interface with neighboring subsystem, 655-665
L4 checksum, 437-438
L4 (transport layer), 3, 4
communication choices made by, 271
data structures for, list of, 583
data units for (segments), 267
files and directories for, list of, 583
functions for, list of, 583
L3 to L4 packet delivery, 574-582
passing error notifications to, 619
protocol registration, 571-574
protocols, xx
protocols for, list of, 569-570
raw IP and, 577-581
raw sockets and, 577-581
variables for, list of, 583
LANs, 311
loop topology, 307
loop-free topology, 308
merging with bridges, 300
of different technologies, bridging, 302
last_flush field, neigh_table structure, 764
last_in field, ipq structure, 559
last_rand field, neigh_table structure, 763
last_rx field, net_device structure, 50
lastuse field, dst_entry structure, 875, 982
late_initcall macro, 126
Layer two address (see L2 address)
layers of TCP/IP network stack, terminology for, 3
len field
ipq structure, 560
sk_buff structure, 25
length field, cork structure, 565
likely macro, 13
limited broadcasts, 930
link between bridges, 311
link layer address (see L2 address)
link layer multicast, net_device fields for, 51
link layer (see L2)
link scope for IP addresses, 786
link scope for routes, 786, 838
link state change detection, 163-165
link_failure virtual function, dst_ops structure, 881, 983
_ _LINK_STATE_LINKWATCH_EVENT flag, 148
_ _LINK_STATE_LINKWATCH_PENDING flag, 164, 165
_ _LINK_STATE_NOCARRIER flag, 148, 163
_ _LINK_STATE_PRESENT flag, 148, 155, 162
_ _LINK_STATE_RX_SCHED flag, 148
_ _LINK_STATE_SCHED flag, 239, 244
_ _LINK_STATE_SHED flag, 148
_ _LINK_STATE_START flag, 148, 159, 161, 211
_ _LINK_STATE_XOFF flag, 148, 241
linkwatch_event function, 165
linkwatch_fire_event function, 163
linkwatch_run_queue function, 165
Linux
embedded devices using, xv
performance of, xv
university projects using, xv
Linux Device Drivers (O'Reilly), xvi
Linux kernel
books about, xvi
browsing source code, 19
dead code in, 19
interaction with devices, 87-92
new features of, learning, xviii
notification of frame reception for, 212-219
patches for, 20
preemption of, 188
Linux Network Development List Archives, 19
Linux Virtual Servers (see LVS)
list field
net_bridge_fdb_entry structure, 399
net_bridge_port structure, 399
packet_type structure, 280
sk_buff structure, 25
Little Endian format, 15
little_endian.h file, 16
LLC (Logical Link Control), 268, 287-290
Linux implementation of, 289
reception of frames, 290
llc_rcv function, 276
llc_sap_close function, 293
llc_sap_open function, 293
local delivery of packets, 472
local_bh_disable function, 188
_ _local_bh_enable function, 188
local_bh_enable function, 188, 196
local_irq_disable function, 188
local_irq_enable function, 188
local_irq_restore function, 188
local_irq_save function, 188
LOCAL_MCAST macro, 843, 986
local_softirq_pending function, 188
lock field
ipq structure, 560
neighbour structure, 760
neigh_table structure, 762
net_bridge structure, 401
locking
for creating bridge devices and bridge ports, 361
for frame transmission, 247, 256
for frame transmission on queueless devices, 255
for ICMP transmissions, 603
for net_device structure changes, 171
for routing, 843
for routing cache, 864
interrupts and, 186
mutual exclusion mechanisms, 14-15
RCU (Read-Copy-Update), 14, 864
(see also spin locks)
locktime field, neigh_parms structure, 767
locktime file, 755
locktime variable, 755
lo_cong file, 263
lo_cong variable, 263, 264
Logical Link Control (see LLC)
log_martians field, ipv4_config structure, 564
log_martians file, 963, 965
log_martians variable, 963
Longest Prefix Match (LPM) algorithm, 798, 914
lookup macro, 537
lookups field, neigh_statistics structure, 771
loop topology, bridges not working with, 307
loopback device
frame transmission for, 254
queues not used by, 212
tx_queue_len value for, 53
LOOPBACK macro, 843, 986
loop-free topology, 308
Loose Source and Record Route, IP option type field, 415, 416, 460
LPM (Longest Prefix Match) algorithm, 798, 914
lru_list field, ipq structure, 559
lspci command, 114
ltalk_rcv function, 276
LVS (Linux Virtual Servers), ARP and, 709
lw_event structure, 164, 172
lweventlist variable, 172
lweventlist_lock variable, 172
LW_RUNNING flag, 165
LW_SE_USED flag, 165
M[ Top ]
MAC address (see L2 address)
mac field, sk_buff structure, 28
mac_addr structure, 359, 404
mac_len field, sk_buff structure, 26
macro-based tagging, 124, 125-127
macros, dynamic definition of, 132-134
"Magic Packets", 109
make config options (see compile options)
manage.c file, 88
Management Information Base (see MIB)
mark_bh function, 191
master field, net_device structure, 50
Max Age timer, 388
max_age field, net_bridge structure, 402
max_delay file, 961, 962
Maximum Transmission Unit (see MTU)
max_size file, 960, 962
mcast_probes field, neigh_parms structure, 767
mcast_probes variable, 755
mcast_solicit file, 755
mc_count field, net_device structure, 51
mc_forwarding file, 963, 965
mc_forwarding variable, 963
McKenney, Paul (article about RCU), 15
mc_list field, net_device structure, 51
meat field, ipq structure, 560
Media Independent Interface (MII), 168
medium ID feature, ARP, 712-714
medium_id file, 757
mem_end field, net_device structure, 44
memory
allocating, 33-35
device, registration of, 87
freeing, 35
optimization of, in initialization code, 130-134
memory caches, 5
mem_start field, net_device structure, 44
Message Age timer, 336, 386
message_age_timer field, net_bridge_port structure, 400
messages, 4, 267
messages, ICMP (see ICMP messages)
methods (function pointers), 8-10
metrics field, dst_entry structure, 982
metrics, for routes, 783
(see also statistics)
MF (More Fragments) field, IP header, 413, 423
MIB (Management Information Base), IP layer statistics using, 440
MII (Media Independent Interface), 168
mii-tool tool, 168
min_adv_mss file, 961, 962
min_delay file, 67, 961, 962
min_pmtu file, 961, 962
_ _mkroute_input function, 923
_ _mkroute_output function, 923
mod_cong file, 263
mod_cong variable, 263, 264
mod_devicetable.h file, 106
modprobe helper, 96, 98, 103
module options, 93
MODULE symbol, 132
module_exit macro, 122, 129, 130, 133, 135
module_init macro, 122, 129, 135
dependency with net_dev_init function, 130
memory optimization and, 130, 133
module_param macro, 93, 104, 119, 135
modules
initialization, 122-125
loading, 98
More Fragments (MF) field, IP header, 413, 423
mp_alg_flush function, ip_mp_alg_ops structure, 986
mp_alg_remove function, ip_mp_alg_ops structure, 986
mp_alg_select_route function pointer, ip_mp_alg_ops structure, 874, 875, 986
mp_alg_set_nhinfo function, ip_mp_alg_ops structure, 986
MRT routing daemon, 860
MSG_DONTROUTE flag, 873
MSTP (Multiple Spanning Tree Protocol), 309, 351, 352
mtu field, net_device structure, 45, 142, 145
MTU (Maximum Transmission Unit), 45, 429-432, 449
mtu_expires file, 961, 962
multibyte options, IPv4, 414
multicast, xx
ARP handling, 702
disabling for device, 858
enabling for device, 858
link layer multicast, 51
packet, testing for, 464
packet type for, 284
transmission of packets and, 476
multicast address
as route destination, 871
bridge handling of, 304
class of, 784
sending ICMP messages to, 611
static translation for, 633
MULTICAST macro, 843, 986
multicast routing, xx, 831
multihomed hosts, 779
multipath caching, 836, 873-878, 943
multipath routing, 808-815
cache for, 811-812
enabling, 832
for default route, 939
next hop selection for, 810, 941-944
per connection distribution, 814
per flow distribution, 814
per packet distribution, 814
selection of, 939
multipath_alg_register function, 874, 988
multipath_alg_unregister function, 874, 988
multipath_bucket structure, 837
multipath_candidate structure, 837
multipath_comparekeys function, 875, 876
multipath_dest structure, 837
multipath_device structure, 836
multipath_drr.c file, 878
multipath_flush function, 874, 988
_ _multipath_lookup_weight function, 878
multipath_random.c file, 876, 878
multipath_remove function, 874, 988
multipath_route structure, 837
multipath_rr.c file, 878
multipath_select_route function, 874, 988
multipath_set_nhinfo function, 874, 944, 988
Multiple Spanning Tree Protocol (MSTP), 309, 351, 352
mutual exclusion, 14-15
N[ Top ]
name field
irqaction structure, 92
net_device structure, 44
pci_driver structure, 107
name_hlist field, net_device structure, 50
nameif tool, 139
NAPI
advantages of, 214
net_device fields for, 54, 215
net_rx_action function and, 216
notifying kernel of frame reception, 212, 214-219
NAT (Network Address Translation)
checksum updates triggered by, 433
fragmentation and, problems with, 427
limitations of, 552
stateless, 21
ND (Neighbor Discovery) protocol, 635
compared to ARP, 748
initialization and cleanup, 687
ndisc_cache file, 753
ndisc_cleanup function, 687
ndisc_init function, 687
ndisc_rcv function, 773
nd_tbl structure, 761, 773
negative_advice virtual function, dst_ops structure, 881, 983
neigh_add function, 751, 772
neigh_alloc function, 672, 772
neigh_app_notify function, 745
neigh_apps_ns function, 745
neigh_blackhole function, 661, 772
neighbor advertisement (see solication replies)
Neighbor Discovery protocol (see ND protocol)
neighbor solicitation (see solication requests)
neighboring subsystem, 625-628, 634-636
ARP protocol and (see ARP (Address Resolution Protocol))
arpd notifications, 665
caching used by, 666-668
cases where not required, 633
configuration, 752-757
creating a neighbor, 671-673
data structures for, 651-655, 757-772, 773
deleting a neighbor, 673-679
events generated by, 689
events received by, 690-692
files and directories for, list of, 774
functions for, list of, 772
garbage collection, 669, 675-679
initialization, 657-661
interaction with IPsec, 689
neighboring subsystem (continued)
interaction with L3 transmission functions, 692-693
interaction with Netfilter, 689
interaction with routing, 689
interaction with TEQL, 689
interface to L3 transmission function, 510
L2 header caching, 683-687
link layer address, changing, 665
NUD (network unreachability detection), 644-647
packet transmission, 634, 642
protocol initializatin and cleanup, 687
protocol mappings for, 5
protocols for, 635-636
proxying, 637-640, 679-683
queuing, 696-698
reachability of neighbors, 643, 647-650
reasons for, 628-634
reference counts, 670
solicitation replies, 634
solicitation requests, 634
states of neighbors, 642, 644-647
statistics about, 771
system administration for, 749-752
timers, 669
updating neighbor information, 661-665
variables for, list of, 773
VFT interface with L3 protocols, 655-665
neighbour field, dst_entry structure, 982
neighbour structure, 651, 655, 758-761
caching, 666
creating, 671-673
deleting, 673-679
initialization, 716-721
reference counts on, 670
neighbour.h file, 651
NEIGH_CACHE_STAT_INC macro, 772
neigh_changeaddr function, 690, 692
neigh_compat_output function, 660, 772
neigh_confirm function, 649, 772
neigh_connect function, 659, 772
neigh_connected_output function, 660, 772
neigh_create function, 666, 671, 772
neigh_delete function, 751, 772
neigh_destroy function, 674, 772
neigh_dump_info function, 751
neigh_forced_gc function, 676, 772
neigh_hash_alloc function, 666
neigh_hash_free function, 666
neigh_hash_grow function, 667
neigh_hh_init function, 773
neigh_hold function, 670, 773
neigh_ifdown function, 690, 690-691, 772
_ _neigh_lookup function, 668, 773
neigh_lookup function, 668, 773
_ _neigh_lookup_errno function, 668, 773
neigh_ops structure, 652, 769-770
functions assigned to virtual functions of, 660
instances for each protocol, 657
VFT implemented as, 655
neigh_parms structure, 652, 653, 753, 765-769
neigh_parms_alloc function, 768
neigh_parms_clone function, 768
neigh_parms_destroy function, 768
_ _neigh_parms_put function, 768
neigh_parms_put function, 768
neigh_parms_release function, 768
neigh_periodic_timer function, 649, 673, 677, 772
neigh_proxy_process function, 772
neigh_rcu_free_parms function, 769
neigh_recv_ns function, 679
neigh_release function, 670, 674, 773
neigh_resolve_output function, 660, 686, 772
neigh_setup function, neigh_parms structure, 765
neigh_setup function pointer, net_device structure, 55, 672
neigh_statistics structure, 652, 771
neigh_suspect function, 659, 772
neigh_sync function, 772
neigh_sysctl_register function, 715, 755-757
neigh_table structure, 652, 653, 761-765
neigh_table_clear function, 688
neigh_table_init function, 688, 714, 772
neigh_tables variable, 773
neigh_timer_handler function, 690, 772
neigh_update function, 658, 661-665, 750, 772
NEIGH_UPDATE_F_ADMIN flag, 661
NEIGH_UPDATE_F_OVERRIDE flag, 661
NEIGH_UPDATE_F_OVERRIDE_ISROUTER flag, 662
NEIGH_UPDATE_F_WEAK_OVERRIDE flag, 662
neigh_update_hhs function, 687, 772
NEIGH_UPDATE_ISROUTER flag, 662
net.agent agent, 100
NET_BH type, 191
net_bridge structure, 360, 373, 401, 404
net_bridge_fdb_entry structure, 360, 399
net_bridge_port structure, 360, 399, 404
netdev= keyword, 117, 120
netdev_boot function, 135
netdev_boot_setup function, 117, 120
netdev_boot_setup structure, 135
netdev_boot_setup_add function, 135
netdev_boot_setup_check function, 140
NETDEV_BOOT_SETUP_MAX variable, 135
netdev_chain notification chain, 81, 152
registration and unregistration to, 78
virtual devices using, 170
NETDEV_CHANGE event, 153, 165, 389, 856
NETDEV_CHANGEADDR event, 153, 389, 692, 742
NETDEV_CHANGEMTU event, 389, 856, 858
NETDEV_CHANGENAME event, 153, 858
NETDEV_DOWN event, 152, 390
disabling device, 161, 856, 883
disabling multicast configuration, 858
DST handling of, 884
removing of IP address, 549, 850
NETDEV_FEATCHANGE event, 389
NETDEV_GOING_DOWN event, 152, 160
netdevice notification chain, 389
net_device structure, 22, 43, 105, 653
allocating, 138, 140
bridge, field for, 53
checksum fields, 441
configuration fields, 44-48
deallocating, 141
device status, 49
Diverter, field for, 53
fields defining state of device, 147-148
fields, initializing, 141-145, 154
freeing, 156, 157, 158
function pointers, 55
function pointers, initializing, 86, 142
generic fields, 54
global list of, 146
hash tables for, 146
identifiers, 44
interface types and ports, 47
link layer multicast fields, 51
list management, 50
locking for, 171
lookups on, 146, 147
NAPI fields, 54, 215
Netpoll fields, 54
organization of, 145
promiscuous mode, 47
reference counts for, 158
statistics, 48
Traffic Control fields, 52
VLAN function pointers, 54
watchdog timer fields, 258
wireless device fields, 54
netdevice.h file, 43, 48, 49
net_device_stats structure, 48, 398
net_dev_init function, 94-96, 104
dependency with module_init functions, 130
files created by, 103
netdev_max_backlog file, 67, 263
netdev_max_backlog variable, 223, 263, 264
netdev_nit variable, 279, 293
NETDEV_REBOOT event, 153
NETDEV_REGISTER event, 153
netdev_run_todo function, 150, 150-152, 154
netdev_state_change function, 165
netdev_sysfs_init function, 95
NETDEV_UNREGISTER event, 153, 390, 884
DST handling of, 883
IP configuration and, 858
reference counts and, 158
routing table and, 856
unregister_netdevice generating, 157
NETDEV_UP event, 152, 160, 390
adding of IP address, 549, 850
enabling device, 856
enabling multicast configuration, 858
netdev_wait_allrefs function, 150, 158, 159
Netfilter, xxi, 444
interaction with neighboring subsystem, 689
IPv4 using, 411
masquerading feature, 549
sk_buff fields for, 32
transmission of packets and, 481
netif_carrier_off function, 163, 172
netif_carrier_ok function, 172
netif_carrier_on function, 163, 172
netif_device_attach function, 162, 172
netif_device_detach function, 162, 172
NETIF_F_HW_CSUM flag, 441
NETIF_F_IP_CSUM flag, 441
NETIF_F_LLTX, 255
NETIF_F_LLTX flag, 247
NETIF_F_NO_CSUM flag, 441
netif_poll_disable function, 218
netif_poll_enable function, 218
netif_queue_stopped function, 172, 241, 263
netif_receive_skb function, 235-238, 264, 276, 375, 446, 447
bridging code using, 371
function handler called by, 280
netif_running function, 211
netif_rx function, 212, 213, 227, 263
_ _netif_rx_complete function, 218
netif_rx_complete function, 218, 263
_ _netif_rx_schedule function, 218, 263
netif_rx_schedule function, 218, 263
netif_rx_stats structure, 261
_ _netif_schedule function, 243
netif_schedule function, 244, 264
netif_start_queue function, 172, 241, 242, 263
netif_stop_queue function, 172, 241, 263
interrupts and, 90
memory availability and, 242
suspending a device, 162
netif_wake_queue function, 244, 264
re-enabling egress queue, 243
triggering net_tx_action function, 255
Netlink, 60, 70
notifications to routing subsystem, 858
serialization used by, 71
NETLINK_FIREWALL protocol, 70
NETLINK_ROUTE protocol, 70
net_local structure, 49
netmask, 789
netmask field, fib_result structure, 978
netplugd daemon, 154
Netpoll, 211
net_device fields for, 54
processing ingress frames, 237
netpoll_rx field, net_device structure, 54
net_protocol structure, 571, 583
net_random_init function, 95
NETREG_REGISTERED flag, 149
NETREG_REGISTERING flag, 149
NETREG_RELEASED flag, 149
NETREG_UNINITIALIZED flag, 149
NETREG_UNREGISTERED flag, 149
NETREG_UNREGISTERING flag, 149
net_rx function, 219-225
net_rx_action function, 216, 228-238, 264
NET_RX_SOFTIRQ type
initialization of, 199
processing of, 228-238
registration of, 206
scheduling of, 225
net_set_todo function, 150, 154
net_todo_list array, 150
net-tools package, 749, 752, 952, 956
net-tools suite, 18
net_tx_action function, 239, 255-260, 264
NET_TX_SOFTIRQ type, 239
initialization of, 199
processing of, 255-260
registration of, 206
scheduling of, 244
Network Address Translation (see NAT)
network byte order, converting, 15
network cards (see NICs)
network devices
configuring from user space, 166-169
configuring with boot options, 120
data structures for, list of, 172
disabling, 137, 159, 211
enabling, 137, 159, 211
files and directories for, list of, 105
functions for, list of, 104, 172
hot-pluggable, 84, 96, 98-100
initialization of, 86, 93, 127, 141-145
initializing device handling layer, 94-96
interaction with kernel, 87-92
link state change detection, 163-165
loading as components, 93
loading as modules, 93, 96, 98
name of, 138
notification of registration status, 152-154
queuing discipline, 148, 155
registering, 86, 136, 137, 140, 149-154, 154-155
registration state, 148, 149
resuming after suspending, 162
state of, 147-149
suspending, 162
transmission
enabling and disabling, 241-243
scheduling, 243-245
unique identifyer for, 155
unregistering, 136, 138, 141, 149-154, 156-159
variables for, list of, 104, 172
(see also net_device structure; NICs; virtual devices)
network field, fib_result structure, 978
network filesystems, xxi
network layer (see L3)
Network Safari Bookshelf, xxiii
network stack, 266
communication points of, handling, 269-274
going down (egress traffic), 268, 271
going up (ingress traffic), 267, 272
network unreachability detection (NUD), 644-647, 657-661
New API (see NAPI)
new_bridge_dev function, 362
new_nbp function, 366
next field
dst_entry structure, 981
ipq structure, 558
irqaction structure, 92
neighbour structure, 758
neigh_parms structure, 765
neigh_table structure, 762
net_device structure, 50, 145
sk_buff structure, 24
next hop selection for multipath routing, 941-944
next_header field, IPv6 header, 582
next-hop router structures, 903-904
next-hop scope, 839
next_sched field, net_device structure, 52
nf_bridge field, sk_buff structure, 32
nfcache field, sk_buff structure, 32
nfct field, sk_buff structure, 32
nfctinfo field, sk_buff structure, 32
nfdebug field, sk_buff structure, 32
NF_HOOK function, 444
nfmark field, sk_buff structure, 32
nh field, sk_buff structure, 28
nh_dev field, fib_nh structure, 975
nh_flags field, fib_nh structure, 975
nh_gw field, fib_nh structure, 839, 975
nh_hash field, fib_nh structure, 975
nh_oif field, fib_nh structure, 975
nh_parent field, fib_nh structure, 975
nh_power field, fib_nh structure, 942, 975
nh_scope field, fib_nh structure, 975
nh_sel field, fib_result structure, 978
nh_tclassid field, fib_nh structure, 949, 975
nh_weight field, fib_nh structure, 942, 975
NICs
controlling packet transmission, 833
initialization of, 86
interaction with kernel, 87-92
I/O ports for, 87
IRQ line for, 87
memory registration for, 87
multiple
implementing bridge using, 300
in nonrouting multihomed hosts, 779
in router, 778
multiple IP addresses configured on, 789-793, 841
PCI NICs
device driver registration, 108, 110-112
multiport, 300
registering, 140
unregistering, 141
(see also network devices)
nl_u field, flowi structure, 984
No Operation, IP option type field, 415, 416
no_cong file, 263
no_cong variable, 263, 264
no_cong_thresh file, 263
no_cong_thresh variable, 263, 264
nonroutable addresses, 784
nonrouting multihomed hosts, 779
no_pmtu_disc field, ipv4_config structure, 564
no_policy field, net_protocol structure, 571
notification chains, 75-78
components registering with, 78
data structures for, list of, 83
defining, 78
files and directories for, list of, 83
functions for, list of, 83
list of, 81
netdevice notificatin chain, 389
notifying events on, 79
registering, 82
wrappers for, 78, 81
(see also netdev_chain notification chain)
notifier_block structure, 78, 83
notifier_call_chain function, 79, 83
notifier_chain_register function, 78, 83
notifier_chain_unregister function, 79, 83
nowhere scope for routes, 838
ntohl macro, 16
ntohs macro, 16
NUD (network unreachability detection), 644-647, 657-661
NUD_CONNECTED state, 646
NUD_DELAY state, 646, 647, 648, 650, 659
NUD_FAILED state, 645, 673
NUD_INCOMPLETE state, 645, 647, 650, 665
NUD_IN_TIMER state, 647
NUD_NOARP state, 646, 665
NUD_NONE state, 644, 647, 650, 665
NUD_PERMANENT state, 646, 665
NUD_PROBE state, 646, 647, 648, 650, 659
NUD_REACHABLE state, 645, 646, 649, 650, 659
NUD_STALE state, 646, 648, 650, 659
nud_state field, neighbour structure, 657-661, 717, 759
NUD_VALID state, 646, 665
O[ Top ]
obs_kernel_param structure, 118, 120, 135
obsolete field, dst_entry structure, 981
_ _obsolete_setup macro, 118
octets, 3
OFFLINE_SAMPLE symbol, 95, 227
offset field, icmp_bxm structure, 602
oif field, flowi structure, 984
open function pointer, net_device structure, 55, 142, 159
Open Shortest Path First IGP (OSPFIGP) protocol, 574
open_softirq function, 194, 264
Oper field, arphdr structure, 701
ops field
dst_entry structure, 983
neighbour structure, 655, 656, 657, 717-719, 761
opt field, cork structure, 565
optbuf field, icmp_bxm structure, 602
Options field, IP header, 414
options, IPv4, 411, 414, 414-420
functions for, 453-455
parsing, 457
processing, 455-465
optlen field, ip_options structure, 556
O'Reilly contact information, xxiii
OSI model, 266
OSPFIGP (Open Shortest Path First IGP) protocol, 574
out_hit counter, 870
out_hit field, rt_cache_stat structure, 984
out_hlist_search field, rt_cache_stat structure, 985
output function
dst_entry structure, 982
initialization of, 920-923
neighbour structure, 655, 657-661, 717
neigh_ops structure, 769
output_entry field, icmp_control structure, 601
output_queue field, softnet_data structure, 207, 239, 244
out_slow_mc field, rt_cache_stat structure, 985
out_slow_tot field, rt_cache_stat structure, 985
P[ Top ]
Packet Action, 211
packet ID, selecting, 540
packet type, setting, 284
packets, 4, 267
ARP packets, 700-702, 722-734
forwarding, 272, 411, 455, 466-471
paths taken by, 178
reception of (see reception of packets)
transmission of (see transmission of packets)
(see also fragmentation/defragmentation of packets)
packet_type structure, 278, 279, 293
_ _pad1 field, ip_options structure, 558
_ _pad2 field, ip_options structure, 558
padded field, net_device structure, 145
page field, skb_frag_t structure, 565
page_offset field, skb_frag_t structure, 565
parms field
neighbour structure, 758
neigh_table structure, 763
parms_list field, neigh_table structure, 763
parse_args function, 85, 116, 117
parse_early_param function, 85
parse_early_params function, 118
passive learning by bridge, 302
patches, 20
path field, dst_entry structure, 981
Path MTU (PMTU), 429-432, 881
path_cost field, net_bridge_port structure, 400
patterns (see coding patterns)
PCI devices
boot time activities for, 112
power management, 109
WOL (Wake-on-LAN), 109
PCI layer, 106-108
configuration, 114
data structures for, list of, 114
files and directories for, list of, 115
functions for, list of, 114
PCI NICs
device driver registration, 108, 110-112
multiport, 300
pci_dev structure, 107, 114
pci_device_id structure, 106, 108, 112, 114
pci_driver structure, 107, 108, 112, 114
pci.h file, 106
pci_module_init function, 108, 112, 114
pci_register_driver function, 108, 112, 114
pci_unregister_driver function, 108, 114
pconstructor function, neigh_table structure, 764
pde field, neigh_table structure, 762
pdestructor function, neigh_table structure, 764
peer field, rtable structure, 981
peer information kept at IP layer, 536-540
peer_check_expire function, 538, 540
peer_periodic_timer timer, 538
peer_pool_lock variable, 537, 568
peer_total variable, 537, 538, 568
per connection distribution, multipath routing, 814
per flow distribution, multipath routing, 814
per packet distribution, multipath routing, 814
per-destination proxying, 682
per-device proxying, 682
performance
compile-time optimization for condition checks, 13
of Linux, xv
"Performance Evaluation of Linux Bridge" (Yu), 355
periodic_gc_runs field, neigh_statistics structure, 771
Peripheral Component Interconnect (PCI) NICs (see PCI NICs)
per-netmask tables, routing tables, 898-902
PF_INET protocol family, 268
PF_KEY protocol family, 268
PF_LLC protocol family, 268
PF_NETLINK protocol family, 70, 268
PF_PACKET protocol family, 268
phash_buckets field, neigh_table structure, 653, 683, 764
PIM (Protocol Independent Multicast) protocol, 832
PIMv1 (Protocol Independent Multicast, version 1), 570
PIMv2 (Protocol Independent Multicast, version 2), 570
ping command, 18, 595
pkt_type field, sk_buff structure, 30, 284, 447
PLIP device
MTU value for, 46
tx_queue_len value for, 52
Plug and Play (PnP), 98
PMTU (Path MTU), 429-432, 881
pneigh_enqueue function, 682, 773
pneigh_entry structure, 652, 653
pneigh_lookup function, 683, 773
pneigh_update function, 750
PnP (Plug and Play), 98
point-to-point medium
neighboring subsystem not needed for, 630
only one host on, 633
policy realms, 816, 948
policy routing, 802-808
configuring, 803-806
default gateway selection and, 946
device status changes affecting, 857
enabling, 832
firewall-based classifier, 808, 818, 859
initialization, 845
lookups, 806, 944-946
routing table based classifier, 948-951
routing table definitions affected by, 910
selecting routing table for, 806-808
TOS affecting, 808
poll field, net_device structure, 54
poll virtual function, net_device structure, 142, 215, 216
poll_controller field, net_device structure, 54
polling of device by kernel, 87, 179
mixing with interrupts (see NAPI)
Netpoll framework for, 211
poll_list field, net_device structure, 54, 215
manipulating, 218
queuing input device to, 217
poll_list field, softnet_data structure, 207, 239
port cost, STP, 321, 323
port ID, STP, 321, 382
port priority, STP, 321, 322, 323
port timers, STP, 336, 388
port_id field, net_bridge_port structure, 400
port_list field, net_bridge structure, 401
port_no field, net_bridge_port structure, 400
ports (see bridge ports)
postcore_initcall macro, 126
power management
PCI devices, 109
queuing discipline state and, 161-162
PPP device
MTU value for, 46
tx_queue_len value for, 53
pppoe_disc_rcv function, 282
pppoe_rcv function, 282
pprev field, ipq structure, 559
preempt_check_resched function, 189
preempt_count counter, 189
preempt_disable function, 189
preempt_enable function, 189
preempt_enable_no_resched function, 189
preemption, 188
preferred source IP address, 928
prefixlen field, fib_result structure, 978
prev field, sk_buff structure, 24
primary addresses, 789-793, 841, 854
primary_key field, neighbour structure, 761
prio field, bridge_id structure, 398
priority field
net_bridge_port structure, 400
sk_buff structure, 31
priority vector, configuration BPDUs, 325
priv field
neigh_parms structure, 766
net_device structure, 48, 142
private field, sk_buff structure, 32
priv_flags field, net_device structure, 45
probe function, pci_driver structure, 107
probes field, neighbour structure, 760
probing mechanism for device driver, 109
/proc filesystem (procfs), 58, 60
ARP protocol, 708-714
bridging information in, 396
Ethernet and Token Ring information in, 293
frame reception information in, 262
ICMP information in, 620
IP configuration using, 545, 553-555
neighboring subsystem, 752-757
network device information in, 103
PCI device information in, 114
routing, 958-966
proc_dointvec function, 63
proc_dointvec_jiffies function, 63
proc_dointvec_minmax function, 63
proc_dointvec_ms_jiffies function, 63
proc_dostring function, 63
proc_doulongvec_minmax function, 63
proc_doulongvec_ms_jiffies_minmax function, 63
process_backlog function, 264
process_backlog virtual function, 231-235
procfs (see /proc filesystem)
proc_handler function, 62, 63
/proc/net directory, 959, 966
/proc/net/stat directory, 959, 966
/proc/sys directory (see sysctl command)
/proc/sys/net/ipv4 directory, 959, 960
/proc/sys/net/ipv4/conf directory, 752, 757, 959, 962-965
/proc/sys/net/ipv4/neigh directory, 752, 753-757
/proc/sys/net/ipv4/route directory, 959, 960-961
/proc/sys/net/ipv6/conf directory, 752
/proc/sys/net/ipv6/neigh directory, 752
prohibit route, 794
promiscuity field, net_device structure, 47
promiscuous mode, 277, 285, 366
proto field, flowi structure, 984
protocol field
dst_ops structure, 983
IP header, 413, 574
ipq structure, 559
sk_buff structure, 31, 274, 276
protocol handlers, 266
data structures for, list of, 293
execution of, 274-278
files and directories for, list of, 294
functions for, list of, 293
organization of, 278
registration, 279-281
variables for, list of, 293
Protocol Independent Destination Cache (see DST)
Protocol Independent Multicast (PIM) protocol, 832
Protocol Independent Multicast, version 1 (PIMv1), 570
Protocol Independent Multicast, version 2 (PIMv2), 570
Protocol size field, arphdr structure, 701
Protocol type field, arphdr structure, 700
protocols
OSI model for, 266
TCP/IP model for, 266
(see also specific protocols)
proxy_arp file, 757
proxy_delay field, neigh_parms structure, 681, 767
proxy_delay file, 755
proxy_delay variable, 755
proxying
ARP, 735-740
destination-based, 639
device-based, 639
for neighboring protocol, 637-640
neighboring subsystem, 679-683
proxy_qlen field, neigh_parms structure, 681, 766
proxy_qlen file, 755
proxy_qlen variable, 755
proxy_queue field, neigh_table structure, 680, 682, 764
proxy_redo function, neigh_table structure, 680, 765
proxy_timer field, neigh_table structure, 670, 680, 765
pseudoheader, from IP header, 437
pskb_copy function, 40
pskb_may_pull function, 447
_ _pskb_trim function, 449
pskb_trim_rcsum function, 449
ptype_all variable, 279, 293
ptype_base variable, 95, 278, 293
publications
article about RCU (McKenney), 15
Ethernet: The Definitive Guide (O'Reilly), 630
"ICMP Usage in Scanning" (Arkin), 585
Linux Device Drivers (O'Reilly), xvi
"Performance Evaluation of Linux Bridge" (Yu), 355
RFCs about ICMP protocol, 585
Understanding Multiple Spanning Tree Protocol (802.1s), 351
Understanding Rapid Spanning Tree Protocol (802.1w), 351
Understanding the Linux Kernel (O'Reilly), xvi
Q[ Top ]
qdisc field, net_device structure, 52
qdisc_ingress field, net_device structure, 52
qdisc_list field, net_device structure, 52
qdisc_restart function, 246, 246-249
qdisc_run function, 246, 264
qdisc_sleeping field, net_device structure, 52
QoS (Quality of Service), xx
networking options for, 24
policy routing based on, 803
queuing discipline implementing, 155
sk_buff priority field for, 31
TOS field and, 412
(see also Traffic Control)
Quagga routing protocol daemon, 820, 860
Quality of Service (see QoS)
query messages, ICMP, 587
(see also ICMP messages)
queue_len field, neigh_parms structure, 766
queue_len variable, 755
queue_lock field, net_device structure, 52, 171, 247
queues
egress queues, 212, 241-243
ingress queues, 212, 223-225
neighboring system, 696-698
queue_xmit function, neigh_ops structure, 657, 770
queuing discipline, 155, 245-249
disabling, 161
frame transmission and, 252
initializing, 160
link state change detection and, 163-165
power management and, 161-162
state of, 148
quota field, net_device structure, 54, 215
R[ Top ]
r field, fib_result structure, 978
race conditions, locks protecting against, 843
r_action field, fib_rule structure, 976
raise_softirq function, 188, 194, 264
_ _raise_softirq_irqoff function, 188, 194
raise_softirq_irqoff function, 188, 194, 264
random algorithm, multipath routing, 811, 876
random number generation, 95
Rapid Spanning Tree Protocol (RSTP), 309, 351
RARP (Reverse Address Resolution Protocol), 545, 746
rate limiting, 608-610
ICMP_REDIRECT messages, 896
ICMP_UNREACHABLE messages, 931-933
rate_last field, dst_entry structure, 897, 982
rate_tokens field, dst_entry structure, 897, 982
raw IP, 577-581, 873
raw sockets, 510, 577-581
raw_rcv function, 581
raw_v4_htable table, 581, 583
raw_v4_input function, 581, 583
r_clntref field, fib_rule structure, 976
rcu field
net_bridge_fdb_entry structure, 399
net_bridge_port structure, 400
RCU (Read-Copy-Update), 14, 864
rcu_head field
dst_entry structure, 983
in_device structure, 562
in_ifaddr structure, 564
neigh_parms structure, 767
rcu_read_lock lock, 573
rcu_read_unlock lock, 573
rcvfunc function, datalink_proto structure, 292
rcv_probes_mcast field, neigh_statistics structure, 771
rcv_probes_ucast field, neigh_statistics structure, 771
r_dead field, fib_rule structure, 977
rdisc command, 18
r_dst field, fib_rule structure, 977
r_dst_len field, fib_rule structure, 976
r_dstmask field, fib_rule structure, 977
reachability of neighbors, 643, 647-650
reachable_time field, neigh_parms structure, 766
Read-Copy-Update (RCU), 14, 864
real_dev field, sk_buff structure, 28
realms for routing table based classifier, 783, 815-818
rebuild_header function pointer, net_device structure, 55, 142, 686
receive-livelock condition, 180
reception of frames
backlog queue for, 231-235
configuration, 262
congestion management for, 225-228
data structures for, list of, 264
disabling, 211
drivers notifying kernel of, 178-183
files and directories for, list of, 265
functions for, list of, 263
ingress queues for, 212
notifying kernel of, 212-219
processing multiple frames during interrupt, 180
processing of, 228-238
queue for incoming frames, 206-209
receive-livelock condition, 180
scheduling software interrupts for, 219-225
statistics about, 261
STP bridge handling, 347
variables for, list of, 264
with LLC, 290
reception of ICMP messages, 611-617
reception of messages, 267
reception of packets, 411, 446-453
routing table and, 800
statistics about, 542
reception (RX), 4
Record Route, IP option type field, 415, 417, 462
redirect_load file, 961, 962
redirect_number file, 961, 962
redirect_silence file, 961, 962
refcnt field
in_device structure, 562
inet_peer structure, 561
ipq structure, 560
neighbour structure, 670, 760
neigh_parms structure, 767
net_device structure, 54, 158
_ _refcnt field, dst_entry structure, 981
reference counts, 6, 374
neighbour structure, 670
net_device structure, 158
register_8022_client function, 293
register_inet6addr_notifier function, 78
register_inetaddr_notifier function, 78, 548
register_netdev function, 149, 172
register_netdevice function, 96, 149, 154, 169, 172
register_netdevice_notifier function, 78, 152, 715
register_snap_client function, 291, 293
register_sysctl_table function, 62, 64-66
registration of network devices, 136, 137, 140, 149-154, 154-155
virtual devices, 169
reg_state field, net_device structure, 49, 147, 148
release_region function, 87, 104
remove function, pci_driver structure, 107
remove_bh function, 191
repeater, 297
replyopts field, icmp_bxm structure, 602
request function, datalink_proto structure, 292
request_irq function, 88, 91, 104
request_module function, 98
request_region function, 87, 104
requeue function, 246
res_failed field, neigh_statistics structure, 771
resources (see publications; web site resources)
resume function, pci_driver structure, 107, 162
retrans_time field, neigh_parms structure, 766
retrans_time file, 755
retrans_time variable, 755
Reverse Address Resolution Protocol (RARP), 545, 746
reverse path filtering, 828
r_flags field, fib_rule structure, 977
r_fwmark field, fib_rule structure, 977
r_ifindex field, fib_rule structure, 977
r_ifname field, fib_rule structure, 977
RJ-45 wire, 630
r_next field, fib_rule structure, 976
roles
RSTP ports, 351
STP ports, 319
root bridge, STP, 317, 328, 387
changing ID of, 341
notified of topology change, 342
root node, STP, 315
root port, STP, 319, 329
root_path_cost field, net_bridge structure, 402
root_port field, net_bridge structure, 402
round-robin algorithm, multipath routing, 811, 878
routable addresses, 784
route command, 859, 956
route file, 966
Route NAT, 736
route realms, 817
Routed routing protocol daemon, 820, 860
router, 297, 778
forwarding packets, process for, 272
proxy ARP server as, 737-740
Router Alert, IP option type field, 415, 419, 465, 467
router_alert field, ip_options structure, 558
routes, 779
adding, 859
asymmetric, 783
default gateway for, 788
default route, 779
inserted by kernel, 958
inserting in routing tables, 819-821
metrics for, 783
scope of, 785-788, 838, 839
symmetric, 783
types of, 794
routing, 777, 781-785
change notifications for, 957
configuration, 830-833, 952-958, 958-966
configurations of, 780
data structures for, 834-837, 968-986, 989
device status changes, handling, 856-858
directed broadcasts and, 788
external events affecting, 845-858
files and directories for, list of, 989
forwarding, enabling and disabling, 966
functions for, list of, 986-988
global locks for, 843
helper routines and macros for, 842
ICMP messages and, 599
ICMP_REDIRECT messages and, 822-828
initialization, 844
interaction with neighboring subsystem, 689
interaction with Traffic Control subsystem, 815-818
IP configuration changes, handling, 849-856
IP layer and, 445
multipath routing, 808-815
Netlink notifications, handling, 858
packet reception, 800
packet transmission, 800
policy routing, 802-808
primary and secondary addresses for, 789-793, 841
rate limiting for ICMP_REDIRECT messages, 896
reverse path filtering, 828
shared media and, 823-825, 828
source routing, 946
statistics, 834, 958
user-space tools for, 952-958
variables for, list of, 988
Verbose Monitoring, 821
on WAN devices, 832
routing cache, 795, 836, 861
adding entries to, 864, 865
allocating entries, 865
binding to ARP cache, 868
compared to routing table, 795
creating entries in, 927
routing cache (continued)
data structures for, 862
deleting entries in, 864, 893-894
enabling, 832
expiration of entries in, 892
external events, handling, 883
flushing, 885
garbage collection for, 796-798, 886-896
initialization, 861
interface to calling protocols, 879-885
interface to IPsec, 882
locking for, 864
lookups, 798, 864, 868-873
multipath caching, 873-878
preferred source IP address in, 928
size of, 862
routing protocol daemons, 819-821, 859
routing protocols, 778
routing table, 778, 793-798
actions taken by, 794
adding routes to, 905
compared to routing cache, 795
configuring for policy routing, 805
default routing tables, 904
device status changes affecting, 856
garbage collection for, 910
initialization, 904
local and non-local addresses in, 794
lookups, 798-800, 912, 914-920
delivery to other hosts, 938
egress traffic, 920-923, 933-941
forwarding, 931
helper routines for, 913
ingress traffic, 920-922, 923, 923-933
local delivery, 929, 937
policy routing and, 944-946
routing failure, 931-933
search key initialization, 935
source IP address selection, 936
memory cache for, 5
next-hop router structures for, 903-904
number of, 794
number of, with policy routing, 802
organization of, 898-904
per-netmask tables, 898-902
policy routing affecting, 910
removing routes from, 905, 906
selecting, for policy routing, 806-808
routing table based classifier, 815-818, 834, 948-951
routing tag, 817, 950
rp_filter file, 963, 965
rp_filter variable, 963
r_preference field, fib_rule structure, 976
rr field, ip_options structure, 557
rr_needaddr field, ip_options structure, 557
r_src field, fib_rule structure, 977
r_src_len field, fib_rule structure, 976
r_srcmap field, fib_rule structure, 977
r_srcmask field, fib_rule structure, 977
RSTP (Rapid Spanning Tree Protocol), 309, 351
rt field, cork structure, 565
rt structure, 469, 477
r_table field, fib_rule structure, 976
rtable structure, 652, 836, 862, 978-981
rt_acct file, 966
RTAX_ADVMSS metric, 974
RTAX_CWND metric, 974
RTAX_FEATURES metric, 974
RTAX_HOPLIMIT metric, 974
RTAX_INITCWND metric, 974
RTAX_LOCK metric, 974
RTAX_MTU metric, 974
RTAX_REORDERING metric, 974
RTAX_RTT metric, 974
RTAX_RTTVAR metric, 974
RTAX_SSTHRESH metric, 974
RTAX_WINDOW metric, 974
rt_cache file, 958, 966
rt_cache_flush function, 743, 846, 885
rt_cache_stat structure, 834, 958, 984
RT_CACHE_STAT_INC function, 988
RT_CACHE_STAT_INC macro, 870
RTCF_BROADCAST flag, 979
RTCF_DIRECTDST flag, 979
RTCF_DIRECTSRC flag, 979
RTCF_DNAT flag, 737, 979
RTCF_DOREDIRECT flag, 979
RTCF_FAST flag, 979
RTCF_LOCAL flag, 979
RTCF_MASQ flag, 979
RTCF_MULTICAST flag, 979
RTCF_NAT flag, 979
RTCF_NOTIFY flag, 979
RTCF_REDIRECTED flag, 979
RTCF_REJECT flag, 979
RTCF_SNAT flag, 979
RTCF_TPROXY flag, 979
rt_check_expire function, 891
r_tclassid field, fib_rule structure, 948, 977
rt_drop function, 893
rt_dst field, rtable structure, 980
rtentry structure, 836
rt_flags field, rtable structure, 979
rt_flush_lock lock, 843, 986
rt_free function, 891, 893, 988
rt_garbage_collect function, 868, 880, 887-891, 988
rt_gateway field, rtable structure, 980
rt_hash_bucket structure, 862
rt_hash_log variable, 862
rt_hash_mask variable, 862, 988
rt_hash_rnd variable, 862
rt_hash_table hash table, 862
rt_hash_table variable, 988
rt_iif field, rtable structure, 980
rt_intern_hash function, 865, 868, 923, 988
rt_may_expire function, 886, 890, 988
RTM_DELADDR event, 548
RTMGRP_IPV4_ROUTE group, 858, 957
RTMGRP_LINK multicast group, 152, 154
RTM_NEWADDR event, 548
RTM_NEWLINK event, 165
rtmsg_fib function, 858, 987
rtmsg_ifa function, 548, 567
rtmsg_ifinfo function, 154
rt_multipath_alg field, rtable structure, 980
RTN_ANYCAST route type, 919, 980
RTN_BLACKHOLE route type, 919, 980
RTN_BROADCAST route type, 919, 980
RTnetlink RTMGRP_LINK multicast group, 152, 154
RTNH_F_DEAD flag, 918, 972
RTNH_F_ONLINK flag, 972
RTNH_F_PERVASIVE flag, 972
rtnl_lock function, 150, 171, 361
RTN_LOCAL route type, 919, 980
rtnl_sem function, 71
rtnl_unlock function, 150, 171, 361
RTN_MULTICAST route type, 919, 980
RTN_NAT route type, 919, 980
RTN_PROHIBIT route type, 919, 980
RTN_THROW route type, 919, 980
RTN_UNICAST route type, 919, 980
RTN_UNREACHABLE route type, 919, 980
RTN_UNSPEC route type, 919, 980
RTN_XRESOLVE route type, 919, 980
RTO_ONLINK flag, 873
r_tos field, fib_rule structure, 977
rt_periodic_timer timer, 891, 987
RTPROT_BIRD protocol, 973
RTPROT_BOOT protocol, 973
RTPROT_DNROUTED protocol, 973
RTPROT_GATED protocol, 973
RTPROT_KERNEL protocol, 973
RTPROT_MRT protocol, 973
RTPROT_RA protocol, 973
RTPROT_REDIRECT protocol, 973
RTPROT_STATIC protocol, 973
RTPROT_UNSPEC protocol, 973
RTPROT_XORP protocol, 973
RTPROT_ZEBRA protocol, 973
rt_remove_balanced_route function, 891
rt_remove_balanced_routes function, 875
rt_run_flush function, 885
RT_SCOPE_HOST scope, 838
RT_SCOPE_LINK scope, 838
RT_SCOPE_NOWHERE scope, 838
RT_SCOPE_UNIVERSE scope, 838
rt_score function, 865
rt_secret_rebuild function, 886
rt_secret_timer timer, 886, 987
rt_set_nexthop function, 914
rt_spec_dst field, 928
rt_spec_dst field, rtable structure, 981
rt_src field, rtable structure, 980
rt_type field, rtable structure, 979
run_bottom_half function, 192
run_init_process function, 85
RX (see reception)
rx_bytes field, net_device_stats structure, 398
rx_packets field, net_device_stats structure, 398
S[ Top ]
saddr field, ipq structure, 559
Safari Enabled icon, xxiii
SA_INTERRUPT flag, irqaction structure, 92
sanity checks, IPv4, 410
SAPs (Service Access Points), 288
(see also DSAP; SSAP)
SA_SAMPLE_RANDOM flag, irqaction structure, 92
SA_SHIRQ flag, irqaction structure, 92
Scatter/Gather DMA, 155
Scatter/Gather I/O, 487-490, 503
schedule function, 192
scope field, fib_result structure, 978
scope of IP addresses, 785-788, 839, 936
scope of next hop, 839
scope of routes, 785-788, 838, 839
SCTP (Stream Control Transmission Protocol), 570
secondary addresses, 789-793, 841, 854
secret_interval file, 961, 962
secure_ip_id function, 541, 567
secure_redirects file, 963, 965
secure_redirects variable, 963
security
ICMPv4 and, 585
(see also Denial of Service (DOS) attacks; IPsec; Netfilter)
security field, sk_buff structure, 31
Security, IP option type field, 415
segments, 4, 267
semaphores, 15
Sender Hardware Address (SHA) field, arphdr structure, 701
Sender Protocol Address (SPA) field, arphdr structure, 701
sendfile interface, 503
sendmsg system call, 497
send_redirects file, 963, 965
send_redirects variable, 963
serialization of configuration changes, 71
Service Access Points (see SAPs)
setageing command, brctl utility, 395
setageingr command, brctl utility, 392
setbridgeprio command, brctl utility, 395
setbridgeprior command, brctl utility, 392
set_class_tag function, 949
set_config function pointer, net_device structure, 56
setfd command, brctl utility, 395
setfdr command, brctl utility, 392
sethello command, brctl utility, 395
sethellor command, brctl utility, 392
set_mac_address function pointer, net_device structure, 56, 142
setmaxage command, brctl utility, 395
setmaxager command, brctl utility, 392
set_multicast_list function pointer, net_device structure, 56, 142
setpathcost command, brctl utility, 395
setpathcostr command, brctl utility, 392
setportprio command, brctl utility, 395
setportprior command, brctl utility, 392
SetTxThreshold command, 242
_ _setup macro, 93, 117, 120
setup_check function, 135
setup_irq function, 91
_ _setup_param function, 118
SHA (Sender Hardware Address) field, arphdr structure, 701
shared media
neighboring subsystem for, 630-631
routing and, 823-825, 828
shared_media file, 963, 965
shared_media variable, 963
show command, brctl utility, 395
"Show me your data" (Brooks), 22
showmacs command, brctl utility, 395
showmacsr command, brctl utility, 392
showr command, brctl utility, 392
showstp command, brctl utility, 395
showstpr command, brctl utility, 392
Simple Internet Transition (SIT, IPv6-over-IPv4 tunnel), 570
Simple Network Management Protocol (see SNMP)
SIP (Source IP address) field, arphdr structure, 701
SIT (Simple Internet Transition, IPv6-over-IPv4 tunnel), 570
size field, skb_frag_t structure, 565
sk field, sk_buff structure, 25
skb field, icmp_bxm structure, 602
skb function, neighbour structure, 760
skb_bond function, 237
skb_can_coalesce function, 504
skb_checksum_help function, 436
skb_checkum function, 435
skb_clone function, 39
skb_copy function, 41
skb_cow function, 451, 470
skb_dequeue function, 42
skb_dequeue_tail function, 42
skb_fill_page_desc function, 504
skb_frag_t structure, 565
skb_headlen function, 491
skb_init function, 5
skb_is_nonlinear function, 491
skb_pagelen function, 491
skb_pull function, 35-38
skb_push function, 35-38
skb_push function, sk_buff structure, 480
skb_put function, 35-38
skb_queue_head function, 42
skb_queue_head_init function, 42
skb_queue_purge function, 42
skb_queue_tail function, 42
skb_queue_walk function, 42
skb_reserve function, 23, 35-38
skb_set_owner_w function, 477
skb_share_check function, 40, 447, 727
skb_shared_info structure, 38
skb_shinfo block, 505
skb_shinfo function, 38
sk_buff structure, 22
allocating, 5
checksum fields, 441-443
cloning and copying, 39-42
created by ip_append_data function, 484
data reservation and alignment, 35-38
functions, 32-42
general fields, 27-31
HIPPI field, 32
IPsec protocol field, 32
layout fields, 24-27
list (queue) management, 42
memory
allocating, 33-35
freeing, 35
Netfilter fields, 32
networking options, 23
skb_shared_info structure, accessing, 38
Traffic Control fields, 32
skbuff.c file, 32, 42
skbuff.h file, 22, 32, 42
sk_buff_head structure, 24
_ _sk_dst_check function, 477, 478
sk_dst_check function, 477
_ _sk_dst_set function, 477, 479
sk_dst_set function, 477
sk_write_queue structure, 505
SLIP device
MTU value for, 46
tx_queue_len value for, 52
SMP (symmetric multiprocessing), 177
SNAP (Subnetwork Access Protocol), 268, 288, 290-292
snap_list variable, 293
snap_rcv function, 288
snmp file, 544
SNMP (Simple Network Management Protocol), xxi
snmp.h file, 542, 545
SNMP_INC_XXX macros, 545
sock structure, 22, 476
sock_alloc_send_skb function, 477
socket buffer descriptors, 5
socket buffer (see sk_buff structure)
socket call, 70, 578-580
socket CORK option, 440
socket layer, ICMP interactions with, 599
socket structure, 476
sock_wmalloc function, 477
softirq_init function, 198
softirq_pending function, 188
softirqs (see software interrupts)
softnet_data structure, 206-209, 264
softnet_stat file, 103
software initialization, 86
software interrupts, 193-196
concurrency and, 187
initialization of, 198
kernel threads for, 202-204
networking code's use of, 206
pending, handling of, 199-201
per-architecture processing of, 202
solicit function, neigh_ops structure, 769
solicitation replies, 634
solicitation requests, 634
ARP, 724
delayed processing of, 680
proxy server replying to, 638-640
when processed, 640-642
Source Address field, IP header, 414
source code, browsing, 19
Source IP address (SIP) field, arphdr structure, 701
source routing, 416, 460, 946
Source Service Access Point (SSAP), 268
sp field, sk_buff structure, 32
SPA (Sender Protocol Address) field, arphdr structure, 701
Spanning Tree Ports (see STP, ports)
Spanning Tree Protocol (see STP)
special media encapsulation, 277
spin locks, 14, 188
ICMP transmissions using, 603
list management functions using, 42
ptype_base structures using, 280
read-write spin locks, 14
routing using, 843, 864
spin_lock_bh function, 188
spin_unlock_bh function, 188
sppp_rcv function, 276
srr field, ip_options structure, 557
srr_is_hit field, ip_options structure, 557
SSAP (Source Service Access Point), 268, 287, 290
stable network, 311
stamp field, sk_buff structure, 27
start_kernel function, 85
state field
net_bridge_port structure, 399
net_device structure, 49, 148, 161
state field, net_device structure, 148
stateless Network Address Translation (NAT), 21
static probing for device driver, 109
statistics, 17
bridging, 398
frame reception, 261
ICMPv4, 617-619
IP layer, 440, 541-545
neighboring subsystem, 771
routing, 834, 958
statistics field, net_bridge structure, 401
stats field, neigh_table structure, 763
stop function pointer, net_device structure, 55, 142, 156, 161
store-and-forward bridge, 298
stp command, brctl utility, 395
STP ports, 318-320
STP (Spanning Tree Protocol), 309, 310, 314-320
best spanning tree criteria, 315
bridge IDs, 321, 322, 382
bridge priority, 321, 322, 323
configuration update of topology, 328-334, 386
convergence time required by, 349
designated bridges, 318
designated port, 330
enabling on bridge device, 383
example of, 331-334
frame processing affected by, 372, 376
functions for, list of, 381
ingress frames, handling, 347
port cost, 321, 323
port IDs, 321, 382
port priority, 321, 322, 323
ports, 318-320
processing ingress BPDUs, 383
root bridge, 317, 328, 387
root node, 315
root port, 329
temporary loops, avoiding, 338-340
timers, 321, 335, 388
topology changes, handling, 340-344, 388
transmitting BPDUs, 385
stp_enabled field, net_bridge structure, 383, 401
stpr command, brctl utility, 392
strategy function, 63
Stream Control Transmission Protocol (SCTP), 570
Stream ID, IP option type field, 415
Strict Source and Record Route, IP option type field, 415, 416, 460
subnet broadcasts, 930
Subnetwork Access Protocol (SNAP), 268, 290-292
subsys_initcall macro, 126
subsys_initcall macros, 96
subsystems, 4
boot-time initialization routines, 128-130
boot-time kernel options for, 116-120
initialization of, 84, 116
loading as modules, initialization for, 122-125
memory optimizations for initialization, 130-134
(see also specific subsystems)
summed field, sk_buff structure, 441
suspend function, pci_driver structure, 107
switched network (see bridged network)
switches
compared to bridges, 299
neighboring subsystems and, 631
sw_write_queue list, 493
symbols, finding compile options associated with, 24
symmetric multiprocessing (see SMP)
symmetric routes, 783
sync mechanism, RSTP, 351
synchronize_net function, 573
synchronous garbage collection, 8
neighboring infrastructure, 675, 676
routing cache, 796, 887-891
/sys filesystem (sysfs), 7, 59
bridging information in, 396-398
net class registered with, 95
sysctl command, 59, 60, 61-67
sysctl_icmp_echo_ignore_all variable, 621
sysctl_icmp_echo_ignore_broadcasts variable, 621, 960
sysctl_icmp_errors_use_inbound_ifaddr variable, 621
sysctl_icmp_ignore_bogus_error_messages variable, 614
sysctl_icmp_ignore_bogus_error_responses variable, 621
sysctl_icmp_ratelimit variable, 621
sysctl_icmp_ratemask variable, 621
sysctl_intvec function, 63
sysctl_ip_default_ttl variable, 553
sysctl_ip_dynaddr variable, 554
sysctl_ipfrag_high_thresh variable, 533, 554
sysctl_ipfrag_low_thresh variable, 554
sysctl_ipfrag_secret_interval variable, 554
sysctl_ipfrag_time variable, 554
sysctl_ip_local_port_range variable, 554
sysctl_ip_nonlocal_bind variable, 553
sysctl_jiffies function, 63
sysctl_ms_jiffies function, 63
sysctl_string function, 63
sysctl_table field, neigh_parms structure, 766
sysfs (see /sys filesystem)
system entropy, 95
T[ Top ]
tag file, 963
tag variable, 963
tail field, sk_buff structure, 26
Target Hardware Address (THA) field, arphdr structure, 701
Target IP address (TIP) field, arphdr structure, 701
Target Protocol Address (TPA) field, arphdr structure, 701
tasklet_action function, 198, 204, 264
tasklet_disable function, 198, 264
tasklet_disable_nosync function, 198, 264
tasklet_enable function, 198, 264
tasklet_hi_action function, 198, 264
tasklet_hi_enable function, 198, 264
tasklet_hi_schedule function, 198, 264
tasklet_init function, 198, 264
tasklets, 196-198
concurrency and, 187
processing of, 204
tasklet_schedule function, 198, 264
TASKLET_SOFTIRQ type, 196, 198
tasklet_struct structure, 197, 264
tb_data field, fib_table structure, 969
tb_delete virtual function, fib_table structure, 905, 969
tb_dump virtual function, fib_table structure, 905, 969
tb_flush virtual function, fib_table structure, 905, 969
tb_id field, fib_table structure, 968
tb_insert virtual function, fib_table structure, 905, 969
tbl field
neighbour structure, 758
neigh_parms structure, 766
tb_lookup virtual function, fib_table structure, 905
tb_lookup virtual function, fib_table structure, 914, 969
tb_select_default virtual function, fib_table structure, 905, 969
tb_stamp field, fib_table structure, 969
tc command, 689
TC flag, 342, 344, 347
TCA flag, 344, 347
tc_classid field, sk_buff structure, 32
tc_index field, sk_buff structure, 32
tclassid field, dst_entry structure, 982
TCN timer, STP, 336, 344, 388
TCN (Topology Change Notification) BPDUs, 323, 342, 385
tcn_timer field, net_bridge structure, 402
TCP protocol, 569
(see also L4)
TCP Segmentation Offload (TSO), 155
tcp.h file, 29
TCP/IP network stack, layers of, 3, 266
tcp_output.c file, 30
tcp_ts field, inet_peer structure, 561
tcp_v4_setup_caps function, 479
tc_verd field, sk_buff structure, 32
TEQL (Traffic equalizer), interaction with neighboring subsystem, 689
TEQL (true equalizer) device, 52, 101
THA (Target Hardware Address) field, arphdr structure, 701
thread_info structure, preempt_count in, 189
throttle field, softnet_data structure, 207, 208
throttle state, 224
throttled field, netif_rx_stats structure, 262
throttling, 242
throw route, 794
ticks, 17
time, measuring, 17
Time To Live field (see TTL field)
timer field
ipq structure, 560
neighbour structure, 669, 761
timer-driven interrupts, 181
timers
fragmentation timer, 424, 512
garbage collection, bridge, 375
heartbeat timer, 704
in neighboring subsystem, 669
initialization of, 85
STP, 321, 335, 388
watchdog timer, 258
times field, icmp_bxm structure, 602
time_squeeze field, netif_rx_stats structure, 262
Timestamp, IP option type field, 415, 418, 463
timeval field, ipq structure, 560
TIP (Target IP address) field, arphdr structure, 701
todo_list field, net_device structure, 54
Token Bus device, MTU value for, 46
Token Ring 16 MB/s device, MTU value for, 46
Token Ring 4 MB/s device, MTU value for, 46
Token Ring device
alloc_netdev wrapper for, 139
configuration, 293
tx_queue_len value for, 52
Topology Change Notification BPDU (see TCN BPDUs)
Topology Change Notification timer (see TCN timer, STP)
Topology Change timer, STP, 336, 344, 347, 388
topology_change field, net_bridge structure, 402
topology_change_ack field, net_bridge_port structure, 400
topology_change_detected field, net_bridge structure, 402
topology_change_timer field, net_bridge structure, 402
TOS (Type of Service) field, 412
initialization, 936
policy routing based on, 808
priority set by, 470
total field, netif_rx_stats structure, 261
Total Length field, IP header, 412
TPA (Target Protocol Address) field, arphdr structure, 701
traceroute command, 595
Traffic Control, xx
egress queues, 212, 241
frame transmission, 249
ingress frame processing, 237
net_device fields for, 52
packet transmission, 635
routing and, 815-818
sk_buff fields for, 32
(see also QoS; queuing discipline)
trailer_len field, dst_entry structure, 981
transformation bundles, IPsec, 882
transmission of frames, 239-241
data structures for, list of, 264
egress queues for, 212
enabling and disabling, 241-243
failure of, reasons for, 249
files and directories for, list of, 265
for queueless devices, 254
fragments, handling of, 250
functions for, list of, 263
locks for, 247
processing, 255-260
scheduling device for, 243-245
transfering frame to queue, 249-255
variables for, list of, 264
transmission of ICMP messages, 602-610
transmission of messages, 268
transmission of packets, 411, 473-476, 504-509
buffering data for, 481-503
functions for, 474-476
L3 to L4 packet delivery, 574-582
local delivery, 472
multicast and, 476
neighboring subsystem and, 634, 642
Netfilter and, 481
NICs controlling, 833
raw sockets and, 510
routing table and, 800
socket data structures for, 476
statistics about, 543
Traffic Control and, 635
transmission (TX), 4
transparent proxy, 637
transport layer (see L4)
trans_start field, net_device structure, 49, 258
true link equalizer (see TEQL device)
truesize field, sk_buff structure, 26
trunking, 43
ts field, ip_options structure, 557
ts_needaddr field, ip_options structure, 558
ts_needtime field, ip_options structure, 558
TSO (TCP Segmentation Offload), 155
TTL (Time To Live) field, IP header, 413
decrementing, 469, 470
decrementing, checksum updates triggered by, 433
Tulip cards, 833
tulip driver, 182
tunnel interfaces, 101
tunneling protocols, 570
TX (see transmission)
tx_bytes field, net_device_stats structure, 398
tx_dropped field, net_device_stats structure, 398
tx_packets field, net_device_stats structure, 398
tx_queue_len field, net_device structure, 52, 142, 363
tx_timeout field, net_device structure, 259
tx_timeout function pointer, net_device structure, 56, 142
type field
datalink_proto structure, 292
fib_result structure, 978
ICMP header, 586
neighbour structure, 701, 760
net_device structure, 46, 142
packet_type structure, 279
Type of Service field (see TOS field)
typographical conventions used in this book, xxii
U[ Top ]
u field, rtable structure, 978
ucast_probes field, neigh_parms structure, 767
ucast_probes variable, 755
UDP protocol, 569
MSG_DONTROUTE flag and, 873
(see also L4)
udp_flush_pending_frames function, 508
udp_push_pending_frames function, 508
uli_u field, flowi structure, 984
Understanding Multiple Spanning Tree Protocol (802.1s), 351
Understanding Rapid Spanning Tree Protocol (802.1w), 351
Understanding the Linux Kernel (O'Reilly), xvi
uninit function pointer, net_device structure, 55, 142, 149, 156, 169
universe scope for IP addresses, 786
universe scope for routes, 786, 838
university projects, Linux used by, xv
unlikely macro, 13
unreachable route, 794
unregister_8022_client function, 293
unregister_inet6addr_notifier function, 79
unregister_inetaddr_notifier function, 79, 548
unregister_netdev function, 149, 172
unregister_netdevice function, 141, 149, 157, 169, 172
unregister_netdevice_notifier function, 79, 152
unregister_snap_client function, 291, 293
unregister_sysctl_table function, 62, 64
unregistration of network devices, 149-154, 156-159
compared to disabling devices, 136
conditions for, 138
NICs, 141
virtual devices, 169
unres_qlen file, 755
unshielded twisted pair (UTP) wire, 630
unused_next field, inet_peer structure, 561
unused_prevp field, inet_peer structure, 561
updated field, neighbour structure, 759
update_pmtu virtual function, dst_ops structure, 881, 983
_ _use field, dst_entry structure, 981
use_count field, net_bridge_fdb_entry structure, 399
used field, neighbour structure, 759
user field, ipq structure, 559
users field, sk_buff structure, 26, 40
user-space tools
brctl utility, 391, 395
bridge configuration using, 391-396
device-related information, configuring, 166-169
ethtool tool, 166-168
hotplug helper, 96, 98-100, 103
ifconfig command, 67, 166, 550
initialization events handled by, 96-100
ioctl commands, 59, 67, 71, 392-393, 545
kmod kernel module loader, 98
list of, 18, 58
mii-tool tool, 168
modprobe helper, 96, 98, 103
neighbor system administration, 749-752
Netlink, 60, 70, 71, 858
net-tools package, 749, 752, 952, 956
procfs (/proc filesystem), 58, 60
routing, 952-958
sysctl command, 59, 60, 61-67
sysfs (/sys filesystem), 7, 59
(see also IPROUTE2 package; routing protocol daemons)
UTP (unshielded twisted pair) wire, 630
V[ Top ]
v4addr field, inet_peer structure, 538
v4daddr field, inet_peer structure, 561
vector definitions, 11
vectors (arrays), 3
Verbose Monitoring, 821, 833
Version field, IP header, 411
VFT interface for neighboring subsystem, 655-665
VFT (virtual function table), 10
vi editor, 19
virtual devices, xxi, 100-103
configuration of, 102
external interface for, 102
initialization of, 101
paths taken by frames through, 178
reception on, 278
registering, 169
special media encapsulation by, 277
transmission on, 277
unregistering, 169
virtual function table (VFT), 10
virtual IP, gratuitous ARP used for, 704
VLAN device
net_device function pointers for, 54
notifications on, 170
tx_queue_len value for, 53
VLAN (Virtual LAN), 43
vlan.c file, 54
vlan_rx_add_vid field, net_device structure, 54
vlan_rx_kill_vid field, net_device structure, 54
vlan_rx_register field, net_device structure, 54
vlan_skb_rcv function, 282
vortex_interrupt function, 182
W[ Top ]
WAKE_ARP keyword, 744
Wake-on-LAN (WOL), 109, 743
WAN router, 832
watchdog timer, 258
starting, 160
stopping, 161
waking egress queue for, 245
watchdog_timeo field, net_device structure, 54, 258, 259
watchdog_timeo function pointer, net_device structure, 142
watchdog_timer field, net_device structure, 54, 258
Wavelan device, MTU value for, 46
web proxying, 637
web site resources
BIRD routing protocol daemon, 820
brctl utility, 391
Click router, xxi
cscope tool, 19
ebtables framework, 378
frame diverter, xxi
GateD routing protocol daemon, 820
IP virtual server, xxi
IPROUTE2 tool, 18
Linux Network Development List Archives, 19
Netfilter, xxi
O'Reilly, xxiii
Quagga routing protocol daemon, 820
RFCs about ICMP protocol, 586
RSTP, user-space simulator for, 352
Safari Bookshelf, xxiii
traffic control, xx
user-space tools, 18
XORP routing protocol daemon, 820
Zebra routing protocol daemon, 820
weight field, net_device structure, 54, 215
weighted random algorithm, multipath routing, 811, 812, 876
weight_p variable, 263
wireless devices, net_device fields for, 54
wireless file, 103
wireless_data field, net_device structure, 54
wireless_handlers field, net_device structure, 54
WOL (Wake-on-LAN), 109, 743
work queues, 186
X[ Top ]
X25_lap_receive_frame function, 281
xfrm field, dst_entry structure, 981
xfrm4_policy_check function, 577, 582
xmit_lock field, net_device structure, 171, 247
xmit_lock_owner field, net_device structure, 50, 171
XORP routing protocol daemon, 820, 860
xrlim_allow function, 622
xxx_hold functions, 7
xxx_initcall macro, 131, 134
xxx_probe functions, 143
net_device fields initialized by, 142
net_device function pointers initialized by, 142
xxx_put functions, 7
xxx_release functions, 7
xxx_setup functions, 143, 172
net_device fields initialized by, 142
net_device function pointers initialized by, 142
Y[ Top ]
Yu, James T. ("Performance Evaluation of Linux Bridge"), 355
Z[ Top ]
Zebra routing protocol daemon, 820, 860
"zero-copy" TCP/UDP, 503
ZERONET macro, 843, 986
zone, 899
Zurück zu Understanding Linux Network Internals