device: release and enslave an interface if its master changed

In case of an atomic master change, we'd not notice that the master changed:

  ip link set dummy0 master bridge0
  ip link set dummy0 master bridge1
This commit is contained in:
Lubomir Rintel 2014-12-05 13:10:51 +01:00
parent 8b77b93169
commit 81553b6978

View file

@ -1180,6 +1180,8 @@ device_link_changed (NMDevice *self, NMPlatformLink *info)
}
/* Update slave status for external changes */
if (priv->enslaved && info->master != nm_device_get_ifindex (priv->master))
nm_device_release_one_slave (priv->master, self, FALSE, NM_DEVICE_STATE_REASON_NONE);
if (info->master && !priv->enslaved) {
NMDevice *master;
@ -1197,8 +1199,7 @@ device_link_changed (NMDevice *self, NMPlatformLink *info)
info->master,
nm_platform_link_get_name (info->master));
}
} else if (priv->enslaved && !info->master)
nm_device_release_one_slave (priv->master, self, FALSE, NM_DEVICE_STATE_REASON_NONE);
}
if (klass->link_changed)
klass->link_changed (self, info);