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.