162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/* -*- linux-c -*-
362306a36Sopenharmony_ci * sysctl_net_x25.c: sysctl interface to net X.25 subsystem.
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Begun April 1, 1996, Mike Shaver.
662306a36Sopenharmony_ci * Added /proc/sys/net/x25 directory entry (empty =) ). [MS]
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <linux/sysctl.h>
1062306a36Sopenharmony_ci#include <linux/skbuff.h>
1162306a36Sopenharmony_ci#include <linux/socket.h>
1262306a36Sopenharmony_ci#include <linux/netdevice.h>
1362306a36Sopenharmony_ci#include <linux/init.h>
1462306a36Sopenharmony_ci#include <net/x25.h>
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_cistatic int min_timer[] = {   1 * HZ };
1762306a36Sopenharmony_cistatic int max_timer[] = { 300 * HZ };
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_cistatic struct ctl_table_header *x25_table_header;
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_cistatic struct ctl_table x25_table[] = {
2262306a36Sopenharmony_ci	{
2362306a36Sopenharmony_ci		.procname =	"restart_request_timeout",
2462306a36Sopenharmony_ci		.data =		&sysctl_x25_restart_request_timeout,
2562306a36Sopenharmony_ci		.maxlen =	sizeof(int),
2662306a36Sopenharmony_ci		.mode =		0644,
2762306a36Sopenharmony_ci		.proc_handler =	proc_dointvec_minmax,
2862306a36Sopenharmony_ci		.extra1 =	&min_timer,
2962306a36Sopenharmony_ci		.extra2 =	&max_timer,
3062306a36Sopenharmony_ci	},
3162306a36Sopenharmony_ci	{
3262306a36Sopenharmony_ci		.procname =	"call_request_timeout",
3362306a36Sopenharmony_ci		.data =		&sysctl_x25_call_request_timeout,
3462306a36Sopenharmony_ci		.maxlen =	sizeof(int),
3562306a36Sopenharmony_ci		.mode =		0644,
3662306a36Sopenharmony_ci		.proc_handler =	proc_dointvec_minmax,
3762306a36Sopenharmony_ci		.extra1 =	&min_timer,
3862306a36Sopenharmony_ci		.extra2 =	&max_timer,
3962306a36Sopenharmony_ci	},
4062306a36Sopenharmony_ci	{
4162306a36Sopenharmony_ci		.procname =	"reset_request_timeout",
4262306a36Sopenharmony_ci		.data =		&sysctl_x25_reset_request_timeout,
4362306a36Sopenharmony_ci		.maxlen =	sizeof(int),
4462306a36Sopenharmony_ci		.mode =		0644,
4562306a36Sopenharmony_ci		.proc_handler =	proc_dointvec_minmax,
4662306a36Sopenharmony_ci		.extra1 =	&min_timer,
4762306a36Sopenharmony_ci		.extra2 =	&max_timer,
4862306a36Sopenharmony_ci	},
4962306a36Sopenharmony_ci	{
5062306a36Sopenharmony_ci		.procname =	"clear_request_timeout",
5162306a36Sopenharmony_ci		.data =		&sysctl_x25_clear_request_timeout,
5262306a36Sopenharmony_ci		.maxlen =	sizeof(int),
5362306a36Sopenharmony_ci		.mode =		0644,
5462306a36Sopenharmony_ci		.proc_handler =	proc_dointvec_minmax,
5562306a36Sopenharmony_ci		.extra1 =	&min_timer,
5662306a36Sopenharmony_ci		.extra2 =	&max_timer,
5762306a36Sopenharmony_ci	},
5862306a36Sopenharmony_ci	{
5962306a36Sopenharmony_ci		.procname =	"acknowledgement_hold_back_timeout",
6062306a36Sopenharmony_ci		.data =		&sysctl_x25_ack_holdback_timeout,
6162306a36Sopenharmony_ci		.maxlen =	sizeof(int),
6262306a36Sopenharmony_ci		.mode =		0644,
6362306a36Sopenharmony_ci		.proc_handler =	proc_dointvec_minmax,
6462306a36Sopenharmony_ci		.extra1 =	&min_timer,
6562306a36Sopenharmony_ci		.extra2 =	&max_timer,
6662306a36Sopenharmony_ci	},
6762306a36Sopenharmony_ci	{
6862306a36Sopenharmony_ci		.procname =	"x25_forward",
6962306a36Sopenharmony_ci		.data = 	&sysctl_x25_forward,
7062306a36Sopenharmony_ci		.maxlen = 	sizeof(int),
7162306a36Sopenharmony_ci		.mode = 	0644,
7262306a36Sopenharmony_ci		.proc_handler = proc_dointvec,
7362306a36Sopenharmony_ci	},
7462306a36Sopenharmony_ci	{ },
7562306a36Sopenharmony_ci};
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ciint __init x25_register_sysctl(void)
7862306a36Sopenharmony_ci{
7962306a36Sopenharmony_ci	x25_table_header = register_net_sysctl(&init_net, "net/x25", x25_table);
8062306a36Sopenharmony_ci	if (!x25_table_header)
8162306a36Sopenharmony_ci		return -ENOMEM;
8262306a36Sopenharmony_ci	return 0;
8362306a36Sopenharmony_ci}
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_civoid x25_unregister_sysctl(void)
8662306a36Sopenharmony_ci{
8762306a36Sopenharmony_ci	unregister_net_sysctl_table(x25_table_header);
8862306a36Sopenharmony_ci}
89