162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * linux/fs/nfs/nfs4sysctl.c
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Sysctl interface to NFS v4 parameters
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * Copyright (c) 2006 Trond Myklebust <Trond.Myklebust@netapp.com>
862306a36Sopenharmony_ci */
962306a36Sopenharmony_ci#include <linux/sysctl.h>
1062306a36Sopenharmony_ci#include <linux/nfs_fs.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#include "nfs4_fs.h"
1362306a36Sopenharmony_ci#include "nfs4idmap.h"
1462306a36Sopenharmony_ci#include "callback.h"
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_cistatic const int nfs_set_port_min;
1762306a36Sopenharmony_cistatic const int nfs_set_port_max = 65535;
1862306a36Sopenharmony_cistatic struct ctl_table_header *nfs4_callback_sysctl_table;
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_cistatic struct ctl_table nfs4_cb_sysctls[] = {
2162306a36Sopenharmony_ci	{
2262306a36Sopenharmony_ci		.procname = "nfs_callback_tcpport",
2362306a36Sopenharmony_ci		.data = &nfs_callback_set_tcpport,
2462306a36Sopenharmony_ci		.maxlen = sizeof(int),
2562306a36Sopenharmony_ci		.mode = 0644,
2662306a36Sopenharmony_ci		.proc_handler = proc_dointvec_minmax,
2762306a36Sopenharmony_ci		.extra1 = (int *)&nfs_set_port_min,
2862306a36Sopenharmony_ci		.extra2 = (int *)&nfs_set_port_max,
2962306a36Sopenharmony_ci	},
3062306a36Sopenharmony_ci	{
3162306a36Sopenharmony_ci		.procname = "idmap_cache_timeout",
3262306a36Sopenharmony_ci		.data = &nfs_idmap_cache_timeout,
3362306a36Sopenharmony_ci		.maxlen = sizeof(int),
3462306a36Sopenharmony_ci		.mode = 0644,
3562306a36Sopenharmony_ci		.proc_handler = proc_dointvec,
3662306a36Sopenharmony_ci	},
3762306a36Sopenharmony_ci	{ }
3862306a36Sopenharmony_ci};
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ciint nfs4_register_sysctl(void)
4162306a36Sopenharmony_ci{
4262306a36Sopenharmony_ci	nfs4_callback_sysctl_table = register_sysctl("fs/nfs",
4362306a36Sopenharmony_ci						     nfs4_cb_sysctls);
4462306a36Sopenharmony_ci	if (nfs4_callback_sysctl_table == NULL)
4562306a36Sopenharmony_ci		return -ENOMEM;
4662306a36Sopenharmony_ci	return 0;
4762306a36Sopenharmony_ci}
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_civoid nfs4_unregister_sysctl(void)
5062306a36Sopenharmony_ci{
5162306a36Sopenharmony_ci	unregister_sysctl_table(nfs4_callback_sysctl_table);
5262306a36Sopenharmony_ci	nfs4_callback_sysctl_table = NULL;
5362306a36Sopenharmony_ci}
54