mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-24 14:07:52 -04:00
mptcp: Add a per-namespace sysctl to set the default path manager type
The new net.mptcp.pm_type sysctl determines which path manager will be used by each newly-created MPTCP socket. v2: Handle builds without CONFIG_SYSCTL v3: Clarify logic for type-specific PM init (Geliang Tang and Paolo Abeni) Acked-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
6961326e38
commit
6bb63ccc25
4 changed files with 63 additions and 11 deletions
|
@ -16,6 +16,11 @@
|
|||
#define MPTCP_SYSCTL_PATH "net/mptcp"
|
||||
|
||||
static int mptcp_pernet_id;
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
static int mptcp_pm_type_max = __MPTCP_PM_TYPE_MAX;
|
||||
#endif
|
||||
|
||||
struct mptcp_pernet {
|
||||
#ifdef CONFIG_SYSCTL
|
||||
struct ctl_table_header *ctl_table_hdr;
|
||||
|
@ -26,6 +31,7 @@ struct mptcp_pernet {
|
|||
u8 mptcp_enabled;
|
||||
u8 checksum_enabled;
|
||||
u8 allow_join_initial_addr_port;
|
||||
u8 pm_type;
|
||||
};
|
||||
|
||||
static struct mptcp_pernet *mptcp_get_pernet(const struct net *net)
|
||||
|
@ -58,6 +64,11 @@ unsigned int mptcp_stale_loss_cnt(const struct net *net)
|
|||
return mptcp_get_pernet(net)->stale_loss_cnt;
|
||||
}
|
||||
|
||||
int mptcp_get_pm_type(const struct net *net)
|
||||
{
|
||||
return mptcp_get_pernet(net)->pm_type;
|
||||
}
|
||||
|
||||
static void mptcp_pernet_set_defaults(struct mptcp_pernet *pernet)
|
||||
{
|
||||
pernet->mptcp_enabled = 1;
|
||||
|
@ -65,6 +76,7 @@ static void mptcp_pernet_set_defaults(struct mptcp_pernet *pernet)
|
|||
pernet->checksum_enabled = 0;
|
||||
pernet->allow_join_initial_addr_port = 1;
|
||||
pernet->stale_loss_cnt = 4;
|
||||
pernet->pm_type = MPTCP_PM_TYPE_KERNEL;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
|
@ -108,6 +120,14 @@ static struct ctl_table mptcp_sysctl_table[] = {
|
|||
.mode = 0644,
|
||||
.proc_handler = proc_douintvec_minmax,
|
||||
},
|
||||
{
|
||||
.procname = "pm_type",
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dou8vec_minmax,
|
||||
.extra1 = SYSCTL_ZERO,
|
||||
.extra2 = &mptcp_pm_type_max
|
||||
},
|
||||
{}
|
||||
};
|
||||
|
||||
|
@ -128,6 +148,7 @@ static int mptcp_pernet_new_table(struct net *net, struct mptcp_pernet *pernet)
|
|||
table[2].data = &pernet->checksum_enabled;
|
||||
table[3].data = &pernet->allow_join_initial_addr_port;
|
||||
table[4].data = &pernet->stale_loss_cnt;
|
||||
table[5].data = &pernet->pm_type;
|
||||
|
||||
hdr = register_net_sysctl(net, MPTCP_SYSCTL_PATH, table);
|
||||
if (!hdr)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue