Commit graph

34577 commits

Author SHA1 Message Date
Íñigo Huguet
4eead7ab88 core: reevaluate ignore-carrier after UDEV's announcement
When a new device is hot plugged, matching by MAC doesn't work yet
because we haven't set the permanent MAC address in NMDevicePrivate.
This seems to be intentional, per the following commit:
7b7c653c4f ('device: delay capturing permanent MAC address until UDEV is settled')

Reevaluate ignore-carrier after UDEV's announcement (unsetting of the
PLATFORM_INIT unmanaged flag) so it gets its correct value.

The rest of configurations that can be set with a `match-device`
condition are evaluated when the device has already moved at least to a
managed state, so they don't have this problem.

Closes https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1907
2026-04-08 15:26:13 +02:00
Íñigo Huguet
230009b9e8 merge: branch 'ih/sl-po'
po: update Slovenian translations

Closes #1894

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2374
2026-04-08 10:53:34 +00:00
filmsi
253ce99d2c po: update Slovenian translations 2026-04-08 10:53:25 +00:00
Íñigo Huguet
c86ae51240 merge: branch 'fixtypo'
Fix typos

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2371
2026-04-08 10:19:36 +00:00
Hiroyuki Yasuhara
9ca09aa020 cloud-setup/man: fix typo in man nm-cloud-setup 2026-04-08 10:19:23 +00:00
Hiroyuki Yasuhara
a6e133d5f4 libnm/docs: fix typo in man nm-settings-nmcli 2026-04-08 10:19:23 +00:00
Hiroyuki Yasuhara
330cb6a20b docs/libnm: fix typo in libnm.svg 2026-04-08 10:19:23 +00:00
Íñigo Huguet
92bf0178a4 merge: branch 'typo-fixes-2026'
libnmc-setting: fix typos

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2377
2026-04-08 10:17:06 +00:00
Anders Jonsson
e50272de78 libnmc-setting: fix typos 2026-04-08 10:13:31 +00:00
Íñigo Huguet
72950e5d5b merge: branch 'fix/meson'
meson: fix cross-compilation issues

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2380
2026-04-08 10:11:27 +00:00
Andrej Kozemcak
e5d2c7cc6d meson: fix cross-compilation issues
Strip newline from GI_TYPELIB_PATH and LD_LIBRARY_PATH
run_command().stdout() returns the raw shell output including a trailing
newline. When the value is used to build a colon-separated path, the newline
gets embedded at the end of the last path component, making the directory
invalid and causing GObject Introspection to fail with:

  ImportError: Typelib file for namespace 'Gio', version '2.0' not found

Use .strip() to remove leading/trailing whitespace from both env variable
reads.

Fix jansson SONAME detection for cross-compilation
When cross-compiling, jansson's pkg-config 'libdir' variable returns a
path relative to the sysroot (e.g., /usr/lib) without the actual sysroot
prefix.  The host readelf binary cannot find the library at that path.

Fix this by using meson.get_external_property('sys_root', '') to obtain
the sysroot path set by the cross-compilation environment and prepend it
to the library path before calling readelf.

Signed-off-by: Andrej Kozemcak <andrej.kozemcak@siemens.com>
2026-04-08 10:11:13 +00:00
Íñigo Huguet
bb50e8f0f4 merge: branch 'rr/fix-avc-error-2'
core: use GDir to avoid libgvfs loading

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2384
2026-04-08 08:30:37 +00:00
Rahul Rajesh
2e1ee043a7 core: use GDir to avoid libgvfs loading
Replace GFile with GDir to avoid libgvfs and other DBus infra
initialization.

This was done mainly to avoid heavy initialization just for executing
NetworkManager --print-config command.

Resolves: https://redhat.atlassian.net/browse/RHEL-140113
2026-04-08 08:30:18 +00:00
Íñigo Huguet
58f4c81673 merge: branch 'ih/dhcp-client-unknown'
dhcp: improve log message for unknown DHCP plugin

Closes #1917

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2388
2026-04-08 07:50:51 +00:00
Íñigo Huguet
24c50803a7 dhcp: improve log message for unknown DHCP plugin
If a DHCP plugin is unknown, the logs says "DHCP client 'x' not
available". This is the same message that is shown if, for example, it
is a valid DHCP plugin name, but the program is not installed in the
system.

For example, after 'dhclient' was deprecated, now NM is built without
support for it. Then, people with old configs `dhcp=dhclient` get the
message "DHCP client 'dhclient' not available". That seems to mean that
dhclient is not installed.

Show a message "unknown DHCP client" instead.

Fixes https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/work_items/1917
2026-04-08 07:50:41 +00:00
Íñigo Huguet
7f4efc484c merge: branch 'ih/spec'
rpm spec: set polkit_noauth_group=wheel by default

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2391
2026-04-08 07:50:11 +00:00
Íñigo Huguet
1970d8a8cd spec: set polkit_noauth_group=wheel by default
In Fedora there were complains about needing sudo to do changes. We
decided to allow doing changes without additional authentication if
they're done from a local console and an admin account.
2026-04-08 07:49:52 +00:00
Gris Ge
de91bd8070 merge: branch 'jv/clat-macro'
l3cfg: wrap _clat_prefix_is_better() in HAVE_CLAT guard

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2390
2026-04-01 10:06:51 +00:00
Jan Vaclav
66ac355c52 l3cfg: wrap _clat_prefix_is_better() in HAVE_CLAT guard
Fixes the following warning when building without CLAT:
../src/core/nm-l3cfg.c:4157:1: warning: ‘_clat_prefix_is_better’ defined but not used [-Wunused-function]
 4157 | _clat_prefix_is_better(const NMPlatformIP6Address *best,
      | ^~~~~~~~~~~~~~~~~~~~~~

Fixes: a03a245819 ('l3cfg: fix selection of the CLAT IPv6 prefix')
2026-03-31 11:44:42 +02:00
Rahul Rajesh
fb1104d278 release: bump version to 1.57.4 (development) 2026-03-27 09:08:35 -04:00
Beniamino Galvani
5580b982ac merge: branch 'bg/clat-prefix-selection'
l3cfg: fix selection of the CLAT IPv6 prefix

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2378
2026-03-18 17:44:41 +00:00
Beniamino Galvani
a03a245819 l3cfg: fix selection of the CLAT IPv6 prefix
If the router advertises both ULA and GUA prefixes, the CLAT should
select the one that better matches the NAT64 prefix when generating
the additional IPv6 address, as recommended by Internet Draft
draft-ietf-v6ops-claton.

The current implementation just takes the first one, which can cause
problems. For example, if the network is using a public NAT64 server,
the NAT64 prefix is in the GUA range. Choosing a ULA as source address
would not work.

Fixes: f0e77a4354 ('Add support for CLAT to l3cfg')
2026-03-17 14:45:04 +01:00
Beniamino Galvani
7f2745f3b1 libnm-glib-aux: add nm_ip6_addr_rfc6724_label() 2026-03-17 14:45:04 +01:00
Beniamino Galvani
1589346de4 libnm-glib-aux: add nm_ip6_addr_common_prefix_len() 2026-03-17 14:45:03 +01:00
Beniamino Galvani
0b1c6f467e merge: branch 'nmtui-menu'
nmtui: remove "OK" button in main menu

Closes #1816

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2357
2026-03-13 09:55:45 +00:00
Vladislav Tsisyk
1b07f92fae nmtui: remove "OK" button in main menu
Remove the redundant OK button from the main menu, as menu items are activated with Enter.
This simplifies the UI and avoids unnecessary actions.

Closes #1816
2026-03-12 14:01:28 +00:00
Beniamino Galvani
31fcd35b24 merge: branch 'bg/clat-ci'
gitlab-ci: disable CLAT if required libraries are missing

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2362
2026-03-12 10:04:57 +00:00
Beniamino Galvani
7d19805905 build: require libbpf 1.3.0
Version 1.3.0 of the library is needed to support "tcx" program types.
2026-03-12 09:45:03 +00:00
Beniamino Galvani
4e3371964c gitlab-ci: disable CLAT if required libraries are missing
Old Alpine and Debian release don't have the required libraries,
disable CLAT on them.

Fixes: dd3758dd80 ('contrib: Add libbpf and libxdp to dependencies')
2026-03-12 09:45:03 +00:00
Beniamino Galvani
62997ac8c0 merge: branch 'bg/warn-unreachable-gateways'
Warn about directly unreachable gateways

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2360
2026-03-12 07:46:09 +00:00
Beniamino Galvani
589286df78 NEWS: mention the warnings for unreachable gateways 2026-03-11 15:12:15 +01:00
Beniamino Galvani
8b9a702e1d core: emit warning for unreachable gateways 2026-03-11 15:12:15 +01:00
Beniamino Galvani
907508f4bf nmtui: emit warning for unreachable gateways 2026-03-11 15:12:15 +01:00
Beniamino Galvani
ec5f98e7a8 nmcli: emit warning for unreachable gateways 2026-03-11 15:12:15 +01:00
Beniamino Galvani
2b4b8d7e7e libnm-core: add function to get a warning message for unreachable gateways
We are going to print the same warning message in different places
(the daemon, nmcli, nmtui). Add a function to return the message. Note
that the message needs to be translated in clients but not in the
daemon logs.
2026-03-11 15:12:15 +01:00
Beniamino Galvani
f42e422b69 libnm-core: add function to detect directly-unreachable gateways
nm_connection_get_unreachable_gateways() is a non-public function,
available in the daemon and clients, which detects gateways in the
static configuration that are not directly reachable.

Unreachable gateways are often the consequence of user mistakes; we
want to catch them early. In the following commits, warnings will be
emitted when a connection is created/modified/activated and has
unreachable gateways.
2026-03-11 15:12:15 +01:00
Rahul Rajesh
22f4e74942 merge: branch 'rr/fix-avc-error'
core: delay D-Bus type initialization for --print-config

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2376
2026-03-10 12:36:29 +00:00
Till Maas
57bc396c12 core: delay D-Bus type initialization for --print-config
The --print-config option should only read and print the configuration
without initializing any D-Bus infrastructure. However, g_type_ensure()
calls for D-Bus types were happening before the --print-config check,
causing GLib/GIO to set up D-Bus infrastructure and create cache
directories (~/.cache/bus or /root/.cache) unnecessarily.

Move the g_type_ensure() calls to after the --print-config (and
--version) early exits, so they only run when NetworkManager actually
needs to start normally and use D-Bus.

Resolves: https://issues.redhat.com/browse/RHEL-140113

Assisted-by: Claude Code claude-sonnet-4-5@20250929
Signed-off-by: Till Maas <opensource@till.name>
2026-03-06 14:30:23 -05:00
Íñigo Huguet
0e2b679afb merge: branch 'ih/perm_unmanaged'
add API to manage/unmanage devices in a persistent way

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2358
2026-03-06 10:23:58 +00:00
Íñigo Huguet
b6bd9cee87 NEWS: update 2026-03-06 11:21:58 +01:00
Íñigo Huguet
2fbaca1cbc checkpoint: rollback devices' "permanently managed" configuration
If a device's "managed" configuration is changed persistently (stored to
NM-intern), it needs to be undone in a rollback.
2026-03-06 11:21:57 +01:00
Íñigo Huguet
1252f8dc7e core: config: add unit tests for the new get/set_device_managed 2026-03-06 11:21:56 +01:00
Íñigo Huguet
7ee50b687a nmcli: wait for device set async operation to finish
We need to wait for it to finish so we can show error messages, if any.

Also, if we don't do it, sometimes the `d set eth0 managed ...`
operation fails with the following message in the daemon's log: "Unable
to determine UID of the request". This is because the client's process
is terminated before the daemon can check the permissions, as it needs
to check the uid and gid from the client's process.
2026-03-06 11:21:55 +01:00
Íñigo Huguet
d2f98a1669 nmcli: add managed --permanent yes/no/up/down/reset
Allow to manage or unmanage a device persisting across reboots.
If --permanent is not specified, only the runtime managed state is
changed, preserving the previous behavior. The --permanent-only
option allows to edit only the persistent value, without touching
the runtime value.

Also add the values up/down. Up means managed=yes and set device's
administrative state UP. Down means managed=no and admin state DOWN.

Add the value 'reset' too. It reverts managed runtime status to default
behaviour. When used with `--permanent` flag, the persisted managed
settings is cleared.

Co-authored-by: Rahul Rajesh <rajeshrah22@gmail.com>
2026-03-06 11:21:53 +01:00
Íñigo Huguet
7c8f343f2c core: device: autoselect device match criteria in SetManaged()
Devices like veth without a permanent MAC address cannot be matched by
MAC. If using the BY_MAC flag in SetManaged(), the changes are not
effective for such kind of devices.

Add a BY_NAME flag, in addition to the BY_MAC one. If the client sets
one of them, it means to force this mode of matching. If none is
selected, the daemon will choose how to match, preferring matching by
MAC when possible, and by ifname when not possible.
2026-03-06 11:21:52 +01:00
Íñigo Huguet
b9725dab73 core: device: allow to change the admin state of the device in SetManaged()
Control it with a new NM_DEVICE_MANAGED_SET_ADMIN_STATE flag.
This flag will make that, at the same time that the device is moved to
managed/unmanaged, it's admin state is set to up/down. Many users want
to have a way to have their devices in a DOWN admin state when they are
not using them. Because of the complex activation process, NM wants to
have its devices in UP state all the time. However, it is not a problem
to have it DOWN if we are not managing it.
2026-03-06 11:21:51 +01:00
Íñigo Huguet
f346fcf977 core: device: allow to reset the managed property
Previous commits added the capability to persist to disk the value of
'managed' received via the D-Bus API. Users might need to clear the
previous content, thus reseting it to its default.

Although this is specially useful for the PERMANENT flag, we need to be
consistent and reset the runtime state too.
2026-03-06 11:21:50 +01:00
Íñigo Huguet
ec1522fa8c core: device: implement storing to disk for Device.SetManaged()
If the NM_DEVICE_MANAGED_FLAGS_PERMANENT flag is used, the value will be
stored to disk, to the NetworkManager-intern.conf file, in a [device-*]
section.

To modify the runtime value, the NM_DEVICE_MANAGED_FLAGS_RUNTIME must be
passed. This allows to control independently whether to modify only one
or both.
2026-03-06 11:21:48 +01:00
Íñigo Huguet
0a1503f052 core: config: allow to store 'managed' configs to NM-intern
To support setting devices as managed or unmanaged via D-Bus API in a
permanent way, we need a way to store this configuration on disk. Before
this commit, only config files manually edited allowed it. Following
commits will make use of the new functions to store [device-*] sections
into NetworkManager-intern.conf depending on D-Bus method invocations.
2026-03-06 11:21:48 +01:00
Íñigo Huguet
47c1b04f9e core: config-data: don't ignore [.intern.device/connection] sections
Now it is possible to have [.intern.device-*] sections in
NetworkManager-intern.conf. Take them into account when parsing the
configuration keyfiles.
2026-03-06 11:21:47 +01:00