External Events
The routing subsystem plays a central role in the network stack. Because of this, it needs to know when changes take place that may affect the routing table and routing cache. Changes to the network topology are taken care of by optional routing protocols running in user space. On the other hand, changes to the local host configuration require kernel attention.
In particular, the routing subsystem is interested in two kinds of events:
Changes in the status of a network device
Changes in IP configuration on a network device
To receive notifications when these take place, the routing subsystem registers with
the netdev_chain and inetaddr_chain notification chains, respectively. The sections "Changes in Device Status" and "Changes in IP Configuration" go into more
detail on the handlers registered for the two classes of events.
Figure 32-5 shows a high-level
description of the two handlers registered in ip_rt_init and described in the sections "Impacts on the routing tables" and
"Impacts on the IP
configuration." Some of the events are handled by calling certain helper routines
with varying input parameters. Some of those routines are described in the upcoming
section "Helper Routines." See the
description of fib_sync_down in that section for the
meaning of the force parameter shown in Figure 32-5.
We will see that a variety of events can flush the routing cache. Refer to the section "Flushing the Routing Cache" in Chapter 33 for a complete list of such events.
Helper Routines ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access