Adding Ports to a Bridge
In the current implementation of bridging, there is a one-to-one relationship between NICs and bridge ports, as shown in Figure 16-6. Some commercial bridges allow an administrator to add an NIC to multiple bridge devices and assign traffic to a particular bridge based on user-chosen criteria, but Linux does not.
Bridge ports are added to a bridge device with br_add_if. The routine internals are shown in Figure 16-7. The routine does not care
whether the STP is enabled on the bridge device.
The routine starts with a set of sanity checks. The operation is aborted if any of the following conditions is met:
The device to be associated with the port is not an Ethernet device (or the loopback device).
The device to be associated with the port is a bridge. As you can see in Figure 16-6, bridge ports must be assigned to real devices (or to virtual devices that are not bridge devices).
The bridge port is already assigned to a device (i.e.,
dev->br_portis not NULL).

Figure 16-7. br_add_if function
When these checks are passed, the new bridge port is allocated and partially
initialized with new_nbp. In particular, that function:
Assigns a port number to the bridge port. See the section "Bridge IDs and Port IDs."
Assigns a default priority to the port.
Computes the port ID by combining the port number and priority using
br_make_port_id. Out of the 16 bits in the port ID, 10 ( ...
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