NetworkManager/src/core
Thomas Haller 3bd210a8f1
l3cfg: fix clearing IPv6 temporary addresses to avoid stale addresses
IPv6 temporary addresses are configured by kernel, with the
"ipv6.ip6-privacy" setting ("use_tempaddr" sysctl) and the
IFA_F_MANAGETEMPADDR flag.

As such, the idea was that during reapply we would not remove them.
However, that is wrong.

The only case when we want to keep those addresses, is if during reapply
we are going to configure the same primary address (with mngtmpaddr
flag) again. Otherwise, theses addresses must always go away.

This is quite serious. This not only affects Reapply. Also during disconnect
we clear IP configuration via l3cfg.
Have an ethernet profile active with "ipv6.ip6-privacy". Unplug
the cable, the device disconnects but the temporary IPv6 address is not
cleared. As such, nm_device_generate_connection() will now generate
an external profile (with "ipv6.method=disabled" and no manual IP addresses).
The result is, that the device cannot properly autoconnect again,
once you replug the cable.

This is serious for disconnect. But I could not actually reproduce the
problem using reapply. That is, because during reapply we usually
toggle ipv6_disable sysctl, which drops all IPv6 addresses. I still
went through the effort of trying to preserve addresses that we still
want to have, because I am not sure whether there are cases where we
don't toggle ipv6_disable. Also, doing ipv6_disable during reapply is
bad anyway, and we might want to avoid that in the future.

Fixes: 58287cbcc0 ('core: rework IP configuration in NetworkManager using layer 3 configuration')
(cherry picked from commit 518f6124c6)
2022-05-09 19:27:06 +02:00
..
devices device: commit l3cfg on link change only when the device is activating 2022-05-09 15:01:09 +02:00
dhcp all: avoid using global string buffer for to-string methods 2022-05-03 12:18:13 +02:00
dns core: preserve the domain when system hostname is truncated 2022-03-09 08:34:26 +01:00
dnsmasq all: avoid using global string buffer for to-string methods 2022-05-03 12:18:13 +02:00
ndisc platform: make "now" timestamp an in/out parameter to nmp_utils_lifetime_get() 2022-04-28 12:03:30 +02:00
platform glib-aux/tests: avoid invalid prefix length in test_platform_ip_address_pretty_sort_cmp() 2022-05-03 12:18:26 +02:00
ppp core: initialize l3cd dns-priority for ppp and wwan 2022-02-28 10:08:24 +01:00
settings settings: fix assertion failure in NMSettings' _startup_complete_check() 2022-04-20 14:16:12 +02:00
supplicant supplicant: Disable WPA3 transition mode when PMF is set to disabled 2022-04-11 18:56:51 +02:00
tests all: use "NM_UTILS_TO_STRING_BUFFER_SIZE" macro 2022-05-03 12:18:12 +02:00
vpn core: increase l3cfg merge priority for VPN config 2022-02-01 19:22:02 +01:00
main-utils.c core: move nm_main_utils_get_nm_[ug]id() to "nm-core-utils.h" 2022-01-18 18:10:55 +01:00
main-utils.h core: move nm_main_utils_get_nm_[ug]id() to "nm-core-utils.h" 2022-01-18 18:10:55 +01:00
main.c core: create GMainLoop after daemonizing 2022-03-22 13:43:41 +01:00
meson.build nm-sudo: rename to nm-priv-helper 2022-01-11 21:46:55 +01:00
NetworkManagerUtils.c all: add support for route type "throw" 2022-02-28 17:17:03 +01:00
NetworkManagerUtils.h core: increase NM_SHUTDOWN_TIMEOUT_MAX_MSEC to 5 sec to cover pppd 2022-02-24 09:38:53 +01:00
nm-act-request.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-act-request.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-active-connection.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-active-connection.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-audit-manager.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-audit-manager.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-auth-manager.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-auth-manager.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-auth-utils.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-auth-utils.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-checkpoint-manager.c core: use nm_dbus_manager_lookup_object_with_type() 2022-03-13 12:02:08 +01:00
nm-checkpoint-manager.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-checkpoint.c settings-connection: add a "plugin" argument to Update2() 2022-03-28 13:29:28 +02:00
nm-checkpoint.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-config-data.c build: allow configuring default for wifi.backend setting 2022-01-04 06:41:37 +01:00
nm-config-data.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-config.c all: avoid using global string buffer for to-string methods 2022-05-03 12:18:13 +02:00
nm-config.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-connectivity.c connectivity: handle "NoNameServers" resolved error and don't callback to system resolver 2022-04-08 15:50:35 +02:00
nm-connectivity.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-core-utils.c core/trivial: add code comment to nm_utils_stable_id_parse() 2022-03-11 10:21:44 +01:00
nm-core-utils.h core: rename nm_utils_host_id_get_timestamp_ns() to "nsec" 2022-03-11 09:43:02 +01:00
nm-dbus-manager.c core: add nm_dbus_manager_lookup_object_with_type() helper 2022-03-13 12:02:07 +01:00
nm-dbus-manager.h core: add nm_dbus_manager_lookup_object_with_type() helper 2022-03-13 12:02:07 +01:00
nm-dbus-object.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-dbus-object.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-dbus-utils.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-dbus-utils.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-dcb.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-dcb.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-default-daemon.h build: move "shared/nm-{glib-aux,log-null,log-core}" to "src/libnm-{glib-aux,log-null,log-core}" 2021-02-24 12:48:20 +01:00
nm-dhcp-config.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-dhcp-config.h core: rework IP configuration in NetworkManager using layer 3 configuration 2021-11-18 16:21:29 +01:00
nm-dispatcher.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-dispatcher.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-firewall-utils.c core: use NM_SHUTDOWN_TIMEOUT_1500_MSEC 2022-02-24 09:38:53 +01:00
nm-firewall-utils.h firewall: add special firewall-backend "none" 2021-05-14 11:41:33 +02:00
nm-firewalld-manager.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-firewalld-manager.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-hostname-manager.c core: ensure static-hostname is valid UTF-8 2022-01-10 20:43:17 +01:00
nm-hostname-manager.h core: rename related things explicitly to "static-hostname" 2022-01-10 20:43:17 +01:00
nm-ip-config.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-ip-config.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-keep-alive.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-keep-alive.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-l3-config-data.c all: use "NM_UTILS_TO_STRING_BUFFER_SIZE" macro 2022-05-03 12:18:12 +02:00
nm-l3-config-data.h l3cfg: drop NM_L3_CFG_COMMIT_TYPE_ASSUME and assume_config_once 2022-04-28 12:03:46 +02:00
nm-l3-ipv4ll.c l3cfg: drop NM_L3_CFG_COMMIT_TYPE_ASSUME and assume_config_once 2022-04-28 12:03:46 +02:00
nm-l3-ipv4ll.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-l3-ipv6ll.c l3cfg: drop NM_L3_CFG_COMMIT_TYPE_ASSUME and assume_config_once 2022-04-28 12:03:46 +02:00
nm-l3-ipv6ll.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-l3cfg.c l3cfg: fix clearing IPv6 temporary addresses to avoid stale addresses 2022-05-09 19:27:06 +02:00
nm-l3cfg.h l3cfg: drop NM_L3_CFG_COMMIT_TYPE_ASSUME and assume_config_once 2022-04-28 12:03:46 +02:00
nm-manager.c core: don't update connection timestamps periodically every 300 seconds 2022-04-01 19:36:14 +02:00
nm-manager.h core: export radio flags 2022-03-29 09:34:07 +02:00
nm-netns.c platform: rename "nmp-route-manager.h" to "nmp-rules-manager.h" 2022-02-09 19:13:03 +01:00
nm-netns.h platform: rename NMPRulesManager API to NMPRouteManager 2022-02-09 19:13:03 +01:00
nm-pacrunner-manager.c core: use NM_SHUTDOWN_TIMEOUT_1500_MSEC 2022-02-24 09:38:53 +01:00
nm-pacrunner-manager.h core: rework IP configuration in NetworkManager using layer 3 configuration 2021-11-18 16:21:29 +01:00
nm-policy.c core: preserve the domain when system hostname is truncated 2022-03-09 08:34:26 +01:00
nm-policy.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-priv-helper-call.c nm-sudo: rename to nm-priv-helper 2022-01-11 21:46:55 +01:00
nm-priv-helper-call.h nm-sudo: rename to nm-priv-helper 2022-01-11 21:46:55 +01:00
nm-rfkill-manager.c core: export radio flags 2022-03-29 09:34:07 +02:00
nm-rfkill-manager.h core: export radio flags 2022-03-29 09:34:07 +02:00
nm-session-monitor.c all: prefer nm wrappers to automatically attach GSource to default context 2022-03-13 11:59:42 +01:00
nm-session-monitor.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-sleep-monitor.c format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-sleep-monitor.h all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
nm-test-utils-core.h all: avoid using global string buffer for to-string methods 2022-05-03 12:18:13 +02:00
nm-types.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
org.freedesktop.NetworkManager.conf all: move "src/" directory to "src/core/" 2021-02-08 09:56:41 +01:00
README.l3cfg.md core: rework IP configuration in NetworkManager using layer 3 configuration 2021-11-18 16:21:29 +01:00
README.md all: add some README.md files describing the purpose of our sources 2021-08-19 17:51:11 +02:00
README.next.ip-config.md core: rework IP configuration in NetworkManager using layer 3 configuration 2021-11-18 16:21:29 +01:00

core

The source code of the NetworkManager daemon.

NetworkManager is a daemon that provides a D-Bus API and a file-based API for configuring the network on a Linux host.

This is the daemon source code.