From 81553b69786eade65ced35782486d2807cfa2504 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Fri, 5 Dec 2014 13:10:51 +0100 Subject: [PATCH] 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 --- src/devices/nm-device.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index f834875cbf..0956135a97 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -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);