Commit Graph

28470 Commits

Author SHA1 Message Date
Wen Liang
c3504f7e62 Rewrite ./tools/generate-docs-nm-property-infos.py with XML library
Instead of writing XML text word by word, it is less error prone to
write with XML library.

Signed-off-by: Wen Liang <liangwen12year@gmail.com>
2021-05-20 10:41:20 +02:00
Wen Liang
dd38eb1f76 Adjust property tag format in nm-property-infos-*.xml
In order to make the generated XML file format consistent before and
after using XML library, adjust `property` tag format.

Signed-off-by: Wen Liang <liangwen12year@gmail.com>
2021-05-20 10:41:19 +02:00
Beniamino Galvani
481ccd2ad2 release: bump version to 1.31.5 (development) 2021-05-19 21:04:53 +02:00
Thomas Haller
2d5489dcbb glib-aux: minor cleanup in nm_uuid_is_valid_nm() 2021-05-19 10:56:36 +02:00
Beniamino Galvani
1b7300ace9 merge: branch 'fix_reader_accept_all' into 'main'
ifcfg: fix wired reader for ACCEPT_ALL_MAC_ADDRESSES key

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/858
2021-05-19 08:42:11 +00:00
Fernando Fernandez Mancera
38246b1802 ifcfg: fix wired reader for ACCEPT_ALL_MAC_ADDRESSES key
When the ACCEPT_ALL_MAC_ADDRESSES key is found by the wired reader, the
wired setting was not being created.

Fixes: d946aa0c50 ('wired-setting: add support to accept-all-mac-addresses')
Signed-off-by: Fernando Fernandez Mancera <ffmancera@riseup.net>
2021-05-19 08:40:41 +00:00
Beniamino Galvani
a7cf9046d3 core: merge branch 'bg/rh1955101'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/855
https://bugzilla.redhat.com/show_bug.cgi?id=1955101
2021-05-19 10:31:39 +02:00
Beniamino Galvani
a3f35ea5cc ovs: block auto activation of ovs-interfaces until ovsdb is ready
Otherwise the device tries to activate too early and fails.
2021-05-19 10:29:11 +02:00
Beniamino Galvani
e694f2cec1 manager: fix active_connection_find()
Commit 33b9fa3a3c ("manager: Keep volatile/external connections
while referenced by async_op_lst") changed active_connection_find() to
also return active connections that are not yet activating but are
waiting authorization.

This has side effect for other callers of the function. In particular,
_get_activatable_connections_filter() should exclude only ACs that are
really active, not those waiting for authorization.

Otherwise, in ensure_master_active_connection() all the ACs waiting
authorization are missed and we might fail to find the right master
AC.

Add an argument to active_connection_find to select whether include
ACs waiting authorization.

Fixes: 33b9fa3a3c ('manager: Keep volatile/external connections while referenced by async_op_lst')

https://bugzilla.redhat.com/show_bug.cgi?id=1955101
2021-05-19 10:29:11 +02:00
Mejans
eeae36fd12 po: update Occitan (oc) translation
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/861
2021-05-19 10:14:16 +02:00
Thomas Haller
aef9b95aaa dhcp: map "static" DHCP state for dhcpcd to bound
A user might configure /etc/dhcpcd.conf to contain static fallback addresses.
In that case, the dhcpcd plugin reports the state as "static". Let's treat
that the same way as bound.

Note that this is not an officially supported or endorsed way of
configuring fallback addresses in NetworkManager. Rather, when using
DHCP plugins, the user can hack the system and make unsupported
modifications in /etc/dhcpcd.conf or /etc/dhcp. This change only makes
it a bit easier to do it.

See-also: https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/579#note_922758

https://bugzilla.gnome.org/show_bug.cgi?id=768362

Based-on-patch-by: gordonb3 <gordon@bosvangennip.nl>
2021-05-19 09:21:48 +02:00
Thomas Haller
c34e36bb8d Revert "Rewrite ./tools/generate-docs-nm-property-infos.py with XML library"
This breaks build on RHEL7, probably due to an older python version.
Revert for now.

This reverts commit a83fb33840.
2021-05-18 16:00:25 +02:00
Thomas Haller
890eda4db8 core: merge branch 'th/l3cfg-18'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/854
2021-05-18 13:43:44 +02:00
Thomas Haller
75a64dd199 core: add nm_l3_config_data_iter_ip_{address,route}_for_each() helpers 2021-05-18 09:41:55 +02:00
Thomas Haller
4d929cc023 l3cfg: add more getters to NML3ConfigData 2021-05-18 09:41:55 +02:00
Thomas Haller
82cd0a8689 glib-aux: add nm_ip_addr_from_packed_array() helper 2021-05-18 09:41:54 +02:00
Thomas Haller
0abc14b3a0 core: remove unused best_ip_config_[46] field in NMDnsManager 2021-05-18 09:41:54 +02:00
Thomas Haller
55b722820d l3cfg: fix nm_l3_config_data_new_clone() to make exact copy
We use the merge function to initialize the cloned instance.
Previously, merge did not always copy all properties, so the
cloned instance might not have been identical. Fix that.
2021-05-18 09:41:54 +02:00
Thomas Haller
71eefff6e7 core: return instance from nm_dhcp_lease_ref()/nm_dhcp_lease_unref() for convenience 2021-05-18 09:41:53 +02:00
Thomas Haller
4ef4201b0a core: make IS_IPv4 variable an "int" type
gboolean is a typedef for int, so there is no difference in behavior.
However, we use IS_IPv4 as index into arrays of length two. Making
it "int" seems more approriate. Also, this is what all the other
(similar) code does.
2021-05-18 09:41:53 +02:00
Thomas Haller
bb1a495213 device: refactor dhcp-anycast-address handling for OLPC mesh device
dhcp-anycast-address is only set by OLPC mesh device. It's ugly to have
this in form of a nm_device_set_dhcp_anycast_address() method, because
that means to cache the address in NMDevice. Meaning, we have more state
in NMDevice, where it's not clear where it comes from.

Instead, whenever we need to DHCP anycast address, as the subclass to
provide it (if any). This way, it gets extracted from the currently
applied connection at the moment when it is needed. Beyond that, the
setting is not duplicated/cached in NMDevice anymore.
2021-05-18 09:41:53 +02:00
Thomas Haller
ca6d30cb24 libnm: comment "olpc-mesh.dhcp-anycast-address" only working with dhclient 2021-05-18 09:41:52 +02:00
Thomas Haller
5aa7e254bd dhcp: refactor DHCP anycast_address to be property of NMDhcpClient
Instead of passing the setting on during ip4_start()/ip6_start(), make
it a property of NMDhcpClient.

This property is currently only set by OLPC devices, and is only
implemented by NMDhcpDhclient. As such, it also does not need to change
or get reset. Hence, and immutable, construct-only property is clearer,
because we don't have to pass parameters to ip[46]_start().

Arguably, the parameter is still there, but being immutable and always
set, make it easier to reason about it.
2021-05-18 09:41:52 +02:00
Thomas Haller
658c6a4146 ethtool: merge branch 'th/ethtool-autoneg-consistency'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/857
2021-05-18 08:41:31 +02:00
Thomas Haller
98a89a05ec core: explicitly disable ethtool.pause-autoneg when setting pause-rx/pause-tx
Kernel will coerce values like

    ethtool -A eth0 autoneg on rx off

to have autonet still on.

Also, if autoneg on the interface is enabled, then `ethtool  -A eth0 tx off`
has no effect.

In NetworkManager, the user cannot configure "autoneg on" together with
any rx/tx settings. That would render the profile invalid. However, we
also need to take care that a profile

  nmcli connection add ... ethtool.pause-autoneg ignore ethtool.pause-tx off

really means off. That means, we must coerce an unspecified autoneg
setting to "off".
2021-05-17 23:31:21 +02:00
Thomas Haller
dfc5667603 libnm: reject setting ethtool.pause-autoneg while setting pause-rx/pause-tx
Setting pause-rx/pause-tx to an explicit value, implies that the user
does not want to enable autoneg. Reject that as invalid value in the
connection profile.
2021-05-17 23:31:21 +02:00
Thomas Haller
0ce59b5dc4 build: merge branch 'liangwen12year:wl/xml'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/842
2021-05-17 23:29:09 +02:00
Wen Liang
a83fb33840 Rewrite ./tools/generate-docs-nm-property-infos.py with XML library
Instead of writing XML text word by word, it is less error prone to
write with XML library.

Signed-off-by: Wen Liang <liangwen12year@gmail.com>
2021-05-17 23:28:56 +02:00
Wen Liang
403d776730 Remove unnecessary escaping for single quote
When writing XML text with XML library, single quote will not be
escaped. So remove the escaping for single quote in current tool.

Signed-off-by: Wen Liang <liangwen12year@gmail.com>
2021-05-17 23:28:56 +02:00
Wen Liang
f6e52708a2 Add paired property tag to nm-property-infos-*.xml
In order to make the generated XML file format consistent before and
after using XML library, replace self-closing `property` tag with
paired `property` tag.

Signed-off-by: Wen Liang <liangwen12year@gmail.com>
2021-05-17 23:28:56 +02:00
Wen Liang
90422ddd1a Remove line breaks in attribute value of nm-property-infos-*.xml
Since line breaks are not needed for XML's attribute tag, remove the
unnecessary line breaks.

Signed-off-by: Wen Liang <liangwen12year@gmail.com>
2021-05-17 23:28:56 +02:00
Beniamino Galvani
e67ddd826f device: commit MTU during stage2
Currently we commit the MTU to the device when updating the IP
configuration, or when a port device is added to the controller. This
means that for a connection with DHCP, the MTU is set only after DHCP
has completed. In particular, if DHCP doesn't complete and the
connection has an infinite timeout, the MTU is never set.

_commit_mtu() tracks different sources for the MTU of a device, and
each source has a different priority. Among these sources there are
the parent link (for VLANs), a dynamic IP configuration (DHCP, PPP)
and the connection profile.

A MTU from the connection always has the highest priority and
overrides other sources.

Therefore, if the connection specifies an MTU it can be applied at
stage2, even before configuring IP addressing.

https://bugzilla.redhat.com/show_bug.cgi?id=1890234
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/859
2021-05-17 16:20:36 +02:00
Beniamino Galvani
aeea0203b4 core: merge branch 'bg/assume'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/852
2021-05-14 18:20:31 +02:00
Beniamino Galvani
3c4450aa4d core: don't reset assume state too early
If the device is still unmanaged by platform-init (which means that
udev didn't emit the event for the interface) when the device gets
realized, we currently clear the assume state. Later, when the device
becomes managed, NM is not able to properly assume the device using
the UUID.

This situation arises, for example, when NM already configured the
device in initrd; after NM is restarted in the real root, udev events
can be delayed causing this race condition.

Among all unamanaged flags, platform-init is the only one that can be
delayed externally. We should not clear the assume state if the device
has only platform-init in the unmanaged flags.
2021-05-14 18:19:38 +02:00
Beniamino Galvani
5dc6d73243 managed: remove unneeded call to nm_device_assume_state_reset()
_set_state_full() in NMDevice already calls
nm_device_assume_state_reset() when the device reaches state >
DISCONNECTED.
2021-05-14 18:19:38 +02:00
Beniamino Galvani
f244aa6907 device: add NM_UNMANAGED_ALL 2021-05-14 18:19:38 +02:00
Thomas Haller
0609f1f31c firewall: for now always default firewall-backend to "itables"
ntables backend is not yet well tested. Don't flip the default yet
but for now always use iptables.

Once nftables is shown to work well, revert this patch.
2021-05-14 11:46:56 +02:00
Thomas Haller
6f04f5bc2f firewall: merge branch 'th/firewall-nft'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/847
2021-05-14 11:41:43 +02:00
Thomas Haller
a79d5e2218 firewall: add special firewall-backend "none" 2021-05-14 11:41:33 +02:00
Thomas Haller
9ebdb967de firewall: implement masquerading for shared mode with nftables
Add support for nftables, as a second backend beside iptables (firewalld
still missing).

Like iptables, choose to call the `nft` tool. The alternative would be
to use libnftables or talk netlink.

It's ugly to blocking wait for a process to complete. We already do that
for iptables, but we better should not because we should not treat other
processes as trusted and not allow untrusted code to block NetworkManager.
Fixing that would require a central manager that serializes all requests.
Especially with firewalld support, this will be interesting again,
because we don't want to synchronously talk D-Bus either.
For now, `nft` is still called synchronously. However, the internal
implementation uses an asynchronous function. That currently
serves no purpose except supporting a timeout. Otherwise, the only
reason why this is asynchronous is that I implemented this first, and
I think in the future we want this code to be non-blocking. So, instead
of dropping the asynchronous code, I wrap it in a synchronous function
for now.

The configured nft table is:

    table inet nm-shared-eth0 {
            chain nat_postrouting {
                    type nat hook postrouting priority srcnat; policy accept;
                    ip saddr 192.168.42.0/24 ip daddr != 192.168.42.0/24 masquerade
            }

            chain filter_forward {
                    type filter hook forward priority filter; policy accept;
                    ip daddr 192.168.42.0/24 oifname "eth0" ct state { established, related } accept
                    ip saddr 192.168.42.0/24 iifname "eth0" accept
                    iifname "eth0" oifname "eth0" accept
                    iifname "eth0" reject
                    oifname "eth0" reject
            }
    }
2021-05-14 11:41:33 +02:00
Thomas Haller
1da1ad9c99 firewall: make firewall-backend configurable via "NetworkManager.conf"
"iptables" and "nftables" will be supported. Currently, the code is
unused and only "iptables" is supported.
2021-05-14 11:41:32 +02:00
Thomas Haller
2a1d42e77d firewall: refactor is_comment argument to _share_iptables_get_name()
The new name makes it more generic, because the limitation exists
for iptables chains. Everything else (iptables comments, nftables
tables) has no such length limit.
2021-05-14 11:41:32 +02:00
Thomas Haller
8a11380e80 glib-aux: add nm_auto_pop_and_unref_gmaincontext cleanup macro 2021-05-14 11:41:32 +02:00
Thomas Haller
071ef784cf glib-aux: add nm_g_subprocess_terminate_in_background() helper 2021-05-14 11:41:32 +02:00
Thomas Haller
62027350f7 glib-aux: add NM_STRV_EMPTY() helper
NM_PTRARRAY_EMPTY(char*) gives a "char *const*" pointer,
which is often not useful where a strv array is needed.
Add a helper macro.
2021-05-14 11:41:32 +02:00
Thomas Haller
b5c5b2443d glib-aux: add nm_g_error_free() helper 2021-05-14 11:41:32 +02:00
Thomas Haller
9a95146b70 core/format: drop /*<flags>*/ comment from enums that lead to bad formatting
Our clang-format style doesn't work well with these gtk-doc
tags.

For NetworkManager core, we don't use glib-mkenums. Thus, these
comments serve no purpose. Drop them for better formatting.
2021-05-14 11:41:31 +02:00
Thomas Haller
63bb7580bc core: merge branch 'th/dbus-drop-legacy-properties-changed'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/853
2021-05-14 11:34:33 +02:00
Thomas Haller
b6a195cf81 tools: remove deprecated PropertiesChanged signal in "test-networkmanager-service.py" 2021-05-14 10:57:35 +02:00
Thomas Haller
48dce1b66c core: drop deprecated PropertiesChanged D-Bus signal (API BREAK)
D-Bus 1.3.1 (2010) introduced the standard "PropertiesChanged" signal
on "org.freedesktop.DBus.Properties". NetworkManager is old, and predates
this API. From that time, it still had it's own PropertiesChanged signal
that are emitted together with the standard ones. NetworkManager
supports the standard PropertiesChanged signal since it switched to
gdbus library in version 1.2.0 (2016).

These own signals are deprecated for a long time already ([1], 2016), and
are hopefully not used by anybody anymore. libnm-glib was using them and
relied on them, but that library is gone. libnm does not use them and neither
does plasma-nm.

Hopefully no users are left that are affected by this API break.

[1] 6fb917178a
2021-05-14 10:57:34 +02:00