summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* core: use GSource for timeout in nm_utils_kill_child_async()th/kill-child-log-warnThomas Haller2022-03-111-9/+8
|
* core: log warning when sending SIGKILL in nm_utils_kill_child_async()Thomas Haller2022-03-112-8/+8
| | | | | Processes really should wrap up in a timely manner. If they don't, then something bad happened somewhere and we should log a warning about that.
* libnm: fix assertion in NMClient checking for current main contextThomas Haller2022-03-111-2/+2
| | | | | | | | | | | | | | NMClient is strongly tied to the GMainContext with which it was created. Several operations must only be called from within the context. There was an assertion for that. However, creating (and init_async()) should be allowed to call not from within the GMainContext. So if the current context has no owner (is not acquired), then it's also OK. Fix the assertion for that. Fixes: ce0e898fb476 ('libnm: refactor caching of D-Bus objects in NMClient')
* glib-aux: add nm_g_main_context_can_acquire() helperThomas Haller2022-03-112-0/+22
|
* core/trivial: add code comment to nm_utils_stable_id_parse()Thomas Haller2022-03-111-1/+6
|
* core: use NM_STR_HAS_PREFIX() in nm_utils_stable_id_parse()Thomas Haller2022-03-111-1/+1
| | | | | NM_STR_HAS_PREFIX() expands to one `strncpy()`, with the length being a compile time constant. It's faster than calling through glib.
* core: rename nm_utils_host_id_get_timestamp_ns() to "nsec"Thomas Haller2022-03-113-15/+15
| | | | | We change more and more to prefer "nsec" (and "usec", "msec", and "sec") as abbreviations, instead of "ns" (and "us", "ms", "s"). Rename.
* core/trivial: reword code comment about fake host-id timestampThomas Haller2022-03-111-2/+9
|
* libnm/docs: add reference to secret-key in description for stable-idThomas Haller2022-03-113-3/+4
|
* core/dhcp: use gs_free_error in NMDhcpDhcpcd's ip4_start()Thomas Haller2022-03-091-2/+1
| | | | It just seems less error prone. Use the cleanup attribute.
* core/dhcp: fix uninitialized GError in NMDhcpDhcpcd's ip4_start()Thomas Haller2022-03-091-1/+1
| | | | | | Found with `git grep 'GError.*[^,)];'| grep ' *= *NULL;' -v` Fixes: a2abd15fe001 ('DHCP: Support dhcpcd-9.x')
* libnm: fix uninitialized GError in NMClient's _init_start_cancel_on_idle_cb()Thomas Haller2022-03-091-2/+2
| | | | | | Found with `git grep 'GError.*[^,)];'| grep ' *= *NULL;' -v` Fixes: ce0e898fb476 ('libnm: refactor caching of D-Bus objects in NMClient')
* core/team: fix leak and uninitialized GError in NMDeviceTeam's constructed()Thomas Haller2022-03-091-1/+1
| | | | | | Found with `git grep 'GError.*[^,)];'| grep ' *= *NULL;' -v` Fixes: d689380cfc57 ('team: support operation without D-Bus')
* contrib/checkpatch: try to warn about uninitialized GError variablesThomas Haller2022-03-091-0/+1
| | | | | | | | | | | | | | When we have a GError* variable on the stack, we usually want to pass it on to function that can fail. In that case, the variable MUST be initialized to NULL. This is an easy mistake to make. Note that this check still can have lots of false positives, for example, if you have a struct with an GError field. In that case, you would need to ensure that the entire struct is initialized. Ignore the warning then. Also, the check misses if you declare multiple variables on one line. But that is already discouraged by our style.
* release: bump version to 1.37.2 (development)1.37.2-devBeniamino Galvani2022-03-092-2/+2
|
* NEWS: updateBeniamino Galvani2022-03-091-0/+2
|
* libnm: fix crash during the restart after killedWen Liang2022-03-091-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When cloud-init job (metadata service crawler) starts, it sends the SIGTERM signal to nm-cloud-setup and force the nm-cloud-setup to restart, however, because the error is not initialized as NULL in `_init_start_cancelled_cb()` before it is set, nm-cloud-setup will hit a dumped core. TO fix it, initialize the error as NULL in `_init_start_cancelled_cb()`. https://bugzilla.redhat.com/show_bug.cgi?id=2027674 Fixes: ce0e898fb476 ('libnm: refactor caching of D-Bus objects in NMClient') Backtrace: #0 g_logv (log_domain=0x7f833a872071 "GLib", log_level=G_LOG_LEVEL_WARNING, format=<optimized out>, args=<optimized out>) at ../glib/gmessages.c:1413 #1 0x00007f833a81f043 in g_log (log_domain=<optimized out>, log_level=<optimized out>, format=<optimized out>) at ../glib/gmessages.c:1451 #2 0x00007f833ab97230 in nm_utils_error_set_cancelled (is_disposing=<optimized out>, instance_name=<optimized out>, error=0x7ffff79cb980) at src/libnm-glib-aux/nm-shared-utils.c:2599 #3 nm_utils_error_set_cancelled (is_disposing=0, instance_name=0x0, error=0x7ffff79cb980) at src/libnm-glib-aux/nm-shared-utils.c:2590 #4 _init_start_cancelled_cb (cancellable=<optimized out>, user_data=0x5640ca292150) at src/libnm-client-impl/nm-client.c:7324 #5 _init_start_cancelled_cb (cancellable=<optimized out>, user_data=0x5640ca292150) at src/libnm-client-impl/nm-client.c:7307 #6 0x00007f833a93094a in _g_closure_invoke_va (param_types=0x0, n_params=<optimized out>, args=0x7ffff79cbb40, instance=0x5640ca267020, return_value=0x0, closure=0x5640ca29d430) at ../gobject/gclosure.c:873 #7 g_signal_emit_valist (instance=0x5640ca267020, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7ffff79cbb40) at ../gobject/gsignal.c:3406 #8 0x00007f833a930a93 in g_signal_emit (instance=instance@entry=0x5640ca267020, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3553 #9 0x00007f833a9a6475 in g_cancellable_cancel (cancellable=0x5640ca267020) at ../gio/gcancellable.c:513 #10 g_cancellable_cancel (cancellable=0x5640ca267020) at ../gio/gcancellable.c:487 #11 0x00005640ca1a8bd4 in sigterm_handler (user_data=0x5640ca267020) at src/nm-cloud-setup/main.c:599 #12 0x00007f833a819d4f in g_main_dispatch (context=0x5640ca268ef0) at ../glib/gmain.c:3337 #13 g_main_context_dispatch (context=0x5640ca268ef0) at ../glib/gmain.c:4055 #14 0x00007f833a86e608 in g_main_context_iterate.constprop.0 (context=0x5640ca268ef0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4131 #15 0x00007f833a819463 in g_main_loop_run (loop=0x5640ca24fdb0) at ../glib/gmain.c:4329 #16 0x00005640ca1a6d04 in nmc_client_new_waitsync (cancellable=0x5640ca267020, out_nmc=0x7ffff79cbfa0, error=0x7ffff79cbf98, first_property_name=0x5640ca1b11db "instance-flags", first_property_name=0x5640ca1b11db "instance-flags") at src/libnm-client-aux-extern/nm-libnm-aux.c:129 #17 0x00005640ca1a3863 in main (argc=1, argv=<optimized out>) at src/nm-cloud-setup/main.c:639
* libnm: fix an assert in nm_client_get_capabilities()Lubomir Rintel2022-03-091-1/+0
| | | | | | | The length argument is optional. That makes sense, because the returned array is NUL-terminated. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1136
* cli: document connection/device-external colorsLubomir Rintel2022-03-091-0/+14
| | | | | | | | These were added without documentation. Fixes: 16cff1149a76 ('core: fix taking over external connection after restart') https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1137
* rpm: fix autotools build options for default pluginsBeniamino Galvani2022-03-091-1/+3
| | | | Fixes: bb832641ebb6 ('rpm: remove build-time default for plugins on newer distros')
* po: update Ukrainian (uk) translationYuri Chornoivan2022-03-091-2133/+2224
| | | | https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1140
* std-aux: add code comment for NM_STR_HAS_PREFIX()/NM_STR_HAS_SUFFIX()Thomas Haller2022-03-091-0/+32
|
* merge: branch 'bg/dhcp-overlong-hostname'Beniamino Galvani2022-03-0911-64/+186
|\ | | | | | | | | https://bugzilla.redhat.com/show_bug.cgi?id=2033643 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/572
| * core: preserve the domain when system hostname is truncatedbg/dhcp-overlong-hostnameBeniamino Galvani2022-03-097-38/+44
| | | | | | | | | | | | | | | | | | | | Pass the full hostname to the DNS manager, so that the domain gets added to resolv.conf even when the hostname was truncated. Note that "hostname" argument for plugins's update() function is currently unused. Don't remove that because it can be potentially useful to set a global search domain based on the hostname, but change it to carry the domain directly.
| * core: shorten hostname when too longBeniamino Galvani2022-03-091-15/+35
| | | | | | | | If the hostname received via DHCP is too long, shorten it.
| * core: add nm_utils_shorten_hostname()Beniamino Galvani2022-03-093-0/+106
| | | | | | | | | | Add a function to shorten a overlong hostname, truncating it to the first dot or 64 characters.
| * dns: drop nm_dns_manager_set_initial_hostname()Beniamino Galvani2022-03-093-11/+1
|/ | | | | It can be replaced by nm_dns_manager_set_hostname() with skip_update=TRUE.
* cli: don't ignore errors from setting property aliasesLubomir Rintel2022-03-081-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | Before, we would just ignore the errors when we passed an invalid value to a property alias: $ nmcli c add type ethernet mac Hello Connection 'ethernet-1' (242eec76-7147-411a-a50b-336cf5bc8137) successfully added. $ nmcli c show 242eec76-7147-411a-a50b-336cf5bc8137 |grep 802-3-ethernet.mac-address: 802-3-ethernet.mac-address: -- ...or crash, because the GError would still be around: $ nmcli c add type ethernet mac Hello ethernet.mac-address World (process:734670): GLib-WARNING **: 14:52:51.436: GError set over the top of a previous GError or uninitialized memory. This indicates a bug in someone's code. You must ensure an error is NULL before it's set. The overwriting error message was: Error: failed to modify 802-3-ethernet.mac-address: 'World' is not a valid Ethernet MAC. Error: failed to modify 802-3-ethernet.mac-address: 'Hello' is not a valid Ethernet MAC. Now we catch it early enough: $ nmcli c add type ethernet mac Hello Error: failed to modify 802-3-ethernet.mac-address: 'Hello' is not a valid Ethernet MAC. Fixes: 40032f461415 ('cli: fix resetting values via property alias') https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1134
* nm-online: set the timeout upper limit to 2073600 secondsFernando Fernandez Mancera2022-03-071-2/+3
| | | | | | | In some situations 3600 seconds is not enough. The upper limit should be 2073600 seconds, 24 days. In addition, this limit should be documented. https://bugzilla.redhat.com/show_bug.cgi?id=2025617
* platform: merge branch 'egrumbach:intel-vnd-commands'Thomas Haller2022-03-079-0/+305
|\ | | | | | | https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1126
| * platform: add Intel vendor command to get the device from CSMEEmmanuel Grumbach2022-03-077-0/+58
| | | | | | | | | | This will allow us to let CSME know that we are ready to connect and it can remove the "OS_NOT_OWNER" rfkill.
| * platform: add the plumbing to get the CSME connection infoEmmanuel Grumbach2022-03-077-0/+140
| | | | | | | | | | | | This allows to fetch the information about the AP that CSME if connected to. It'll allow us to connect to the exact same AP and shaving off the scan from the connection, improving the connection time.
| * linux-headers: add nl80211-vnd-intel.h kernel headerEmmanuel Grumbach2022-03-072-0/+107
|/ | | | | | | Take from include/uapi/linux/nl80211-vnd-intel.h Linux 5.17-rc5, cfb92440ee71adcc2105b0890bb01ac3cddb8507 March 1, 2022
* dhcp6: fix setting ifindex in nm_dhcp_utils_merge_new_dhcp6_lease()Thomas Haller2022-03-071-1/+1
| | | | | | | | | | | nm_l3_config_data_new_clone() takes non-positive ifindex to use the ifindex of the l3cd. But it also asserts that the ifindex is not negative. Fix that assertion failure, by setting the ifindex to zero. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/907 Fixes: 58287cbcc0c8 ('core: rework IP configuration in NetworkManager using layer 3 configuration')
* merge: branch 'bg/ifcfg-rh-split'Beniamino Galvani2022-03-066-35/+92
|\ | | | | | | https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1116
| * rpm: split ifcfg-rh settings plugin into a separate packageBeniamino Galvani2022-03-061-1/+41
| | | | | | | | | | | | | | Split the ifcfg-rh settings plugin into a separate package, so that it will not be in new installations. https://bugzilla.redhat.com/show_bug.cgi?id=2045875
| * rpm: remove build-time default for plugins on newer distrosBeniamino Galvani2022-03-061-3/+5
| | | | | | | | | | On newer distros, remove the build-time default for settings plugins. All plugins found in the plugin directory will be used.
| * core: fall back to loading all known settings pluginsBeniamino Galvani2022-03-065-27/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently it is possible to specify a list of default settings plugins to be used when configuration doesn't contain the main.plugins key. We want to add a mechanism that allows to automatically load any plugin found in the plugins directory without needing configuration. This mechanism is useful when plugins are shipped in a different, optional subpackage, to automatically use them. With such mechanism, the actual list of plugins will be determined (in order of evaluation): 1. via explicit user configuration in /etc, if any 2. via distro configuration in /usr, if any 3. using the build-time default, if any 4. looking for known plugins in /usr/lib
| * build: remove unused variable from configure.acBeniamino Galvani2022-03-061-4/+0
|/
* libnmc: Remove verbose loggingTill Maas2022-03-041-1/+0
| | | | | | | | | | | | Don't log the failure to spawn the auth dialog. This is polluting the terminal when using nmcli when activating an OpenVPN profile if /usr/libexec/nm-openvpn-auth-dialog is not available. Since nmcli can still ask for the credentials, the missing auth dialog does not block the activation, so the "warning" level is too much. Since it is a library, any output to the terminal is bad, therefore remove the logging. Signed-off-by: Till Maas <opensource@till.name>
* ovs-port: fix removal of ovsdb entry if the interface goes awayLubomir Rintel2022-03-041-3/+5
| | | | | | | | | | | | | | Hope third time is the charm. The idea here is to remove the OVSDB entry if the device actually went away violently (like, the it was actually removed from the platform), but keep it if we're shutting down. Fixes-test: @ovs_nmstate Fixes: 966413e78f14 ('ovs-port: avoid removing the OVSDB entry if we're shutting down') Fixes: ecc73eb239e6 ('ovs-port: always remove the OVSDB entry on slave release') https://bugzilla.redhat.com/show_bug.cgi?id=2055665
* cli: merge branch 'th/nmcli-wifi-in-use'Thomas Haller2022-03-042-50/+54
|\ | | | | | | https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1125
| * cli: make APInfo parameter to fill_output_access_point() constThomas Haller2022-03-041-20/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's helpful to control when data/state gets mutated. In particular, when passing on a pointer via several hops. C can help with that at compile time via "const". But the "index" field of APInfo is actually mutable, as it counts the lines. So most of the data is immutable, but the index. Make APInfo const. But to do that, the mutable part must be moved to a separate place. Also, start with the counter initialized to zero instead of one. It is just nicer.
| * cli: change "IN-USE" property to only honor the exact access pointThomas Haller2022-03-041-28/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On the D-Bus API, the current access point is referred exactly, by its D-Bus path. Likewise, in libnm's NMClient cache, the access point instance is unique in representing the D-Bus object (meaning, we can directly use pointer equality). Let's not compare the active AP based on the BSSID. It can happen that the scan list contains the same BSSID multiple times (for example on different bands). In that case, the output should only highlight one AP as in-use: $ nmcli device wifi list IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS SECURITY * E4:0f:4b:2a:c3:d1 MYSSID1 Infra 6 270 Mbit/s 100 ▂▄▆█ WPA2 * E4:0f:4b:2a:c3:d1 MYSSID1 Infra 6 270 Mbit/s 87 ▂▄▆█ WPA2
| * cli: minor cleanup initializing APInfo in "devices.c"Thomas Haller2022-03-041-12/+11
| |
| * glib-aux: hide API g_alloca0() and g_newa0()Thomas Haller2022-03-041-0/+10
|/ | | | | | | | | | | | | | | | | For one, this API is only available since 2.72, thus we must not use it (unless we would add a compat implementation to nm-glib.h). But also, g_alloca0() evaluates the size argument multiple times, making it non-function like. That seems highly undesirable and error prone. Also, we should be very careful about alloca() and the potential for stack overflow. We use alloca() at times, but usually with macros that are named "*_a()" (to make the danger clearer) and compile time checks for the size. These glib functions make this slightly less safe. Just prevent us from using this API.
* core: merge branch 'th/checkpoint-preserve-external-ports'Thomas Haller2022-03-045-15/+114
|\ | | | | | | https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1131
| * core: preserve external ports during checkpoint rollbackth/checkpoint-preserve-external-portsThomas Haller2022-03-035-7/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we have a bridge interface with ports attached externally (that is, not by NetworkManager itself), then it can make sense that during checkpoint rollback we want to keep those ports attached. During rollback, we may need to deactivate the bridge device and re-activate it. Implement this, by setting a flag before deactivating, which prevents external ports to be detached. The flag gets cleared, when the device state changes to activated (the following activation) or unmanaged. This is an ugly solution, for several reasons. For one, NMDevice tracks its ports in the "slaves" list. But what it does is ugly. There is no clear concept to understand what it actually tacks. For example, it tracks externally added interfaces (nm_device_sys_iface_state_is_external()) that are attached while not being connected. But it also tracks interfaces that we want to attach during activation (but which are not yet actually enslaved). It also tracks slaves that have no actual netdev device (OVS). So it's not clear what this list contains and what it should contain at any point in time. When we skip the change of the slaves states during nm_device_master_release_slaves_all(), it's not really clear what the effects are. It's ugly, but probably correct enough. What would be better, if we had a clear purpose of what the lists (or several lists) mean. E.g. a list of all ports that are currently, physically attached vs. a list of ports we want to attach vs. a list of OVS slaves that have no actual netdev device. Another problem is that we attach state on the device ("activation_state_preserve_external_ports"), which should linger there during the deactivation and reactivation. How can we be sure that we don't leave that flag dangling there, and that the desired following activation is the one we cared about? If the follow-up activation fails short (e.g. an unmanaged command comes first), will we properly disconnect the slaves? Should we even? In practice, it might be correct enough. Also, we only implement this for bridges. I think this is where it makes the most sense. And after all, it's an odd thing to preserve unknown, external things during a rollback -- unknown, because we have no knowledge about why these ports are attached and what to do with them. Also, the change doesn't remember the ports that were attached when the checkpoint was created. Instead, we preserve all ports that are attached during rollback. That seems more useful and easier to implement. So we don't actually rollback to the configuration when the checkpoint was created. Instead, we rollback, but keep external devices. Also, we do this now by default and introduce a flag to get the previous behavior. https://bugzilla.redhat.com/show_bug.cgi?id=2035519 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/ # 909
| * core: reject unsupported flags for CheckpointCreate D-Bus requestThomas Haller2022-03-031-9/+25
|/
* glib-aux: avoid nm_crypto_md5_hash() in nm_uuid_generate_from_string()Thomas Haller2022-03-021-30/+40
| | | | | | | | | | | | | | | | | | | | What nm_uuid_generate_from_string() does, is pretty straight forward. What nm_crypto_md5_hash() does, is not. Just directly use GChecksum, it seems clearer. Also, sometimes the compiler is adamant to warn about uninitialized variables. The workaround from commit cb9ca67901b3 ('glib-aux: workaround maybe-uninitialized warning with LTO in nm_uuid_generate_from_string_str()') does not always work. Try to solve that this way. Note that we have plenty of unit tests for our UUID generation. This is covered by tests. Also, there is now only one caller of nm_crypto_md5_hash() left. Which is good, because that function is rather non-obvious and special purpose. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1129