summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2019-04-24 16:20:52 +0200
committerBeniamino Galvani <bgalvani@redhat.com>2019-04-24 16:20:52 +0200
commitbb9e3195d2dc81ce492b6b811d85f27ac6efacab (patch)
treeef5bf786650a4ac2ae7b10ebfdef221fdc565792
parent2d347e7e176e7cb8daaa2e02b0758821fc3f5f04 (diff)
parent32ee51eee002f5e6717b856fd0a095114a02cc96 (diff)
downloadNetworkManager-bb9e3195d2dc81ce492b6b811d85f27ac6efacab.tar.gz
manager: merge branch 'bg/sw-device-sleep-rh1701585'
https://bugzilla.redhat.com/show_bug.cgi?id=1701585 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/123
-rw-r--r--src/nm-manager.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/nm-manager.c b/src/nm-manager.c
index 40e068ac5b..c0cd15c0cd 100644
--- a/src/nm-manager.c
+++ b/src/nm-manager.c
@@ -5866,9 +5866,15 @@ do_sleep_wake (NMManager *self, gboolean sleeping_changed)
* suspend/resume?
*/
c_list_for_each_entry (device, &priv->devices_lst_head, devices_lst) {
- /* FIXME: shouldn't we be unmanaging software devices if !suspending? */
- if (nm_device_is_software (device))
- continue;
+ if (nm_device_is_software (device)) {
+ /* If a user disables networking we consider that as an
+ * indication that also software devices must be disconnected.
+ * But we don't want to destroy them for external events as
+ * a system suspend.
+ */
+ if (suspending)
+ continue;
+ }
/* Wake-on-LAN devices will be taken down post-suspend rather than pre- */
if ( suspending
&& device_is_wake_on_lan (priv->platform, device)) {
@@ -5923,10 +5929,10 @@ do_sleep_wake (NMManager *self, gboolean sleeping_changed)
c_list_for_each_entry (device, &priv->devices_lst_head, devices_lst) {
guint i;
- if (nm_device_is_software (device)) {
- /* We do not manage/unmanage software devices but
- * their dhcp leases could have gone stale so we need
- * to renew them */
+ if ( nm_device_is_software (device)
+ && !nm_device_get_unmanaged_flags (device, NM_UNMANAGED_SLEEPING)) {
+ /* DHCP leases of software devices could have gone stale
+ * so we need to renew them. */
nm_device_update_dynamic_ip_setup (device);
continue;
}