linux-stable/net/mptcp
Matthieu Baerts f44ce13201 mptcp: netlink: respect v4/v6-only sockets
commit fb00ee4f33 upstream.

If an MPTCP socket has been created with AF_INET6 and the IPV6_V6ONLY
option has been set, the userspace PM would allow creating subflows
using IPv4 addresses, e.g. mapped in v6.

The kernel side of userspace PM will also accept creating subflows with
local and remote addresses having different families. Depending on the
subflow socket's family, different behaviours are expected:
 - If AF_INET is forced with a v6 address, the kernel will take the last
   byte of the IP and try to connect to that: a new subflow is created
   but to a non expected address.
 - If AF_INET6 is forced with a v4 address, the kernel will try to
   connect to a v4 address (v4-mapped-v6). A -EBADF error from the
   connect() part is then expected.

It is then required to check the given families can be accepted. This is
done by using a new helper for addresses family matching, taking care of
IPv4 vs IPv4-mapped-IPv6 addresses. This helper will be re-used later by
the in-kernel path-manager to use mixed IPv4 and IPv6 addresses.

While at it, a clear error message is now reported if there are some
conflicts with the families that have been passed by the userspace.

Fixes: 702c2f646d ("mptcp: netlink: allow userspace-driven subflow establishment")
Cc: stable@vger.kernel.org
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-01-24 07:24:37 +01:00
..
bpf.c bpf: Add bpf_skc_to_mptcp_sock_proto 2022-05-20 15:29:00 -07:00
crypto.c
crypto_test.c
ctrl.c mptcp: Add a per-namespace sysctl to set the default path manager type 2022-04-29 17:25:14 -07:00
diag.c
Kconfig
Makefile Merge https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2022-05-23 16:07:14 -07:00
mib.c mptcp: add more offered MIBs counter 2022-05-05 19:00:16 -07:00
mib.h mptcp: add more offered MIBs counter 2022-05-05 19:00:16 -07:00
mptcp_diag.c tcp: Access &tcp_hashinfo via net. 2022-09-20 10:21:49 -07:00
options.c tcp: Fix data-races around sysctl_tcp_workaround_signed_windows. 2022-07-22 12:06:17 +01:00
pm.c mptcp: netlink: respect v4/v6-only sockets 2023-01-24 07:24:37 +01:00
pm_netlink.c mptcp: account memory allocation in mptcp_nl_cmd_add_addr() to user 2022-09-15 12:01:02 +02:00
pm_userspace.c mptcp: netlink: respect v4/v6-only sockets 2023-01-24 07:24:37 +01:00
protocol.c mptcp: explicitly specify sock family at subflow creation time 2023-01-24 07:24:37 +01:00
protocol.h mptcp: netlink: respect v4/v6-only sockets 2023-01-24 07:24:37 +01:00
sockopt.c mptcp: add TCP_FASTOPEN_CONNECT socket option 2022-09-28 18:52:03 -07:00
subflow.c mptcp: explicitly specify sock family at subflow creation time 2023-01-24 07:24:37 +01:00
syncookies.c
token.c
token_test.c