NetworkManager/src
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
..
c-list build: move c-util/nettools library from "shared/" to "src/" 2021-02-24 12:48:28 +01:00
c-rbtree build: move c-util/nettools library from "shared/" to "src/" 2021-02-24 12:48:28 +01:00
c-siphash build: move c-util/nettools library from "shared/" to "src/" 2021-02-24 12:48:28 +01:00
c-stdaux build: move c-util/nettools library from "shared/" to "src/" 2021-02-24 12:48:28 +01:00
contrib build/meson: cleanup tests 2021-02-28 18:56:08 +01:00
core iwd: Mirror NM connections to IWD network config files 2021-03-23 14:24:42 +01:00
libnm-base iwd: Mirror NM connections to IWD network config files 2021-03-23 14:24:42 +01:00
libnm-client-aux-extern build: move "clients/common/" to "src/libnmc-{base,setting}/" 2021-03-02 08:38:25 +01:00
libnm-client-impl all: split "range" variant of nm_utils_ptrarray_find_binary_search() 2021-03-16 09:55:49 +01:00
libnm-client-public libnm/doc: document the type of each LLDP attribute of libnm 2021-03-15 17:40:14 +01:00
libnm-client-test build/meson: cleanup dependencies for libnm-core-aux-intern 2021-02-28 10:42:05 +01:00
libnm-core-aux-extern build/meson: cleanup dependencies for libnm-core-aux-extern 2021-02-28 10:42:06 +01:00
libnm-core-aux-intern glib-aux: move nm_utils_route_type{2str,_by_name}() to libnm-glib-aux 2021-03-05 11:09:15 +01:00
libnm-core-impl libnm,core: support "prohibit"/"blackhole"/"unreachable" type routing rules 2021-03-23 14:19:39 +01:00
libnm-core-intern libnm,core: support "uidrange" parameter for routing rules 2021-03-23 14:19:38 +01:00
libnm-core-public libnm,core: support "uidrange" parameter for routing rules 2021-03-23 14:19:38 +01:00
libnm-glib-aux all: use nm_net_aux_rtnl_rtntype_{n2a,a2n}() helpers 2021-03-23 14:19:38 +01:00
libnm-log-core platform: make global logging cache for NMPlatform's sysctl values thread-safe 2021-03-08 22:29:01 +01:00
libnm-log-null build: remove shared/ directory 2021-02-24 12:49:13 +01:00
libnm-platform all: use nm_net_aux_rtnl_rtntype_{n2a,a2n}() helpers 2021-03-23 14:19:38 +01:00
libnm-std-aux dispatcher: set G_LOG_DOMAIN to "nm-dispatcher" 2021-03-18 16:54:00 +01:00
libnm-systemd-shared build/meson: cleanup dependencies for libnm-systemd-shared 2021-02-28 10:42:04 +01:00
libnm-udev-aux build/meson: cleanup dependencies for libnm-udev-aux 2021-02-28 10:42:04 +01:00
libnmc-base build: move "clients/common/" to "src/libnmc-{base,setting}/" 2021-03-02 08:38:25 +01:00
libnmc-setting build: move "clients/common/" to "src/libnmc-{base,setting}/" 2021-03-02 08:38:25 +01:00
libnmt-newt build: move "clients/tui/newt/" to "src/libnmt-newt/" 2021-03-02 08:38:26 +01:00
linux-headers platform: move "linux/nl802154.h" to "src/linux-headers/" 2021-03-05 11:27:15 +01:00
n-acd build: move c-util/nettools library from "shared/" to "src/" 2021-02-24 12:48:28 +01:00
n-dhcp4 build: move c-util/nettools library from "shared/" to "src/" 2021-02-24 12:48:28 +01:00
nm-cloud-setup cloud-setup: move from "clients/cloud-setup/" to "src/nm-cloud-setup/" 2021-03-15 17:10:53 +01:00
nm-dispatcher dispatcher: set G_LOG_DOMAIN to "nm-dispatcher" 2021-03-18 16:54:00 +01:00
nm-initrd-generator initrd: fix crash parsing empty rd.znet argument 2021-03-17 10:02:09 +01:00
nm-online build: move "clients/nm-online.c" to "src/nm-online/" 2021-03-02 08:38:26 +01:00
nmcli cli: move from "clients/cli/" to "src/nmcli/" 2021-03-15 17:10:54 +01:00
nmtui tui: move from "clients/tui/" to "src/nmtui/" 2021-03-15 17:10:54 +01:00
tests/client tests/client: rework error handling in "test-client.sh" script 2021-03-19 11:43:19 +01:00
meson.build tests/client: run "test-client.py" also for meson 2021-03-15 17:10:56 +01:00