NetworkManager/src
Thomas Haller 644aa42f68 dns: change main.rc-manager=file behavior to always follow symlink
With "main.rc-manager=file", if /etc/resolv.conf is a symlink, NetworkManager
would follow the symlink and update the file instead.

However, note that realpath() only returns a target, if the file actually
exists. That means, if /etc/resolv.conf is a dangling symlink, NetworkManager
would replace the symlink with a file.

This was the only case in which NetworkManager would every change a symlink
resolv.conf to a file. I think this is undesired behavior.

This is a change in long established behavior. Although note that there were several
changes regarding rc-manager settings in the past. See for example commit [1] and [2].

Now, first still try using realpath() as before. Only if that fails, try
to resolve /etc/resolv.conf as a symlink with readlink().

Following the dangling symlink is likely not a problem for the user, it
probably is even desired. The part that most likely can cause problems
is if the destination file is not writable. That happens for example, if
the destination's parent directories are missing. In this case, NetworkManager
will now fail to write resolv.conf and log a warning. This has the potential of
breaking existing setups, but it really is a mis-configuration from the user's
side.

This fixes for example the problem, if the user configures
/etc/resolv.conf as symlink to /tmp/my-resolv.conf. At boot, the file
would not exist, and NetworkManager would previously always replace the
link with a plain file. Instead, it should follow the symlink and create
the file.

[1] 718fd22436
[2] 15177a34be

https://github.com/NetworkManager/NetworkManager/pull/127
2018-06-05 16:21:10 +02:00
..
devices dhcp: fix handling of failure events 2018-06-02 10:50:18 +02:00
dhcp build: use default NM_BUILD_* defines for tests 2018-05-31 15:59:38 +02:00
dns dns: change main.rc-manager=file behavior to always follow symlink 2018-06-05 16:21:10 +02:00
dnsmasq build: use default NM_BUILD_* defines for tests 2018-05-31 15:59:38 +02:00
ndisc build: meson: add prefix to test names 2018-04-12 09:21:10 +02:00
platform test: don't assert on the tun link being up to date prior to upping it 2018-05-31 16:54:35 +02:00
ppp core: add and use NM_SHUTDOWN_TIMEOUT_MS as duration that we plan for shutdown 2018-05-25 12:35:49 +02:00
settings settings: let connections keep NMSettings alive 2018-06-03 16:46:48 +02:00
supplicant build: use default NM_BUILD_* defines for tests 2018-05-31 15:59:38 +02:00
systemd all: replace systemd's siphash24 with c-siphash 2018-05-31 15:59:38 +02:00
tests all: replace systemd's siphash24 with c-siphash 2018-05-31 15:59:38 +02:00
vpn all: use the elvis operator wherever possible 2018-05-10 14:36:58 +02:00
main-utils.c all: use nm_close() instead of close() 2017-11-14 15:10:42 +01:00
main-utils.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
main.c all: use the elvis operator wherever possible 2018-05-10 14:36:58 +02:00
meson.build meson: distinguish arch specific and arch neutral lib dir 2018-05-09 12:59:39 +02:00
NetworkManagerUtils.c core: add nm_shutdown_register_watchdog() for marking object to wait for shutdown 2018-05-25 12:35:49 +02:00
NetworkManagerUtils.h core: add and use NM_SHUTDOWN_TIMEOUT_MS as duration that we plan for shutdown 2018-05-25 12:35:49 +02:00
nm-act-request.c shared: drop duplicate c-list.h header 2018-04-18 15:22:14 +02:00
nm-act-request.h core: specify an activation reason for active connections 2018-04-08 09:40:14 +02:00
nm-active-connection.c active-connection: fix build with clang-6.0 2018-05-21 12:02:26 +02:00
nm-active-connection.h core: rework passing user-data to nm_active_connection_authorize() 2018-04-24 09:03:39 +02:00
nm-audit-manager.c all: remove consecutive empty lines 2018-04-30 16:24:52 +02:00
nm-audit-manager.h checkpoint: allow resetting the rollback timeout via D-Bus 2018-04-04 14:02:13 +02:00
nm-auth-manager.c auth-manager: use the correct function to deallocate a GError 2018-05-02 14:55:01 +02:00
nm-auth-manager.h auth-manager: add helper function nm_auth_call_result_eval() 2018-04-13 09:09:46 +02:00
nm-auth-subject.c auth-subject: minor cleanup of _new_unix_process() 2018-04-16 16:03:14 +02:00
nm-auth-subject.h all: remove consecutive empty lines 2018-04-30 16:24:52 +02:00
nm-auth-utils.c core: add nm_auth_is_subject_in_acl_set_error() helper 2018-04-18 07:55:15 +02:00
nm-auth-utils.h core: add nm_auth_is_subject_in_acl_set_error() helper 2018-04-18 07:55:15 +02:00
nm-checkpoint-manager.c checkpoint: fix D-Bus operation to destroy checkpoint 2018-05-03 14:38:10 +02:00
nm-checkpoint-manager.h checkpoint: allow resetting the rollback timeout via D-Bus 2018-04-04 14:02:13 +02:00
nm-checkpoint.c core: specify an activation reason for active connections 2018-04-08 09:40:14 +02:00
nm-checkpoint.h checkpoint: allow resetting the rollback timeout via D-Bus 2018-04-04 14:02:13 +02:00
nm-config-data.c all: remove consecutive empty lines 2018-04-30 16:24:52 +02:00
nm-config-data.h all: remove consecutive empty lines 2018-04-30 16:24:52 +02:00
nm-config.c all: use the elvis operator wherever possible 2018-05-10 14:36:58 +02:00
nm-config.h core: use define for configuration name "wifi.scan-rand-mac-address" 2017-12-27 09:18:54 +01:00
nm-connectivity.c shared: drop duplicate c-list.h header 2018-04-18 15:22:14 +02:00
nm-connectivity.h connectivity: schedule connectivity timers per-device and probe for short outages 2018-04-10 15:11:23 +02:00
nm-core-utils.c all: add stable-id specifier "${DEVICE}" 2018-05-28 14:59:08 +02:00
nm-core-utils.h all: add stable-id specifier "${DEVICE}" 2018-05-28 14:59:08 +02:00
nm-dbus-manager.c core/dbus: stop NMDBusManager and reject future method calls 2018-04-24 10:25:26 +02:00
nm-dbus-manager.h core/dbus: stop NMDBusManager and reject future method calls 2018-04-24 10:25:26 +02:00
nm-dbus-object.c core/dbus: stop NMDBusManager and reject future method calls 2018-04-24 10:25:26 +02:00
nm-dbus-object.h core/dbus: stop NMDBusManager and reject future method calls 2018-04-24 10:25:26 +02:00
nm-dbus-utils.c core: don't explicitly set D-Bus path properties to "/" 2018-04-18 07:55:15 +02:00
nm-dbus-utils.h core/dbus: stop NMDBusManager and reject future method calls 2018-04-24 10:25:26 +02:00
nm-dcb.c build: don't add subdirectories to include search path but require qualified include 2016-11-21 14:26:37 +01:00
nm-dcb.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
nm-dhcp4-config.c core: sort DHCP options that are exported on D-Bus 2018-04-23 15:43:39 +02:00
nm-dhcp4-config.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-dhcp6-config.c core: sort DHCP options that are exported on D-Bus 2018-04-23 15:43:39 +02:00
nm-dhcp6-config.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-dispatcher.c all: use the elvis operator wherever possible 2018-05-10 14:36:58 +02:00
nm-dispatcher.h all: remove consecutive empty lines 2018-04-30 16:24:52 +02:00
nm-firewall-manager.c all: use the elvis operator wherever possible 2018-05-10 14:36:58 +02:00
nm-firewall-manager.h firewall: merge "started" signal and "available" property 2017-04-21 09:09:01 +02:00
nm-hostname-manager.c core,cli: replace wrong pattern for clearing GError 2017-06-27 09:42:28 +02:00
nm-hostname-manager.h hostname: cache hostname-manager's hostname property 2017-05-12 17:29:33 +02:00
nm-iface-helper.c core/dbus: stop NMDBusManager and reject future method calls 2018-04-24 10:25:26 +02:00
nm-ip4-config.c core: reject invalid domains from ip configurations 2018-05-14 15:22:50 +02:00
nm-ip4-config.h core: let NM_IS_IP_CONFIG() check for expected addr-family 2018-05-26 20:11:04 +02:00
nm-ip6-config.c core: reject invalid domains from ip configurations 2018-05-14 15:22:50 +02:00
nm-ip6-config.h all: remove consecutive empty lines 2018-04-30 16:24:52 +02:00
nm-logging.c core/logging: with --debug also output glib messages in stderr 2018-02-07 13:41:52 +01:00
nm-logging.h all: remove consecutive empty lines 2018-04-30 16:24:52 +02:00
nm-manager.c manager: fix failed assertion on user activations 2018-06-04 18:06:47 +02:00
nm-manager.h all: remove consecutive empty lines 2018-04-30 16:24:52 +02:00
nm-netns.c all: get rid of a handful of unused-but-set variables 2017-12-18 13:29:32 +01:00
nm-netns.h core: rework handling of default-routes and drop NMDefaultRouteManager 2017-09-08 11:11:21 +02:00
nm-pacrunner-manager.c all: remove consecutive empty lines 2018-04-30 16:24:52 +02:00
nm-pacrunner-manager.h proxy: introduce call-id for clearing pacmanager configuration 2017-04-23 18:12:09 +02:00
nm-policy.c policy: don't block connection if device is gone 2018-05-28 17:04:01 +02:00
nm-policy.h policy: add support to configurable hostname mode 2017-03-24 15:18:09 +01:00
nm-proxy-config.c proxy: reorder parts in nm-proxy-config.c and nm-pacrunner-manager.c 2016-10-04 11:58:32 +02:00
nm-proxy-config.h proxy: remove unnecessary APIs 2016-10-04 11:44:44 +02:00
nm-rfkill-manager.c all: use the elvis operator wherever possible 2018-05-10 14:36:58 +02:00
nm-rfkill-manager.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-session-monitor.c session-monitor: avoid an assertion failure if there's no session monitor 2018-05-09 12:59:08 +02:00
nm-session-monitor.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-sleep-monitor.c all: remove consecutive empty lines 2018-04-30 16:24:52 +02:00
nm-sleep-monitor.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-test-utils-core.h all: remove consecutive empty lines 2018-04-30 16:24:52 +02:00
nm-types.h core: add activation-reasons for external/assume connections 2018-04-30 16:36:29 +02:00
org.freedesktop.NetworkManager.conf all: replace "it's" with "its" where needed 2018-04-18 14:14:07 +02:00