One part of supporting userspace path managers is to prevent the
in-kernel PM from acting on userspace-managed MPTCP connections.
These patches:
* Add a per-MPTCP-socket 'pm_type'. A mix of kernel-managed and
userspace-managed connections are supported within each namespace.
* Conditionally decouple incoming ADD_ADDR/RM_ADDR and subflow changes
from the in-kernel PM. Netlink events are still triggered, and ADD_ADDR
echo handling is still in kernel code even if path management is
otherwise handled in userspace.
* Add a sysctl for setting the per-namespace default for in-kernel vs
userspace path management of new MPTCP sockets. This is an integer
value to allow extensibility.
* Add selftests to confirm that the in-kernel PM is bypassed.
RFC -> v1: Changed sysctl from a bool to an integer, added patch 1
(cleanup) and patch 6 (selftests), fixed ADD_ADDR echo and initial
pm->subflows_allowed settings.
Mat Martineau (6):
mptcp: Remove redundant assignments in path manager init
mptcp: Add a member to mptcp_pm_data to track kernel vs userspace mode
mptcp: Bypass kernel PM when userspace PM is enabled
mptcp: Make kernel path manager check for userspace-managed sockets
mptcp: Add a per-namespace sysctl to set the default path manager type
selftests: mptcp: Add tests for userspace PM type
Documentation/networking/mptcp-sysctl.rst | 18 +++++
net/mptcp/ctrl.c | 18 +++++
net/mptcp/pm.c | 53 +++++++++-----
net/mptcp/pm_netlink.c | 32 ++++-----
net/mptcp/protocol.h | 11 ++-
.../testing/selftests/net/mptcp/mptcp_join.sh | 70 ++++++++++++++++++-
6 files changed, 164 insertions(+), 38 deletions(-)
base-commit: 98fb1b1ee27f9173f03e2787422ad1045b988a96
--
2.34.0