Initialization of Bridging Code
The bridging code
can be either built into the kernel or compiled as a module. The initialization and
cleanup routines, br_init and br_uninit, respectively, are defined in /net/bridge/br.c.
Initialization consists of:
Initializing the forwarding database by creating a slab cache (a memory area) to use for allocating
net_bridge_fdb_entrystructures (br_fdb_init).Initializing the function pointer
br_ioctl_hookto the routine that will take care ofioctlcommands.ioctlcommands are described in Chapter 17.Initializing the function pointer
br_handle_frame_hookto the routine that will process ingress BPDUs. See the section "Handling Ingress Traffic."Registering a callback with the
netdev_chainnotification chain. See the section "netdevice Notification Chain."
When the kernel is compiled with support for Bridging-Firewalling , the option is initialized here
with br_netfilter_init. Later, in Figure 16-11 in the section "The Big Picture," you can see where all
the Netfilter hooks are located in the core routines used by the bridging code to process
ingress and egress traffic.

Figure 16-6. Relationships between the main data structure types
Bridging-Firewalling is added to the kernel with the option "Networking support → Networking options → Network packet filtering (replaces ipchains) → Bridged IP/ARP packet filtering". The Ethernel-Bridging-Tables option (i.e., ...
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