Commit Graph

33593 Commits

Author SHA1 Message Date
Luna D Dragon
40c187dc15 build: allow building with clang+lto
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2053
2024-11-08 10:21:33 +01:00
Tim Sabsch
fd1a5b3c4b i18n: Update German translation
Fixes a translation issue where teaming and bonding were both translated
als "gebündelt". Proof-read at https://l10n.gnome.org/vertimus/695/379/18/

https://gitlab.gnome.org/Teams/Translation/de/-/issues/8
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2064
2024-11-08 10:15:22 +01:00
Beniamino Galvani
6a2fcfc6b5 merge: branch 'fec'
ethtool: support Forward Error Correction(fec)

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1895
2024-11-07 14:58:08 +00:00
Gris Ge
19bed3121f ethtool: support Forward Error Correction(fec)
Introducing support of ethtool FEC mode:

D-BUS API: `fec-mode: uint32_t`.
Keyfile:

```
[ethtool]
fec-mode=<uint32_t>
```

nmcli: `ethtool.fec-mode` allowing values are any combination of:
 * auto
 * off
 * rs
 * baser
 * llrs

Unit test cases included.

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

Signed-off-by: Gris Ge <fge@redhat.com>
2024-11-07 17:38:04 +08:00
Wen Liang
0bac01b133 merge: branch 'wl/ip_ping_target'
connection: Support ip-ping-target and ip-ping-timeout

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2034
2024-11-06 12:51:46 +00:00
Wen Liang
658aef0fa1 connection: Support connection.ip-ping-addresses
We have encountered multiple incidents where users face connectivity
issues after booting, particularly due to hardware like switches that do
not pass traffic for a few seconds after startup. And services such as
NFS fail to mount because they try to initiate before the network is
fully reachable. Therefore, we are supporting
`connection.ip-ping-addresses` and `connection.ip-ping-timeout` to
allow administrators to configure the network to verify connectivity to
a specific target(such as a service like NFS) instead of relying on
gateway reachability, which may not always be relevant in certain
network configurations.

Resolves: https://issues.redhat.com/browse/RHEL-21160
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2034
https://gitlab.freedesktop.org/NetworkManager/NetworkManager-ci/-/merge_requests/1797
2024-11-05 14:04:26 -05:00
Wen Liang
f967074521 nm-device: add log indicating gateway ping started
Since we are adding the ping check for the connection.ip-ping-addresses,
it makes more sense to improve the logging to differentiate between the
started ping operations for gateway and connection.ip-ping-addresses.
2024-11-05 13:55:18 -05:00
Valentin Blot
4082e7e109 wwan: remove buggy assertion
Removed an assertion that was not satisfied in the legitimate case of
IPv4 + do_auto.

Fixes: 58287cbcc0 ('core: rework IP configuration in NetworkManager using layer 3 configuration')

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2061
2024-11-05 11:17:34 +01:00
Beniamino Galvani
1e373ae073 merge: branch 'bg/print-config'
Print the path of internal configuration file with `NetworkManager --print-config`

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2026
2024-11-04 16:09:40 +00:00
Beniamino Galvani
2844b205ab core: print the internal configuration file with "--print-config"
When there is a non-empty internal configuration file, print it in the
output of "NetworkManager --print-config".

Before:
  NetworkManager --print-config:
  # NetworkManager configuration: /etc/NetworkManager/NetworkManager.conf, /usr/lib/NetworkManager/conf.d/{00-server.conf,22-eth-mac-addr.conf}
  ...

After:
  NetworkManager --print-config:
  # NetworkManager configuration: /etc/NetworkManager/NetworkManager.conf, /usr/lib/NetworkManager/conf.d/{00-server.conf,22-eth-mac-addr.conf}, /var/lib/NetworkManager/NetworkManager-intern.conf
  ...

Tests needs to be changed because now writing to the internal file
causes a change of the description of the NMConfigData and therefore
the NM_CONFIG_CHANGE_CONFIG_FILES flag is set.
2024-11-04 17:04:52 +01:00
Beniamino Galvani
07113dde30 core: fix deleting internal global DNS configuration
The tracking of variable "has_intern" in intern_config_read() is
wrong: we set it when adding any entry to the keyfile, but then we
remove the global DNS section without updating the variable.

The effect is that the function might return an empty keyfile instead
of NULL.

Fix this by moving the check on global DNS above.

Fixes: 55c204b9a3 ('core: add support for reading global DNS configuration from keyfile')
2024-11-04 17:04:51 +01:00
Beniamino Galvani
40ac7b1406 core: print full configuration paths with "--print-config"
In the output of "NetworkManager --print-config" we currently print
the list of configuration snippets in an abbreviated form:

  ... (lib: 00-server.conf, 22-wifi-mac-addr.conf) (etc: 08-unmanaged.conf)

While it is concise and unambiguous, it can be cryptic for
users. Instead, print the full paths:

  ... /usr/lib/NetworkManager/conf.d/{00-server.conf,22-wifi-mac-addr.conf}, /etc/NetworkManager/conf.d/{08-unmanaged.conf}
2024-11-04 17:04:51 +01:00
Wen Liang
da014fb148 merge: branch 'wl/update_spec'
spec: add iputils as runtime dependency for ping command

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2058
2024-11-04 15:03:10 +00:00
Wen Liang
7ab3362940 spec: add iputils as recommended dependency for ping command
NetworkManager relies on the ping command provided by `/usr/bin/ping`
from the iputils package to proceed the gateway or ip addresses
connectivity check.  This change ensures that iputils is recommended as a
dependency, making the ping command available for use during runtime but
not enforcing its installation as mandatory since NM can still proceed
to activate the connection even if the ping operation failed.
2024-11-04 14:25:54 +00:00
Fernando Fernandez Mancera
984d56e6f6 release: bump version to 1.51.3 (development) 2024-10-31 15:23:59 +01:00
Andika Triwidada
079a754b1e libnmc/client-utils: typo fix, add closing parenthesis
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2059
2024-10-30 11:05:50 +01:00
Lubomir Rintel
f2a01782a3 test/check-systemd-unit: skip if systemd too old
On RHEL 8, the --offline argument is not yet there.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2060
2024-10-30 11:04:36 +01:00
Wen Liang
afab26a8fa merge: branch 'global_dhcp_hostname_flags'
device: Support configuring dhcp-send-hostname globally

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2029
2024-10-28 13:45:11 +00:00
Wen Liang
fb56168524 keyfile: convert dhcp-send-hostname <-> dhcp-send-hostname-v2 during settings read and write
To have a consistent setting name conversion between
`dhcp-send-hostname` and `dhcp-send-hostname-v2` with nmcli and global
config, convert dhcp-send-hostname <-> dhcp-send-hostname-v2 during
keyfile settings read and write.
2024-10-24 17:03:10 -04:00
Íñigo Huguet
380458b0ee ip-config: Fix the nmcli docs for the renamed dhcp-send-hostname
In nmcli we have renamed dhcp-send-hostname and dhcp-send-hostname-v2 to
dhcp-send-hostname-deprecated and dhcp-send-hostname so users don't need
to worry about the details of the weird workarounds that we sometimes
need to do to expand and/or deprecate some properties.

However, the autogenerated documentation didn't include this names. Add
---nmcli--- specific documentation, adding a new property-infos field
called "rename" with the new name used in nmcli. This field can be used
for more properties if we use the same strategy in the future.
2024-10-24 17:03:10 -04:00
Wen Liang
add4dad505 nmcli: convert everywhere dhcp-send-hostname <-> dhcp-send-hostname-v2
Since introducing the setting ipv[46].dhcp-send-hostname-v2 internally
in NM for supporting global default behavior of DHCP send hostname,
confusion arises for setting the dhcp-send-hostname-v2 and old
dhcp-send-hostname in nmcli. To avoid any confusion from user
configuring dhcp-send-hostname-v2 and old dhcp-send-hostname using
nmcli, introduce the mapping from nmcli argument dhcp-send-hostname to
internal dhcp-send-hostname-v2 property and the mapping from nmcli
argument dhcp-send-hostname-deprecated to internal old dhcp-send-hostname
property.

The change in split_required_fields_for_con_show makes that properties
specified with -g or -f are converted to the libnm's "internal" names.

The change in _print_fill makes that the names are converted to the
"external" user facing names.
2024-10-24 17:03:10 -04:00
Wen Liang
51ea910cc2 device: Support configuring dhcp-send-hostname globally
The user does not want to send machine hostname to the DHCP server
globally by default to avoid ddns record getting created in IPAM.
otherwise, IPAM creates ddns records which might interfere with user's
regular host record. Thus, introduce the ternary property
dhcp_send_hostname_v2 to warrant this behavior.

Notice that we set the GSpec of dhcp-send-hostname-v2 to int, because
defining it as enum would make that it cannot be expanded in a backwards
compatible way if we need to add more values: old clients using libnm
would reject it due to the new value being unknown. Follow the same
strategy than _nm_setting_property_define_direct_enum, defining the
NMSettInfoPropertType as enum, but the glib's GSpec as int.

Resolves: https://issues.redhat.com/browse/RHEL-56565
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2029
https://gitlab.freedesktop.org/NetworkManager/NetworkManager-ci/-/merge_requests/1765
2024-10-24 17:03:10 -04:00
Íñigo Huguet
2bbedbcf7d merge: branch 'ih/nmcs-oci'
cloud-setup: Add OCI (Oracle Cloud) provider

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2056
2024-10-24 14:16:23 +00:00
Íñigo Huguet
4024e5c612 cloud-setup: Add OCI (Oracle Cloud) provider
Initial support for OCI. It doesn't support VLAN configuration yet as
the requirements are not clear. It doesn't support secondary IP
addresses because the IMDS server doesn't expose them.

Instead of using plain text format, it gets a single response in JSON
format and parses it. The dependency to jansson is now mandatory for
that.
2024-10-24 16:14:48 +02:00
Beniamino Galvani
e4c3d46572 merge: branch 'bg/dns-routes'
Support automatically adding DNS routes

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

https://issues.redhat.com/browse/RHEL-56555
2024-10-23 13:45:29 +00:00
Beniamino Galvani
967fed4982 NEWS: update 2024-10-23 15:38:37 +02:00
Beniamino Galvani
5449b18a94 core: support automatically adding DNS routes
When the "ipvX.routed-dns" property is set to true, add a route for
each DNS server via the current interface. The feature works in the
following way.

A new routing rule is created ("priority $PRIO not fwmark $MARK lookup
$TABLE") where $PRIO, $MARK and $TABLE are fixed values and are the
same for all interfaces. This rule is evaluated before standard rules
and tries to look up routes in table $TABLE, where NM adds the routes
to DNS servers.

To determine the next-hop to the name server, NM issues a RTM_GETROUTE
netlink request to kernel, specifying to return the route via the
current interface. In order to avoid results from $TABLE, NM also sets
the fwmark as $MARK in the request.
2024-10-23 15:38:36 +02:00
Beniamino Galvani
5122ba48ef l3cfg: add flag 'routed-dns' to NML3ConfigData 2024-10-23 15:38:35 +02:00
Beniamino Galvani
4e37e4c614 device: remove 'const' qualifier from function signature
nm_device_create_l3_config_data_from_connection() returns an unsealed
NML3ConfigData that can still be modified afterwards.
2024-10-23 15:38:34 +02:00
Beniamino Galvani
0e5815ba84 libnm: add new property "ipvX.routed-dns" 2024-10-23 15:38:33 +02:00
Beniamino Galvani
45535cbf9f platform: support specifying the fwmark in ip_route_get()
Add an optional argument to specify the fwmark, which will be used in
the next commits to return results that match a specific rule.
2024-10-23 15:06:59 +02:00
Beniamino Galvani
5c075eb762 device: emit the "l3cd-changed" signal after commit
I think the current semantics of the NMDevice's "l3cd-changed" signal
is not useful, as it reports that the layer-3 configuration changed
before it is committed to platform.

In this way, the only current subscriber (NMPolicy), reacts to the
change too early: it updates the DNS servers in the system when the
interface doesn't have yet addresses and routes ready. Therefore, the
resolver (libc, systemd-resolved, ...) will try to contact the DNS
server using the wrong parameters.

Change the semantics so that the signal is emitted *after* the commit
to platform.
2024-10-23 15:06:59 +02:00
Beniamino Galvani
3eb45c1d40 l3cfg: simplify signals
During a commit of layer-3 configuration, multiple signals are
emitted:

 - if the combined l3cd configuration changes, we first emit a
   L3CD_CHANGED signal, with flag `commited` FALSE;
 - if the previously committed configuration is different from the one
   we want to commit, we emit again the same signal with `commited`
   TRUE;
 - a PRE_COMMIT signal
 - a POST_COMMIT signal

The usefulness of the first and third signals is questionable: there
is no need to signal that the configuration changes if we are not
going to commit it. Also, PRE_COMMIT is redundant as we just emitted
L3CD_CHANGED. Nobody is using those 2 signals.

Simplify this by leaving only PRE_COMMIT and POST_COMMIT, which are
always emitted during a commit and provide information on the l3cd
changes.

This commit doesn't change behavior.
2024-10-23 15:06:58 +02:00
Beniamino Galvani
3e93134c04 checkpatch: silence warning about direct properties for the IP setting
Since NMSettingIPConfig is an abstract type that cannot be
instantiated, the overrides for the direct properties are defined on
the subclasses (NMSettingIP4Config and NMSettingIP6Config).

Silence the warning about using direct properties.
2024-10-23 15:06:58 +02:00
Beniamino Galvani
d6684269fa merge: branch 'bg/dhcpv4-ipv6-only'
Add support for the "IPv6-Only Preferred" DHCPv4 option

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

https://issues.redhat.com/browse/RHEL-58660
2024-10-23 13:04:12 +00:00
Beniamino Galvani
fe1a1b39d4 NEWS: update 2024-10-23 15:01:21 +02:00
Beniamino Galvani
2c373ec9ed dhcp: allow changing MIN_V6ONLY_WAIT via environment variable
When performing integration tests for the IPv6-only DHCP option, we
want to test that the option is honored and that NM restarts DHCP if
the option goes away. However, the minimum wait time according to the
RFC is 5 minutes, which makes the test take long time.

Allow changing the value via the "NM_TEST_IPV6_ONLY_MIN_WAIT"
environment variable.
2024-10-23 15:01:20 +02:00
Beniamino Galvani
03c01eae29 device: configure IPv6-only-preferred mode in the DHCP client
Configure the DHCP client to enable the IPv6-only-preferred mode based
on the content of the profile and on global configuration.
2024-10-23 15:01:20 +02:00
Beniamino Galvani
022b7ac184 dhcp: support the IPv6-Only Preferred option
Add support for handling the IPv6-Only Preferred option. When enabled,
the client adds the option code to the "Parameter Request List" option
of the DHCPDISCOVER and DHCPREQUEST messages. If the server sends the
option back in the DHCPOFFER and DHCPACK, the host stops the DHCP
client for the time interval specified in the option. After the
timeout expires, DHCP is restarted.
2024-10-23 15:01:19 +02:00
Beniamino Galvani
1fa08e7d1b dhcp: add function nm_dhcp_lease_data_parse_u32()
Add a function to parse 32-bit integer values from a DHCP option.
2024-10-23 15:01:19 +02:00
Beniamino Galvani
1db882ca63 dhcp: allow the plugin to be restarted
In the next commit, a mechanism will be added to stop the DHCP plugin
and restart it without destroying the NMDhcpClient object. For this to
work, we must reset some members of the object when stopping or
starting the plugin.
2024-10-23 15:01:18 +02:00
Beniamino Galvani
b6676aa8ef libnm,nmcli: introduce new ipv4.dhcp-ipv6-only-preferred property
Add a new "ipv4.dhcp-ipv6-only-preferred" property to control the
"IPv6-Only Preferred" DHCPv4 option (RFC 8925). The option indicates
that a host supports an IPv6-only mode and is willing to forgo
obtaining an IPv4 address if the network provides IPv6 connectivity.
2024-10-23 15:01:18 +02:00
Beniamino Galvani
d4af66b298 device: store the effective IP method
Store the effective IP method computed by evaluating the profile,
checking kernel support, or querying device's method
get_ip_method_auto().

The value will be used in a next commit to enable or disable features.
2024-10-23 14:56:41 +02:00
Beniamino Galvani
4af6cf592a nmcli: fix handling of connection.down-on-poweroff property
Fix the following error:

  $ nmcli connection modify C connection.down-on-poweroff yes
  **
  nm:ERROR:../src/libnmc-setting/nm-meta-setting-desc.c:1367:_set_fcn_gobject_ternary: assertion failed: (_gobject_property_get_gtype(G_OBJECT(setting), property_info->property_name) == NM_TYPE_TERNARY)
  Bail out! nm:ERROR:../src/libnmc-setting/nm-meta-setting-desc.c:1367:_set_fcn_gobject_ternary: assertion failed: (_gobject_property_get_gtype(G_OBJECT(setting), property_info->property_name) == NM_TYPE_TERNARY)

Fixes: bd38a19832 ('connection: add support to down-on-poweroff')

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2055
2024-10-22 10:50:20 +02:00
Gris Ge
3cb9991fc8 merge: branch 'fix_sriov'
sriov: only valid sriov capacity when enabled

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2051
2024-10-22 02:16:20 +00:00
Gris Ge
421ccf8b4c sriov: only valid sriov capacity when enabled
NetworkManager current code will refuse to activate a connection if its
interface has no SRIOV capacity but holding a empty SRIOV settings.

This patch only valid SRIOV capacity when it is enabled(total_vfs > 0).

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

Signed-off-by: Gris Ge <fge@redhat.com>
2024-10-21 21:14:11 +08:00
Fernando Fernandez Mancera
c691dd7ecf bonding: steer IGMP queries to the active bond balance-slb primary port
Add chains and rules to steer the IGMP reports to the primary member
port. This rules are adapted from the script provided by Eric Garver.

https://gitlab.com/egarver/virtual-networking/-/blob/master/mlag.sh

Fixes: e9268e3924 ('firewall: add mlag firewall utils for multi chassis link aggregation (MLAG) for bonding-slb')
2024-10-18 11:50:04 +02:00
Íñigo Huguet
88b160cbcc merge: branch 'initial-eps-bearer-settings'
-Added additional initial eps bearer settings

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1915
2024-10-17 06:01:41 +00:00
Íñigo Huguet
c0ac672336 NEWS: update with LTE's EPS bearer changes 2024-10-17 07:56:04 +02:00
Josef Ouano
a47d44cffd wwan: added additional initial eps bearer settings
Added the following settings for initial EPS bearer:
- Username
- Password
- Allowed Auth
- APN Type Setting
2024-10-17 07:53:49 +02:00