From de0318f42b8ac77b162ba425b4d996e5de12e96d Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Thu, 29 Jan 2015 14:37:46 -0800 Subject: [PATCH] core: resume bridged connections properly (rh #1162636) --- NetworkManager-1.0.0-bridge_resume.patch | 43 ++++++++++++++++++++++++ NetworkManager.spec | 10 +++++- 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 NetworkManager-1.0.0-bridge_resume.patch diff --git a/NetworkManager-1.0.0-bridge_resume.patch b/NetworkManager-1.0.0-bridge_resume.patch new file mode 100644 index 0000000..987cde6 --- /dev/null +++ b/NetworkManager-1.0.0-bridge_resume.patch @@ -0,0 +1,43 @@ +From a687d1f9e0f75b987f40335934b54aa748f6724b Mon Sep 17 00:00:00 2001 +From: Dan Williams +Date: Fri, 9 Jan 2015 15:47:54 -0600 +Subject: core: ensure manager state is updated on resume with connectivity + checking enabled (rh #1162636) (bgo #742675) + +On resume configured interfaces are unmanaged to clear their pre-resume +state and then re-managed. Eventually the interface should end up moving +to the DISCONNECTED state, which should trigger an auto-activate check in +the Policy. If connectivity checking was enabled, that auto-activate check +would fail because the Manager's state was still NM_STATE_ASLEEP. + +This caused bridge slaves not to auto-activate on resume, which left bridges +without connectivity. + +The manager never left NM_STATE_ASLEEP when connectivity checking was +enabled due to nm_manager_update_state() returning early when kicking +off a connectivity check. Instead, the manager's state should always +be updated to accurately reflect the current state. + +https://bugzilla.redhat.com/show_bug.cgi?id=1162636 +https://bugzilla.gnome.org/show_bug.cgi?id=742675 + +diff --git a/src/nm-manager.c b/src/nm-manager.c +index f3c5081..3d7b80d 100644 +--- a/src/nm-manager.c ++++ b/src/nm-manager.c +@@ -645,10 +645,9 @@ nm_manager_update_state (NMManager *manager) + nm_connectivity_check_async (priv->connectivity, + checked_connectivity, + g_object_ref (manager)); +- return; +- } ++ } else ++ nm_connectivity_set_online (priv->connectivity, new_state >= NM_STATE_CONNECTED_LOCAL); + +- nm_connectivity_set_online (priv->connectivity, new_state >= NM_STATE_CONNECTED_LOCAL); + set_state (manager, new_state); + } + +-- +cgit v0.10.2 + diff --git a/NetworkManager.spec b/NetworkManager.spec index ada24e4..43c13bf 100644 --- a/NetworkManager.spec +++ b/NetworkManager.spec @@ -10,7 +10,7 @@ %define snapshot %{nil} %define git_sha %{nil} %define realversion 1.0.0 -%define release_version 3 +%define release_version 4 %define epoch_version 1 %define obsoletes_nmver 1:0.9.9.95-1 @@ -80,6 +80,10 @@ Source3: 20-connectivity-fedora.conf Patch0: 0000-explain-dns1-dns2.patch Patch1: 0001-rh1116999-resolv-conf-symlink.patch +# http://cgit.freedesktop.org/NetworkManager/NetworkManager/commit/?id=a687d1f9e0f75b987f40335934b54aa748f6724b +# https://bugzilla.redhat.com/show_bug.cgi?id=1162636 +Patch2: NetworkManager-1.0.0-bridge_resume.patch + BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) %if 0%{?fedora} && 0%{?fedora} < 20 @@ -363,6 +367,7 @@ by nm-connection-editor and nm-applet in a non-graphical environment. %patch0 -p1 -b .0000-explain-dns1-dns2.orig %patch1 -p1 -b .0001-rh1116999-resolv-conf-symlink.orig +%patch2 -p1 -b .bridge_resume %build @@ -655,6 +660,9 @@ fi %endif %changelog +* Thu Jan 29 2015 Adam Williamson - 1:1.0.0-4 +- core: resume bridged connections properly (rh #1162636, backport from master) + * Wed Jan 21 2015 Thomas Haller - 1:1.0.0-3 - dns: manage resolv.conf as symlink to private file in /run directory (rh #1116999)