mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-10-15 20:45:32 +00:00
device: fix recheck slave logic
Since commit a1de6810df
('device: don't ignore external slave removals')
we don't leave device_recheck_slave_status() on un-eslaving (that is
plink->master = 0) early enough.
This results in hooking of NM_MANAGER_DEVICE_IFINDEX_CHANGED even
when we're not actually waiting for any master device to come up,
accompanied by a messed up log entry:
device[3fa7cfc200be4e84] (portXc): enslaved to unknown device 0 (??)
We also log nonsense when we see any device's link being removed:
device[a9a4b65bde851bcf] (br0): ifindex: set ifindex 0 (old-l3cfg: 05c6a4409f84d9d2)
device[45d34e95fb71cce0] (portXa): master br0 with ifindex 0 appeared
We don't do further damage afterwards, so this is purely a cosmetic
annoyance.
This commit is contained in:
parent
a49aede4b8
commit
bf60fd5acc
|
@ -6573,27 +6573,30 @@ device_recheck_slave_status(NMDevice *self, const NMPlatformLink *plink)
|
|||
NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED);
|
||||
}
|
||||
|
||||
if (master && NM_DEVICE_GET_CLASS(master)->attach_port) {
|
||||
nm_device_master_add_slave(master, self, FALSE);
|
||||
if (master) {
|
||||
if (NM_DEVICE_GET_CLASS(master)->attach_port) {
|
||||
nm_device_master_add_slave(master, self, FALSE);
|
||||
} else {
|
||||
_LOGD(LOGD_DEVICE,
|
||||
"enslaved to non-master-type device %s; ignoring",
|
||||
nm_device_get_iface(master));
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (master) {
|
||||
_LOGD(LOGD_DEVICE,
|
||||
"enslaved to non-master-type device %s; ignoring",
|
||||
nm_device_get_iface(master));
|
||||
} else {
|
||||
if (plink->master) {
|
||||
_LOGD(LOGD_DEVICE,
|
||||
"enslaved to unknown device %d (%s%s%s)",
|
||||
plink->master,
|
||||
NM_PRINT_FMT_QUOTED(plink_master, "\"", plink_master->name, "\"", "??"));
|
||||
if (!priv->ifindex_changed_id) {
|
||||
priv->ifindex_changed_id = g_signal_connect(nm_device_get_manager(self),
|
||||
NM_MANAGER_DEVICE_IFINDEX_CHANGED,
|
||||
G_CALLBACK(device_ifindex_changed_cb),
|
||||
self);
|
||||
}
|
||||
}
|
||||
if (!priv->ifindex_changed_id) {
|
||||
priv->ifindex_changed_id = g_signal_connect(nm_device_get_manager(self),
|
||||
NM_MANAGER_DEVICE_IFINDEX_CHANGED,
|
||||
G_CALLBACK(device_ifindex_changed_cb),
|
||||
self);
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
out:
|
||||
|
|
Loading…
Reference in a new issue