Data Structures Featured in This Part of the Book
In the section "Main Data Structures" in Chapter 27, we had a brief overview of the main data structures used by the neighboring subsystem. This section presents a detailed description of each data structure's field.
Figure 29-4 shows the files that define each data structure. The ones with a lighter color are not part of the neighboring subsystem, but I referred to them in this part of the book.

Figure 29-4. Distribution of data structures in kernel files
neighbour Structure
Neighbors are
represented by struct neighbour structures. The
structure is complex and includes status fields, virtual functions to interface with L3
protocols, timers, and cached L2 headers.
Here is a field-by-field description:
-
struct neighbour *next Each
neighbourentry is inserted in a hash table.nextlinks the structure to the other ones that collide and share the same bucket. Elements are always inserted at the head of the list (see the section "Creating a neighbour Entry," and Figure 27-2 in Chapter 27).-
struct neigh_table *tbl Pointer to the
neigh_tablestructure that defines the protocol associated with this entry. If the neighbor is an IPv4 address, for instance,tblpoints toarp_tbl.-
struct neigh_parms *parms Parameters used to tune the neighboring protocol behavior. When a
neighbourstructure is created,parmsis initialized with the values of the default ...
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