diff options
Diffstat (limited to 'net/sctp/sysctl.c')
| -rw-r--r-- | net/sctp/sysctl.c | 198 | 
1 files changed, 112 insertions, 86 deletions
diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c index 2b2bfe933ff1..70e3ba5cb50b 100644 --- a/net/sctp/sysctl.c +++ b/net/sctp/sysctl.c @@ -64,8 +64,34 @@ extern int sysctl_sctp_wmem[3];  static ctl_table sctp_table[] = {  	{ +		.procname	= "sctp_mem", +		.data		= &sysctl_sctp_mem, +		.maxlen		= sizeof(sysctl_sctp_mem), +		.mode		= 0644, +		.proc_handler	= proc_doulongvec_minmax +	}, +	{ +		.procname	= "sctp_rmem", +		.data		= &sysctl_sctp_rmem, +		.maxlen		= sizeof(sysctl_sctp_rmem), +		.mode		= 0644, +		.proc_handler	= proc_dointvec, +	}, +	{ +		.procname	= "sctp_wmem", +		.data		= &sysctl_sctp_wmem, +		.maxlen		= sizeof(sysctl_sctp_wmem), +		.mode		= 0644, +		.proc_handler	= proc_dointvec, +	}, + +	{ /* sentinel */ } +}; + +static ctl_table sctp_net_table[] = { +	{  		.procname	= "rto_initial", -		.data		= &sctp_rto_initial, +		.data		= &init_net.sctp.rto_initial,  		.maxlen		= sizeof(unsigned int),  		.mode		= 0644,  		.proc_handler	= proc_dointvec_minmax, @@ -74,7 +100,7 @@ static ctl_table sctp_table[] = {  	},  	{  		.procname	= "rto_min", -		.data		= &sctp_rto_min, +		.data		= &init_net.sctp.rto_min,  		.maxlen		= sizeof(unsigned int),  		.mode		= 0644,  		.proc_handler	= proc_dointvec_minmax, @@ -83,7 +109,7 @@ static ctl_table sctp_table[] = {  	},  	{  		.procname	= "rto_max", -		.data		= &sctp_rto_max, +		.data		= &init_net.sctp.rto_max,  		.maxlen		= sizeof(unsigned int),  		.mode		= 0644,  		.proc_handler	= proc_dointvec_minmax, @@ -91,17 +117,22 @@ static ctl_table sctp_table[] = {  		.extra2         = &timer_max  	},  	{ -		.procname	= "valid_cookie_life", -		.data		= &sctp_valid_cookie_life, -		.maxlen		= sizeof(unsigned int), -		.mode		= 0644, -		.proc_handler	= proc_dointvec_minmax, -		.extra1         = &one, -		.extra2         = &timer_max +		.procname	= "rto_alpha_exp_divisor", +		.data		= &init_net.sctp.rto_alpha, +		.maxlen		= sizeof(int), +		.mode		= 0444, +		.proc_handler	= proc_dointvec, +	}, +	{ +		.procname	= "rto_beta_exp_divisor", +		.data		= &init_net.sctp.rto_beta, +		.maxlen		= sizeof(int), +		.mode		= 0444, +		.proc_handler	= proc_dointvec,  	},  	{  		.procname	= "max_burst", -		.data		= &sctp_max_burst, +		.data		= &init_net.sctp.max_burst,  		.maxlen		= sizeof(int),  		.mode		= 0644,  		.proc_handler	= proc_dointvec_minmax, @@ -109,31 +140,42 @@ static ctl_table sctp_table[] = {  		.extra2		= &int_max  	},  	{ -		.procname	= "association_max_retrans", -		.data		= &sctp_max_retrans_association, +		.procname	= "cookie_preserve_enable", +		.data		= &init_net.sctp.cookie_preserve_enable,  		.maxlen		= sizeof(int),  		.mode		= 0644, +		.proc_handler	= proc_dointvec, +	}, +	{ +		.procname	= "valid_cookie_life", +		.data		= &init_net.sctp.valid_cookie_life, +		.maxlen		= sizeof(unsigned int), +		.mode		= 0644,  		.proc_handler	= proc_dointvec_minmax, -		.extra1		= &one, -		.extra2		= &int_max +		.extra1         = &one, +		.extra2         = &timer_max  	},  	{ -		.procname	= "sndbuf_policy", -		.data		= &sctp_sndbuf_policy, +		.procname	= "sack_timeout", +		.data		= &init_net.sctp.sack_timeout,  		.maxlen		= sizeof(int),  		.mode		= 0644, -		.proc_handler	= proc_dointvec, +		.proc_handler	= proc_dointvec_minmax, +		.extra1         = &sack_timer_min, +		.extra2         = &sack_timer_max,  	},  	{ -		.procname	= "rcvbuf_policy", -		.data		= &sctp_rcvbuf_policy, -		.maxlen		= sizeof(int), +		.procname	= "hb_interval", +		.data		= &init_net.sctp.hb_interval, +		.maxlen		= sizeof(unsigned int),  		.mode		= 0644, -		.proc_handler	= proc_dointvec, +		.proc_handler	= proc_dointvec_minmax, +		.extra1         = &one, +		.extra2         = &timer_max  	},  	{ -		.procname	= "path_max_retrans", -		.data		= &sctp_max_retrans_path, +		.procname	= "association_max_retrans", +		.data		= &init_net.sctp.max_retrans_association,  		.maxlen		= sizeof(int),  		.mode		= 0644,  		.proc_handler	= proc_dointvec_minmax, @@ -141,17 +183,17 @@ static ctl_table sctp_table[] = {  		.extra2		= &int_max  	},  	{ -		.procname	= "pf_retrans", -		.data		= &sctp_pf_retrans, +		.procname	= "path_max_retrans", +		.data		= &init_net.sctp.max_retrans_path,  		.maxlen		= sizeof(int),  		.mode		= 0644,  		.proc_handler	= proc_dointvec_minmax, -		.extra1		= &zero, +		.extra1		= &one,  		.extra2		= &int_max  	},  	{  		.procname	= "max_init_retransmits", -		.data		= &sctp_max_retrans_init, +		.data		= &init_net.sctp.max_retrans_init,  		.maxlen		= sizeof(int),  		.mode		= 0644,  		.proc_handler	= proc_dointvec_minmax, @@ -159,103 +201,66 @@ static ctl_table sctp_table[] = {  		.extra2		= &int_max  	},  	{ -		.procname	= "hb_interval", -		.data		= &sctp_hb_interval, -		.maxlen		= sizeof(unsigned int), +		.procname	= "pf_retrans", +		.data		= &init_net.sctp.pf_retrans, +		.maxlen		= sizeof(int),  		.mode		= 0644,  		.proc_handler	= proc_dointvec_minmax, -		.extra1         = &one, -		.extra2         = &timer_max +		.extra1		= &zero, +		.extra2		= &int_max  	},  	{ -		.procname	= "cookie_preserve_enable", -		.data		= &sctp_cookie_preserve_enable, +		.procname	= "sndbuf_policy", +		.data		= &init_net.sctp.sndbuf_policy,  		.maxlen		= sizeof(int),  		.mode		= 0644,  		.proc_handler	= proc_dointvec,  	},  	{ -		.procname	= "rto_alpha_exp_divisor", -		.data		= &sctp_rto_alpha, -		.maxlen		= sizeof(int), -		.mode		= 0444, -		.proc_handler	= proc_dointvec, -	}, -	{ -		.procname	= "rto_beta_exp_divisor", -		.data		= &sctp_rto_beta, -		.maxlen		= sizeof(int), -		.mode		= 0444, -		.proc_handler	= proc_dointvec, -	}, -	{ -		.procname	= "addip_enable", -		.data		= &sctp_addip_enable, +		.procname	= "rcvbuf_policy", +		.data		= &init_net.sctp.rcvbuf_policy,  		.maxlen		= sizeof(int),  		.mode		= 0644,  		.proc_handler	= proc_dointvec,  	},  	{  		.procname	= "default_auto_asconf", -		.data		= &sctp_default_auto_asconf, +		.data		= &init_net.sctp.default_auto_asconf,  		.maxlen		= sizeof(int),  		.mode		= 0644,  		.proc_handler	= proc_dointvec,  	},  	{ -		.procname	= "prsctp_enable", -		.data		= &sctp_prsctp_enable, +		.procname	= "addip_enable", +		.data		= &init_net.sctp.addip_enable,  		.maxlen		= sizeof(int),  		.mode		= 0644,  		.proc_handler	= proc_dointvec,  	},  	{ -		.procname	= "sack_timeout", -		.data		= &sctp_sack_timeout, +		.procname	= "addip_noauth_enable", +		.data		= &init_net.sctp.addip_noauth,  		.maxlen		= sizeof(int),  		.mode		= 0644, -		.proc_handler	= proc_dointvec_minmax, -		.extra1         = &sack_timer_min, -		.extra2         = &sack_timer_max, -	}, -	{ -		.procname	= "sctp_mem", -		.data		= &sysctl_sctp_mem, -		.maxlen		= sizeof(sysctl_sctp_mem), -		.mode		= 0644, -		.proc_handler	= proc_doulongvec_minmax -	}, -	{ -		.procname	= "sctp_rmem", -		.data		= &sysctl_sctp_rmem, -		.maxlen		= sizeof(sysctl_sctp_rmem), -		.mode		= 0644, -		.proc_handler	= proc_dointvec, -	}, -	{ -		.procname	= "sctp_wmem", -		.data		= &sysctl_sctp_wmem, -		.maxlen		= sizeof(sysctl_sctp_wmem), -		.mode		= 0644,  		.proc_handler	= proc_dointvec,  	},  	{ -		.procname	= "auth_enable", -		.data		= &sctp_auth_enable, +		.procname	= "prsctp_enable", +		.data		= &init_net.sctp.prsctp_enable,  		.maxlen		= sizeof(int),  		.mode		= 0644,  		.proc_handler	= proc_dointvec,  	},  	{ -		.procname	= "addip_noauth_enable", -		.data		= &sctp_addip_noauth, +		.procname	= "auth_enable", +		.data		= &init_net.sctp.auth_enable,  		.maxlen		= sizeof(int),  		.mode		= 0644,  		.proc_handler	= proc_dointvec,  	},  	{  		.procname	= "addr_scope_policy", -		.data		= &sctp_scope_policy, +		.data		= &init_net.sctp.scope_policy,  		.maxlen		= sizeof(int),  		.mode		= 0644,  		.proc_handler	= proc_dointvec_minmax, @@ -264,7 +269,7 @@ static ctl_table sctp_table[] = {  	},  	{  		.procname	= "rwnd_update_shift", -		.data		= &sctp_rwnd_upd_shift, +		.data		= &init_net.sctp.rwnd_upd_shift,  		.maxlen		= sizeof(int),  		.mode		= 0644,  		.proc_handler	= &proc_dointvec_minmax, @@ -273,7 +278,7 @@ static ctl_table sctp_table[] = {  	},  	{  		.procname	= "max_autoclose", -		.data		= &sctp_max_autoclose, +		.data		= &init_net.sctp.max_autoclose,  		.maxlen		= sizeof(unsigned long),  		.mode		= 0644,  		.proc_handler	= &proc_doulongvec_minmax, @@ -284,6 +289,27 @@ static ctl_table sctp_table[] = {  	{ /* sentinel */ }  }; +int sctp_sysctl_net_register(struct net *net) +{ +	struct ctl_table *table; +	int i; + +	table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL); +	if (!table) +		return -ENOMEM; + +	for (i = 0; table[i].data; i++) +		table[i].data += (char *)(&net->sctp) - (char *)&init_net.sctp; + +	net->sctp.sysctl_header = register_net_sysctl(net, "net/sctp", table); +	return 0; +} + +void sctp_sysctl_net_unregister(struct net *net) +{ +	unregister_net_sysctl_table(net->sctp.sysctl_header); +} +  static struct ctl_table_header * sctp_sysctl_header;  /* Sysctl registration.  */  | 
