Common Interface Between L3 Protocols and Neighboring Protocols
The Linux kernel has a generic neighboring layer that
connects L3 protocols to the main L2 transmit function (dev_queue_xmit) via a virtual function table (VFT). A VFT is the mechanism
frequently used in the Linux kernel for allowing subsystems to use different functions at
different times. The VFT for the neighboring subsystem is implemented as a data structure
named neigh_ops. A pointer to one of these structures
is embedded as a field named ops in each neighbour structure.
The flexibility of the VFT interface allows different L3 protocols to use different neighboring protocols. This in turn allows different neighboring protocols to behave quite differently while allowing the neighboring subsystem to provide a common generic interface between the neighboring protocols and the L3 protocols.
In this section, we examine the VFT-based interface between the L3 protocols and the neighboring protocols, the advantages of using the VFT, when it is first initialized, and how it is updated during the lifetime of a neighbor. The section concludes with a brief overview of the functions used to control the initialization of the VFT. To better understand this section, you are invited to first read the section "neigh_ops Structure" in Chapter 29.
Let's start with an overview of how the routines in the VFT are invoked. Given a
neighbour instance and its embedded VFT neighbour->ops, the function to which the output field points could ...
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