Commit graph

34193 commits

Author SHA1 Message Date
Beniamino Galvani
cfeee6d26b core: honor the ipv6.clat property 2025-09-30 20:30:01 +02:00
Beniamino Galvani
e26ffb1d64 libnm,nmcli: add a ipv6.clat property 2025-09-30 20:30:00 +02:00
Mary Strodl
6964b751bd NEWS: Note CLAT support 2025-09-30 20:30:00 +02:00
Beniamino Galvani
9b85a2a75d ndisc: add support for PREF64 option (fixes) 2025-09-30 20:30:00 +02:00
Mary Strodl
b1c7dbe81c ndisc: add support for PREF64 option 2025-09-30 20:29:59 +02:00
Beniamino Galvani
48b3f509d2 Add support for CLAT to l3cfg (fixes) 2025-09-30 20:29:59 +02:00
Mary Strodl
043153e799 Add support for CLAT to l3cfg 2025-09-29 23:11:37 +02:00
Beniamino Galvani
f5a952000d Add CLAT BPF program and build machinery (fixes) 2025-09-29 23:11:37 +02:00
Mary Strodl
b79af2739f Add CLAT BPF program and build machinery 2025-09-29 23:07:54 +02:00
Mary Strodl
b0674604ad contrib: Add libbpf and libxdp to dependencies
Required for CLAT support
2025-09-29 18:57:05 +02:00
Mary Strodl
3f97b3b4bf l3-config-data: make get_direct_route_for_host public 2025-09-29 18:56:53 +02:00
Mary Strodl
23a26ad2cc clat: propagate network_id down to l3cfg 2025-09-29 18:56:53 +02:00
Beniamino Galvani
91dd8af282 netns: add a CLAT IP reservation type
This will be used to obtain an IPv4 address to be used for the CLAT
(464XLAT).

Based on a patch by Mary Strodl <ipadlover8322@gmail.com>.
2025-09-29 18:56:53 +02:00
Íñigo Huguet
9e0551aefd core: document CleanupType
We must do different cleanups depending on the CleanupType. Document the
meaning of the different types as it was very confusing to work on new
code without having very clear what do they mean.
2025-09-24 11:30:59 +02:00
Íñigo Huguet
dbec15eb8d merge: branch 'ih/net-off-logging'
Improve logging of `networking off`

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2284
2025-09-24 05:21:21 +00:00
Íñigo Huguet
48fc40e1ca core: rename unmanaged flag SLEEPING->MANAGER_DISABLED
The flag is used for both sleeping and networking disabled conditions.
This is because internally they share logic, but it's not obvious for
users and it has caused confusion in the past when investigating why
devices didn't become managed. Make it explicit that it can be because
of either reason.

It would be better to create two separate flags, actually, and it
doesn't seem complex, but better not to risk introducing bugs for that
little benefit.

Logs before:
  device (enp4s0): state change: disconnected -> unmanaged (reason 'unmanaged-sleeping' ...

Logs before:
  device (enp4s0): state change: disconnected -> unmanaged (reason 'unmanaged-nm-disabled' ...
2025-09-23 09:17:07 +02:00
Íñigo Huguet
f6d6a7e2eb core, libnm: add the "networking off" reason
When we disable networking with `nmcli networking off` the reason that
is logged is "sleeping". Explain instead that networking is disabled.

Before:
  device (lo): state change: activated -> deactivating (reason 'sleeping' ...

After:
  device (lo): state change: activated -> deactivating (reason 'networking-off' ...
2025-09-23 09:17:07 +02:00
Íñigo Huguet
3355ba9380 core: rename NM_STATE_ASLEEP to NM_STATE_DISABLED
When we do `nmcli networking off` it's shown as state "sleeping". This
is confusing, and the only reason is that we share internally code to
handle both situations in a similar way.

Rename the state to the more generic name "disabled", situation that can
happen either because of sleeping or networking off.

Clients cannot differentiate the exact reason only with the NMState value,
but better that they show "network off" as this is the most common reason
that they will be able to display. If the system is suspending, there will
be only a short period of time that they can show the state, and showing
"network off" is not wrong because that's what NM has done as a response
to suspend.

In the logs, let's make explicit the exact reason why state is changing
to DISABLED: sleeping or networking off.

Logs before:
  manager: disable requested (sleeping: no  enabled: yes)
  manager: NetworkManager state is now ASLEEP

Logs after:
  manager: disable requested (sleeping: no  enabled: yes)
  manager: NetworkManager state is now DISABLED (NEWORKING OFF)

State before:
  $ nmcli general
  STATE  ...
  asleep ...

State after:
  $ nmcli general
  STATE       ...
  network off ...
2025-09-23 09:17:03 +02:00
Íñigo Huguet
c36e0bedeb NEWS: update 2025-09-12 15:11:56 +02:00
Íñigo Huguet
e570498fbf release: bump version to 1.55.4 (development) 2025-09-12 13:38:36 +02:00
Beniamino Galvani
40aa27690c initrd: support setting the DHCP client-id
In some cases it is necessary to set a custom DHCP client-id during
early boot. For example, the firmware of some InfiniBand NIC uses a
48-bit MAC derived from the InfiniBand 20-byte MAC when doing
PXE. NetworkManager doesn't have any knowledge of that 48-bit MAC and
uses the full MAC as client-id, therefore getting a different lease.

Introduce a new option 'rd.net.dhcp.client-id' to specify a custom
client-id.

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

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2277
2025-09-11 17:33:46 +02:00
Íñigo Huguet
f472111e58 merge: branch 'ih/dbus-global-dns'
core: dns: fix the behavior of [global-dns]

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2261
2025-09-11 10:26:06 +00:00
Íñigo Huguet
4a46f454da core: keep empty groups from keyfile configs
When reading NetworkManager.conf and NetworkManager-intern.conf we might
need to know if a group is defined or not, even if it's empty. This is
the case, for example, for [global-dns]. If [global-dns] is defined in
NM.conf overwrites the config from NM-intern, and if it's defined in any
of them they overwrite the configs from connections.

Before this patch, defining it as an empty group was ignored:
```
[global-dns]
```

Instead, it was necessary to add at least one key-value to the group.
Otherwise the group was silently ignored.
```
[global-dns]
searches=
```

Keep empty groups so we can take better decissions about overwritting
configs from other sources.
2025-09-11 10:25:36 +00:00
Íñigo Huguet
7fb4724efa core: dns: show in D-Bus if [global-dns] is defined but empty
Clients like nmstate needs to know if the [global-dns] section is
defined or not, so they know if DNS configs from connections are
relevant or not. Expose it in D-Bus by always exposing "searches"
and "options" if it's defined, maybe as empty lists.
2025-09-11 10:25:36 +00:00
Íñigo Huguet
1cba0a3cca dns: make [global-dns] to overwrite configs from connections
According to the documentation, settings from [global-dns] (searches and
options) are always merged with those from connections. However this was
not happening if no [global-dns-domain-*] exists, in which case
connections were ignored. This happened because in the past both global
sections must de defined or undefined. When this was changed to allow
defining only [global-dns], allowing it in the function that generates
the resolv.conf file was forgotten. Fix that now.

Anyway, merging these configs doesn't make much sense. The searches and
options defined in connections probably make sense only for the nameservers
defined in that same connection.

Because of this, make the following change: if global nameservers are
defined, use searches and options from [global-dns] only, because those
defined in connections may not make sense for the global nameservers. If
[global-dns] is missing, assume an empty [global-dns] section.

Also, if no global nameservers are defined, but [global-dns] is, make
that it overwrites the searches and options defined in connections. This
is not ideal, but none of the alternatives is better and at least this
is easy to remember.

So, the resulting rules from above are:
- If [global-dns] is defined, it always overwrite searches and options
  from connections.
- If [global-dns-domain-*] is defined, it always overwrite nameservers
  from connections. It overwrites searches and options too.

Fixes: 1f0d1d78d2 ('dns-manager: always apply options from [global-dns]')
Fixes: f57a848da5 ('man: update documentation about global DNS configuration')
2025-09-11 10:25:36 +00:00
Íñigo Huguet
294131a2a4 core: dbus: accept global DNS configuration without a default domain
Since 1.44 we accept a global-dns section without any global-dns-domain
section, so users can define searches and options without defining any
global DNS servers.

When set from the D-Bus API it was still rejected. Fix it.

Fixes: 1f0d1d78d2 ('dns-manager: always apply options from [global-dns]')
2025-09-11 10:25:36 +00:00
Íñigo Huguet
05efc6e253 merge: branch 'issue1476'
Fix reapply error with lacp_active

Closes #1476

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2275
2025-09-11 09:55:45 +00:00
Pradyumn Rahar
9c48bae3b2 bond: remove lacp_active option from reapply subset
NM_SETTING_BOND_OPTION_LACP_ACTIVE is flagged as BOND_OPTFLAG_IFDOWN in
the kernel and hence should not be in OPTIONS_REAPPLY_SUBSET.

Authored-by: Mohith Kumar Thummaluru <mohith.k.kumar.thummaluru@oracle.com>
Signed-off-by: Mohith Kumar Thummaluru <mohith.k.kumar.thummaluru@oracle.com>
Signed-off-by: Pradyumn Rahar <pradyumn.rahar@oracle.com>
2025-09-11 09:54:52 +00:00
Íñigo Huguet
1789a5b338 merge: branch 'ih/ip-reservation-use-after-free'
core: fix potential use after free

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2280
2025-09-11 09:47:40 +00:00
Íñigo Huguet
0d3fef3bcd core: fix potential use after free
_LOGD uses 'self', so don't unref it until after the _LOGD. Discovered
by Coverity.
2025-09-11 09:47:17 +00:00
Íñigo Huguet
4d17064f2a ci: use Fedora 42 as tier 1 a bit more
Switching to Fedora 43 changes the formatting. As Fedora 43 is not
released yet, it might still update clang-format and make it to change
again, as it happened in the past with other versions of Fedora.

Keep F42 until F43 is more stable.
2025-09-11 10:33:22 +02:00
Beniamino Galvani
86c7f1ed14 libnm-core: honor secrets flags when serializing WireGuard peers to D-Bus
If "flags" indicate that only secrets should be serialized and a peer
doesn't contain any secrets, skip it. Otherwise the function would
return a non-empty result when the connection contains no secret,
which causes issues later in the agent manager.

Fixes: e148ec07d5 ('libnm: add NMWireGuardPeer and libnm support for peers')

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2244
2025-09-09 16:56:26 +02:00
Beniamino Galvani
d8971cceed merge: branch 'bg/ip-reservation'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2276
2025-09-09 08:41:13 +02:00
Beniamino Galvani
d3e4f3344e core: generalize IP reservation functions
Generalize the functions to reserve an IP address from the netns, so
that it becomes easy to define new IP ranges for different purposes.
2025-09-08 21:38:21 +02:00
Beniamino Galvani
1504d12714 core: add test for nm_netns_shared_ip_reserve() 2025-09-08 21:37:41 +02:00
Íñigo Huguet
5677114e7c merge: branch 'ih/update-distros'
ci: update distros

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2271
2025-09-08 13:50:14 +00:00
Íñigo Huguet
13d8cda04e ci: update distros 2025-09-08 12:58:27 +02:00
Íñigo Huguet
6e67c830fb merge: branch 'main'
Update Russian translation

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2274
2025-09-08 10:48:35 +00:00
jtux270
5aafede823 update Russian translation 2025-09-08 10:48:08 +00:00
Íñigo Huguet
57ea2cf612 merge: branch 'bg/test-client-quotation'
test-client: fix quotation in expected message

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2269
2025-09-08 10:47:37 +00:00
Beniamino Galvani
d559f61423 libnm-client: fix memory leak
The test calls g_main_context_ref() on client_context, which must then
be unreferenced.

Fixes: 88724ff169 ('libnm: add nm_client_wait_shutdown() function for cleaning up NMClient')
2025-09-08 10:47:10 +00:00
Beniamino Galvani
5ad712974e test-client: fix quotation in expected message
With the newer glib and libc in F42 and Ubuntu devel, the
"{left,right} double quotation mark" characters are printed in the
output message. The double quotation marks are multi-byte characters
and they can't be matched using a character class []. Update the
regexp accordingly.
2025-09-08 10:47:10 +00:00
Íñigo Huguet
0ac63a4197 merge: branch 'bg/die-autotools'
build: remove autotools leftovers

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2268
2025-09-08 10:46:54 +00:00
Beniamino Galvani
fcf9b60cc2 build: remove autotools leftovers 2025-09-08 10:46:44 +00:00
Íñigo Huguet
7c0510ba0b merge: branch 'patch-1'
Replace sl.po (translated another 400 strings).

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2267
2025-09-08 10:46:04 +00:00
filmsi
26ac482f1c Replace sl.po (translated another 400 strings). 2025-09-08 10:45:56 +00:00
Beniamino Galvani
6c84a19eb2 merge: branch 'use-dynsym-for-exports'
build: use .dynsym for selecting symbols to export

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2262
2025-09-03 12:15:00 +00:00
Mateusz Mikuła
e5884cfb18 build: use .dynsym for selecting symbols to export
Nm uses .symtab by default which is less reliable for this use case.

Previously this would fail if user enabled stripping or used linker
that doesn't add undefined symbols to .symtab, like here:
https://github.com/davidlattimore/wild/issues/819#issuecomment-3215079862
2025-09-03 07:14:53 +00:00
Beniamino Galvani
7242c478a1 manager: unrealize device again after failure
If the device was realized in _internal_activate_device() and the
activation failed to start, unrealize the device again so that it
doesn't stay around.

Fixes-test: @ovs_delete_connecting_interface

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2263
2025-09-02 10:16:58 +02:00
Íñigo Huguet
d39179bee4 merge: branch 'ih/fix-wifi-dispose'
wifi: don't recheck  auto-activate on disposal

Closes #1791

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2259
2025-08-27 06:37:48 +00:00