mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-07-09 04:05:56 +00:00
device: don't ignore external slave removals
We've been outright ignoring master-slave checks if the link ended up without a master since commit2e22880894
('device: don't remove the device from master if its link has no master'). This was done to deal with OpenVSwitch port-interface relationship, where the interface's platform link lacked an actual master in platform (what matters there is the OVSDB entry), but the fix was too wide. Let's limit the special case to devices whose were not enslaved to masters that lack a platform link, which pretty much happens for OpenVSwitch only. Morale: Write better commit messages of future you is going to be upset Fixes:2e22880894
('device: don't remove the device from master if its link has no master') https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1358
This commit is contained in:
parent
cfc36db2b7
commit
a1de6810df
|
@ -6536,12 +6536,16 @@ device_recheck_slave_status(NMDevice *self, const NMPlatformLink *plink)
|
|||
|
||||
g_return_if_fail(plink);
|
||||
|
||||
if (plink->master <= 0)
|
||||
goto out;
|
||||
|
||||
master = nm_manager_get_device_by_ifindex(NM_MANAGER_GET, plink->master);
|
||||
plink_master = nm_platform_link_get(nm_device_get_platform(self), plink->master);
|
||||
plink_master_keep_alive = nmp_object_ref(NMP_OBJECT_UP_CAST(plink_master));
|
||||
if (plink->master > 0) {
|
||||
master = nm_manager_get_device_by_ifindex(NM_MANAGER_GET, plink->master);
|
||||
plink_master = nm_platform_link_get(nm_device_get_platform(self), plink->master);
|
||||
plink_master_keep_alive = nmp_object_ref(NMP_OBJECT_UP_CAST(plink_master));
|
||||
} else {
|
||||
if (priv->master_ifindex == 0)
|
||||
goto out;
|
||||
master = NULL;
|
||||
plink_master = NULL;
|
||||
}
|
||||
|
||||
if (master == NULL && plink_master
|
||||
&& NM_IN_STRSET(plink_master->name, "ovs-system", "ovs-netdev")
|
||||
|
|
Loading…
Reference in New Issue
Block a user