summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* cli: document connection/device-external colorslr/external-colorsLubomir Rintel2022-03-081-0/+14
| | | | | | These were added without documentation. Fixes: 16cff1149a76 ('core: fix taking over external connection after restart')
* 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
* man: merge branch 'th/man-nm-wait-online'Thomas Haller2022-03-0210-24/+189
|\ | | | | | | https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1130
| * man: add NetworkManager-wait-online.service.8 manualThomas Haller2022-03-029-24/+186
| | | | | | | | | | | | | | | | | | | | | | NetworkManager-wait-online is a constant source of confusion, as it seems to delay the boot (when it's often just the messenger or either a network problem, a NetworkManager misconfiguration or a misconfiguration of other systemd services). Try to clear that up with a manual page. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1130
| * core/trivial: add comment about "startup complate" log messageThomas Haller2022-03-021-0/+3
|/
* rfkill: fix the rfkill reason property query and parsingEmmanuel Grumbach2022-03-021-2/+3
| | | | | | | | | The udev property is RFKILL_HW_BLOCK_REASON and it is returned as a bitmap in hexadecimal. Fixes: 9c4fbbe1b8ab ('rfkill: query the hardware rfkill reason from udev') https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1128
* man: reword documentation about logging level and domains in `man ↵Thomas Haller2022-02-281-13/+64
| | | | | | | | | | | NetworkManager.conf` People keep reporting bugs with `level=DEBUG` or set to a certain domains. That is generally not useful. Complete debug logs should be collected, we can always ignore what we don't care about, but we might miss important information by limiting what we collect. Try to make that clearer in the manual.
* all: add support for route type "throw"Thomas Haller2022-02-288-9/+27
| | | | | | | | After adding support for "blackhole", "unreachable" and "prohibit" route types, let's also add support for "throw" type. It works basically the same as the other types, so supporting it seems very straight forward. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1124
* core: initialize l3cd dns-priority for ppp and wwanBeniamino Galvani2022-02-282-0/+3
| | | | | | | | | | | | | | | | | | For devices that configure IP by themselves (by returning "->ready_for_ip_config() = TRUE" and implementing ->act_stage3_ip_config()), we skip manual configuration. Currently, manual configuration is the only one that sets flag HAS_DNS_PRIORITY into the resulting l3cd. So, the merged l3cd for such devices misses a dns-priority and is ignored by the DNS manager. Explicitly initialize the priority to 0; in this way, the default value for the device will be set in the final l3cd during the merge. Fixes: 58287cbcc0c8 ('core: rework IP configuration in NetworkManager using layer 3 configuration') https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/931
* core/rfkill: merge branch 'egrumbach:rfkill-reasons'Thomas Haller2022-02-253-8/+49
|\ | | | | | | https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1105
| * core: teach nm-manager about os_ownerEmmanuel Grumbach2022-02-241-5/+18
| | | | | | | | | | Reflect what the rfkill-manager saw in the nm-manager. This will allow to take decision based on the os_owner state.
| * rfkill: query the hardware rfkill reason from udevEmmanuel Grumbach2022-02-243-4/+32
|/ | | | | | | | | | | | | | | | | | | | | | | | | | The kernel may add a reason for hardware rfkill. Make the NetworkManager able eto fetch it and parse it. For now, no action will be taken upon the new reasons. The different reasons that the kernel can expose are either the radio was switched off by a hardware rfkill switch. This reason is adveritsed by bit 0 in the bitmap returned by RFKILL_STATE_REASON udev property. This is the rfkill that existed until now. The new reason is mapped to bit 1 and teaches the user space that the wifi device is currently used by the CSME firmware on the platform. In that case, the NetworkManager can ask CSME (through the iwlmei kernel module) what BSSID the CSME firmware is associated to. Once the NetworkManager gets to the conclusion is has the credentials to connect to that very same AP, it can request the wifi device and the CSME firmware will allow the host to take the ownership on the device. CSME will give 3 seconds to the host to get an IP or it'll take the device back. In order to complete all the process until we get the DHCP ACK within 3 seconds, the NetworkManager will need to optimize the scan and limit the scan to that specific BSSID on that specific channel. All this flow is not implemented yet, but the first step is to identify that the device is not owned by the host.
* release: bump version to 1.37.1 (development)1.37.1-devLubomir Rintel2022-02-2498-14023/+1812
|\
| * NEWS: updateThomas Haller2022-02-241-4/+0
| | | | | | | | | | | | | | This paragraph that "it's likely that" some changes will be backported to 1.34 branch seems unnecessary. Whenever we backport things to 1.34 we will add them to the NEWS file for nm-1-34, and then also mention them in nm-1-36 and newer. But we don't need to announce that.
| * core: merge branch 'th/shutdown-timeout-increase'Thomas Haller2022-02-2410-28/+47
| |\ | | | | | | | | | https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1113
| | * core: use NM_SHUTDOWN_TIMEOUT_5000_MSEC define in _ppp_manager_stop()Thomas Haller2022-02-241-1/+1
| | | | | | | | | | | | | | | | | | | | | The define makes it clearer that there is an important relationship between the timeout for the async operation, and the wrapup time when NetworkManager is quitting. Well, not for the time being. But in the future, when we rework the quitting of NetworkManager.
| | * core: increase NM_SHUTDOWN_TIMEOUT_MAX_MSEC to 5 sec to cover pppdThomas Haller2022-02-242-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NM_SHUTDOWN_TIMEOUT_MAX_MSEC is the maximum timeout for how long any async operation may take. The idea is that during shutdown of NetworkManager we give that much time to tear down. Then async operations may either implement cancellation or not bother with that. But in any case, they must complete within NM_SHUTDOWN_TIMEOUT_MAX_MSEC. Actually, for the time being, this has no effect at all. I am talking about the future here. See "Improve Shutdown of NetworkManager" in TODO. This patch is preparation for that effort. Anyway. Stopping pppd can take a longer time (5 seconds). That is currently the (known) longest time how long any of our async operations is allowed to take. As all async operations must complete before NM_SHUTDOWN_TIMEOUT_MAX_MSEC, and we want to wait at least 5 seconds for pppd, we need to increase the wait time NM_SHUTDOWN_TIMEOUT_MAX_MSEC. Also add and use NM_SHUTDOWN_TIMEOUT_5000_MSEC, which serves a similar purpose as NM_SHUTDOWN_TIMEOUT_1500_MSEC.
| | * core: use NM_SHUTDOWN_TIMEOUT_1500_MSECThomas Haller2022-02-243-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | At some places we scheduled a timeout in NM_SHUTDOWN_TIMEOUT_MAX_MSEC. There, we want to make sure that we don't take longer than NM_SHUTDOWN_TIMEOUT_MAX_MSEC. But this leaves the actual wait time unspecified. Those callers don't want to wait an undefined time. They really should be clear about how long they wait. Hence, use NM_SHUTDOWN_TIMEOUT_1500_MSEC which makes it clear this is 1500 msec but also chosen to be not longer than NM_SHUTDOWN_TIMEOUT_MAX_MSEC.
| | * core: add NM_SHUTDOWN_TIMEOUT_1500_MSEC macroThomas Haller2022-02-242-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When you have an async operation, you must make sure that it is cancellable or completes in at most NM_SHUTDOWN_TIMEOUT_MAX_MSEC. But NM_SHUTDOWN_TIMEOUT_MAX_MSEC leaves it undefined how long it is. If you really want to wait for 1500msec, but also need to ensure to stay within NM_SHUTDOWN_TIMEOUT_MAX_MSEC, then use NM_SHUTDOWN_TIMEOUT_1500_MSEC. This has the semantic of guaranteeing both.
| | * core/trivial: rename NM_SHUTDOWN_TIMEOUT_MS to NM_SHUTDOWN_TIMEOUT_MAX_MSECThomas Haller2022-02-249-27/+27
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | The abbreviations "ms", "us", "ns" don't look good. Spell out to "msec", "usec", "nsec" as done at other places. Also, rename NM_SHUTDOWN_TIMEOUT_MS_WATCHDOG to NM_SHUTDOWN_TIMEOUT_ADDITIONAL_MSEC. Also, rename NM_SHUTDOWN_TIMEOUT_MS to NM_SHUTDOWN_TIMEOUT_MAX_MSEC. There are different timeouts, and this is the maximum gracetime we will give during shutdown to complete async operations. Naming is hard, but I think these are better names.
| * connectivity,cloud-setup: restrict curl protocols to HTTP and HTTPSThomas Haller2022-02-242-0/+2
| | | | | | | | | | | | | | See-also: https://fedoraproject.org/wiki/Changes/CurlMinimal_as_Default#Benefit_to_Fedora See-also: https://github.com/systemd/systemd/commit/55b90ee00b78a449c8f187a5e8141f8ccb100bf4 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1121
| * device: commit the l3cd changes via l3cfg during cleanupWen Liang2022-02-231-2/+1
| | | | | | | | | | | | | | | | | | | | | | After the first time committing, the routes and addresses are removed directly by bypassing the l3cfg in `nm_device_cleanup()`, then when committing the second time, the l3cfg think that some addresses are still configured but they are actually already disappeared from the kernel already. To fix it, commit the l3cd changes through l3cfg instead of removing the addresses/routes directly.
| * ovsdb: set DPDK port MTU when creating themFernando Fernandez Mancera2022-02-231-1/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The DPDK port will not have a link after the devbind which is needed for configuring an interface to be a DPDK port. The MTU is being committed during the link change but for DPDK ports there is no link. The DPDK port MTU should be set on ovsdb right after the interface is added to ovsdb. This way the users will be able to set MTU for DPDK ports and modify it. Please see the following results: ``` port 2: iface0 (dpdk: configured_rx_queues=1, configured_rxq_descriptors=2048, configured_tx_queues=3, configured_txq_descriptors=2048, lsc_interrupt_mode=false, mtu=2000, requested_rx_queues=1, requested_rxq_descriptors=2048, requested_tx_queues=3, requested_txq_descriptors=2048, rx_csum_offload=true, tx_tso_offload=false) ```
| * contrib: colorize releasing slave in NM-logThomas Haller2022-02-231-1/+1
| |
| * platform: log ifindex when releasing slave from masterThomas Haller2022-02-231-1/+4
| |
| * examples: add "--last" argument to "examples/python/gi/checkpoint.py"Thomas Haller2022-02-231-44/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | "examples/python/gi/checkpoint.py" is not only an example. It's also a useful script for testing checkpoints. Support a "--last" argument to specify the last checkpoint created. Otherwise, when you are using this example from a test script, it can be cumbersome to find the right checkpoint point. Also, rename "client" and "nm_client" variables to "nmc". The purpose of using the same variable name for the same thing is readability, but also it works better when copy+paste snippets into the Python REPL.
| * l3cfg: fix assertion failure for zombie in ↵Thomas Haller2022-02-231-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | _obj_states_externally_removed_track() We can get a platform signal for any number of reasons. In particular, we can get a signal that the object is present in platform, while the object is tracked as zombie. "Zombies" are objects that were actively configured by NetworkManager, but now no longer and thus will need to be removed. We remember them as objects that we need to delete. The assertion was wrong. We don't need to handle the case "in_platform" and linked in "os_zombie_lst" specially. If we get a signal that the object exists while being a zombie, that is fine and not something to handle specially. Backtrace: #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 #1 0x00007f6a208f1db5 in __GI_abort () at abort.c:79 #2 0x00007f6a212ed123 in g_assertion_message (domain=<optimized out>, file=<optimized out>, line=<optimized out>, func=0x560e23ada2c0 <__func__.39909> "_obj_states_externally_removed_track", message=<optimized out>) at gtestutils.c:2533 #3 0x00007f6a2134620e in g_assertion_message_expr (domain=domain@entry=0x560e23b781a0 "nm", file=file@entry=0x560e23acec60 "src/core/nm-l3cfg.c", line=line@entry=920, func=func@entry=0x560e23ada2c0 <__func__.39909> "_obj_states_externally_removed_track", expr=expr@entry=0x560e23ad1980 "c_list_is_empty(&obj_state->os_zombie_lst)") at gtestutils.c:2556 #4 0x0000560e23853f38 in _obj_states_externally_removed_track (self=self@entry=0x560e25f168e0, obj=<optimized out>, obj@entry=0x560e25e466a0, in_platform=in_platform@entry=1) at src/core/nm-l3cfg.c:920 #5 0x0000560e2385b8ea in _nm_l3cfg_notify_platform_change (self=0x560e25f168e0, change_type=change_type@entry=NM_PLATFORM_SIGNAL_CHANGED, obj=0x560e25e466a0) at src/core/nm-l3cfg.c:1364 #6 0x0000560e23861251 in _platform_signal_cb (platform=<optimized out>, obj_type_i=<optimized out>, ifindex=<optimized out>, platform_object=0x560e25e466b8, change_type_i=2, p_self=<optimized out>) at ./src/libnm-platform/nmp-object.h:443 #7 0x00007f6a1c4a914e in ffi_call_unix64 () at ../src/x86/unix64.S:76 #8 0x00007f6a1c4a8aff in ffi_call (cif=cif@entry=0x7fffac40e570, fn=fn@entry=0x560e23861100 <_platform_signal_cb>, rvalue=<optimized out>, avalue=avalue@entry=0x7fffac40e480) at ../src/x86/ffi64.c:525 #9 0x00007f6a217fee85 in g_cclosure_marshal_generic (closure=<optimized out>, return_gvalue=<optimized out>, n_param_values=<optimized out>, param_values=<optimized out>, invocation_hint=<optimized out>, marshal_data=<optimized out>) at gclosure.c:1490 #10 0x00007f6a217fe3bd in g_closure_invoke (closure=0x560e25df53c0, return_value=0x0, n_param_values=5, param_values=0x7fffac40e7a0, invocation_hint=0x7fffac40e720) at gclosure.c:804 #11 0x00007f6a21811945 in signal_emit_unlocked_R (node=node@entry=0x7f6a00008870, detail=detail@entry=0, instance=instance@entry=0x560e25ddd080, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffac40e7a0) at gsignal.c:3636 #12 0x00007f6a2181aa56 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffac40e9c0) at gsignal.c:3392 #13 0x00007f6a2181b093 in g_signal_emit (instance=instance@entry=0x560e25ddd080, signal_id=<optimized out>, detail=detail@entry=0) at gsignal.c:3448 #14 0x0000560e2392deea in nm_platform_cache_update_emit_signal (self=0x560e25ddd080, cache_op=NMP_CACHE_OPS_UPDATED, obj_old=<optimized out>, obj_new=<optimized out>) at src/libnm-platform/nm-platform.c:8824 #15 0x0000560e238fd520 in event_handler_recvmsgs () at src/libnm-platform/nm-linux-platform.c:7183 #16 0x0000560e238fdcbf in event_handler_read_netlink () at src/libnm-platform/nm-linux-platform.c:9403 #17 0x0000560e238ffab3 in delayed_action_handle_one () at src/libnm-platform/nm-linux-platform.c:6238 #18 0x0000560e238ffcae in delayed_action_handle_all () at src/libnm-platform/nm-linux-platform.c:6256 #19 0x0000560e23901acc in do_delete_object () at src/libnm-platform/nm-linux-platform.c:7392 #20 0x0000560e2390227c in ip4_address_delete () at src/libnm-platform/nm-linux-platform.c:8782 #21 0x0000560e23922709 in nm_platform_ip4_address_delete (self=self@entry=0x560e25ddd080, ifindex=ifindex@entry=150, address=16843009, plen=<optimized out>, peer_address=16843009) at src/libnm-platform/nm-platform.c:3574 #22 0x0000560e239275ab in nm_platform_ip_address_sync (self=0x560e25ddd080, addr_family=addr_family@entry=2, ifindex=150, known_addresses=<optimized out>, known_addresses@entry=0x0, addresses_prune=0x560e25e81aa0) at src/libnm-platform/nm-platform.c:3984 #23 0x0000560e23855e17 in _l3_commit_one (self=0x560e25f168e0, addr_family=2, commit_type=<optimized out>, l3cd_old=<optimized out>, changed_combined_l3cd=<optimized out>) at src/core/nm-l3cfg.c:4256 #24 0x0000560e2385fc5c in _l3_commit (self=0x560e25f168e0, commit_type=NM_L3_CFG_COMMIT_TYPE_REAPPLY, is_idle=<optimized out>) at src/core/nm-l3cfg.c:4353 #25 0x0000560e239c6a6d in nm_device_cleanup (self=0x560e25e985e0, reason=<optimized out>, cleanup_type=CLEANUP_TYPE_DECONFIGURE) at src/core/devices/nm-device.c:15082 #26 0x0000560e239c7522 in _set_state_full (self=0x560e25e985e0, state=<optimized out>, reason=<optimized out>, quitting=0) at src/core/devices/nm-device.c:15467 #27 0x0000560e239cd482 in queued_state_set (user_data=user_data@entry=0x560e25e985e0) at src/core/devices/nm-device.c:15706 #28 0x00007f6a2131b27b in g_idle_dispatch (source=0x560e25ebab60, callback=0x560e239cd3d0 <queued_state_set>, user_data=0x560e25e985e0) at gmain.c:5579 #29 0x00007f6a2131e95d in g_main_dispatch (context=0x560e25d97bc0) at gmain.c:3193 #30 g_main_context_dispatch (context=context@entry=0x560e25d97bc0) at gmain.c:3873 #31 0x00007f6a2131ed18 in g_main_context_iterate (context=0x560e25d97bc0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3946 #32 0x00007f6a2131f042 in g_main_loop_run (loop=0x560e25d730f0) at gmain.c:4142 #33 0x0000560e237c06ec in main (argc=<optimized out>, argv=<optimized out>) at src/core/main.c:509 Fixes: 929eae245d5d ('l3cfg: implement NM_L3CFG_CONFIG_FLAGS_ASSUME_CONFIG_ONCE and rework object state')
| * NEWS: updateThomas Haller2022-02-231-0/+2
| |