mptcp: Handle MPTCP TCP options
Add hooks to parse and format the MP_CAPABLE option. This option is handled according to MPTCP version 0 (RFC6824). MPTCP version 1 MP_CAPABLE (RFC6824bis/RFC8684) will be added later in coordination with related code changes. Co-developed-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net> Co-developed-by: Florian Westphal <fw@strlen.de> Signed-off-by: Florian Westphal <fw@strlen.de> Co-developed-by: Davide Caratti <dcaratti@redhat.com> Signed-off-by: Davide Caratti <dcaratti@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
f870fa0b57
commit
eda7acddf8
@@ -38,6 +38,7 @@
|
||||
#define pr_fmt(fmt) "TCP: " fmt
|
||||
|
||||
#include <net/tcp.h>
|
||||
#include <net/mptcp.h>
|
||||
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/gfp.h>
|
||||
@@ -414,6 +415,7 @@ static inline bool tcp_urg_mode(const struct tcp_sock *tp)
|
||||
#define OPTION_WSCALE (1 << 3)
|
||||
#define OPTION_FAST_OPEN_COOKIE (1 << 8)
|
||||
#define OPTION_SMC (1 << 9)
|
||||
#define OPTION_MPTCP (1 << 10)
|
||||
|
||||
static void smc_options_write(__be32 *ptr, u16 *options)
|
||||
{
|
||||
@@ -439,8 +441,17 @@ struct tcp_out_options {
|
||||
__u8 *hash_location; /* temporary pointer, overloaded */
|
||||
__u32 tsval, tsecr; /* need to include OPTION_TS */
|
||||
struct tcp_fastopen_cookie *fastopen_cookie; /* Fast open cookie */
|
||||
struct mptcp_out_options mptcp;
|
||||
};
|
||||
|
||||
static void mptcp_options_write(__be32 *ptr, struct tcp_out_options *opts)
|
||||
{
|
||||
#if IS_ENABLED(CONFIG_MPTCP)
|
||||
if (unlikely(OPTION_MPTCP & opts->options))
|
||||
mptcp_write_options(ptr, &opts->mptcp);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Write previously computed TCP options to the packet.
|
||||
*
|
||||
* Beware: Something in the Internet is very sensitive to the ordering of
|
||||
@@ -549,6 +560,8 @@ static void tcp_options_write(__be32 *ptr, struct tcp_sock *tp,
|
||||
}
|
||||
|
||||
smc_options_write(ptr, &options);
|
||||
|
||||
mptcp_options_write(ptr, opts);
|
||||
}
|
||||
|
||||
static void smc_set_option(const struct tcp_sock *tp,
|
||||
|
||||
Reference in New Issue
Block a user