diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2014-12-05 13:10:51 +0100 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2014-12-11 11:49:29 +0100 |
commit | 81553b69786eade65ced35782486d2807cfa2504 (patch) | |
tree | ba04764b30614b0693b2ddb9994df5bc98ff2450 | |
parent | 8b77b931698468419d1ed04738069613a4fea79b (diff) | |
download | NetworkManager-81553b69786eade65ced35782486d2807cfa2504.tar.gz |
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
-rw-r--r-- | src/devices/nm-device.c | 5 |
1 files 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); |