xref: /linux/net/dccp/sysctl.c (revision 2a0109a707d2b0ae48f124d3be0fdf1715c0107a)
1e55d912fSArnaldo Carvalho de Melo /*
2e55d912fSArnaldo Carvalho de Melo  *  net/dccp/sysctl.c
3e55d912fSArnaldo Carvalho de Melo  *
4e55d912fSArnaldo Carvalho de Melo  *  An implementation of the DCCP protocol
5e55d912fSArnaldo Carvalho de Melo  *  Arnaldo Carvalho de Melo <acme@mandriva.com>
6e55d912fSArnaldo Carvalho de Melo  *
7e55d912fSArnaldo Carvalho de Melo  *	This program is free software; you can redistribute it and/or
8e55d912fSArnaldo Carvalho de Melo  *	modify it under the terms of the GNU General Public License v2
9e55d912fSArnaldo Carvalho de Melo  *	as published by the Free Software Foundation.
10e55d912fSArnaldo Carvalho de Melo  */
11e55d912fSArnaldo Carvalho de Melo 
12e55d912fSArnaldo Carvalho de Melo #include <linux/mm.h>
13e55d912fSArnaldo Carvalho de Melo #include <linux/sysctl.h>
14*2a0109a7SIan McDonald #include "feat.h"
15e55d912fSArnaldo Carvalho de Melo 
16e55d912fSArnaldo Carvalho de Melo #ifndef CONFIG_SYSCTL
17e55d912fSArnaldo Carvalho de Melo #error This file should not be compiled without CONFIG_SYSCTL defined
18e55d912fSArnaldo Carvalho de Melo #endif
19e55d912fSArnaldo Carvalho de Melo 
20e55d912fSArnaldo Carvalho de Melo static struct ctl_table dccp_default_table[] = {
21e55d912fSArnaldo Carvalho de Melo 	{
22e55d912fSArnaldo Carvalho de Melo 		.ctl_name	= NET_DCCP_DEFAULT_SEQ_WINDOW,
23e55d912fSArnaldo Carvalho de Melo 		.procname	= "seq_window",
24e55d912fSArnaldo Carvalho de Melo 		.data		= &dccp_feat_default_sequence_window,
25e55d912fSArnaldo Carvalho de Melo 		.maxlen		= sizeof(dccp_feat_default_sequence_window),
26e55d912fSArnaldo Carvalho de Melo 		.mode		= 0644,
27e55d912fSArnaldo Carvalho de Melo 		.proc_handler	= proc_dointvec,
28e55d912fSArnaldo Carvalho de Melo 	},
29e55d912fSArnaldo Carvalho de Melo 	{
30e55d912fSArnaldo Carvalho de Melo 		.ctl_name	= NET_DCCP_DEFAULT_RX_CCID,
31e55d912fSArnaldo Carvalho de Melo 		.procname	= "rx_ccid",
32e55d912fSArnaldo Carvalho de Melo 		.data		= &dccp_feat_default_rx_ccid,
33e55d912fSArnaldo Carvalho de Melo 		.maxlen		= sizeof(dccp_feat_default_rx_ccid),
34e55d912fSArnaldo Carvalho de Melo 		.mode		= 0644,
35e55d912fSArnaldo Carvalho de Melo 		.proc_handler	= proc_dointvec,
36e55d912fSArnaldo Carvalho de Melo 	},
37e55d912fSArnaldo Carvalho de Melo 	{
38e55d912fSArnaldo Carvalho de Melo 		.ctl_name	= NET_DCCP_DEFAULT_TX_CCID,
39e55d912fSArnaldo Carvalho de Melo 		.procname	= "tx_ccid",
40e55d912fSArnaldo Carvalho de Melo 		.data		= &dccp_feat_default_tx_ccid,
41e55d912fSArnaldo Carvalho de Melo 		.maxlen		= sizeof(dccp_feat_default_tx_ccid),
42e55d912fSArnaldo Carvalho de Melo 		.mode		= 0644,
43e55d912fSArnaldo Carvalho de Melo 		.proc_handler	= proc_dointvec,
44e55d912fSArnaldo Carvalho de Melo 	},
45e55d912fSArnaldo Carvalho de Melo 	{
46e55d912fSArnaldo Carvalho de Melo 		.ctl_name	= NET_DCCP_DEFAULT_ACK_RATIO,
47e55d912fSArnaldo Carvalho de Melo 		.procname	= "ack_ratio",
48e55d912fSArnaldo Carvalho de Melo 		.data		= &dccp_feat_default_ack_ratio,
49e55d912fSArnaldo Carvalho de Melo 		.maxlen		= sizeof(dccp_feat_default_ack_ratio),
50e55d912fSArnaldo Carvalho de Melo 		.mode		= 0644,
51e55d912fSArnaldo Carvalho de Melo 		.proc_handler	= proc_dointvec,
52e55d912fSArnaldo Carvalho de Melo 	},
53e55d912fSArnaldo Carvalho de Melo 	{
54e55d912fSArnaldo Carvalho de Melo 		.ctl_name	= NET_DCCP_DEFAULT_SEND_ACKVEC,
55e55d912fSArnaldo Carvalho de Melo 		.procname	= "send_ackvec",
56e55d912fSArnaldo Carvalho de Melo 		.data		= &dccp_feat_default_send_ack_vector,
57e55d912fSArnaldo Carvalho de Melo 		.maxlen		= sizeof(dccp_feat_default_send_ack_vector),
58e55d912fSArnaldo Carvalho de Melo 		.mode		= 0644,
59e55d912fSArnaldo Carvalho de Melo 		.proc_handler	= proc_dointvec,
60e55d912fSArnaldo Carvalho de Melo 	},
61e55d912fSArnaldo Carvalho de Melo 	{
62e55d912fSArnaldo Carvalho de Melo 		.ctl_name	= NET_DCCP_DEFAULT_SEND_NDP,
63e55d912fSArnaldo Carvalho de Melo 		.procname	= "send_ndp",
64e55d912fSArnaldo Carvalho de Melo 		.data		= &dccp_feat_default_send_ndp_count,
65e55d912fSArnaldo Carvalho de Melo 		.maxlen		= sizeof(dccp_feat_default_send_ndp_count),
66e55d912fSArnaldo Carvalho de Melo 		.mode		= 0644,
67e55d912fSArnaldo Carvalho de Melo 		.proc_handler	= proc_dointvec,
68e55d912fSArnaldo Carvalho de Melo 	},
69e55d912fSArnaldo Carvalho de Melo 	{ .ctl_name = 0, }
70e55d912fSArnaldo Carvalho de Melo };
71e55d912fSArnaldo Carvalho de Melo 
72e55d912fSArnaldo Carvalho de Melo static struct ctl_table dccp_table[] = {
73e55d912fSArnaldo Carvalho de Melo 	{
74e55d912fSArnaldo Carvalho de Melo 		.ctl_name	= NET_DCCP_DEFAULT,
75e55d912fSArnaldo Carvalho de Melo 		.procname	= "default",
76e55d912fSArnaldo Carvalho de Melo 		.mode		= 0555,
77e55d912fSArnaldo Carvalho de Melo 		.child		= dccp_default_table,
78e55d912fSArnaldo Carvalho de Melo 	},
79e55d912fSArnaldo Carvalho de Melo 	{ .ctl_name = 0, },
80e55d912fSArnaldo Carvalho de Melo };
81e55d912fSArnaldo Carvalho de Melo 
82e55d912fSArnaldo Carvalho de Melo static struct ctl_table dccp_dir_table[] = {
83e55d912fSArnaldo Carvalho de Melo 	{
84e55d912fSArnaldo Carvalho de Melo 		.ctl_name	= NET_DCCP,
85e55d912fSArnaldo Carvalho de Melo 		.procname	= "dccp",
86e55d912fSArnaldo Carvalho de Melo 		.mode		= 0555,
87e55d912fSArnaldo Carvalho de Melo 		.child		= dccp_table,
88e55d912fSArnaldo Carvalho de Melo 	},
89e55d912fSArnaldo Carvalho de Melo 	{ .ctl_name = 0, },
90e55d912fSArnaldo Carvalho de Melo };
91e55d912fSArnaldo Carvalho de Melo 
92e55d912fSArnaldo Carvalho de Melo static struct ctl_table dccp_root_table[] = {
93e55d912fSArnaldo Carvalho de Melo 	{
94e55d912fSArnaldo Carvalho de Melo 		.ctl_name	= CTL_NET,
95e55d912fSArnaldo Carvalho de Melo 		.procname	= "net",
96e55d912fSArnaldo Carvalho de Melo 		.mode		= 0555,
97e55d912fSArnaldo Carvalho de Melo 		.child		= dccp_dir_table,
98e55d912fSArnaldo Carvalho de Melo 	},
99e55d912fSArnaldo Carvalho de Melo 	{ .ctl_name = 0, },
100e55d912fSArnaldo Carvalho de Melo };
101e55d912fSArnaldo Carvalho de Melo 
102e55d912fSArnaldo Carvalho de Melo static struct ctl_table_header *dccp_table_header;
103e55d912fSArnaldo Carvalho de Melo 
104e55d912fSArnaldo Carvalho de Melo int __init dccp_sysctl_init(void)
105e55d912fSArnaldo Carvalho de Melo {
106e55d912fSArnaldo Carvalho de Melo 	dccp_table_header = register_sysctl_table(dccp_root_table, 1);
107e55d912fSArnaldo Carvalho de Melo 
108e55d912fSArnaldo Carvalho de Melo 	return dccp_table_header != NULL ? 0 : -ENOMEM;
109e55d912fSArnaldo Carvalho de Melo }
110e55d912fSArnaldo Carvalho de Melo 
111e55d912fSArnaldo Carvalho de Melo void dccp_sysctl_exit(void)
112e55d912fSArnaldo Carvalho de Melo {
113e55d912fSArnaldo Carvalho de Melo 	if (dccp_table_header != NULL) {
114e55d912fSArnaldo Carvalho de Melo 		unregister_sysctl_table(dccp_table_header);
115e55d912fSArnaldo Carvalho de Melo 		dccp_table_header = NULL;
116e55d912fSArnaldo Carvalho de Melo 	}
117e55d912fSArnaldo Carvalho de Melo }
118