Add ovpn qinqs to bridges instead of rebuilding them. Fixes #13666
qinq interfaces defined with parent openvpn interfaces are configured late in rc.bootup, after qinqs for other physical and logical interfaces and bridges are configured. The resolution to #13225 ensured that these late interfaces were added to bridges by calling interfaces_bridge_configure() to reconfigure all bridges interfaces but this had the inadvertent effect of removing all IP configuration from bridge interfaces, which must be restored via interface_configure(). This measure was also overly aggressive in destroying all bridges when few or no openvpn qinqs exist. Since interface_configure() is never called for these interfaces, they also lack a description at the OS level.
This change:
Alters the behavior of openvpn_resync_all() to cycle through all configured openvpn interfaces, calling interface_configure() on them.
Alters the behavior of interface_configure() to always call interface_bridge_add_member() for openvpn and ipsec interfaces, not just after platform booting is complete.
Alters the behavior of interface_bridge_add_member() to reconfigure either the bridge or member interface to the lower of their respective MTUs. gif interface MTUs associated with a bridge MTU <= 1500 are not reconfigured according to prior precendent.
Related issues
Regression #13666: Assigned bridge interfaces are not configured at boot
Add ovpn qinqs to bridges instead of rebuilding them. Fixes #13666
qinq interfaces defined with parent openvpn interfaces are configured late in
rc.bootup, after qinqs for other physical and logical interfaces and bridges are
configured. The resolution to #13225 ensured that these late interfaces were
added to bridges by calling interfaces_bridge_configure() to reconfigure all
bridges interfaces but this had the inadvertent effect of removing all IP
configuration from bridge interfaces, which must be restored via
interface_configure(). This measure was also overly aggressive in destroying all
bridges when few or no openvpn qinqs exist. Since interface_configure() is never
called for these interfaces, they also lack a description at the OS level.
This change:
openvpn interfaces, calling interface_configure() on them.
interface_bridge_add_member() for openvpn and ipsec interfaces, not just
after platform booting is complete.
the bridge or member interface to the lower of their respective MTUs. gif
interface MTUs associated with a bridge MTU <= 1500 are not reconfigured
according to prior precendent.