sysctl_net_llc.c revision f8572d8f2a2ba75408b97dc24ef47c83671795d7
1/*
2 * sysctl_net_llc.c: sysctl interface to LLC net subsystem.
3 *
4 * Arnaldo Carvalho de Melo <acme@conectiva.com.br>
5 */
6
7#include <linux/mm.h>
8#include <linux/init.h>
9#include <linux/sysctl.h>
10#include <net/llc.h>
11
12#ifndef CONFIG_SYSCTL
13#error This file should not be compiled without CONFIG_SYSCTL defined
14#endif
15
16static struct ctl_table llc2_timeout_table[] = {
17	{
18		.procname	= "ack",
19		.data		= &sysctl_llc2_ack_timeout,
20		.maxlen		= sizeof(long),
21		.mode		= 0644,
22		.proc_handler   = proc_dointvec_jiffies,
23	},
24	{
25		.procname	= "busy",
26		.data		= &sysctl_llc2_busy_timeout,
27		.maxlen		= sizeof(long),
28		.mode		= 0644,
29		.proc_handler   = proc_dointvec_jiffies,
30	},
31	{
32		.procname	= "p",
33		.data		= &sysctl_llc2_p_timeout,
34		.maxlen		= sizeof(long),
35		.mode		= 0644,
36		.proc_handler   = proc_dointvec_jiffies,
37	},
38	{
39		.procname	= "rej",
40		.data		= &sysctl_llc2_rej_timeout,
41		.maxlen		= sizeof(long),
42		.mode		= 0644,
43		.proc_handler   = proc_dointvec_jiffies,
44	},
45	{ },
46};
47
48static struct ctl_table llc_station_table[] = {
49	{
50		.procname	= "ack_timeout",
51		.data		= &sysctl_llc_station_ack_timeout,
52		.maxlen		= sizeof(long),
53		.mode		= 0644,
54		.proc_handler   = proc_dointvec_jiffies,
55	},
56	{ },
57};
58
59static struct ctl_table llc2_dir_timeout_table[] = {
60	{
61		.procname	= "timeout",
62		.mode		= 0555,
63		.child		= llc2_timeout_table,
64	},
65	{ },
66};
67
68static struct ctl_table llc_table[] = {
69	{
70		.procname	= "llc2",
71		.mode		= 0555,
72		.child		= llc2_dir_timeout_table,
73	},
74	{
75		.procname       = "station",
76		.mode           = 0555,
77		.child          = llc_station_table,
78	},
79	{ },
80};
81
82static struct ctl_path llc_path[] = {
83	{ .procname = "net", },
84	{ .procname = "llc", },
85	{ }
86};
87
88static struct ctl_table_header *llc_table_header;
89
90int __init llc_sysctl_init(void)
91{
92	llc_table_header = register_sysctl_paths(llc_path, llc_table);
93
94	return llc_table_header ? 0 : -ENOMEM;
95}
96
97void llc_sysctl_exit(void)
98{
99	if (llc_table_header) {
100		unregister_sysctl_table(llc_table_header);
101		llc_table_header = NULL;
102	}
103}
104