Commit graph

33778 commits

Author SHA1 Message Date
Íñigo Huguet
995a28fa1c release: bump version to 1.52.0 2025-02-28 14:55:33 +01:00
Íñigo Huguet
f275a4d08a contrib/build: ignore missing signingkey in git config
Fixes: 64f8ec6099 ('rpm/build*.sh: trap failures')
(cherry picked from commit 90c403f4ef)
2025-02-28 14:34:48 +01:00
Íñigo Huguet
1e89a05a20 CI: update images 2025-02-28 14:21:35 +01:00
Lubomir Rintel
837cf2e6e4 gitlab/fedora-install: use yum install --allowerasing
This allows us to drag in packages that replace something in the base
image. Notably, this fixes installing pppd on Fedora 42 that requires
systemd (whereas the image has conflicting systemd-standalone-sysusers).

(cherry picked from commit 979717df4e)
2025-02-28 14:21:19 +01:00
Lubomir Rintel
726e0a5aee fedora/REQUIRED_PACKAGES: remove very old optional package names
Attempting to install these takes time and they are no longer there
since ancient times. CentOS 9 and later are fine.

(cherry picked from commit 39efc8a394)
2025-02-28 14:21:19 +01:00
Lubomir Rintel
3982c5a04d Revert "fedora/REQUIRED_PACKAGES: speed up optional packages installation"
dnf --skip-unavailable not available on CentOS 9.

This reverts commit 5409d4f5cd.

(cherry picked from commit e2aa19a06c)
2025-02-28 14:21:19 +01:00
Lubomir Rintel
57f9d99b8a contrib: drop old gtkdoc patch
This has been integrated 6 years ago.

(cherry picked from commit 054962aeea)
2025-02-28 14:21:19 +01:00
Lubomir Rintel
81f272babe contrib/build: ignore initial failure to set $SOURCE
More fallout from set -e patch, encountered during a release.

Fixes: 64f8ec6099 ('rpm/build*.sh: trap failures')
(cherry picked from commit aea231f489)
2025-02-28 09:43:38 +01:00
Íñigo Huguet
815b3f5885 NEWS: update for 1.52 release 2025-02-28 09:40:55 +01:00
Lubomir Rintel
a0779a9339 keyfile: don't crash on failure to write
The log statement ended up using wrong (always NULL) connection to get
ID from. Fix.

Resolves: https://issues.redhat.com/browse/RHEL-77157
(cherry picked from commit a7cf9d399f)
2025-02-28 09:18:26 +01:00
Lubomir Rintel
5c16bb1d26 Reapply "client/test: add test for VLANs on OCI"
This reverts commit a852b79cf5.

(cherry picked from commit 70872cbb38)
2025-02-26 13:30:08 +01:00
Lubomir Rintel
68d7e17737 Reapply "cloud-setup: create VLANs for multiple VNICs on OCI"
The idea is to create a pair of VLAN and MACVLAN with AddAndActivate if
they are not present, and otherwise follow the ordinary (GetApplied &
Reapply) procedure if the devices are already present.

This reverts commit 87d7ccc580.

(cherry picked from commit 7eee669217)
2025-02-26 13:30:04 +01:00
Lubomir Rintel
369db80086 Reapply "cloud-setup: lookup device by MAC + type instead of just MAC"
This will be useful for updating configuration of Vlans and MacVlans,
some of having same MAC addresses as devices of other type.

This reverts commit cee0515f13.

(cherry picked from commit 6cedd594b6)
2025-02-26 13:30:00 +01:00
Lubomir Rintel
fd6f4f86e4 Reapply "cloud-setup: parse OCI metadata related to VLAN config"
Baremetal instances in Oracle Cloud require special VLAN config. Parse
the metadata related to it.

This reverts commit 5eefd2d59c.

(cherry picked from commit 5c3efeef15)
2025-02-26 13:29:57 +01:00
Lubomir Rintel
b7114d00ed Reapply "manager: create virtual devices on AddAndActivate()"
This reverts commit ccae5dc0e2.

(cherry picked from commit 11045cfa00)
2025-02-26 13:29:53 +01:00
Lubomir Rintel
4a1c51317e manager: make system_create_virtual_device() return a GError
This is done so that AddAndActivate() will return sensible errors in a
future patch that makes it support creating virtual devices.

In effect, all errors are logged in one place, therefore the log levels
are different. I don't think we're losing anything of value by being
a little less verbose here.

(cherry picked from commit 45d82f720c)
2025-02-26 13:29:49 +01:00
Íñigo Huguet
949c7b84a3 policy: fix unitialized variable
The variable 'change' may be used uninitialized.

Fixes: 7acc66699a ('policy: always reset retries when unblocking children or ports')
(cherry picked from commit af6aca3527)
2025-02-24 16:47:19 +01:00
Beniamino Galvani
bc6248a3eb merge: branch 'bg/mptcp-endpoints'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2141

(cherry picked from commit 472a7b48e8)
2025-02-24 09:07:54 +01:00
Beniamino Galvani
ceef38d9a5 l3cfg: only add MPTCP endpoints for non-tentative IPv6 addresses
An IPv6 endpoint is not usable until the address is non-tentative. Add
a mechanism to wait until the address is ready.

(cherry picked from commit 227cd6307b)
2025-02-24 09:07:54 +01:00
Beniamino Galvani
2c5a51201d l3cfg: wait for the address before configuring an MPTCP endpoint
Skip the configuration of the MPTCP endpoint when the address is in
the l3cd but is not yet configured in the platform. This typically
happens when IPv4 DAD is enabled and the address is being probed.

If we configure the endpoint without the address set, the kernel will
try to use the endpoint immediately but it will fail. Then, the
endpoint will not be used ever again after the address is added.

(cherry picked from commit 6bf859af79)
2025-02-24 09:07:54 +01:00
Beniamino Galvani
a301c259f2 core: split nm_netns_watcher_remove_all()
The name suggests that the function always removes all the watchers
with the given tag; instead it removes only "dirty" ones when the
"all" parameter is FALSE. Split the function in two variants.

(cherry picked from commit b6e67c6abc)
2025-02-24 09:07:53 +01:00
Tomas Korbar
39b7a8df91 dns: fix Dnsconfd autostart
When Dnsconfd service is enabled but not started, NetworkManager
should attempt to start it through DBus at least once.

Fixes: c6e1925dec ('dns: Add dnsconfd DNS plugin')
(cherry picked from commit 1463b1c0a3)
2025-02-20 19:02:25 +01:00
Fernando Fernandez Mancera
b8ef2a551e core: prevent the activation of unavailable OVS interfaces only
Preventing the activation of unavailable devices for all device types is
too aggresive and leads to race conditions, e.g when a non-virtual bond
port gets a carrier, preventing the device to be a good candidate for
the connection.

Instead, enforce this check only on OVS interfaces as NetworkManager
just makes sure that ovsdb->ready is set to TRUE.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2139

Fixes: 774badb151 ('core: prevent the activation of unavailable devices')
(cherry picked from commit a1c05d2ce6)
2025-02-18 12:29:19 +01:00
Jan Vaclav
8e78a8c28f nmtui/ipv6: add "shared" method to ipv6 options
It was previously only available for IPv4, and the option
was missing from the IPv6 methods.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2138
(cherry picked from commit e983e8a46f)
2025-02-18 12:11:28 +01:00
Fernando Fernandez Mancera
2daeef668d policy: always reset retries when unblocking children or ports
When calling activate_port_or_children_connections() we are unblocking
the ports and children but we are not resetting the number of retries if
it is an internal activation.

This is wrong as even if it's an internal activation the number of
retries should be reset. It won't interferfe with other blocking reasons
like USER_REQUESTED or MISSING_SECRETS.

(cherry picked from commit 7acc66699a)
2025-02-13 12:03:05 +01:00
Beniamino Galvani
d29d591d06 merge: branch 'bg/dnsconfd-fix-pending'
Some fixes for the dnsconfd plugin

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2137

(cherry picked from commit 006a3fb51a)
2025-02-13 10:38:35 +01:00
Beniamino Galvani
5e18da31a4 dnsconfd: drop "connection-*" entries from the update method
Stop passing "connection-*" entries in the update method to
dnsconfd. The plugin tries to determine the connection from the
ifindex, but it's not possible to do it right at the moment because
the same ifindex can be used at the same time e.g. by a policy-based
VPN like ipsec and a normal device. Instead, it should be NM that
explicitly passes the information about the connection to the DNS
plugin. Anyway, these variables are not used at the moment by
dnsconfd.

Fixes: c6e1925dec ('dns: Add dnsconfd DNS plugin')
(cherry picked from commit 4d84e6cddf)
2025-02-13 10:38:34 +01:00
Beniamino Galvani
e20794989b dnsconfd: set the state to idle when connection fails
If the plugin can't connect to D-Bus, it is not waiting for an update;
set the state to idle.

(cherry picked from commit 2bfd27f74d)
2025-02-13 10:38:34 +01:00
Beniamino Galvani
dc0ff10efb dnsconfd: fix handling of the update-pending flag
After every state change of the plugin there should be an invocation
of _nm_dns_plugin_update_pending_maybe_changed() to re-evaluate
whether we are waiting for an update. send_dnsconfd_update() doesn't
change the state and so there is need to check again afterwards.

(cherry picked from commit 8ff1cbf38b)
2025-02-13 10:38:34 +01:00
Filip Pokryvka
5749633729 release: bump version to 1.51.90 (1.52-rc1) 2025-02-12 13:27:22 +01:00
Filip Pokryvka
bb8bb65216 NEWS: update 2025-02-12 12:56:23 +01:00
Beniamino Galvani
fbd87bf961 merge: branch 'bg/autoconnect-ports-ovs'
Fix autoconnect-ports for OVS interfaces

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2131
2025-02-12 08:54:02 +00:00
Beniamino Galvani
774badb151 core: prevent the activation of unavailable devices
When autoconnecting ports of a controller, we look for all candidate
(device,connection) tuples through the following call trace:

 -> autoconnect_ports()
   -> find_ports()
     -> nm_manager_get_best_device_for_connection()
       -> nm_device_check_connection_available()
         -> _nm_device_check_connection_available()

The last function checks that a specific device is available to be
activated with the given connection. For virtual devices, it only
checks that the device is compatible with the connection based on the
device type and characteristics, without considering any live network
information.

For OVS interfaces, this doesn't work as expected. During startup, NM
performs a cleanup of the ovsdb to remove entries that were previously
added by NM. When the cleanup is terminated, NMOvsdb sets the "ready"
flag and is ready to start the activation of new OVS interfaces. With
the current mechanism, it is possible that a OVS-interface connection
gets activated via the autoconnect-ports mechanism without checking
the "ready" flag.

Fix that by also checking that the device is available for activation.
2025-02-12 09:53:06 +01:00
Beniamino Galvani
6c1eb99d32 core: cleanup nm_manager_get_best_device_for_connection()
Rename "unavailable_devices" to "exclude_devices", as the
"unavailable" term has a specific, different meaning in NetworkManager
(i.e. the device is in the UNAVAILABLE state). Also, use
nm_g_hash_table_contains() when needed.
2025-02-12 09:51:01 +01:00
Jason A. Donenfeld
c627bbea4c nm-random-utils: always generate good random bytes and prioritize getrandom support
The current mess of code seems like a hodgepodge of complex ideas,
partially copied from systemd, but then subtly different, and it's a
mess. Let's simplify this drastically.

First, assume that getrandom() is always available. If the kernel is too
old, we have an unoptimized slowpath for still supporting ancient
kernels, a path that should be removed at some point. If getrandom()
isn't available and the fallback path doesn't work, the system has much
larger problems, so just crash. This should basically never happen.
getrandom() and having randomness available in general is a critical
system API that should be expected to be available on any functioning
system.

Second, assume that the rng is initialized, so that asking for random
numbers should never block. This is virtually always true on modern
kernels. On ancient kernels, it usually becomes true. But, more
importantly, this is not the responsibility of various daemons, even
ones that run at boot. Instead, this is something for the kernel and/or
init to ensure.

Putting these together, we adopt new behavior:

- First, try getrandom(..., ..., 0). The 0 flags field means that this
  call will only return good random bytes, not insecure ones.

- If this fails for some reason that isn't ENOSYS, crash.

- If this fails due to ENOSYS, poll on /dev/random until 1 byte is
  available, suggesting that subsequent reads from the rng will almost
  have good random bytes. If this fails, crash. Then, read from
  /dev/urandom. If this fails, crash.

We don't bother caching when getrandom() returns ENOSYS. We don't apply
any other fancy optimizations to the slow fallback path. We keep that as
barebones and minimal as we can. It works. It's for ancient kernels. It
should be removed soon. It's not worth spending cycles over. Instead,
the goal is to eventually reduce all of this down to a simple boring
call to getrandom(..., ..., 0).

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2127
2025-02-11 10:04:26 +01:00
Georg Müller
2fd34e1dec libnm-core: fix error message if address-data parsing fails
The code checks for presence of 'address' and 'prefix', so these fields
should be part of the error message.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2118
2025-02-11 10:01:31 +01:00
Lubomir Rintel
36bc62309b merge: branch 'lr/jenkins-custom-fix'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2130
2025-02-10 11:31:57 +01:00
Lubomir Rintel
5eefd2d59c Revert "cloud-setup: parse OCI metadata related to VLAN config"
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2129

This reverts commit cfd7dd86c9.
2025-02-07 11:03:13 +01:00
Vladimír Beneš
f7db7c78e9 release: bump version to 1.51.7 (development) 2025-02-07 10:18:15 +01:00
Lubomir Rintel
3c8e7bb69d CI: update images 2025-02-06 10:40:09 +01:00
Lubomir Rintel
dd0b4e72e8 fedora/REQUIRED_PACKAGES: make teamd and dhclient optional
They are no longer in RHEL 10 and we can build just fine without them.
2025-02-06 10:40:09 +01:00
Lubomir Rintel
5409d4f5cd fedora/REQUIRED_PACKAGES: speed up optional packages installation
Don't try to install one by one by calling dnf repeatedly.
It is slow. Instead, use --skip-broken option.
2025-02-06 10:40:09 +01:00
Lubomir Rintel
593608c604 fedora/REQUIRED_PACKAGES: make cscope and bash-completion optional
We do not actually need them.
2025-02-06 10:40:09 +01:00
Lubomir Rintel
64f8ec6099 rpm/build*.sh: trap failures 2025-02-06 10:40:09 +01:00
Lubomir Rintel
6f9ecc7621 rpm/build_clean: do not use jq
It is not available when bootstrapping in beaker. Python is always
there.
2025-02-06 10:40:09 +01:00
Lubomir Rintel
dcd523a573 rpm/build_clean: fix an error message 2025-02-06 10:40:09 +01:00
Lubomir Rintel
efa4b459fc client/test-client: fix formatting
Fix-up for the preceding merge.
2025-02-06 10:37:29 +01:00
Lubomir Rintel
448b44f912 merge: branch 'lr/cs-oci-revert'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2128
2025-02-06 10:35:31 +01:00
Lubomir Rintel
1b4f946120 Revert "cloud-setup: lookup device by MAC + type instead of just MAC"
This reverts commit daef3b7b3f.
2025-02-06 10:35:02 +01:00
Lubomir Rintel
d1725cd288 Revert "manager: create virtual devices on AddAndActivate()"
This reverts commit eb635c23a7.
2025-02-06 10:35:02 +01:00