mptcp: allow creating non-backup subflows
authorPaolo Abeni <pabeni@redhat.com>
Mon, 14 Sep 2020 08:01:16 +0000 (10:01 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 14 Sep 2020 20:28:02 +0000 (13:28 -0700)
Currently the 'backup' attribute of local endpoint
is ignored. Let's use it for the MP_JOIN handshake

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/mptcp/subflow.c

index ae3eeb9bb191c4b329cd17e516bd2a1f24df5e32..8be401349d9f11e1cbb483c85df2710ee53c3986 100644 (file)
@@ -20,6 +20,7 @@
 #include <net/ip6_route.h>
 #endif
 #include <net/mptcp.h>
+#include <uapi/linux/mptcp.h>
 #include "protocol.h"
 #include "mib.h"
 
@@ -1090,7 +1091,7 @@ int __mptcp_subflow_connect(struct sock *sk, const struct mptcp_addr_info *loc,
        subflow->remote_token = remote_token;
        subflow->local_id = local_id;
        subflow->request_join = 1;
-       subflow->request_bkup = 1;
+       subflow->request_bkup = !!(loc->flags & MPTCP_PM_ADDR_FLAG_BACKUP);
        mptcp_info2sockaddr(remote, &addr);
 
        err = kernel_connect(sf, (struct sockaddr *)&addr, addrlen, O_NONBLOCK);