From 093d62315617cd9729a3a3e79163980582de054c Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 4 Mar 2015 17:51:36 -0600 Subject: [PATCH 1/6] core: flush IPv6LL address when deconfiguring managed devices (rh #1193127) (rh #1184997) --- ...e-the-link-local-address-on-address-.patch | 83 +++++++++++++++++++ NetworkManager.spec | 8 +- 2 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 0001-ip6-config-remove-the-link-local-address-on-address-.patch diff --git a/0001-ip6-config-remove-the-link-local-address-on-address-.patch b/0001-ip6-config-remove-the-link-local-address-on-address-.patch new file mode 100644 index 0000000..855762d --- /dev/null +++ b/0001-ip6-config-remove-the-link-local-address-on-address-.patch @@ -0,0 +1,83 @@ +From cdf17af6579a6ddebc1a76affbfa756432bc6bfa Mon Sep 17 00:00:00 2001 +From: Lubomir Rintel +Date: Wed, 28 Jan 2015 12:00:00 +0100 +Subject: [PATCH] ip6-config: remove the link-local address on address flush + +If it stays after device dispose a connection is assumed. + +https://bugzilla.redhat.com/show_bug.cgi?id=1184997 +(cherry picked from commit 6771f836ce3518bc75f0cbbed74138f40c890f7d) +--- + src/nm-ip6-config.c | 2 +- + src/platform/nm-platform.c | 7 ++++--- + src/platform/nm-platform.h | 2 +- + 3 files changed, 6 insertions(+), 5 deletions(-) + +diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c +index db64e72..63b4260 100644 +--- a/src/nm-ip6-config.c ++++ b/src/nm-ip6-config.c +@@ -375,7 +375,7 @@ nm_ip6_config_commit (const NMIP6Config *config, int ifindex) + g_return_val_if_fail (config != NULL, FALSE); + + /* Addresses */ +- nm_platform_ip6_address_sync (ifindex, priv->addresses); ++ nm_platform_ip6_address_sync (ifindex, priv->addresses, TRUE); + + /* Routes */ + { +diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c +index 14fc44c..f679fe5 100644 +--- a/src/platform/nm-platform.c ++++ b/src/platform/nm-platform.c +@@ -1826,6 +1826,7 @@ nm_platform_ip4_address_sync (int ifindex, const GArray *known_addresses, guint3 + * nm_platform_ip6_address_sync: + * @ifindex: Interface index + * @known_addresses: List of addresses ++ * @keep_link_local: Don't remove link-local address + * + * A convenience function to synchronize addresses for a specific interface + * with the least possible disturbance. It simply removes addresses that are +@@ -1834,7 +1835,7 @@ nm_platform_ip4_address_sync (int ifindex, const GArray *known_addresses, guint3 + * Returns: %TRUE on success. + */ + gboolean +-nm_platform_ip6_address_sync (int ifindex, const GArray *known_addresses) ++nm_platform_ip6_address_sync (int ifindex, const GArray *known_addresses, gboolean keep_link_local) + { + GArray *addresses; + NMPlatformIP6Address *address; +@@ -1847,7 +1848,7 @@ nm_platform_ip6_address_sync (int ifindex, const GArray *known_addresses) + address = &g_array_index (addresses, NMPlatformIP6Address, i); + + /* Leave link local address management to the kernel */ +- if (IN6_IS_ADDR_LINKLOCAL (&address->address)) ++ if (keep_link_local && IN6_IS_ADDR_LINKLOCAL (&address->address)) + continue; + + if (!array_contains_ip6_address (known_addresses, address)) +@@ -1880,7 +1881,7 @@ gboolean + nm_platform_address_flush (int ifindex) + { + return nm_platform_ip4_address_sync (ifindex, NULL, 0) +- && nm_platform_ip6_address_sync (ifindex, NULL); ++ && nm_platform_ip6_address_sync (ifindex, NULL, FALSE); + } + + /******************************************************************/ +diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h +index 3f37ed6..62eb0f4 100644 +--- a/src/platform/nm-platform.h ++++ b/src/platform/nm-platform.h +@@ -572,7 +572,7 @@ gboolean nm_platform_ip6_address_delete (int ifindex, struct in6_addr address, i + gboolean nm_platform_ip4_address_exists (int ifindex, in_addr_t address, int plen); + gboolean nm_platform_ip6_address_exists (int ifindex, struct in6_addr address, int plen); + gboolean nm_platform_ip4_address_sync (int ifindex, const GArray *known_addresses, guint32 device_route_metric); +-gboolean nm_platform_ip6_address_sync (int ifindex, const GArray *known_addresses); ++gboolean nm_platform_ip6_address_sync (int ifindex, const GArray *known_addresses, gboolean keep_link_local); + gboolean nm_platform_address_flush (int ifindex); + + gboolean nm_platform_ip4_check_reinstall_device_route (int ifindex, const NMPlatformIP4Address *address, guint32 device_route_metric); +-- +2.1.0 + diff --git a/NetworkManager.spec b/NetworkManager.spec index 43c13bf..1538ab4 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 4 +%define release_version 5 %define epoch_version 1 %define obsoletes_nmver 1:0.9.9.95-1 @@ -84,6 +84,8 @@ Patch1: 0001-rh1116999-resolv-conf-symlink.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1162636 Patch2: NetworkManager-1.0.0-bridge_resume.patch +Patch3: 0001-ip6-config-remove-the-link-local-address-on-address-.patch + BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) %if 0%{?fedora} && 0%{?fedora} < 20 @@ -368,6 +370,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 +%patch3 -p1 -b .v6ll-flush %build @@ -660,6 +663,9 @@ fi %endif %changelog +* Wed Mar 4 2015 Dan Williams - 1:1.0.0-5 +- core: flush IPv6LL address when deconfiguring managed devices (rh #1193127) (rh #1184997) + * Thu Jan 29 2015 Adam Williamson - 1:1.0.0-4 - core: resume bridged connections properly (rh #1162636, backport from master) From dda57934f7da635b691595f63ce9be8cda1c566a Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Thu, 5 Mar 2015 08:07:30 -0600 Subject: [PATCH 2/6] connectivity: fix checking when no valid DNS servers are present (rh #1199098) --- NetworkManager.spec | 7 +- bgo742823-connectivity-no-dns.patch | 348 ++++++++++++++++++++++++++++ 2 files changed, 354 insertions(+), 1 deletion(-) create mode 100644 bgo742823-connectivity-no-dns.patch diff --git a/NetworkManager.spec b/NetworkManager.spec index 1538ab4..6bac5fb 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 5 +%define release_version 6 %define epoch_version 1 %define obsoletes_nmver 1:0.9.9.95-1 @@ -85,6 +85,7 @@ Patch1: 0001-rh1116999-resolv-conf-symlink.patch Patch2: NetworkManager-1.0.0-bridge_resume.patch Patch3: 0001-ip6-config-remove-the-link-local-address-on-address-.patch +Patch4: bgo742823-connectivity-no-dns.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -371,6 +372,7 @@ by nm-connection-editor and nm-applet in a non-graphical environment. %patch1 -p1 -b .0001-rh1116999-resolv-conf-symlink.orig %patch2 -p1 -b .bridge_resume %patch3 -p1 -b .v6ll-flush +%patch4 -p1 -b .bgo742823-connectivity-no-dns.orig %build @@ -663,6 +665,9 @@ fi %endif %changelog +* Thu Mar 5 2015 Dan Williams - 1:1.0.0-6 +- connectivity: fix checking when no valid DNS servers are present (rh #1199098) + * Wed Mar 4 2015 Dan Williams - 1:1.0.0-5 - core: flush IPv6LL address when deconfiguring managed devices (rh #1193127) (rh #1184997) diff --git a/bgo742823-connectivity-no-dns.patch b/bgo742823-connectivity-no-dns.patch new file mode 100644 index 0000000..44efa5a --- /dev/null +++ b/bgo742823-connectivity-no-dns.patch @@ -0,0 +1,348 @@ +From 0a22ce64a6a8c2ec0f8a71f1a59855593cdeb96a Mon Sep 17 00:00:00 2001 +From: Dan Winship +Date: Tue, 13 Jan 2015 15:08:21 -0500 +Subject: [PATCH 1/4] connectivity: improve debug logging + +nm-connectivity was logging both "started" and "finished" for periodic +connectivity checks, but was only logging "finished" for manual ones, +which made the logs look weird. Fix it to log both periodic and manual +starts, and differentiate them. + +Also add some additional logging to indicate when set_online() is +called, and when :state changes. + +(cherry picked from commit 53f2642c736ebb8466cbfd29c2ede2c3828a4728) +--- + src/nm-connectivity.c | 31 ++++++++++++++++++++++++++++++- + 1 file changed, 30 insertions(+), 1 deletion(-) + +diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c +index 8a324a5..5913fd9 100644 +--- a/src/nm-connectivity.c ++++ b/src/nm-connectivity.c +@@ -69,12 +69,33 @@ nm_connectivity_get_state (NMConnectivity *connectivity) + return NM_CONNECTIVITY_GET_PRIVATE (connectivity)->state; + } + ++static const char * ++state_name (NMConnectivityState state) ++{ ++ switch (state) { ++ case NM_CONNECTIVITY_UNKNOWN: ++ return "UNKNOWN"; ++ case NM_CONNECTIVITY_NONE: ++ return "NONE"; ++ case NM_CONNECTIVITY_LIMITED: ++ return "LIMITED"; ++ case NM_CONNECTIVITY_PORTAL: ++ return "PORTAL"; ++ case NM_CONNECTIVITY_FULL: ++ return "FULL"; ++ default: ++ return "???"; ++ } ++} ++ + static void + update_state (NMConnectivity *self, NMConnectivityState state) + { + NMConnectivityPrivate *priv = NM_CONNECTIVITY_GET_PRIVATE (self); + + if (priv->state != state) { ++ nm_log_dbg (LOGD_CONCHECK, "Connectivity state changed from %s to %s", ++ state_name (priv->state), state_name (state)); + priv->state = state; + g_object_notify (G_OBJECT (self), NM_CONNECTIVITY_STATE); + } +@@ -155,7 +176,6 @@ run_check (gpointer user_data) + + nm_connectivity_check_async (self, run_check_complete, NULL); + priv->running = TRUE; +- nm_log_dbg (LOGD_CONCHECK, "Connectivity check with uri '%s' started.", priv->uri); + + return TRUE; + } +@@ -167,7 +187,11 @@ nm_connectivity_set_online (NMConnectivity *self, + { + #if WITH_CONCHECK + NMConnectivityPrivate *priv = NM_CONNECTIVITY_GET_PRIVATE (self); ++#endif + ++ nm_log_dbg (LOGD_CONCHECK, "nm_connectivity_set_online(%s)", online ? "TRUE" : "FALSE"); ++ ++#if WITH_CONCHECK + if (online && priv->uri && priv->interval) { + if (!priv->check_id) + priv->check_id = g_timeout_add_seconds (priv->interval, run_check, self); +@@ -201,6 +225,11 @@ nm_connectivity_check_async (NMConnectivity *self, + g_return_if_fail (NM_IS_CONNECTIVITY (self)); + priv = NM_CONNECTIVITY_GET_PRIVATE (self); + ++ if (callback == run_check_complete) ++ nm_log_dbg (LOGD_CONCHECK, "Periodic connectivity check started with uri '%s'.", priv->uri); ++ else ++ nm_log_dbg (LOGD_CONCHECK, "Connectivity check started with uri '%s'.", priv->uri); ++ + simple = g_simple_async_result_new (G_OBJECT (self), callback, user_data, + nm_connectivity_check_async); + +-- +2.1.0 + +From e042bb09a56511ffc6040f8e125863ebb5623974 Mon Sep 17 00:00:00 2001 +From: Dan Winship +Date: Tue, 13 Jan 2015 14:48:29 -0500 +Subject: [PATCH 2/4] connectivity: fix manager state during connectivity check + (bgo #742823) + +When a connection has finished activating, but we don't know yet that +we have full connectivity, then find_best_device_state() should return +CONNECTED_SITE, not CONNECTING. Fixes a bug where the manager state +would repeatedly switch between those two states. + +(cherry picked from commit 5e182d55777b95886d39068821d1d6fa8298474d) +--- + src/nm-manager.c | 14 +++++--------- + 1 file changed, 5 insertions(+), 9 deletions(-) + +diff --git a/src/nm-manager.c b/src/nm-manager.c +index 65fb568..fb4e016 100644 +--- a/src/nm-manager.c ++++ b/src/nm-manager.c +@@ -578,7 +578,7 @@ checked_connectivity (GObject *object, GAsyncResult *result, gpointer user_data) + } + + static NMState +-find_best_device_state (NMManager *manager, gboolean *want_connectivity_check) ++find_best_device_state (NMManager *manager) + { + NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (manager); + NMState best_state = NM_STATE_DISCONNECTED; +@@ -593,13 +593,10 @@ find_best_device_state (NMManager *manager, gboolean *want_connectivity_check) + if ( nm_active_connection_get_default (ac) + || nm_active_connection_get_default6 (ac)) { + nm_connectivity_set_online (priv->connectivity, TRUE); +- if (nm_connectivity_get_state (priv->connectivity) == NM_CONNECTIVITY_FULL) { +- *want_connectivity_check = FALSE; ++ if (nm_connectivity_get_state (priv->connectivity) == NM_CONNECTIVITY_FULL) + return NM_STATE_CONNECTED_GLOBAL; +- } + +- best_state = NM_STATE_CONNECTING; +- *want_connectivity_check = TRUE; ++ best_state = NM_STATE_CONNECTED_SITE; + } else { + if (best_state < NM_STATE_CONNECTING) + best_state = NM_STATE_CONNECTED_LOCAL; +@@ -630,7 +627,6 @@ nm_manager_update_state (NMManager *manager) + { + NMManagerPrivate *priv; + NMState new_state = NM_STATE_DISCONNECTED; +- gboolean want_connectivity_check = FALSE; + + g_return_if_fail (NM_IS_MANAGER (manager)); + +@@ -639,9 +635,9 @@ nm_manager_update_state (NMManager *manager) + if (manager_sleeping (manager)) + new_state = NM_STATE_ASLEEP; + else +- new_state = find_best_device_state (manager, &want_connectivity_check); ++ new_state = find_best_device_state (manager); + +- if (new_state == NM_STATE_CONNECTING && want_connectivity_check) { ++ if (new_state == NM_STATE_CONNECTED_SITE) { + nm_connectivity_check_async (priv->connectivity, + checked_connectivity, + g_object_ref (manager)); +-- +2.1.0 + +From 57249a2d0513a51e7446b7058f9e24e69cabbf6c Mon Sep 17 00:00:00 2001 +From: Dan Winship +Date: Tue, 13 Jan 2015 15:35:10 -0500 +Subject: [PATCH 3/4] connectivity: simplify redundant code + +Merge the two nm_connectivity_set_online() calls into one, after +tweaking NMConnectivity to always update its internal state before +alerting callers to the new state. + +(cherry picked from commit 0997c4b245ca5638d0d27eee90146dc47c56130d) +--- + src/nm-connectivity.c | 4 ++-- + src/nm-manager.c | 6 +++--- + 2 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c +index 5913fd9..cf4552a 100644 +--- a/src/nm-connectivity.c ++++ b/src/nm-connectivity.c +@@ -145,10 +145,10 @@ nm_connectivity_check_cb (SoupSession *session, SoupMessage *msg, gpointer user_ + } + + done: ++ update_state (self, new_state); ++ + g_simple_async_result_set_op_res_gssize (simple, new_state); + g_simple_async_result_complete (simple); +- +- update_state (self, new_state); + } + + static void +diff --git a/src/nm-manager.c b/src/nm-manager.c +index fb4e016..62a1e15 100644 +--- a/src/nm-manager.c ++++ b/src/nm-manager.c +@@ -592,7 +592,6 @@ find_best_device_state (NMManager *manager) + case NM_ACTIVE_CONNECTION_STATE_ACTIVATED: + if ( nm_active_connection_get_default (ac) + || nm_active_connection_get_default6 (ac)) { +- nm_connectivity_set_online (priv->connectivity, TRUE); + if (nm_connectivity_get_state (priv->connectivity) == NM_CONNECTIVITY_FULL) + return NM_STATE_CONNECTED_GLOBAL; + +@@ -637,12 +636,13 @@ nm_manager_update_state (NMManager *manager) + else + new_state = find_best_device_state (manager); + ++ nm_connectivity_set_online (priv->connectivity, new_state >= NM_STATE_CONNECTED_LOCAL); ++ + if (new_state == NM_STATE_CONNECTED_SITE) { + nm_connectivity_check_async (priv->connectivity, + checked_connectivity, + g_object_ref (manager)); +- } else +- nm_connectivity_set_online (priv->connectivity, new_state >= NM_STATE_CONNECTED_LOCAL); ++ } + + set_state (manager, new_state); + } +-- +2.1.0 + +From 3d49585b377a578ce0195d74c5b5125a1101c688 Mon Sep 17 00:00:00 2001 +From: Dan Winship +Date: Tue, 13 Jan 2015 15:25:31 -0500 +Subject: [PATCH 4/4] connectivity: avoid redundant connectivity checks + +Don't start an automatic connectivity check right when NMManager tells +us we're online; only do it if the manager doesn't request an explicit +connectivity check immediately afterward. + +(cherry picked from commit 66b8f2b7a0f9e1ce84d8a98863c88ea3dbed0a51) +--- + src/nm-connectivity.c | 26 +++++++++++++++++--------- + 1 file changed, 17 insertions(+), 9 deletions(-) + +diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c +index cf4552a..1a374eb 100644 +--- a/src/nm-connectivity.c ++++ b/src/nm-connectivity.c +@@ -44,7 +44,7 @@ typedef struct { + + #if WITH_CONCHECK + SoupSession *soup_session; +- gboolean running; ++ guint pending_checks; + guint check_id; + #endif + +@@ -114,6 +114,7 @@ nm_connectivity_check_cb (SoupSession *session, SoupMessage *msg, gpointer user_ + self = NM_CONNECTIVITY (g_async_result_get_source_object (G_ASYNC_RESULT (simple))); + g_object_unref (self); + priv = NM_CONNECTIVITY_GET_PRIVATE (self); ++ priv->pending_checks--; + + if (SOUP_STATUS_IS_TRANSPORT_ERROR (msg->status_code)) { + nm_log_info (LOGD_CONCHECK, "Connectivity check for uri '%s' failed with '%s'.", +@@ -157,11 +158,9 @@ run_check_complete (GObject *object, + gpointer user_data) + { + NMConnectivity *self = NM_CONNECTIVITY (object); +- NMConnectivityPrivate *priv = NM_CONNECTIVITY_GET_PRIVATE (self); + GError *error = NULL; + + nm_connectivity_check_finish (self, result, &error); +- priv->running = FALSE; + if (error) { + nm_log_err (LOGD_CONCHECK, "Connectivity check failed: %s", error->message); + g_error_free (error); +@@ -172,13 +171,23 @@ static gboolean + run_check (gpointer user_data) + { + NMConnectivity *self = NM_CONNECTIVITY (user_data); +- NMConnectivityPrivate *priv = NM_CONNECTIVITY_GET_PRIVATE (self); + + nm_connectivity_check_async (self, run_check_complete, NULL); +- priv->running = TRUE; +- + return TRUE; + } ++ ++static gboolean ++idle_start_periodic_checks (gpointer user_data) ++{ ++ NMConnectivity *self = user_data; ++ NMConnectivityPrivate *priv = NM_CONNECTIVITY_GET_PRIVATE (self); ++ ++ priv->check_id = g_timeout_add_seconds (priv->interval, run_check, self); ++ if (!priv->pending_checks) ++ run_check (self); ++ ++ return FALSE; ++} + #endif + + void +@@ -194,9 +203,7 @@ nm_connectivity_set_online (NMConnectivity *self, + #if WITH_CONCHECK + if (online && priv->uri && priv->interval) { + if (!priv->check_id) +- priv->check_id = g_timeout_add_seconds (priv->interval, run_check, self); +- if (!priv->running) +- run_check (self); ++ priv->check_id = g_timeout_add (0, idle_start_periodic_checks, self); + + return; + } else if (priv->check_id) { +@@ -241,6 +248,7 @@ nm_connectivity_check_async (NMConnectivity *self, + msg, + nm_connectivity_check_cb, + simple); ++ priv->pending_checks++; + + return; + } +-- +2.1.0 + +From ecd7227d45fc517230073d48a68a51937b60daea Mon Sep 17 00:00:00 2001 +From: Thomas Haller +Date: Fri, 16 Jan 2015 14:15:24 +0100 +Subject: [PATCH] connectivity: fix compile error no WITH_CONCHECK + +Fixes: 53f2642c736ebb8466cbfd29c2ede2c3828a4728 +(cherry picked from commit 07be0f511d6d559431ea66bdf74b00e4c276904b) +--- + src/nm-connectivity.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c +index 1a374eb..f35da5e 100644 +--- a/src/nm-connectivity.c ++++ b/src/nm-connectivity.c +@@ -232,9 +232,11 @@ nm_connectivity_check_async (NMConnectivity *self, + g_return_if_fail (NM_IS_CONNECTIVITY (self)); + priv = NM_CONNECTIVITY_GET_PRIVATE (self); + ++#if WITH_CONCHECK + if (callback == run_check_complete) + nm_log_dbg (LOGD_CONCHECK, "Periodic connectivity check started with uri '%s'.", priv->uri); + else ++#endif + nm_log_dbg (LOGD_CONCHECK, "Connectivity check started with uri '%s'.", priv->uri); + + simple = g_simple_async_result_new (G_OBJECT (self), callback, user_data, +-- +2.1.0 + From ee316b279fa71f99d7cf77dd9a930238d996c4a0 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Thu, 5 Mar 2015 08:54:01 -0600 Subject: [PATCH 3/6] dns: revert resolv.conf symlink stuff (should only be in F23+, not F22) --- 0001-rh1116999-resolv-conf-symlink.patch | 283 ----------------------- NetworkManager.spec | 7 +- 2 files changed, 4 insertions(+), 286 deletions(-) delete mode 100644 0001-rh1116999-resolv-conf-symlink.patch diff --git a/0001-rh1116999-resolv-conf-symlink.patch b/0001-rh1116999-resolv-conf-symlink.patch deleted file mode 100644 index 0c4bd13..0000000 --- a/0001-rh1116999-resolv-conf-symlink.patch +++ /dev/null @@ -1,283 +0,0 @@ -From 7e6aee7e1a898e552a0e273ef53ecf6a1f0e95d3 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pavel=20=C5=A0imerda?= -Date: Tue, 18 Nov 2014 18:12:16 +0100 -Subject: [PATCH 1/3] dns-manager: make /etc/resolv.conf a symlink to - /run/NetworkManager/resolv.conf.default - -Related: - - * https://bugzilla.gnome.org/show_bug.cgi?id=732941 - * https://bugzilla.redhat.com/show_bug.cgi?id=1116999 - -Acked-By: Thomas Haller -Acked-By: Dan Williams -(cherry picked from commit 4805be2ed27b71a6099477d86dbc109adb41b819) ---- - src/dns-manager/nm-dns-manager.c | 111 ++++++++++++++++++++------------------- - 1 file changed, 57 insertions(+), 54 deletions(-) - -diff --git a/src/dns-manager/nm-dns-manager.c b/src/dns-manager/nm-dns-manager.c -index d556850..5eeae9b 100644 ---- a/src/dns-manager/nm-dns-manager.c -+++ b/src/dns-manager/nm-dns-manager.c -@@ -444,53 +444,27 @@ dispatch_resolvconf (char **searches, - } - #endif - -+#define MY_RESOLV_CONF NMRUNDIR "/resolv.conf" -+#define MY_RESOLV_CONF_TMP MY_RESOLV_CONF ".tmp" -+#define RESOLV_CONF_TMP "/etc/.resolv.conf.NetworkManager" -+ - static gboolean - update_resolv_conf (char **searches, - char **nameservers, - GError **error) - { -- char *tmp_resolv_conf; -- char *tmp_resolv_conf_realpath; -- char *resolv_conf_realpath; - FILE *f; -- int do_rename = 1; -- int old_errno = 0; - - g_return_val_if_fail (error != NULL, FALSE); - -- /* Find the real path of resolv.conf; it could be a symlink to something */ -- resolv_conf_realpath = realpath (_PATH_RESCONF, NULL); -- if (!resolv_conf_realpath) -- resolv_conf_realpath = strdup (_PATH_RESCONF); -- -- /* Build up the real path for the temp resolv.conf that we're about to -- * write out. -- */ -- tmp_resolv_conf = g_strdup_printf ("%s.tmp", resolv_conf_realpath); -- tmp_resolv_conf_realpath = realpath (tmp_resolv_conf, NULL); -- if (!tmp_resolv_conf_realpath) -- tmp_resolv_conf_realpath = strdup (tmp_resolv_conf); -- g_free (tmp_resolv_conf); -- tmp_resolv_conf = NULL; -- -- if ((f = fopen (tmp_resolv_conf_realpath, "w")) == NULL) { -- do_rename = 0; -- old_errno = errno; -- if ((f = fopen (_PATH_RESCONF, "w")) == NULL) { -- g_set_error (error, -- NM_MANAGER_ERROR, -- NM_MANAGER_ERROR_FAILED, -- "Could not open %s: %s\nCould not open %s: %s\n", -- tmp_resolv_conf_realpath, -- g_strerror (old_errno), -- _PATH_RESCONF, -- g_strerror (errno)); -- goto out; -- } -- /* Update tmp_resolv_conf_realpath so the error message on fclose() -- * failure will be correct. -- */ -- strcpy (tmp_resolv_conf_realpath, _PATH_RESCONF); -+ if ((f = fopen (MY_RESOLV_CONF_TMP, "w")) == NULL) { -+ g_set_error (error, -+ NM_MANAGER_ERROR, -+ NM_MANAGER_ERROR_FAILED, -+ "Could not open %s: %s\n", -+ MY_RESOLV_CONF_TMP, -+ g_strerror (errno)); -+ return FALSE; - } - - write_resolv_conf (f, searches, nameservers, error); -@@ -504,28 +478,57 @@ update_resolv_conf (char **searches, - NM_MANAGER_ERROR, - NM_MANAGER_ERROR_FAILED, - "Could not close %s: %s\n", -- tmp_resolv_conf_realpath, -+ MY_RESOLV_CONF_TMP, - g_strerror (errno)); - } - } - -- /* Don't rename the tempfile over top of the existing resolv.conf if there -- * was an error writing it out. -- */ -- if (*error == NULL && do_rename) { -- if (rename (tmp_resolv_conf_realpath, resolv_conf_realpath) < 0) { -- g_set_error (error, -- NM_MANAGER_ERROR, -- NM_MANAGER_ERROR_FAILED, -- "Could not replace " _PATH_RESCONF ": %s\n", -- g_strerror (errno)); -- } -+ if (*error) -+ return FALSE; -+ -+ if (rename (MY_RESOLV_CONF_TMP, MY_RESOLV_CONF) < 0) { -+ g_set_error (error, -+ NM_MANAGER_ERROR, -+ NM_MANAGER_ERROR_FAILED, -+ "Could not replace %s: %s\n", -+ MY_RESOLV_CONF, -+ g_strerror (errno)); -+ return FALSE; -+ } -+ -+ if (unlink (RESOLV_CONF_TMP) == -1 && errno != ENOENT) { -+ g_set_error (error, -+ NM_MANAGER_ERROR, -+ NM_MANAGER_ERROR_FAILED, -+ "Could not unlink %s: %s\n", -+ RESOLV_CONF_TMP, -+ g_strerror (errno)); -+ return FALSE; -+ } -+ -+ if (symlink (MY_RESOLV_CONF, RESOLV_CONF_TMP) == -1) { -+ g_set_error (error, -+ NM_MANAGER_ERROR, -+ NM_MANAGER_ERROR_FAILED, -+ "Could not create symlink %s pointing to %s: %s\n", -+ RESOLV_CONF_TMP, -+ MY_RESOLV_CONF, -+ g_strerror (errno)); -+ return FALSE; -+ } -+ -+ if (rename (RESOLV_CONF_TMP, _PATH_RESCONF) == -1) { -+ g_set_error (error, -+ NM_MANAGER_ERROR, -+ NM_MANAGER_ERROR_FAILED, -+ "Could not rename %s to %s: %s\n", -+ RESOLV_CONF_TMP, -+ _PATH_RESCONF, -+ g_strerror (errno)); -+ return FALSE; - } - --out: -- free (tmp_resolv_conf_realpath); -- free (resolv_conf_realpath); -- return *error ? FALSE : TRUE; -+ return TRUE; - } - - static void --- -1.9.3 - - -From 20983e28f4fff52f75327b30cc7d386ebfda2710 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pavel=20=C5=A0imerda?= -Date: Tue, 18 Nov 2014 18:12:16 +0100 -Subject: [PATCH 2/3] dns-manager: don't replace /etc/resolv.conf installed by - other tools - -Resolves: - - * https://bugzilla.gnome.org/show_bug.cgi?id=732941 - * https://bugzilla.redhat.com/show_bug.cgi?id=1116999 - -Acked-By: Dan Williams -Acked-By: Thomas Haller -(cherry picked from commit 583568e12f9e580cd2903811637c9f9b7a2f1088) ---- - src/dns-manager/nm-dns-manager.c | 35 +++++++++++++++++++++++++++++++++++ - 1 file changed, 35 insertions(+) - -diff --git a/src/dns-manager/nm-dns-manager.c b/src/dns-manager/nm-dns-manager.c -index 5eeae9b..e9d3f43 100644 ---- a/src/dns-manager/nm-dns-manager.c -+++ b/src/dns-manager/nm-dns-manager.c -@@ -27,6 +27,7 @@ - #include - #include - #include -+#include - #include - #include - -@@ -454,6 +455,7 @@ update_resolv_conf (char **searches, - GError **error) - { - FILE *f; -+ struct stat st; - - g_return_val_if_fail (error != NULL, FALSE); - -@@ -496,6 +498,39 @@ update_resolv_conf (char **searches, - return FALSE; - } - -+ /* Don't overwrite a symbolic link unless it points to MY_RESOLV_CONF. */ -+ if (lstat (_PATH_RESCONF, &st) != -1) { -+ /* Don't overwrite a symbolic link. */ -+ if (S_ISLNK (st.st_mode)) { -+ if (stat (_PATH_RESCONF, &st) != -1) { -+ char *path = g_file_read_link (_PATH_RESCONF, NULL); -+ gboolean not_ours = g_strcmp0 (path, MY_RESOLV_CONF) != 0; -+ -+ g_free (path); -+ if (not_ours) -+ return TRUE; -+ } else { -+ if (errno != ENOENT) -+ return TRUE; -+ g_set_error (error, -+ NM_MANAGER_ERROR, -+ NM_MANAGER_ERROR_FAILED, -+ "Could not stat %s: %s\n", -+ _PATH_RESCONF, -+ g_strerror (errno)); -+ return FALSE; -+ } -+ } -+ } else if (errno != ENOENT) { -+ g_set_error (error, -+ NM_MANAGER_ERROR, -+ NM_MANAGER_ERROR_FAILED, -+ "Could not lstat %s: %s\n", -+ _PATH_RESCONF, -+ g_strerror (errno)); -+ return FALSE; -+ } -+ - if (unlink (RESOLV_CONF_TMP) == -1 && errno != ENOENT) { - g_set_error (error, - NM_MANAGER_ERROR, --- -1.9.3 - - -From 9c3b052d010a124b32319b79be9006ae5dccac6d Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 21 Jan 2015 17:29:10 +0100 -Subject: [PATCH 3/3] trival/whitespace: fix indention in nm-dns-manager.c - -Fixes: 583568e12f9e580cd2903811637c9f9b7a2f1088 -(cherry picked from commit 4c691cf69ed33bcbaa0b4802e419b98ed687630b) ---- - src/dns-manager/nm-dns-manager.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/src/dns-manager/nm-dns-manager.c b/src/dns-manager/nm-dns-manager.c -index e9d3f43..6f34584 100644 ---- a/src/dns-manager/nm-dns-manager.c -+++ b/src/dns-manager/nm-dns-manager.c -@@ -513,11 +513,11 @@ update_resolv_conf (char **searches, - if (errno != ENOENT) - return TRUE; - g_set_error (error, -- NM_MANAGER_ERROR, -- NM_MANAGER_ERROR_FAILED, -- "Could not stat %s: %s\n", -- _PATH_RESCONF, -- g_strerror (errno)); -+ NM_MANAGER_ERROR, -+ NM_MANAGER_ERROR_FAILED, -+ "Could not stat %s: %s\n", -+ _PATH_RESCONF, -+ g_strerror (errno)); - return FALSE; - } - } --- -1.9.3 - diff --git a/NetworkManager.spec b/NetworkManager.spec index 6bac5fb..3e3924b 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 6 +%define release_version 7 %define epoch_version 1 %define obsoletes_nmver 1:0.9.9.95-1 @@ -78,7 +78,6 @@ Source3: 20-connectivity-fedora.conf # Not upstream. 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 @@ -369,7 +368,6 @@ by nm-connection-editor and nm-applet in a non-graphical environment. %setup -q -n NetworkManager-%{realversion} %patch0 -p1 -b .0000-explain-dns1-dns2.orig -%patch1 -p1 -b .0001-rh1116999-resolv-conf-symlink.orig %patch2 -p1 -b .bridge_resume %patch3 -p1 -b .v6ll-flush %patch4 -p1 -b .bgo742823-connectivity-no-dns.orig @@ -665,6 +663,9 @@ fi %endif %changelog +* Thu Mar 5 2015 Dan Williams - 1:1.0.0-7 +- dns: revert resolv.conf symlink stuff (should only be in F23+, not F22) + * Thu Mar 5 2015 Dan Williams - 1:1.0.0-6 - connectivity: fix checking when no valid DNS servers are present (rh #1199098) From 2a59fdf6e4be31c65ffddf9ce971bb8e91f7af44 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Mon, 16 Mar 2015 10:59:22 -0500 Subject: [PATCH 4/6] Turn off keepalive for connectivity checking --- ...able-HTTP-keepalive-for-connectivity.patch | 32 +++++++++++++++++++ NetworkManager.spec | 7 +++- 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 0001-connectivity-disable-HTTP-keepalive-for-connectivity.patch diff --git a/0001-connectivity-disable-HTTP-keepalive-for-connectivity.patch b/0001-connectivity-disable-HTTP-keepalive-for-connectivity.patch new file mode 100644 index 0000000..9978257 --- /dev/null +++ b/0001-connectivity-disable-HTTP-keepalive-for-connectivity.patch @@ -0,0 +1,32 @@ +From 46c836e5cd5342cab5dfb4cd6eb5daf6170b70a0 Mon Sep 17 00:00:00 2001 +From: Dan Williams +Date: Mon, 16 Mar 2015 10:44:16 -0500 +Subject: [PATCH] connectivity: disable HTTP keepalive for connectivity checks + +There won't be any further requests, so there's no point in keeping +the connection alive. Even if the HTTP server doesn't care, proxy +servers in-between might keep the connection open for a couple seconds +for keepalive, and we might as well be nice to them and tell them we +don't need to keep it alive. + +(cherry picked from commit 90692e3efff398f0e4420827fc6d7ac342360e5c) +--- + src/nm-connectivity.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c +index 4d5feef..85bd70a 100644 +--- a/src/nm-connectivity.c ++++ b/src/nm-connectivity.c +@@ -247,6 +247,8 @@ nm_connectivity_check_async (NMConnectivity *self, + if (priv->uri && priv->interval) { + msg = soup_message_new ("GET", priv->uri); + soup_message_set_flags (msg, SOUP_MESSAGE_NO_REDIRECT); ++ /* Disable HTTP/1.1 keepalive; the connection should not persist */ ++ soup_message_headers_append (msg->request_headers, "Connection", "close"); + soup_session_queue_message (priv->soup_session, + msg, + nm_connectivity_check_cb, +-- +2.1.0 + diff --git a/NetworkManager.spec b/NetworkManager.spec index 3e3924b..f95ad69 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 7 +%define release_version 8 %define epoch_version 1 %define obsoletes_nmver 1:0.9.9.95-1 @@ -85,6 +85,7 @@ Patch2: NetworkManager-1.0.0-bridge_resume.patch Patch3: 0001-ip6-config-remove-the-link-local-address-on-address-.patch Patch4: bgo742823-connectivity-no-dns.patch +Patch5: 0001-connectivity-disable-HTTP-keepalive-for-connectivity.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -371,6 +372,7 @@ by nm-connection-editor and nm-applet in a non-graphical environment. %patch2 -p1 -b .bridge_resume %patch3 -p1 -b .v6ll-flush %patch4 -p1 -b .bgo742823-connectivity-no-dns.orig +%patch5 -p1 -b .0001-connectivity-disable-HTTP-keepalive-for-connectivity.orig %build @@ -663,6 +665,9 @@ fi %endif %changelog +* Mon Mar 16 2015 Dan Williams - 1:1.0.0-8 +- Turn off keepalive for connectivity checking + * Thu Mar 5 2015 Dan Williams - 1:1.0.0-7 - dns: revert resolv.conf symlink stuff (should only be in F23+, not F22) From 87260524cc329628e33aa974b4fbc9eaeced0806 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= Date: Wed, 29 Apr 2015 13:38:32 +0200 Subject: [PATCH 5/6] platform: use driver name to detect IBM z-System CTC devices (rh #1212118) https://bugzilla.redhat.com/show_bug.cgi?id=1212118 --- NetworkManager.spec | 7 ++++- rh1212118-detect-CTC-devices.patch | 48 ++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 rh1212118-detect-CTC-devices.patch diff --git a/NetworkManager.spec b/NetworkManager.spec index f95ad69..0c6e4f7 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 8 +%define release_version 9 %define epoch_version 1 %define obsoletes_nmver 1:0.9.9.95-1 @@ -86,6 +86,7 @@ Patch2: NetworkManager-1.0.0-bridge_resume.patch Patch3: 0001-ip6-config-remove-the-link-local-address-on-address-.patch Patch4: bgo742823-connectivity-no-dns.patch Patch5: 0001-connectivity-disable-HTTP-keepalive-for-connectivity.patch +Patch6: rh1212118-detect-CTC-devices.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -373,6 +374,7 @@ by nm-connection-editor and nm-applet in a non-graphical environment. %patch3 -p1 -b .v6ll-flush %patch4 -p1 -b .bgo742823-connectivity-no-dns.orig %patch5 -p1 -b .0001-connectivity-disable-HTTP-keepalive-for-connectivity.orig +%patch6 -p1 -b .rh1212118-detect-CTC-devices.orig %build @@ -665,6 +667,9 @@ fi %endif %changelog +* Wed Apr 29 2015 Jiří Klimeš - 1:1.0.0-9 +- platform: use driver name to detect IBM z-System CTC devices (rh #1212118) + * Mon Mar 16 2015 Dan Williams - 1:1.0.0-8 - Turn off keepalive for connectivity checking diff --git a/rh1212118-detect-CTC-devices.patch b/rh1212118-detect-CTC-devices.patch new file mode 100644 index 0000000..0f29a26 --- /dev/null +++ b/rh1212118-detect-CTC-devices.patch @@ -0,0 +1,48 @@ +From 02c6a9334335d3ef32c6cc8fafc6cea235c80ffc Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= +Date: Mon, 20 Apr 2015 14:14:36 +0200 +Subject: [PATCH] platform: use driver name to detect IBM z-System CTC devices + (rh #1212118) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +We used to detect CTC devices according to the interface name. But that does +not work anymore due to systemd renaming the devices. +Let's use driver name for the detection instead. The driver is called 'ctcm'. + +http://www-01.ibm.com/support/knowledgecenter/linuxonibm/com.ibm.linux.z.lgdd/lgdd_r_mpc_setup.html + +https://bugzilla.redhat.com/show_bug.cgi?id=1212118 +Signed-off-by: Jiří Klimeš +--- + src/platform/nm-linux-platform.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c +index d831bd3..ed22fe2 100644 +--- a/src/platform/nm-linux-platform.c ++++ b/src/platform/nm-linux-platform.c +@@ -954,16 +954,15 @@ link_extract_type (NMPlatform *platform, struct rtnl_link *rtnllink, const char + if (!ifname) + return_type (NM_LINK_TYPE_UNKNOWN, type); + ++ driver = ethtool_get_driver (ifname); + if (arptype == 256) { + /* Some s390 CTC-type devices report 256 for the encapsulation type +- * for some reason, but we need to call them Ethernet. FIXME: use +- * something other than interface name to detect CTC here. ++ * for some reason, but we need to call them Ethernet. + */ +- if (g_str_has_prefix (ifname, "ctc")) ++ if (!g_strcmp0 (driver, "ctcm")) + return_type (NM_LINK_TYPE_ETHERNET, "ethernet"); + } + +- driver = ethtool_get_driver (ifname); + if (!g_strcmp0 (driver, "openvswitch")) + return_type (NM_LINK_TYPE_OPENVSWITCH, "openvswitch"); + +-- +2.1.0 + From 46c1d97ea6113770c5f6a82dc668579455aa8737 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Tue, 5 May 2015 14:35:22 +0200 Subject: [PATCH 6/6] Update to 1.0.2 release --- .gitignore | 1 + ...able-HTTP-keepalive-for-connectivity.patch | 32 -- ...e-the-link-local-address-on-address-.patch | 83 ----- NetworkManager-1.0.0-bridge_resume.patch | 43 --- NetworkManager.spec | 21 +- bgo742823-connectivity-no-dns.patch | 348 ------------------ rh1212118-detect-CTC-devices.patch | 48 --- sources | 2 +- 8 files changed, 7 insertions(+), 571 deletions(-) delete mode 100644 0001-connectivity-disable-HTTP-keepalive-for-connectivity.patch delete mode 100644 0001-ip6-config-remove-the-link-local-address-on-address-.patch delete mode 100644 NetworkManager-1.0.0-bridge_resume.patch delete mode 100644 bgo742823-connectivity-no-dns.patch delete mode 100644 rh1212118-detect-CTC-devices.patch diff --git a/.gitignore b/.gitignore index b9dd6e2..8fe1a30 100644 --- a/.gitignore +++ b/.gitignore @@ -309,3 +309,4 @@ network-manager-applet-0.8.1.tar.bz2 /NetworkManager-0.9.9.98.git20140620.63b0a2f5.tar.bz2 /NetworkManager-0.9.10.0.git20140704.6eb82acd.tar.bz2 /NetworkManager-1.0.0.tar.xz +/NetworkManager-1.0.2.tar.xz diff --git a/0001-connectivity-disable-HTTP-keepalive-for-connectivity.patch b/0001-connectivity-disable-HTTP-keepalive-for-connectivity.patch deleted file mode 100644 index 9978257..0000000 --- a/0001-connectivity-disable-HTTP-keepalive-for-connectivity.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 46c836e5cd5342cab5dfb4cd6eb5daf6170b70a0 Mon Sep 17 00:00:00 2001 -From: Dan Williams -Date: Mon, 16 Mar 2015 10:44:16 -0500 -Subject: [PATCH] connectivity: disable HTTP keepalive for connectivity checks - -There won't be any further requests, so there's no point in keeping -the connection alive. Even if the HTTP server doesn't care, proxy -servers in-between might keep the connection open for a couple seconds -for keepalive, and we might as well be nice to them and tell them we -don't need to keep it alive. - -(cherry picked from commit 90692e3efff398f0e4420827fc6d7ac342360e5c) ---- - src/nm-connectivity.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c -index 4d5feef..85bd70a 100644 ---- a/src/nm-connectivity.c -+++ b/src/nm-connectivity.c -@@ -247,6 +247,8 @@ nm_connectivity_check_async (NMConnectivity *self, - if (priv->uri && priv->interval) { - msg = soup_message_new ("GET", priv->uri); - soup_message_set_flags (msg, SOUP_MESSAGE_NO_REDIRECT); -+ /* Disable HTTP/1.1 keepalive; the connection should not persist */ -+ soup_message_headers_append (msg->request_headers, "Connection", "close"); - soup_session_queue_message (priv->soup_session, - msg, - nm_connectivity_check_cb, --- -2.1.0 - diff --git a/0001-ip6-config-remove-the-link-local-address-on-address-.patch b/0001-ip6-config-remove-the-link-local-address-on-address-.patch deleted file mode 100644 index 855762d..0000000 --- a/0001-ip6-config-remove-the-link-local-address-on-address-.patch +++ /dev/null @@ -1,83 +0,0 @@ -From cdf17af6579a6ddebc1a76affbfa756432bc6bfa Mon Sep 17 00:00:00 2001 -From: Lubomir Rintel -Date: Wed, 28 Jan 2015 12:00:00 +0100 -Subject: [PATCH] ip6-config: remove the link-local address on address flush - -If it stays after device dispose a connection is assumed. - -https://bugzilla.redhat.com/show_bug.cgi?id=1184997 -(cherry picked from commit 6771f836ce3518bc75f0cbbed74138f40c890f7d) ---- - src/nm-ip6-config.c | 2 +- - src/platform/nm-platform.c | 7 ++++--- - src/platform/nm-platform.h | 2 +- - 3 files changed, 6 insertions(+), 5 deletions(-) - -diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c -index db64e72..63b4260 100644 ---- a/src/nm-ip6-config.c -+++ b/src/nm-ip6-config.c -@@ -375,7 +375,7 @@ nm_ip6_config_commit (const NMIP6Config *config, int ifindex) - g_return_val_if_fail (config != NULL, FALSE); - - /* Addresses */ -- nm_platform_ip6_address_sync (ifindex, priv->addresses); -+ nm_platform_ip6_address_sync (ifindex, priv->addresses, TRUE); - - /* Routes */ - { -diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c -index 14fc44c..f679fe5 100644 ---- a/src/platform/nm-platform.c -+++ b/src/platform/nm-platform.c -@@ -1826,6 +1826,7 @@ nm_platform_ip4_address_sync (int ifindex, const GArray *known_addresses, guint3 - * nm_platform_ip6_address_sync: - * @ifindex: Interface index - * @known_addresses: List of addresses -+ * @keep_link_local: Don't remove link-local address - * - * A convenience function to synchronize addresses for a specific interface - * with the least possible disturbance. It simply removes addresses that are -@@ -1834,7 +1835,7 @@ nm_platform_ip4_address_sync (int ifindex, const GArray *known_addresses, guint3 - * Returns: %TRUE on success. - */ - gboolean --nm_platform_ip6_address_sync (int ifindex, const GArray *known_addresses) -+nm_platform_ip6_address_sync (int ifindex, const GArray *known_addresses, gboolean keep_link_local) - { - GArray *addresses; - NMPlatformIP6Address *address; -@@ -1847,7 +1848,7 @@ nm_platform_ip6_address_sync (int ifindex, const GArray *known_addresses) - address = &g_array_index (addresses, NMPlatformIP6Address, i); - - /* Leave link local address management to the kernel */ -- if (IN6_IS_ADDR_LINKLOCAL (&address->address)) -+ if (keep_link_local && IN6_IS_ADDR_LINKLOCAL (&address->address)) - continue; - - if (!array_contains_ip6_address (known_addresses, address)) -@@ -1880,7 +1881,7 @@ gboolean - nm_platform_address_flush (int ifindex) - { - return nm_platform_ip4_address_sync (ifindex, NULL, 0) -- && nm_platform_ip6_address_sync (ifindex, NULL); -+ && nm_platform_ip6_address_sync (ifindex, NULL, FALSE); - } - - /******************************************************************/ -diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h -index 3f37ed6..62eb0f4 100644 ---- a/src/platform/nm-platform.h -+++ b/src/platform/nm-platform.h -@@ -572,7 +572,7 @@ gboolean nm_platform_ip6_address_delete (int ifindex, struct in6_addr address, i - gboolean nm_platform_ip4_address_exists (int ifindex, in_addr_t address, int plen); - gboolean nm_platform_ip6_address_exists (int ifindex, struct in6_addr address, int plen); - gboolean nm_platform_ip4_address_sync (int ifindex, const GArray *known_addresses, guint32 device_route_metric); --gboolean nm_platform_ip6_address_sync (int ifindex, const GArray *known_addresses); -+gboolean nm_platform_ip6_address_sync (int ifindex, const GArray *known_addresses, gboolean keep_link_local); - gboolean nm_platform_address_flush (int ifindex); - - gboolean nm_platform_ip4_check_reinstall_device_route (int ifindex, const NMPlatformIP4Address *address, guint32 device_route_metric); --- -2.1.0 - diff --git a/NetworkManager-1.0.0-bridge_resume.patch b/NetworkManager-1.0.0-bridge_resume.patch deleted file mode 100644 index 987cde6..0000000 --- a/NetworkManager-1.0.0-bridge_resume.patch +++ /dev/null @@ -1,43 +0,0 @@ -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 0c6e4f7..2326f2e 100644 --- a/NetworkManager.spec +++ b/NetworkManager.spec @@ -9,8 +9,8 @@ %define snapshot %{nil} %define git_sha %{nil} -%define realversion 1.0.0 -%define release_version 9 +%define realversion 1.0.2 +%define release_version 1 %define epoch_version 1 %define obsoletes_nmver 1:0.9.9.95-1 @@ -79,15 +79,6 @@ Source3: 20-connectivity-fedora.conf # Not upstream. Patch0: 0000-explain-dns1-dns2.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 - -Patch3: 0001-ip6-config-remove-the-link-local-address-on-address-.patch -Patch4: bgo742823-connectivity-no-dns.patch -Patch5: 0001-connectivity-disable-HTTP-keepalive-for-connectivity.patch -Patch6: rh1212118-detect-CTC-devices.patch - BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) %if 0%{?fedora} && 0%{?fedora} < 20 @@ -370,11 +361,6 @@ by nm-connection-editor and nm-applet in a non-graphical environment. %setup -q -n NetworkManager-%{realversion} %patch0 -p1 -b .0000-explain-dns1-dns2.orig -%patch2 -p1 -b .bridge_resume -%patch3 -p1 -b .v6ll-flush -%patch4 -p1 -b .bgo742823-connectivity-no-dns.orig -%patch5 -p1 -b .0001-connectivity-disable-HTTP-keepalive-for-connectivity.orig -%patch6 -p1 -b .rh1212118-detect-CTC-devices.orig %build @@ -667,6 +653,9 @@ fi %endif %changelog +* Tue May 5 2015 Lubomir Rintel - 1:1.0.2-1 +- Update to 1.0.2 release + * Wed Apr 29 2015 Jiří Klimeš - 1:1.0.0-9 - platform: use driver name to detect IBM z-System CTC devices (rh #1212118) diff --git a/bgo742823-connectivity-no-dns.patch b/bgo742823-connectivity-no-dns.patch deleted file mode 100644 index 44efa5a..0000000 --- a/bgo742823-connectivity-no-dns.patch +++ /dev/null @@ -1,348 +0,0 @@ -From 0a22ce64a6a8c2ec0f8a71f1a59855593cdeb96a Mon Sep 17 00:00:00 2001 -From: Dan Winship -Date: Tue, 13 Jan 2015 15:08:21 -0500 -Subject: [PATCH 1/4] connectivity: improve debug logging - -nm-connectivity was logging both "started" and "finished" for periodic -connectivity checks, but was only logging "finished" for manual ones, -which made the logs look weird. Fix it to log both periodic and manual -starts, and differentiate them. - -Also add some additional logging to indicate when set_online() is -called, and when :state changes. - -(cherry picked from commit 53f2642c736ebb8466cbfd29c2ede2c3828a4728) ---- - src/nm-connectivity.c | 31 ++++++++++++++++++++++++++++++- - 1 file changed, 30 insertions(+), 1 deletion(-) - -diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c -index 8a324a5..5913fd9 100644 ---- a/src/nm-connectivity.c -+++ b/src/nm-connectivity.c -@@ -69,12 +69,33 @@ nm_connectivity_get_state (NMConnectivity *connectivity) - return NM_CONNECTIVITY_GET_PRIVATE (connectivity)->state; - } - -+static const char * -+state_name (NMConnectivityState state) -+{ -+ switch (state) { -+ case NM_CONNECTIVITY_UNKNOWN: -+ return "UNKNOWN"; -+ case NM_CONNECTIVITY_NONE: -+ return "NONE"; -+ case NM_CONNECTIVITY_LIMITED: -+ return "LIMITED"; -+ case NM_CONNECTIVITY_PORTAL: -+ return "PORTAL"; -+ case NM_CONNECTIVITY_FULL: -+ return "FULL"; -+ default: -+ return "???"; -+ } -+} -+ - static void - update_state (NMConnectivity *self, NMConnectivityState state) - { - NMConnectivityPrivate *priv = NM_CONNECTIVITY_GET_PRIVATE (self); - - if (priv->state != state) { -+ nm_log_dbg (LOGD_CONCHECK, "Connectivity state changed from %s to %s", -+ state_name (priv->state), state_name (state)); - priv->state = state; - g_object_notify (G_OBJECT (self), NM_CONNECTIVITY_STATE); - } -@@ -155,7 +176,6 @@ run_check (gpointer user_data) - - nm_connectivity_check_async (self, run_check_complete, NULL); - priv->running = TRUE; -- nm_log_dbg (LOGD_CONCHECK, "Connectivity check with uri '%s' started.", priv->uri); - - return TRUE; - } -@@ -167,7 +187,11 @@ nm_connectivity_set_online (NMConnectivity *self, - { - #if WITH_CONCHECK - NMConnectivityPrivate *priv = NM_CONNECTIVITY_GET_PRIVATE (self); -+#endif - -+ nm_log_dbg (LOGD_CONCHECK, "nm_connectivity_set_online(%s)", online ? "TRUE" : "FALSE"); -+ -+#if WITH_CONCHECK - if (online && priv->uri && priv->interval) { - if (!priv->check_id) - priv->check_id = g_timeout_add_seconds (priv->interval, run_check, self); -@@ -201,6 +225,11 @@ nm_connectivity_check_async (NMConnectivity *self, - g_return_if_fail (NM_IS_CONNECTIVITY (self)); - priv = NM_CONNECTIVITY_GET_PRIVATE (self); - -+ if (callback == run_check_complete) -+ nm_log_dbg (LOGD_CONCHECK, "Periodic connectivity check started with uri '%s'.", priv->uri); -+ else -+ nm_log_dbg (LOGD_CONCHECK, "Connectivity check started with uri '%s'.", priv->uri); -+ - simple = g_simple_async_result_new (G_OBJECT (self), callback, user_data, - nm_connectivity_check_async); - --- -2.1.0 - -From e042bb09a56511ffc6040f8e125863ebb5623974 Mon Sep 17 00:00:00 2001 -From: Dan Winship -Date: Tue, 13 Jan 2015 14:48:29 -0500 -Subject: [PATCH 2/4] connectivity: fix manager state during connectivity check - (bgo #742823) - -When a connection has finished activating, but we don't know yet that -we have full connectivity, then find_best_device_state() should return -CONNECTED_SITE, not CONNECTING. Fixes a bug where the manager state -would repeatedly switch between those two states. - -(cherry picked from commit 5e182d55777b95886d39068821d1d6fa8298474d) ---- - src/nm-manager.c | 14 +++++--------- - 1 file changed, 5 insertions(+), 9 deletions(-) - -diff --git a/src/nm-manager.c b/src/nm-manager.c -index 65fb568..fb4e016 100644 ---- a/src/nm-manager.c -+++ b/src/nm-manager.c -@@ -578,7 +578,7 @@ checked_connectivity (GObject *object, GAsyncResult *result, gpointer user_data) - } - - static NMState --find_best_device_state (NMManager *manager, gboolean *want_connectivity_check) -+find_best_device_state (NMManager *manager) - { - NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (manager); - NMState best_state = NM_STATE_DISCONNECTED; -@@ -593,13 +593,10 @@ find_best_device_state (NMManager *manager, gboolean *want_connectivity_check) - if ( nm_active_connection_get_default (ac) - || nm_active_connection_get_default6 (ac)) { - nm_connectivity_set_online (priv->connectivity, TRUE); -- if (nm_connectivity_get_state (priv->connectivity) == NM_CONNECTIVITY_FULL) { -- *want_connectivity_check = FALSE; -+ if (nm_connectivity_get_state (priv->connectivity) == NM_CONNECTIVITY_FULL) - return NM_STATE_CONNECTED_GLOBAL; -- } - -- best_state = NM_STATE_CONNECTING; -- *want_connectivity_check = TRUE; -+ best_state = NM_STATE_CONNECTED_SITE; - } else { - if (best_state < NM_STATE_CONNECTING) - best_state = NM_STATE_CONNECTED_LOCAL; -@@ -630,7 +627,6 @@ nm_manager_update_state (NMManager *manager) - { - NMManagerPrivate *priv; - NMState new_state = NM_STATE_DISCONNECTED; -- gboolean want_connectivity_check = FALSE; - - g_return_if_fail (NM_IS_MANAGER (manager)); - -@@ -639,9 +635,9 @@ nm_manager_update_state (NMManager *manager) - if (manager_sleeping (manager)) - new_state = NM_STATE_ASLEEP; - else -- new_state = find_best_device_state (manager, &want_connectivity_check); -+ new_state = find_best_device_state (manager); - -- if (new_state == NM_STATE_CONNECTING && want_connectivity_check) { -+ if (new_state == NM_STATE_CONNECTED_SITE) { - nm_connectivity_check_async (priv->connectivity, - checked_connectivity, - g_object_ref (manager)); --- -2.1.0 - -From 57249a2d0513a51e7446b7058f9e24e69cabbf6c Mon Sep 17 00:00:00 2001 -From: Dan Winship -Date: Tue, 13 Jan 2015 15:35:10 -0500 -Subject: [PATCH 3/4] connectivity: simplify redundant code - -Merge the two nm_connectivity_set_online() calls into one, after -tweaking NMConnectivity to always update its internal state before -alerting callers to the new state. - -(cherry picked from commit 0997c4b245ca5638d0d27eee90146dc47c56130d) ---- - src/nm-connectivity.c | 4 ++-- - src/nm-manager.c | 6 +++--- - 2 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c -index 5913fd9..cf4552a 100644 ---- a/src/nm-connectivity.c -+++ b/src/nm-connectivity.c -@@ -145,10 +145,10 @@ nm_connectivity_check_cb (SoupSession *session, SoupMessage *msg, gpointer user_ - } - - done: -+ update_state (self, new_state); -+ - g_simple_async_result_set_op_res_gssize (simple, new_state); - g_simple_async_result_complete (simple); -- -- update_state (self, new_state); - } - - static void -diff --git a/src/nm-manager.c b/src/nm-manager.c -index fb4e016..62a1e15 100644 ---- a/src/nm-manager.c -+++ b/src/nm-manager.c -@@ -592,7 +592,6 @@ find_best_device_state (NMManager *manager) - case NM_ACTIVE_CONNECTION_STATE_ACTIVATED: - if ( nm_active_connection_get_default (ac) - || nm_active_connection_get_default6 (ac)) { -- nm_connectivity_set_online (priv->connectivity, TRUE); - if (nm_connectivity_get_state (priv->connectivity) == NM_CONNECTIVITY_FULL) - return NM_STATE_CONNECTED_GLOBAL; - -@@ -637,12 +636,13 @@ nm_manager_update_state (NMManager *manager) - else - new_state = find_best_device_state (manager); - -+ nm_connectivity_set_online (priv->connectivity, new_state >= NM_STATE_CONNECTED_LOCAL); -+ - if (new_state == NM_STATE_CONNECTED_SITE) { - nm_connectivity_check_async (priv->connectivity, - checked_connectivity, - g_object_ref (manager)); -- } else -- nm_connectivity_set_online (priv->connectivity, new_state >= NM_STATE_CONNECTED_LOCAL); -+ } - - set_state (manager, new_state); - } --- -2.1.0 - -From 3d49585b377a578ce0195d74c5b5125a1101c688 Mon Sep 17 00:00:00 2001 -From: Dan Winship -Date: Tue, 13 Jan 2015 15:25:31 -0500 -Subject: [PATCH 4/4] connectivity: avoid redundant connectivity checks - -Don't start an automatic connectivity check right when NMManager tells -us we're online; only do it if the manager doesn't request an explicit -connectivity check immediately afterward. - -(cherry picked from commit 66b8f2b7a0f9e1ce84d8a98863c88ea3dbed0a51) ---- - src/nm-connectivity.c | 26 +++++++++++++++++--------- - 1 file changed, 17 insertions(+), 9 deletions(-) - -diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c -index cf4552a..1a374eb 100644 ---- a/src/nm-connectivity.c -+++ b/src/nm-connectivity.c -@@ -44,7 +44,7 @@ typedef struct { - - #if WITH_CONCHECK - SoupSession *soup_session; -- gboolean running; -+ guint pending_checks; - guint check_id; - #endif - -@@ -114,6 +114,7 @@ nm_connectivity_check_cb (SoupSession *session, SoupMessage *msg, gpointer user_ - self = NM_CONNECTIVITY (g_async_result_get_source_object (G_ASYNC_RESULT (simple))); - g_object_unref (self); - priv = NM_CONNECTIVITY_GET_PRIVATE (self); -+ priv->pending_checks--; - - if (SOUP_STATUS_IS_TRANSPORT_ERROR (msg->status_code)) { - nm_log_info (LOGD_CONCHECK, "Connectivity check for uri '%s' failed with '%s'.", -@@ -157,11 +158,9 @@ run_check_complete (GObject *object, - gpointer user_data) - { - NMConnectivity *self = NM_CONNECTIVITY (object); -- NMConnectivityPrivate *priv = NM_CONNECTIVITY_GET_PRIVATE (self); - GError *error = NULL; - - nm_connectivity_check_finish (self, result, &error); -- priv->running = FALSE; - if (error) { - nm_log_err (LOGD_CONCHECK, "Connectivity check failed: %s", error->message); - g_error_free (error); -@@ -172,13 +171,23 @@ static gboolean - run_check (gpointer user_data) - { - NMConnectivity *self = NM_CONNECTIVITY (user_data); -- NMConnectivityPrivate *priv = NM_CONNECTIVITY_GET_PRIVATE (self); - - nm_connectivity_check_async (self, run_check_complete, NULL); -- priv->running = TRUE; -- - return TRUE; - } -+ -+static gboolean -+idle_start_periodic_checks (gpointer user_data) -+{ -+ NMConnectivity *self = user_data; -+ NMConnectivityPrivate *priv = NM_CONNECTIVITY_GET_PRIVATE (self); -+ -+ priv->check_id = g_timeout_add_seconds (priv->interval, run_check, self); -+ if (!priv->pending_checks) -+ run_check (self); -+ -+ return FALSE; -+} - #endif - - void -@@ -194,9 +203,7 @@ nm_connectivity_set_online (NMConnectivity *self, - #if WITH_CONCHECK - if (online && priv->uri && priv->interval) { - if (!priv->check_id) -- priv->check_id = g_timeout_add_seconds (priv->interval, run_check, self); -- if (!priv->running) -- run_check (self); -+ priv->check_id = g_timeout_add (0, idle_start_periodic_checks, self); - - return; - } else if (priv->check_id) { -@@ -241,6 +248,7 @@ nm_connectivity_check_async (NMConnectivity *self, - msg, - nm_connectivity_check_cb, - simple); -+ priv->pending_checks++; - - return; - } --- -2.1.0 - -From ecd7227d45fc517230073d48a68a51937b60daea Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Fri, 16 Jan 2015 14:15:24 +0100 -Subject: [PATCH] connectivity: fix compile error no WITH_CONCHECK - -Fixes: 53f2642c736ebb8466cbfd29c2ede2c3828a4728 -(cherry picked from commit 07be0f511d6d559431ea66bdf74b00e4c276904b) ---- - src/nm-connectivity.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c -index 1a374eb..f35da5e 100644 ---- a/src/nm-connectivity.c -+++ b/src/nm-connectivity.c -@@ -232,9 +232,11 @@ nm_connectivity_check_async (NMConnectivity *self, - g_return_if_fail (NM_IS_CONNECTIVITY (self)); - priv = NM_CONNECTIVITY_GET_PRIVATE (self); - -+#if WITH_CONCHECK - if (callback == run_check_complete) - nm_log_dbg (LOGD_CONCHECK, "Periodic connectivity check started with uri '%s'.", priv->uri); - else -+#endif - nm_log_dbg (LOGD_CONCHECK, "Connectivity check started with uri '%s'.", priv->uri); - - simple = g_simple_async_result_new (G_OBJECT (self), callback, user_data, --- -2.1.0 - diff --git a/rh1212118-detect-CTC-devices.patch b/rh1212118-detect-CTC-devices.patch deleted file mode 100644 index 0f29a26..0000000 --- a/rh1212118-detect-CTC-devices.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 02c6a9334335d3ef32c6cc8fafc6cea235c80ffc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= -Date: Mon, 20 Apr 2015 14:14:36 +0200 -Subject: [PATCH] platform: use driver name to detect IBM z-System CTC devices - (rh #1212118) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -We used to detect CTC devices according to the interface name. But that does -not work anymore due to systemd renaming the devices. -Let's use driver name for the detection instead. The driver is called 'ctcm'. - -http://www-01.ibm.com/support/knowledgecenter/linuxonibm/com.ibm.linux.z.lgdd/lgdd_r_mpc_setup.html - -https://bugzilla.redhat.com/show_bug.cgi?id=1212118 -Signed-off-by: Jiří Klimeš ---- - src/platform/nm-linux-platform.c | 7 +++---- - 1 file changed, 3 insertions(+), 4 deletions(-) - -diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c -index d831bd3..ed22fe2 100644 ---- a/src/platform/nm-linux-platform.c -+++ b/src/platform/nm-linux-platform.c -@@ -954,16 +954,15 @@ link_extract_type (NMPlatform *platform, struct rtnl_link *rtnllink, const char - if (!ifname) - return_type (NM_LINK_TYPE_UNKNOWN, type); - -+ driver = ethtool_get_driver (ifname); - if (arptype == 256) { - /* Some s390 CTC-type devices report 256 for the encapsulation type -- * for some reason, but we need to call them Ethernet. FIXME: use -- * something other than interface name to detect CTC here. -+ * for some reason, but we need to call them Ethernet. - */ -- if (g_str_has_prefix (ifname, "ctc")) -+ if (!g_strcmp0 (driver, "ctcm")) - return_type (NM_LINK_TYPE_ETHERNET, "ethernet"); - } - -- driver = ethtool_get_driver (ifname); - if (!g_strcmp0 (driver, "openvswitch")) - return_type (NM_LINK_TYPE_OPENVSWITCH, "openvswitch"); - --- -2.1.0 - diff --git a/sources b/sources index 3c4e59c..eab6459 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -71cae8707a90fa92e28cafbc9262b548 NetworkManager-1.0.0.tar.xz +5a4899f89edcbdd1ac46d2d947e8d6eb NetworkManager-1.0.2.tar.xz