In MPTCP, the local address and port used by the initial subflow has the
ID "0". It means that when this address and port are used for some
operations -- e.g. creating a new subflow -- they should be linked to
the ID0, and no other addresses and ports can get this special ID while
the initial IP address and port is used.
Instead of dealing with the ID0 case as an exception, add it to the
local addr list, and deal with it like the others, with minor
exceptions. That way, it seems easier to maintain instead of adding new
exceptions at a few places, at the cost of a few more bytes, which seems
OK in this mode.
The first patch modifies add the initial address to the list, and the
others remove exceptions, and validate that in the selftests.
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
Changes in v2:
- patch 1: commit msg + local_addr_used and needs_id exceptions
- patch 2: commit msg
- Link to v1: https://patch.msgid.link/20260727-mptcp-pm-userspace-id0-case-v1-0-9877f02a9bae@kernel.org
---
Matthieu Baerts (NGI0) (6):
mptcp: pm: userspace: properly handle the ID0 case
mptcp: pm: userspace: allow announcing ID0 addr
mptcp: pm: userspace: no ID0 exception for RM_ADDR
mptcp: pm: userspace: don't dump initial ID0
selftests: mptcp: join: new ID0 subflow from the right IP
mptcp: pm: restrict in-kernel worker actions to this PM
net/mptcp/pm.c | 8 ++-
net/mptcp/pm_userspace.c | 91 ++++++++++++-------------
net/mptcp/protocol.h | 1 +
tools/testing/selftests/net/mptcp/mptcp_join.sh | 7 +-
4 files changed, 55 insertions(+), 52 deletions(-)
---
base-commit: 0715f5ba093a581def25b88da61c987b1719bc6d
change-id: 20260724-mptcp-pm-userspace-id0-case-f074f64466c8
Best regards,
--
Matthieu Baerts (NGI0) <matttbe@kernel.org>