All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Krystad <peter.krystad at linux.intel.com>
To: mptcp at lists.01.org
Subject: [MPTCP] [PATCH 3/5] mptcp: Make mptcp_subflow_connect() IPv4/6 agnostic
Date: Tue, 15 Oct 2019 16:06:11 -0700	[thread overview]
Message-ID: <20191015230613.16981-4-peter.krystad@linux.intel.com> (raw)
In-Reply-To: 20191015230613.16981-1-peter.krystad@linux.intel.com

[-- Attachment #1: Type: text/plain, Size: 2523 bytes --]

This will make IPV6-ifying the path manager interface easier.

squashto: Add handling of outgoing MP_JOIN requests

Signed-off-by: Peter Krystad <peter.krystad(a)linux.intel.com>
---
 net/mptcp/protocol.h |  4 ++--
 net/mptcp/subflow.c  | 16 ++++++++++------
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index 2bfcb65c7c0a..06e330b3a0f0 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -248,8 +248,8 @@ mptcp_subflow_tcp_socket(const struct mptcp_subflow_context *subflow)
 int mptcp_is_enabled(struct net *net);
 
 void mptcp_subflow_init(void);
-int mptcp_subflow_connect(struct sock *sk, struct sockaddr_in *local,
-			  struct sockaddr_in *remote, u8 remote_id);
+int mptcp_subflow_connect(struct sock *sk, struct sockaddr *local,
+			  struct sockaddr *remote, u8 remote_id);
 int mptcp_subflow_create_socket(struct sock *sk, struct socket **new_sock);
 
 extern const struct inet_connection_sock_af_ops ipv4_specific;
diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
index b0cda95fbe20..aa94d2f74e89 100644
--- a/net/mptcp/subflow.c
+++ b/net/mptcp/subflow.c
@@ -330,13 +330,14 @@ static void subflow_data_ready(struct sock *sk)
 	}
 }
 
-int mptcp_subflow_connect(struct sock *sk, struct sockaddr_in *local,
-			  struct sockaddr_in *remote, u8 remote_id)
+int mptcp_subflow_connect(struct sock *sk, struct sockaddr *local,
+			  struct sockaddr *remote, u8 remote_id)
 {
 	struct mptcp_sock *msk = mptcp_sk(sk);
 	struct mptcp_subflow_context *subflow;
 	struct socket *sf;
 	u32 remote_token;
+	int addrlen;
 	int err;
 
 	lock_sock(sk);
@@ -354,8 +355,12 @@ int mptcp_subflow_connect(struct sock *sk, struct sockaddr_in *local,
 	sock_hold(sf->sk);
 	release_sock(sk);
 
-	err = kernel_bind(sf, (struct sockaddr *)local,
-			  sizeof(struct sockaddr_in));
+	addrlen = sizeof(struct sockaddr_in);
+#if IS_ENABLED(CONFIG_IPV6)
+	if (local->sa_family == AF_INET6)
+		addrlen = sizeof(struct sockaddr_in6);
+#endif
+	err = kernel_bind(sf, local, addrlen);
 	if (err)
 		goto failed;
 
@@ -366,8 +371,7 @@ int mptcp_subflow_connect(struct sock *sk, struct sockaddr_in *local,
 	subflow->request_join = 1;
 	subflow->request_bkup = 1;
 
-	err = kernel_connect(sf, (struct sockaddr *)remote,
-			     sizeof(struct sockaddr_in), O_NONBLOCK);
+	err = kernel_connect(sf, remote, addrlen, O_NONBLOCK);
 	if (err && err != -EINPROGRESS)
 		goto failed;
 
-- 
2.17.2

                 reply	other threads:[~2019-10-15 23:06 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191015230613.16981-4-peter.krystad@linux.intel.com \
    --to=unknown@example.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.