summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* l3cfg: rework merging NML3ConfigData to give more control over how to mergeth/l3cfg-4Thomas Haller2020-08-053-114/+95
| | | | | | | | | | | | NML3Cfg will need more control about how to merge the NML3ConfigData instances. For example, it will need to intercept IPv4 addresses to perform ACD. For that, move the bulk of the merging code to NML3Cfg and expose the low-level function nm_l3_config_data_merge(). Also, add a callback function to nm_l3_config_data_merge(), to give control over how to merge.
* l3cfg: add more API to NML3ConfigDataThomas Haller2020-08-052-21/+213
|
* l3cfg: forward declare NML3ConfigData in "nm-types.h"Thomas Haller2020-08-052-2/+1
|
* l3cfg: add nm_l3_config_data_set_source()Thomas Haller2020-08-052-0/+23
| | | | | | It's useful to have a NML3ConfigData track the source. Previously, NMIP4Config tracks the source per MTU. But the source really belongs to the entire setting.
* l3cfg: rename NML3ConfigData instances from l3cfg to l3cdThomas Haller2020-08-054-57/+57
| | | | | The name l3cfg is nicer, but it would make you think that it's an NML3Cfg instance, when it's really NML3ConfigData.
* core: add NMIPConfig as base class for NMIP[46]ConfigThomas Haller2020-08-058-24/+213
| | | | | | | | | NMIP[46]Config will become much simpler than it is today. It's sole responsibility will be to expose current settings on D-Bus, in it's function as a NMDBusObject subtype. However, it still make sense to let them share a common base class. Add it.
* core: change NM_IS_IP_CONFIG() to have no additional argumentThomas Haller2020-08-055-9/+11
| | | | | | | NM_IS_IP_CONFIG() is a standard name for GObject related macros. Next, we will add NMIPConfig object, so this macro (and name) will have a use. Rename, and adjust the existing macro to avoid the name conflict.
* core: add nm_dbus_object_unexport_on_idle() helperThomas Haller2020-08-052-0/+30
| | | | | | | It's important that we don't unexport an object, until all our references to the path are cleared. That is not so easy to guarantee, so add a helper method to unexport on an idle handler. In many cases there is little harm in delaying an object going away.
* core: merge IPv4/IPv6 implementations of ↵Thomas Haller2020-08-054-258/+165
| | | | nm_utils_ip_{addresses,routes}_to_dbus()
* core: extract helper functions for creating address/route variant for D-BusThomas Haller2020-08-054-271/+397
| | | | | | This code will change, but in essence we will still need such a function to convert a list of addresses/routes to D-Bus. Extract the code, so it can be better reused and adjusted.
* dhcp: cleanup "nm-dhcp-utils.c"Thomas Haller2020-08-051-69/+53
| | | | | | | - use nm_utils_strsplit_set() instead of g_strsplit(). It avoids pointless extra allocations and strips empty entries. - use cleanup attribute and return early (instead of "goto error").
* dhcp/nettools: don't use systemd header "hostname-util.h" in ↵Thomas Haller2020-08-051-3/+2
| | | | | | | | | "nm-dhcp-nettools.c" We must not use systemd API directly, except via the adapter headers that expose a subset of the API. In this case, we already have our own implementation. Use it.
* shared,core: extend nm_utils_is_specific_hostname() and move to sharedThomas Haller2020-08-054-14/+116
| | | | | | | | | | | | nm_utils_is_specific_hostname() is basically to check whether the hostname is localhost (and also handle "(null)"). In that sense, it's similar to systemd's is_localhost(). Extend or variant to - be case insensitive (like is_localhost()). - accept more variants of localhost/localdomain names as special.
* shared: add nm_strcmp_ascii_case_with_data() helperThomas Haller2020-08-052-0/+10
|
* shared: add NM_STR_HAS_SUFFIX_ASCII_CASE() macroThomas Haller2020-08-051-0/+14
|
* shared: add NM_IN_STRSET_ASCII_CASE() macroThomas Haller2020-08-052-0/+30
|
* shared: make implementation for NM_IN_STRSET() more reusableThomas Haller2020-08-051-28/+32
|
* shared: add nm_strv_ptrarray_get_unsafe() helperThomas Haller2020-08-051-0/+17
| | | | | | | It's called "unsafe" because the returned pointer array is not NULL terminated. This is due to a limitation of GPtrArray which doesn't support that. If you want a NULL terminated strv array, use a GArray based API, like nm_strvarray_*().
* shared/tests: add nmtst_assert_ip_address()Thomas Haller2020-08-051-0/+8
|
* shared/tests: add static assert to ensure proper alignment of NMIPAddr structThomas Haller2020-08-051-0/+5
|
* contributing: add section about our git-notes refs/notes/bugsThomas Haller2020-08-051-0/+25
|
* contrib: use new "find-backports" script in "release.sh"Thomas Haller2020-08-051-5/+5
|
* systemd: merge branch systemd into masterBeniamino Galvani2020-08-0435-159/+555
|\
| * systemd: update code from upstream (2020-08-04)Beniamino Galvani2020-08-0437-164/+560
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a direct dump from systemd git. ====== SYSTEMD_DIR=../systemd COMMIT=f01da474d165cbcb7c1edb6c2b5bdef4a49cd0ca ( cd "$SYSTEMD_DIR" git checkout "$COMMIT" git reset --hard git clean -fdx ) git ls-files -z :/src/systemd/src/ \ :/shared/systemd/src/ \ :/shared/nm-std-aux/unaligned.h | \ xargs -0 rm -f nm_copy_sd_shared() { mkdir -p "./shared/systemd/$(dirname "$1")" cp "$SYSTEMD_DIR/$1" "./shared/systemd/$1" } nm_copy_sd_core() { mkdir -p "./src/systemd/$(dirname "$1")" cp "$SYSTEMD_DIR/$1" "./src/systemd/$1" } nm_copy_sd_stdaux() { mkdir -p "./shared/nm-std-aux/" cp "$SYSTEMD_DIR/$1" "./shared/nm-std-aux/${1##*/}" } nm_copy_sd_core "src/libsystemd-network/arp-util.c" nm_copy_sd_core "src/libsystemd-network/arp-util.h" nm_copy_sd_core "src/libsystemd-network/dhcp-identifier.c" nm_copy_sd_core "src/libsystemd-network/dhcp-identifier.h" nm_copy_sd_core "src/libsystemd-network/dhcp-internal.h" nm_copy_sd_core "src/libsystemd-network/dhcp-lease-internal.h" nm_copy_sd_core "src/libsystemd-network/dhcp-network.c" nm_copy_sd_core "src/libsystemd-network/dhcp-option.c" nm_copy_sd_core "src/libsystemd-network/dhcp-packet.c" nm_copy_sd_core "src/libsystemd-network/dhcp-protocol.h" nm_copy_sd_core "src/libsystemd-network/dhcp6-internal.h" nm_copy_sd_core "src/libsystemd-network/dhcp6-lease-internal.h" nm_copy_sd_core "src/libsystemd-network/dhcp6-network.c" nm_copy_sd_core "src/libsystemd-network/dhcp6-option.c" nm_copy_sd_core "src/libsystemd-network/dhcp6-protocol.h" nm_copy_sd_core "src/libsystemd-network/lldp-internal.h" nm_copy_sd_core "src/libsystemd-network/lldp-neighbor.c" nm_copy_sd_core "src/libsystemd-network/lldp-neighbor.h" nm_copy_sd_core "src/libsystemd-network/lldp-network.c" nm_copy_sd_core "src/libsystemd-network/lldp-network.h" nm_copy_sd_core "src/libsystemd-network/network-internal.c" nm_copy_sd_core "src/libsystemd-network/network-internal.h" nm_copy_sd_core "src/libsystemd-network/sd-dhcp-client.c" nm_copy_sd_core "src/libsystemd-network/sd-dhcp-lease.c" nm_copy_sd_core "src/libsystemd-network/sd-dhcp6-client.c" nm_copy_sd_core "src/libsystemd-network/sd-dhcp6-lease.c" nm_copy_sd_core "src/libsystemd-network/sd-ipv4acd.c" nm_copy_sd_core "src/libsystemd-network/sd-ipv4ll.c" nm_copy_sd_core "src/libsystemd-network/sd-lldp.c" nm_copy_sd_core "src/libsystemd/sd-event/event-source.h" nm_copy_sd_core "src/libsystemd/sd-event/event-util.c" nm_copy_sd_core "src/libsystemd/sd-event/event-util.h" nm_copy_sd_core "src/libsystemd/sd-event/sd-event.c" nm_copy_sd_core "src/libsystemd/sd-id128/id128-util.c" nm_copy_sd_core "src/libsystemd/sd-id128/id128-util.h" nm_copy_sd_core "src/libsystemd/sd-id128/sd-id128.c" nm_copy_sd_core "src/systemd/_sd-common.h" nm_copy_sd_core "src/systemd/sd-dhcp-client.h" nm_copy_sd_core "src/systemd/sd-dhcp-lease.h" nm_copy_sd_core "src/systemd/sd-dhcp-option.h" nm_copy_sd_core "src/systemd/sd-dhcp6-client.h" nm_copy_sd_core "src/systemd/sd-dhcp6-lease.h" nm_copy_sd_core "src/systemd/sd-dhcp6-option.h" nm_copy_sd_core "src/systemd/sd-event.h" nm_copy_sd_core "src/systemd/sd-id128.h" nm_copy_sd_core "src/systemd/sd-ipv4acd.h" nm_copy_sd_core "src/systemd/sd-ipv4ll.h" nm_copy_sd_core "src/systemd/sd-lldp.h" nm_copy_sd_core "src/systemd/sd-ndisc.h" nm_copy_sd_shared "src/basic/alloc-util.c" nm_copy_sd_shared "src/basic/alloc-util.h" nm_copy_sd_shared "src/basic/async.h" nm_copy_sd_shared "src/basic/cgroup-util.h" nm_copy_sd_shared "src/basic/env-file.c" nm_copy_sd_shared "src/basic/env-file.h" nm_copy_sd_shared "src/basic/env-util.c" nm_copy_sd_shared "src/basic/env-util.h" nm_copy_sd_shared "src/basic/errno-util.h" nm_copy_sd_shared "src/basic/escape.c" nm_copy_sd_shared "src/basic/escape.h" nm_copy_sd_shared "src/basic/ether-addr-util.c" nm_copy_sd_shared "src/basic/ether-addr-util.h" nm_copy_sd_shared "src/basic/extract-word.c" nm_copy_sd_shared "src/basic/extract-word.h" nm_copy_sd_shared "src/basic/fd-util.c" nm_copy_sd_shared "src/basic/fd-util.h" nm_copy_sd_shared "src/basic/fileio.c" nm_copy_sd_shared "src/basic/fileio.h" nm_copy_sd_shared "src/basic/format-util.c" nm_copy_sd_shared "src/basic/format-util.h" nm_copy_sd_shared "src/basic/fs-util.c" nm_copy_sd_shared "src/basic/fs-util.h" nm_copy_sd_shared "src/basic/hash-funcs.c" nm_copy_sd_shared "src/basic/hash-funcs.h" nm_copy_sd_shared "src/basic/hashmap.c" nm_copy_sd_shared "src/basic/hashmap.h" nm_copy_sd_shared "src/basic/hexdecoct.c" nm_copy_sd_shared "src/basic/hexdecoct.h" nm_copy_sd_shared "src/basic/hostname-util.c" nm_copy_sd_shared "src/basic/hostname-util.h" nm_copy_sd_shared "src/basic/in-addr-util.c" nm_copy_sd_shared "src/basic/in-addr-util.h" nm_copy_sd_shared "src/basic/io-util.c" nm_copy_sd_shared "src/basic/io-util.h" nm_copy_sd_shared "src/basic/list.h" nm_copy_sd_shared "src/basic/log.h" nm_copy_sd_shared "src/basic/macro.h" nm_copy_sd_shared "src/basic/memory-util.c" nm_copy_sd_shared "src/basic/memory-util.h" nm_copy_sd_shared "src/basic/mempool.c" nm_copy_sd_shared "src/basic/mempool.h" nm_copy_sd_shared "src/basic/missing_fcntl.h" nm_copy_sd_shared "src/basic/missing_random.h" nm_copy_sd_shared "src/basic/missing_socket.h" nm_copy_sd_shared "src/basic/missing_stat.h" nm_copy_sd_shared "src/basic/missing_syscall.h" nm_copy_sd_shared "src/basic/missing_type.h" nm_copy_sd_shared "src/basic/parse-util.c" nm_copy_sd_shared "src/basic/parse-util.h" nm_copy_sd_shared "src/basic/path-util.c" nm_copy_sd_shared "src/basic/path-util.h" nm_copy_sd_shared "src/basic/prioq.c" nm_copy_sd_shared "src/basic/prioq.h" nm_copy_sd_shared "src/basic/process-util.c" nm_copy_sd_shared "src/basic/process-util.h" nm_copy_sd_shared "src/basic/random-util.c" nm_copy_sd_shared "src/basic/random-util.h" nm_copy_sd_shared "src/basic/set.h" nm_copy_sd_shared "src/basic/signal-util.c" nm_copy_sd_shared "src/basic/signal-util.h" nm_copy_sd_shared "src/basic/siphash24.h" nm_copy_sd_shared "src/basic/socket-util.c" nm_copy_sd_shared "src/basic/socket-util.h" nm_copy_sd_shared "src/basic/sort-util.h" nm_copy_sd_shared "src/basic/sparse-endian.h" nm_copy_sd_shared "src/basic/stat-util.c" nm_copy_sd_shared "src/basic/stat-util.h" nm_copy_sd_shared "src/basic/stdio-util.h" nm_copy_sd_shared "src/basic/string-table.c" nm_copy_sd_shared "src/basic/string-table.h" nm_copy_sd_shared "src/basic/string-util.c" nm_copy_sd_shared "src/basic/string-util.h" nm_copy_sd_shared "src/basic/strv.c" nm_copy_sd_shared "src/basic/strv.h" nm_copy_sd_shared "src/basic/strxcpyx.c" nm_copy_sd_shared "src/basic/strxcpyx.h" nm_copy_sd_shared "src/basic/time-util.c" nm_copy_sd_shared "src/basic/time-util.h" nm_copy_sd_shared "src/basic/tmpfile-util.c" nm_copy_sd_shared "src/basic/tmpfile-util.h" nm_copy_sd_shared "src/basic/umask-util.h" nm_copy_sd_shared "src/basic/user-util.h" nm_copy_sd_shared "src/basic/utf8.c" nm_copy_sd_shared "src/basic/utf8.h" nm_copy_sd_shared "src/basic/util.c" nm_copy_sd_shared "src/basic/util.h" nm_copy_sd_shared "src/shared/dns-domain.c" nm_copy_sd_shared "src/shared/dns-domain.h" nm_copy_sd_shared "src/shared/web-util.c" nm_copy_sd_shared "src/shared/web-util.h" nm_copy_sd_stdaux "src/basic/unaligned.h"
* | n-dhcp4: fix BPF filter endianness issueBeniamino Galvani2020-08-041-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The BPF filter takes the byte containing IP Flags and performs a bitwise AND with "ntohs(IP_MF | IP_OFFMASK)". On little-endian architectures the IP_MF flag (0x20) is ANDed with 0xFF3F and so the presence of the flag is correctly detected ignoring other flags as IP_DF (0x40) or IP_RF (0x80). On big-endian, "ntohs(IP_MF | IP_OFFMASK)" is 0x3FFF and so the filter wrongly checks the presence of *any* flags. Therefore, a packet with the DF flag set is dropped. Instead, take the two bytes containing flags and offset: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ and verify that IP_MF and the offset are zero. Fixes: e43b1791a382 ('Merge commit 'e23b3c9c3ac86b065eef002fa5c4321cc4a87df2' as 'shared/n-dhcp4'') https://bugzilla.redhat.com/show_bug.cgi?id=1861488 https://github.com/nettools/n-dhcp4/pull/19 (cherry picked from commit 03d38e83e558802a82cb0e4847cb1f1ef75ccd16)
* | all: changes from python 2 syntax to python3 and removing dead codeSayed Shah2020-08-0315-120/+70
| | | | | | | | | | | | | | There were python 2 methods that are not used anymore so now it's in python 3. Added helper fuctions so that the code is more clear https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/540
* | wifi: avoid crash due to incomplete Wi-Fi API infoThomas Haller2020-08-031-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In this case, GetAll failed with "Timeout was reached". We still create a dummy BSS info, because we kept track of the object to start with. That way, we don't simply want to ignore the failure, because NMDeviceWifi might track this NMWifiAP already, and we may need an update (even if we failed to fetch the requested information). However, that later leads to a crash, because NMDeviceWifi expect the BSSID present then. Avoid that, by don't processing such APs. #0 g_logv (log_domain=0x7f2ac10a60a9 "NetworkManager", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=<optimized out>) at ../glib/gmessages.c:1377 #1 0x00007f2acf152233 in g_log (log_domain=log_domain@entry=0x7f2ac10a60a9 "NetworkManager", log_level=log_level@entry=G_LOG_LEVEL_CRITICAL, format=format@entry=0x7f2acf1a46ff "%s: assertion '%s' failed") at ../glib/gmessages.c:1415 #2 0x00007f2acf152a2d in g_return_if_fail_warning (log_domain=log_domain@entry=0x7f2ac10a60a9 "NetworkManager", pretty_function=pretty_function@entry=0x7f2ac10a9e70 <__func__.50> "try_fill_ssid_for_hidden_ap", expression=expression@entry=0x7f2ac10a86d0 "bssid") at ../glib/gmessages.c:2771 #3 0x00007f2ac108a402 in try_fill_ssid_for_hidden_ap (ap=0x5569978b61c0 [NMWifiAP], self=0x55699786ea00 [NMDeviceWifi]) at src/devices/wifi/nm-device-wifi.c:1883 #4 supplicant_iface_bss_changed_cb (iface=0x556997777260 [NMSupplicantInterface], bss_info=0x7f2ab4028f00, is_present=1, self=0x55699786ea00 [NMDeviceWifi]) at src/devices/wifi/nm-device-wifi.c:1946 #5 0x00007f2ace246af0 in ffi_call_unix64 () at ../src/x86/unix64.S:76 #6 0x00007f2ace2462ab in ffi_call (cif=cif@entry=0x7ffd9c107c90, fn=fn@entry=0x7f2ac1089e80 <supplicant_iface_bss_changed_cb>, rvalue=<optimized out>, avalue=avalue@entry=0x7ffd9c107ba0) at ../src/x86/ffi64.c:525 #7 0x00007f2acf23e87a in g_cclosure_marshal_generic_va (closure=<optimized out>, return_value=<optimized out>, instance=<optimized out>, args_list=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=<optimized out>) at ../gobject/gclosure.c:1614 #8 0x00007f2acf23dae6 in _g_closure_invoke_va (closure=closure@entry=0x5569978a0cc0, return_value=return_value@entry=0x0, instance=instance@entry=0x556997777260, args=args@entry=0x7ffd9c107f00, n_params=2, param_types=0x55699775b990) at ../gobject/gclosure.c:873 #9 0x00007f2acf2566e9 in g_signal_emit_valist (instance=0x556997777260, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7ffd9c107f00) at ../gobject/gsignal.c:3407 #10 0x00007f2acf256c63 in g_signal_emit (instance=instance@entry=0x556997777260, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3554 #11 0x00005569972ece61 in _bss_info_changed_emit (self=self@entry=0x556997777260 [NMSupplicantInterface], bss_info=bss_info@entry=0x7f2ab4028f00, is_present=is_present@entry=1) at src/supplicant/nm-supplicant-interface.c:555 #12 0x00005569972ed3a0 in _bss_info_properties_changed (self=0x556997777260 [NMSupplicantInterface], bss_info=0x7f2ab4028f00, properties=<optimized out>, initial=<optimized out>) at src/supplicant/nm-supplicant-interface.c:758 #13 0x00005569972f756b in _bss_info_get_all_cb (result=0x0, error=<optimized out>, user_data=0x7f2ab4028f00) at src/supplicant/nm-supplicant-interface.c:784 #14 0x0000556997217bc1 in _nm_dbus_connection_call_default_cb (source=0x5569977480c0 [GDBusConnection], res=<optimized out>, user_data=user_data@entry=0x556997855d50) at shared/nm-glib-aux/nm-dbus-aux.c:74 #15 0x00007f2acf339e4a in g_task_return_now (task=task@entry=0x7f2ab4003f00 [GTask]) at ../gio/gtask.c:1214 #16 0x00007f2acf33aa3d in g_task_return (task=0x7f2ab4003f00 [GTask], type=<optimized out>) at ../gio/gtask.c:1283 #17 0x00007f2acf33b4fe in g_task_return (type=G_TASK_RETURN_ERROR, task=<optimized out>) at ../gio/gtask.c:1861 #18 g_task_return_error (task=<optimized out>, error=<optimized out>) at ../gio/gtask.c:1867 #19 0x0000556997893f40 in () #20 0x3a85d39adfae7f00 in () #21 0x00007f2ab4003cc0 in () #22 0x00007f2acf396460 in g_dbus_connection_call_done () at ../gio/gdbusconnection.c:2059 #23 0x00007f2ab4003f00 in () #24 0x0000000000000086 in () #25 0x0000000000000018 in () #26 0x00007f2acf339e4a in g_task_return_now (task=0x7f2ab4003f00 [GTask], task@entry=0x7f2ab4003cc0 [GTask]) at ../gio/gtask.c:1214 #27 0x00007f2acf33aa3d in g_task_return (task=0x7f2ab4003cc0 [GTask], type=<optimized out>) at ../gio/gtask.c:1283 #28 0x00007f2acf33b4fe in g_task_return (type=G_TASK_RETURN_ERROR, task=<optimized out>) at ../gio/gtask.c:1861 #29 g_task_return_error (task=<optimized out>, error=<optimized out>) at ../gio/gtask.c:1867 #30 0x0000003000000028 in () #31 0x00007ffd9c108290 in () Fixes: b83f07916a54 ('supplicant: large rework of wpa_supplicant handling')
* | l3cfg: merge branch 'th/l3cfg-3'Thomas Haller2020-07-3120-533/+2617
|\ \ | | | | | | | | | https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/591
| * | l3cfg: track externally removed addresses/routesThomas Haller2020-07-315-32/+390
| | | | | | | | | | | | | | | | | | | | | We want to allow the user to externally remove IP addresses and routes, and NetworkManager not re-adding them until a full reapply happens. For that, we need to keep track of IP addresses that were present, but no longer are.
| * | l3cfg: add support for tracking routes that are currently unavailableThomas Haller2020-07-312-6/+254
| | | | | | | | | | | | | | | | | | It doesn't yet do anything. More is needed. In particular, we need to keep track of routes that were externally deleted, then we can merge that with routes that are known to be currently unavailable.
| * | l3cfg: add nm_l3cfg_platform_commit()Thomas Haller2020-07-314-1/+85
| | |
| * | l3cfg: track route-table sync mode in NML3ConfigDataThomas Haller2020-07-313-7/+45
| | | | | | | | | | | | | | | Currently, we track the route table sync mode outside of the settings. But as it depends on configuration, we should track it in NML3ConfigData.
| * | l3cfg: add nm_l3_config_data_add_dependent_routes()Thomas Haller2020-07-313-0/+350
| | |
| * | l3cfg: support tracking NML3ConfigData in NML3CfgThomas Haller2020-07-314-31/+625
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NML3Cfg is supposed to manage an interface (by ifindex). As such, it later will itself implement DHCP and similar addressing methods. However, in various cases we get additional IP configuration from external (e.g. from a VPN connection). To support that, let NML3Cfg track any number of NML3ConfigData instances.
| * | l3cfg: support more properties in NML3ConfigDataThomas Haller2020-07-312-25/+140
| | |
| * | l3cfg: add flags for affecting how add-object works for NML3ConfigDataThomas Haller2020-07-312-47/+102
| | | | | | | | | | | | | | | We need a way to say don't touch the existing object during add. Add flags for that.
| * | l3cfg: add nm_l3_config_data_cmp()/nm_l3_config_data_equal()Thomas Haller2020-07-312-0/+108
| | |
| * | l3cfg: add NM_IS_L3_CONFIG_DATA() for asserting valid NML3ConfigData instancesThomas Haller2020-07-312-25/+38
| | |
| * | platform: move full-sync parameter away from nm_platform_ip_address_sync()Thomas Haller2020-07-312-24/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This parameter really affects whether a candidate in @addresses_prune will be considered or not. Since we already construct the prune list separately, this parameter is at the wrong place. This requires us to re-implement nm_platform_lookup_clone(). While the function has a predicate callback that we could use for this purpose, I will later add a separate predicate argument to nm_platform_ip_address_get_prune_list(). When that happens, it would be cumbersome to chain the two function pointers. Instead, reimplement nm_platform_lookup_clone().
| * | platform: allow injecting the list of addresses to pruneThomas Haller2020-07-312-13/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | Follow the pattern of nm_platform_ip_route_sync(), which also accepts the list of addresses that are potential candidates for removal. This allows the caller to carefully construct the list of addresses which are possibly removed, so that sync (possibly) only adds new addresses.
| * | platform: minor cleanup in nm_platform_ip_address_sync()Thomas Haller2020-07-311-11/+10
| | | | | | | | | | | | | | | The known address must not have a zero lifetime, because we filter those addresses out first.
| * | platform: merge nm_platform_ip_address_sync() implementationsThomas Haller2020-07-312-277/+253
| | | | | | | | | | | | | | | | | | | | | | | | It is beneficial to have both address families side by side. A lot of operations are exactly the same, so it's preferable to see that. Especially in the cases where they differ, it's preferable to see how they differ (and why).
| * | platform: add NMP_OBJECT_TYPE_TO_ADDR_FAMILY() helperThomas Haller2020-07-312-10/+10
| | |
| * | core: inline _add_local_route_from_addr[46] helper functionThomas Haller2020-07-312-68/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In this case, the functions are only called once. Having a helper function that has no clear, unique purpose does not necessarily make the code simpler. Also, NMIP[46]Config is going to change completely. It will thereby move this code (and change it). Doing that is simpler, if we see all the relevant parts in one place.
| * | device: use nm_utils_ip4_address_is_link_local() in ↵Thomas Haller2020-07-311-4/+1
| | | | | | | | | | | | nm_device_handle_ipv4ll_event()
| * | core: use nm_utils_ip4_address_is_zeronet() helperThomas Haller2020-07-311-10/+1
| | |
| * | core: add nm_utils_ip4_address_is_zeronet() helperThomas Haller2020-07-311-0/+7
| | |
| * | core: add nm_utils_ip_address_same_prefix_cmp() helperThomas Haller2020-07-311-0/+22
| | |
| * | platform: add nmp_object_indirect_id_*() helpersThomas Haller2020-07-312-0/+22
| | |
| * | platform: add static assertion to check NMPlatformIP{Address,Route} struct ↵Thomas Haller2020-07-311-0/+8
| | | | | | | | | | | | layout