mptcp: add sysctl allow_join_initial_addr_port
This patch added a new sysctl, named allow_join_initial_addr_port, to control whether allow peers to send join requests to the IP address and port number used by the initial subflow. Suggested-by: Florian Westphal <fw@strlen.de> Acked-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Geliang Tang <geliangtang@gmail.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:
parent
a432c771e2
commit
d2f77960e5
|
@ -32,3 +32,16 @@ checksum_enabled - BOOLEAN
|
|||
per-namespace sysctl.
|
||||
|
||||
Default: 0
|
||||
|
||||
allow_join_initial_addr_port - BOOLEAN
|
||||
Allow peers to send join requests to the IP address and port number used
|
||||
by the initial subflow if the value is 1. This controls a flag that is
|
||||
sent to the peer at connection time, and whether such join requests are
|
||||
accepted or denied.
|
||||
|
||||
Joins to addresses advertised with ADD_ADDR are not affected by this
|
||||
value.
|
||||
|
||||
This is a per-namespace sysctl.
|
||||
|
||||
Default: 1
|
||||
|
|
|
@ -24,6 +24,7 @@ struct mptcp_pernet {
|
|||
u8 mptcp_enabled;
|
||||
unsigned int add_addr_timeout;
|
||||
u8 checksum_enabled;
|
||||
u8 allow_join_initial_addr_port;
|
||||
};
|
||||
|
||||
static struct mptcp_pernet *mptcp_get_pernet(struct net *net)
|
||||
|
@ -46,11 +47,17 @@ int mptcp_is_checksum_enabled(struct net *net)
|
|||
return mptcp_get_pernet(net)->checksum_enabled;
|
||||
}
|
||||
|
||||
int mptcp_allow_join_id0(struct net *net)
|
||||
{
|
||||
return mptcp_get_pernet(net)->allow_join_initial_addr_port;
|
||||
}
|
||||
|
||||
static void mptcp_pernet_set_defaults(struct mptcp_pernet *pernet)
|
||||
{
|
||||
pernet->mptcp_enabled = 1;
|
||||
pernet->add_addr_timeout = TCP_RTO_MAX;
|
||||
pernet->checksum_enabled = 0;
|
||||
pernet->allow_join_initial_addr_port = 1;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
|
@ -80,6 +87,14 @@ static struct ctl_table mptcp_sysctl_table[] = {
|
|||
.extra1 = SYSCTL_ZERO,
|
||||
.extra2 = SYSCTL_ONE
|
||||
},
|
||||
{
|
||||
.procname = "allow_join_initial_addr_port",
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dou8vec_minmax,
|
||||
.extra1 = SYSCTL_ZERO,
|
||||
.extra2 = SYSCTL_ONE
|
||||
},
|
||||
{}
|
||||
};
|
||||
|
||||
|
@ -98,6 +113,7 @@ static int mptcp_pernet_new_table(struct net *net, struct mptcp_pernet *pernet)
|
|||
table[0].data = &pernet->mptcp_enabled;
|
||||
table[1].data = &pernet->add_addr_timeout;
|
||||
table[2].data = &pernet->checksum_enabled;
|
||||
table[3].data = &pernet->allow_join_initial_addr_port;
|
||||
|
||||
hdr = register_net_sysctl(net, MPTCP_SYSCTL_PATH, table);
|
||||
if (!hdr)
|
||||
|
|
|
@ -540,6 +540,7 @@ static inline void mptcp_subflow_delegated_done(struct mptcp_subflow_context *su
|
|||
int mptcp_is_enabled(struct net *net);
|
||||
unsigned int mptcp_get_add_addr_timeout(struct net *net);
|
||||
int mptcp_is_checksum_enabled(struct net *net);
|
||||
int mptcp_allow_join_id0(struct net *net);
|
||||
void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow,
|
||||
struct mptcp_options_received *mp_opt);
|
||||
bool mptcp_subflow_data_available(struct sock *sk);
|
||||
|
|
Loading…
Reference in New Issue