NetworkManager/src/core
Andrew Zaborowski 4229c97012
iwd: Mirror NM connections to IWD network config files
Watch for NMSettingConnection changes and creation signals and convert
them to IWD format and write them to the configured IWD profile storage
directory.  The logic is off by default and gets enabled when the new
iwd-config-path setting in nm.conf's [main] group is set to a path to
an existing directory.

The idea here is that when a user edits an NM connection profile, the
change is immediately mirrored in IWD since IWD watches its
configuration directory using inotify.  This way NM clients can be used
to edit 802.1x settings, the PSK passphrase or the SSID -- changes that
would previously not take effect with the IWD backend.

Some precautions are taken to not make connections owned by a user
available to other users, such connections are not converted at all.
In all other cases where a connection cannot be converted sufficiently
well to the IWD format, for various reasons, we also give up and not
mirror these connections.

Due to IWD limitations and design differences with NM this logic has
many problems where it may not do its task properly.  It's meant to work
on a best-effort and "better than nothing" basis, but it should be safe
in that it shouldn't delete users data or reveal secrets, etc.  The most
obvious limitation is that there can be multiple NM connections
referring to the same SSID+Security tuple and only one IWD profile can
exist because the filename is based on only the SSID+Security type.  We
already had one NM connection selected for each IWD KnownNetwork and
referenced by a pointer, so we ignore changes in NM connections other
than that selected one.
2021-03-23 14:24:42 +01:00
..
devices iwd: Mirror NM connections to IWD network config files 2021-03-23 14:24:42 +01:00
dhcp platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
dns platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
dnsmasq platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
ndisc platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
platform platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
ppp platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
settings all: use NM_IW_ESSID_MAX_SIZE define instead of literally 32 2021-03-18 11:38:21 +01:00
supplicant platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
systemd build/meson: cleanup dependencies for libnm-core-impl 2021-02-28 10:42:05 +01:00
tests platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
vpn platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
main-utils.c all: add "src/core/nm-default-daemon.h" as replacement for "nm-default.h" 2021-02-09 12:38:18 +01:00
main-utils.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
main.c platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
meson.build initrd: move "src/core/initrd/" to "src/nm-initrd-generator/" 2021-03-15 17:10:53 +01:00
NetworkManagerUtils.c libnm,core: support "uidrange" parameter for routing rules 2021-03-23 14:19:38 +01:00
NetworkManagerUtils.h platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
nm-act-request.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-act-request.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-active-connection.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-active-connection.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-audit-manager.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-audit-manager.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-auth-manager.c 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-auth-manager.h build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-auth-utils.c 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-auth-utils.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-checkpoint-manager.c all: add "src/core/nm-default-daemon.h" as replacement for "nm-default.h" 2021-02-09 12:38:18 +01:00
nm-checkpoint-manager.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-checkpoint.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-checkpoint.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-config-data.c iwd: Mirror NM connections to IWD network config files 2021-03-23 14:24:42 +01:00
nm-config-data.h iwd: Mirror NM connections to IWD network config files 2021-03-23 14:24:42 +01:00
nm-config.c iwd: Mirror NM connections to IWD network config files 2021-03-23 14:24:42 +01:00
nm-config.h config: add "nm-base/nm-config-base.h" 2021-03-15 17:10:52 +01:00
nm-connectivity.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-connectivity.h core: move NMPObjectType to "libnm-platform/nmp-base.h" 2021-03-05 11:27:15 +01:00
nm-core-utils.c platform: move nm_utils_modprobe() to libnm-platform 2021-03-05 11:27:15 +01:00
nm-core-utils.h platform: move nm_utils_modprobe() to libnm-platform 2021-03-05 11:27:15 +01:00
nm-dbus-manager.c build: move "shared/nm-std-aux" to "src/libnm-std-aux" 2021-02-24 12:48:24 +01:00
nm-dbus-manager.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-dbus-object.c all: add "src/core/nm-default-daemon.h" as replacement for "nm-default.h" 2021-02-09 12:38:18 +01:00
nm-dbus-object.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-dbus-utils.c all: add "src/core/nm-default-daemon.h" as replacement for "nm-default.h" 2021-02-09 12:38:18 +01:00
nm-dbus-utils.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-dcb.c platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
nm-dcb.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01: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 all: add "src/core/nm-default-daemon.h" as replacement for "nm-default.h" 2021-02-09 12:38:18 +01:00
nm-dhcp-config.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-dispatcher.c platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
nm-dispatcher.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-firewall-manager.c 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-firewall-manager.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-hostname-manager.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-hostname-manager.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-iface-helper.c platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
nm-ip-config.c all: add "src/core/nm-default-daemon.h" as replacement for "nm-default.h" 2021-02-09 12:38:18 +01:00
nm-ip-config.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-ip4-config.c platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
nm-ip4-config.h platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
nm-ip6-config.c platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
nm-ip6-config.h platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
nm-keep-alive.c 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-keep-alive.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-l3-config-data.c platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
nm-l3-config-data.h platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
nm-l3-ipv4ll.c all: add "src/core/nm-default-daemon.h" as replacement for "nm-default.h" 2021-02-09 12:38:18 +01:00
nm-l3-ipv4ll.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-l3cfg.c platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
nm-l3cfg.h platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
nm-manager.c platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
nm-manager.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-netns.c platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
nm-netns.h platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
nm-pacrunner-manager.c platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
nm-pacrunner-manager.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-policy.c platform: move more platform code to src/libnm-platform/ 2021-03-05 11:27:16 +01:00
nm-policy.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-proxy-config.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-proxy-config.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-rfkill-manager.c build: move "shared/nm-{base,udev-aux}" to "src/libnm-{base,udev-aux}" 2021-02-24 12:48:19 +01:00
nm-rfkill-manager.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-session-monitor.c all: add "src/core/nm-default-daemon.h" as replacement for "nm-default.h" 2021-02-09 12:38:18 +01:00
nm-session-monitor.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-sleep-monitor.c build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00
nm-sleep-monitor.h all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00
nm-test-utils-core.h tests: move nmtst_init_with_logging() to "libnm-glib-aux/nm-test-utils.h" 2021-03-15 17:10:52 +01:00
nm-types.h core: move NMPObjectType to "libnm-platform/nmp-base.h" 2021-03-05 11:27:15 +01:00
org.freedesktop.NetworkManager.conf all: move "src/" directory to "src/core/" 2021-02-04 09:45:55 +01:00