====================
MPTCP: Allow initial subflow to be disconnected
An MPTCP connection is aggregated from multiple TCP subflows, and can
involve multiple IP addresses on either peer. The addresses used in the
initial subflow connection are assigned address id 0 on each side of the
link. More addresses can be added and shared with the peer using address
IDs of 1 or larger. MPTCP in Linux shares non-zero address IDs across
all MPTCP connections in a net namespace, which allows userspace to
manage subflow connections across a number of sockets. However, this
makes the address with id 0 a special case, since the IP address
associated with id 0 is potentially different for each socket.
This patch set allows the initial subflow to be disconnected when
userspace specifies an address to remove using both id 0 and an IP
address, or when the peer sends an RM_ADDR for id 0.
Patches 1 and 3 implement the change for requests from the peer and
userspace, respectively.
Patch 2 consolidates some code for disconnecting subflows.
Patches 4-6 update the self tests to cover removal of subflows using
address id 0.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>