dns: revert resolv.conf symlink stuff (should only be in F23+, not F22)
This commit is contained in:
parent
dda57934f7
commit
ee316b279f
@ -1,283 +0,0 @@
|
|||||||
From 7e6aee7e1a898e552a0e273ef53ecf6a1f0e95d3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Pavel=20=C5=A0imerda?= <psimerda@redhat.com>
|
|
||||||
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 <thaller@redhat.com>
|
|
||||||
Acked-By: Dan Williams <dcbw@redhat.com>
|
|
||||||
(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?= <psimerda@redhat.com>
|
|
||||||
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 <dcbw@redhat.com>
|
|
||||||
Acked-By: Thomas Haller <thaller@redhat.com>
|
|
||||||
(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 <fcntl.h>
|
|
||||||
#include <resolv.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
+#include <sys/stat.h>
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
@@ -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 <thaller@redhat.com>
|
|
||||||
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
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
|||||||
%define snapshot %{nil}
|
%define snapshot %{nil}
|
||||||
%define git_sha %{nil}
|
%define git_sha %{nil}
|
||||||
%define realversion 1.0.0
|
%define realversion 1.0.0
|
||||||
%define release_version 6
|
%define release_version 7
|
||||||
%define epoch_version 1
|
%define epoch_version 1
|
||||||
|
|
||||||
%define obsoletes_nmver 1:0.9.9.95-1
|
%define obsoletes_nmver 1:0.9.9.95-1
|
||||||
@ -78,7 +78,6 @@ Source3: 20-connectivity-fedora.conf
|
|||||||
|
|
||||||
# Not upstream.
|
# Not upstream.
|
||||||
Patch0: 0000-explain-dns1-dns2.patch
|
Patch0: 0000-explain-dns1-dns2.patch
|
||||||
Patch1: 0001-rh1116999-resolv-conf-symlink.patch
|
|
||||||
|
|
||||||
# http://cgit.freedesktop.org/NetworkManager/NetworkManager/commit/?id=a687d1f9e0f75b987f40335934b54aa748f6724b
|
# http://cgit.freedesktop.org/NetworkManager/NetworkManager/commit/?id=a687d1f9e0f75b987f40335934b54aa748f6724b
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1162636
|
# 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}
|
%setup -q -n NetworkManager-%{realversion}
|
||||||
|
|
||||||
%patch0 -p1 -b .0000-explain-dns1-dns2.orig
|
%patch0 -p1 -b .0000-explain-dns1-dns2.orig
|
||||||
%patch1 -p1 -b .0001-rh1116999-resolv-conf-symlink.orig
|
|
||||||
%patch2 -p1 -b .bridge_resume
|
%patch2 -p1 -b .bridge_resume
|
||||||
%patch3 -p1 -b .v6ll-flush
|
%patch3 -p1 -b .v6ll-flush
|
||||||
%patch4 -p1 -b .bgo742823-connectivity-no-dns.orig
|
%patch4 -p1 -b .bgo742823-connectivity-no-dns.orig
|
||||||
@ -665,6 +663,9 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Mar 5 2015 Dan Williams <dcbw@redhat.com> - 1:1.0.0-7
|
||||||
|
- dns: revert resolv.conf symlink stuff (should only be in F23+, not F22)
|
||||||
|
|
||||||
* Thu Mar 5 2015 Dan Williams <dcbw@redhat.com> - 1:1.0.0-6
|
* Thu Mar 5 2015 Dan Williams <dcbw@redhat.com> - 1:1.0.0-6
|
||||||
- connectivity: fix checking when no valid DNS servers are present (rh #1199098)
|
- connectivity: fix checking when no valid DNS servers are present (rh #1199098)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user