mptcp: Add ADD_ADDR handling

Add handling for sending and receiving the ADD_ADDR, ADD_ADDR6,
and RM_ADDR suboptions.

Co-developed-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
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: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Peter Krystad
2020-03-27 14:48:37 -07:00
committed by David S. Miller
parent 41b145024c
commit 3df523ab58
5 changed files with 262 additions and 18 deletions

View File

@@ -86,9 +86,13 @@ struct mptcp_options_received {
u64 data_seq;
u32 subflow_seq;
u16 data_len;
u8 mp_capable : 1,
u16 mp_capable : 1,
mp_join : 1,
dss : 1;
dss : 1,
add_addr : 1,
rm_addr : 1,
family : 4,
echo : 1;
u8 use_map:1,
dsn64:1,
data_fin:1,
@@ -96,6 +100,16 @@ struct mptcp_options_received {
ack64:1,
mpc_map:1,
__unused:2;
u8 addr_id;
u8 rm_id;
union {
struct in_addr addr;
#if IS_ENABLED(CONFIG_MPTCP_IPV6)
struct in6_addr addr6;
#endif
};
u64 ahmac;
u16 port;
};
#endif
@@ -131,6 +145,8 @@ static inline void tcp_clear_options(struct tcp_options_received *rx_opt)
#if IS_ENABLED(CONFIG_MPTCP)
rx_opt->mptcp.mp_capable = 0;
rx_opt->mptcp.mp_join = 0;
rx_opt->mptcp.add_addr = 0;
rx_opt->mptcp.rm_addr = 0;
rx_opt->mptcp.dss = 0;
#endif
}