1// SPDX-License-Identifier: GPL-2.0
2/* -*- linux-c -*-
3 * sysctl_net_x25.c: sysctl interface to net X.25 subsystem.
4 *
5 * Begun April 1, 1996, Mike Shaver.
6 * Added /proc/sys/net/x25 directory entry (empty =) ). [MS]
7 */
8
9#include <linux/sysctl.h>
10#include <linux/skbuff.h>
11#include <linux/socket.h>
12#include <linux/netdevice.h>
13#include <linux/init.h>
14#include <net/x25.h>
15
16static int min_timer[] = {   1 * HZ };
17static int max_timer[] = { 300 * HZ };
18
19static struct ctl_table_header *x25_table_header;
20
21static struct ctl_table x25_table[] = {
22	{
23		.procname =	"restart_request_timeout",
24		.data =		&sysctl_x25_restart_request_timeout,
25		.maxlen =	sizeof(int),
26		.mode =		0644,
27		.proc_handler =	proc_dointvec_minmax,
28		.extra1 =	&min_timer,
29		.extra2 =	&max_timer,
30	},
31	{
32		.procname =	"call_request_timeout",
33		.data =		&sysctl_x25_call_request_timeout,
34		.maxlen =	sizeof(int),
35		.mode =		0644,
36		.proc_handler =	proc_dointvec_minmax,
37		.extra1 =	&min_timer,
38		.extra2 =	&max_timer,
39	},
40	{
41		.procname =	"reset_request_timeout",
42		.data =		&sysctl_x25_reset_request_timeout,
43		.maxlen =	sizeof(int),
44		.mode =		0644,
45		.proc_handler =	proc_dointvec_minmax,
46		.extra1 =	&min_timer,
47		.extra2 =	&max_timer,
48	},
49	{
50		.procname =	"clear_request_timeout",
51		.data =		&sysctl_x25_clear_request_timeout,
52		.maxlen =	sizeof(int),
53		.mode =		0644,
54		.proc_handler =	proc_dointvec_minmax,
55		.extra1 =	&min_timer,
56		.extra2 =	&max_timer,
57	},
58	{
59		.procname =	"acknowledgement_hold_back_timeout",
60		.data =		&sysctl_x25_ack_holdback_timeout,
61		.maxlen =	sizeof(int),
62		.mode =		0644,
63		.proc_handler =	proc_dointvec_minmax,
64		.extra1 =	&min_timer,
65		.extra2 =	&max_timer,
66	},
67	{
68		.procname =	"x25_forward",
69		.data = 	&sysctl_x25_forward,
70		.maxlen = 	sizeof(int),
71		.mode = 	0644,
72		.proc_handler = proc_dointvec,
73	},
74	{ },
75};
76
77int __init x25_register_sysctl(void)
78{
79	x25_table_header = register_net_sysctl(&init_net, "net/x25", x25_table);
80	if (!x25_table_header)
81		return -ENOMEM;
82	return 0;
83}
84
85void x25_unregister_sysctl(void)
86{
87	unregister_net_sysctl_table(x25_table_header);
88}
89