mptcp: fix error handling rp_filter when kernel don't support mptcp

When the kernel don't support mptcp, NetworkManager should disable mptcp
and shouldn't change rp_filter from 1 to 2. However, when checking file
/proc/sys/net/mptcp/enabled, val v's type is defined to guint32, and
nm_platform_sysctl_get_int32 return -1, v becomes a very large number
and can't set mptcp_flags to NM_MPTCP_FLAGS_DISABLED.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1686
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2093

Fixes: c00873e08f ('mptcp: rework "connection.mptcp-flags" for enabling MPTCP')
(cherry picked from commit 9c42177d09)
(cherry picked from commit 50fc3c70af)
(cherry picked from commit 26cc879508)
This commit is contained in:
eaglegai 2024-12-24 23:03:06 +08:00 committed by Beniamino Galvani
parent a839209859
commit 769ecffad0

View file

@ -1459,7 +1459,7 @@ _prop_get_connection_mptcp_flags(NMDevice *self)
if (!NM_FLAGS_HAS(mptcp_flags, NM_MPTCP_FLAGS_DISABLED)) {
if (!NM_FLAGS_HAS(mptcp_flags, NM_MPTCP_FLAGS_ALSO_WITHOUT_SYSCTL)) {
guint32 v;
gint32 v;
/* If enabled, but without "also-without-sysctl", then MPTCP is still
* disabled, if the sysctl says so...