Linux recently (in 5.18) added support for defining MSTIs in the kernel as vlan groups for STP (skipping the FID part).
Using that, we can simplify the mstp support, and do not need a stg group per vlan anymore.
To be able to do that, we will require changes in various components:
[ ] kernel: notify about msti stp changes. Currently these are kept in-kernel, for switchdev only. To allow baseboxd to pick this up we need to have them send out via netlink.
[ ] libnl: pick up and expose msti stp changes. As above.
[ ] libnl: pick up expose global vlan options. For baseboxd to know which VIDs are members of which MSTIs, we need to be notified about their membership (changes).
[ ] baseboxd: pick up and configure MSTs based on the received libnl changes. This will also need a way of knowing if we are in PVSTP or MST mode, as the port STP meaning changes.
[ ] mstpd: implement setting MSTI memberships for vlans for mst enabled bridges. Will require using similar code like the current PVSTP implementation, as you cannot set port states for non-existing MSTIs, and you can only assign existing vlans to MSTIs.
[ ] systemd-networkd: allow creating bridges in mst enabled mode The mst mode can only be changed when there are no vlans defined on a bridge, so when using systemd-networkd we need to create them in this mode before configuring any vlans.
Linux recently (in 5.18) added support for defining MSTIs in the kernel as vlan groups for STP (skipping the FID part).
Using that, we can simplify the mstp support, and do not need a stg group per vlan anymore.
To be able to do that, we will require changes in various components:
Additionally, we will also want