mptcp: Associate MPTCP context with TCP socket
Use ULP to associate a subflow_context structure with each TCP subflow socket. Creating these sockets requires new bind and connect functions to make sure ULP is set up immediately when the subflow sockets are created. Co-developed-by: Florian Westphal <fw@strlen.de> Signed-off-by: Florian Westphal <fw@strlen.de> Co-developed-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net> Co-developed-by: Davide Caratti <dcaratti@redhat.com> Signed-off-by: Davide Caratti <dcaratti@redhat.com> Co-developed-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Peter Krystad <peter.krystad@linux.intel.com> Signed-off-by: Christoph Paasch <cpaasch@apple.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
eda7acddf8
commit
2303f994b3
@@ -48,4 +48,30 @@ static inline struct mptcp_sock *mptcp_sk(const struct sock *sk)
|
||||
return (struct mptcp_sock *)sk;
|
||||
}
|
||||
|
||||
/* MPTCP subflow context */
|
||||
struct mptcp_subflow_context {
|
||||
u32 request_mptcp : 1; /* send MP_CAPABLE */
|
||||
struct sock *tcp_sock; /* tcp sk backpointer */
|
||||
struct sock *conn; /* parent mptcp_sock */
|
||||
struct rcu_head rcu;
|
||||
};
|
||||
|
||||
static inline struct mptcp_subflow_context *
|
||||
mptcp_subflow_ctx(const struct sock *sk)
|
||||
{
|
||||
struct inet_connection_sock *icsk = inet_csk(sk);
|
||||
|
||||
/* Use RCU on icsk_ulp_data only for sock diag code */
|
||||
return (__force struct mptcp_subflow_context *)icsk->icsk_ulp_data;
|
||||
}
|
||||
|
||||
static inline struct sock *
|
||||
mptcp_subflow_tcp_sock(const struct mptcp_subflow_context *subflow)
|
||||
{
|
||||
return subflow->tcp_sock;
|
||||
}
|
||||
|
||||
void mptcp_subflow_init(void);
|
||||
int mptcp_subflow_create_socket(struct sock *sk, struct socket **new_sock);
|
||||
|
||||
#endif /* __MPTCP_PROTOCOL_H */
|
||||
|
Reference in New Issue
Block a user