2005-04-16 15:20:36 -07:00
/* SCTP kernel reference Implementation
* ( C ) Copyright IBM Corp . 2002 , 2004
* Copyright ( c ) 2002 Intel Corp .
*
* This file is part of the SCTP kernel reference Implementation
*
* Sysctl related interfaces for SCTP .
*
* The SCTP reference implementation is free software ;
* you can redistribute it and / or modify it under the terms of
* the GNU General Public License as published by
* the Free Software Foundation ; either version 2 , or ( at your option )
* any later version .
*
* The SCTP reference implementation is distributed in the hope that it
* will be useful , but WITHOUT ANY WARRANTY ; without even the implied
* * * * * * * * * * * * * * * * * * * * * * * * *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE .
* See the GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with GNU CC ; see the file COPYING . If not , write to
* the Free Software Foundation , 59 Temple Place - Suite 330 ,
* Boston , MA 02111 - 1307 , USA .
*
* Please send any bug reports or fixes you make to the
* email address ( es ) :
* lksctp developers < lksctp - developers @ lists . sourceforge . net >
*
* Or submit a bug report through the following website :
* http : //www.sf.net/projects/lksctp
*
* Written or modified by :
* Mingqin Liu < liuming @ us . ibm . com >
* Jon Grimm < jgrimm @ us . ibm . com >
* Ardelle Fan < ardelle . fan @ intel . com >
* Ryan Layer < rmlayer @ us . ibm . com >
* Sridhar Samudrala < sri @ us . ibm . com >
*
* Any bugs reported given to us we will try to fix . . . any fixes shared will
* be incorporated into the next SCTP release .
*/
# include <net/sctp/structs.h>
2005-09-05 18:07:42 -07:00
# include <net/sctp/sctp.h>
2005-04-16 15:20:36 -07:00
# include <linux/sysctl.h>
2006-08-22 13:29:17 -07:00
static int zero = 0 ;
static int one = 1 ;
static int timer_max = 86400000 ; /* ms in one day */
static int int_max = INT_MAX ;
2005-06-28 13:24:23 -07:00
static long sack_timer_min = 1 ;
static long sack_timer_max = 500 ;
2005-04-16 15:20:36 -07:00
2007-09-16 16:04:37 -07:00
extern int sysctl_sctp_mem [ 3 ] ;
extern int sysctl_sctp_rmem [ 3 ] ;
extern int sysctl_sctp_wmem [ 3 ] ;
2007-08-15 16:07:44 -07:00
2005-04-16 15:20:36 -07:00
static ctl_table sctp_table [ ] = {
{
. ctl_name = NET_SCTP_RTO_INITIAL ,
. procname = " rto_initial " ,
. data = & sctp_rto_initial ,
2006-08-22 13:29:17 -07:00
. maxlen = sizeof ( unsigned int ) ,
2005-04-16 15:20:36 -07:00
. mode = 0644 ,
2006-08-22 13:29:17 -07:00
. proc_handler = & proc_dointvec_minmax ,
. strategy = & sysctl_intvec ,
. extra1 = & one ,
. extra2 = & timer_max
2005-04-16 15:20:36 -07:00
} ,
{
. ctl_name = NET_SCTP_RTO_MIN ,
. procname = " rto_min " ,
. data = & sctp_rto_min ,
2006-08-22 13:29:17 -07:00
. maxlen = sizeof ( unsigned int ) ,
2005-04-16 15:20:36 -07:00
. mode = 0644 ,
2006-08-22 13:29:17 -07:00
. proc_handler = & proc_dointvec_minmax ,
. strategy = & sysctl_intvec ,
. extra1 = & one ,
. extra2 = & timer_max
2005-04-16 15:20:36 -07:00
} ,
{
. ctl_name = NET_SCTP_RTO_MAX ,
. procname = " rto_max " ,
. data = & sctp_rto_max ,
2006-08-22 13:29:17 -07:00
. maxlen = sizeof ( unsigned int ) ,
2005-04-16 15:20:36 -07:00
. mode = 0644 ,
2006-08-22 13:29:17 -07:00
. proc_handler = & proc_dointvec_minmax ,
. strategy = & sysctl_intvec ,
. extra1 = & one ,
. extra2 = & timer_max
2005-04-16 15:20:36 -07:00
} ,
{
. ctl_name = NET_SCTP_VALID_COOKIE_LIFE ,
. procname = " valid_cookie_life " ,
. data = & sctp_valid_cookie_life ,
2006-08-22 13:29:17 -07:00
. maxlen = sizeof ( unsigned int ) ,
2005-04-16 15:20:36 -07:00
. mode = 0644 ,
2006-08-22 13:29:17 -07:00
. proc_handler = & proc_dointvec_minmax ,
. strategy = & sysctl_intvec ,
. extra1 = & one ,
. extra2 = & timer_max
2005-04-16 15:20:36 -07:00
} ,
{
. ctl_name = NET_SCTP_MAX_BURST ,
. procname = " max_burst " ,
. data = & sctp_max_burst ,
. maxlen = sizeof ( int ) ,
. mode = 0644 ,
2006-08-22 13:29:17 -07:00
. proc_handler = & proc_dointvec_minmax ,
. strategy = & sysctl_intvec ,
. extra1 = & zero ,
. extra2 = & int_max
2005-04-16 15:20:36 -07:00
} ,
{
. ctl_name = NET_SCTP_ASSOCIATION_MAX_RETRANS ,
. procname = " association_max_retrans " ,
. data = & sctp_max_retrans_association ,
. maxlen = sizeof ( int ) ,
. mode = 0644 ,
2006-08-22 13:29:17 -07:00
. proc_handler = & proc_dointvec_minmax ,
. strategy = & sysctl_intvec ,
. extra1 = & one ,
. extra2 = & int_max
2005-04-16 15:20:36 -07:00
} ,
2005-04-28 12:02:04 -07:00
{
. ctl_name = NET_SCTP_SNDBUF_POLICY ,
. procname = " sndbuf_policy " ,
. data = & sctp_sndbuf_policy ,
. maxlen = sizeof ( int ) ,
. mode = 0644 ,
2006-08-22 13:29:17 -07:00
. proc_handler = & proc_dointvec ,
. strategy = & sysctl_intvec
2005-04-28 12:02:04 -07:00
} ,
2005-11-11 16:08:24 -08:00
{
. ctl_name = NET_SCTP_RCVBUF_POLICY ,
. procname = " rcvbuf_policy " ,
. data = & sctp_rcvbuf_policy ,
. maxlen = sizeof ( int ) ,
. mode = 0644 ,
2006-08-22 13:29:17 -07:00
. proc_handler = & proc_dointvec ,
. strategy = & sysctl_intvec
2005-11-11 16:08:24 -08:00
} ,
2005-04-16 15:20:36 -07:00
{
. ctl_name = NET_SCTP_PATH_MAX_RETRANS ,
. procname = " path_max_retrans " ,
. data = & sctp_max_retrans_path ,
. maxlen = sizeof ( int ) ,
. mode = 0644 ,
2006-08-22 13:29:17 -07:00
. proc_handler = & proc_dointvec_minmax ,
. strategy = & sysctl_intvec ,
. extra1 = & one ,
. extra2 = & int_max
2005-04-16 15:20:36 -07:00
} ,
{
. ctl_name = NET_SCTP_MAX_INIT_RETRANSMITS ,
. procname = " max_init_retransmits " ,
. data = & sctp_max_retrans_init ,
. maxlen = sizeof ( int ) ,
. mode = 0644 ,
2006-08-22 13:29:17 -07:00
. proc_handler = & proc_dointvec_minmax ,
. strategy = & sysctl_intvec ,
. extra1 = & one ,
. extra2 = & int_max
2005-04-16 15:20:36 -07:00
} ,
{
. ctl_name = NET_SCTP_HB_INTERVAL ,
. procname = " hb_interval " ,
. data = & sctp_hb_interval ,
2006-08-22 13:29:17 -07:00
. maxlen = sizeof ( unsigned int ) ,
2005-04-16 15:20:36 -07:00
. mode = 0644 ,
2006-08-22 13:29:17 -07:00
. proc_handler = & proc_dointvec_minmax ,
. strategy = & sysctl_intvec ,
. extra1 = & one ,
. extra2 = & timer_max
2005-04-16 15:20:36 -07:00
} ,
{
. ctl_name = NET_SCTP_PRESERVE_ENABLE ,
. procname = " cookie_preserve_enable " ,
. data = & sctp_cookie_preserve_enable ,
2006-01-17 11:55:17 -08:00
. maxlen = sizeof ( int ) ,
2005-04-16 15:20:36 -07:00
. mode = 0644 ,
2006-08-22 13:29:17 -07:00
. proc_handler = & proc_dointvec ,
. strategy = & sysctl_intvec
2005-04-16 15:20:36 -07:00
} ,
{
. ctl_name = NET_SCTP_RTO_ALPHA ,
. procname = " rto_alpha_exp_divisor " ,
. data = & sctp_rto_alpha ,
. maxlen = sizeof ( int ) ,
2006-08-22 13:29:17 -07:00
. mode = 0444 ,
. proc_handler = & proc_dointvec ,
. strategy = & sysctl_intvec
2005-04-16 15:20:36 -07:00
} ,
{
. ctl_name = NET_SCTP_RTO_BETA ,
. procname = " rto_beta_exp_divisor " ,
. data = & sctp_rto_beta ,
. maxlen = sizeof ( int ) ,
2006-08-22 13:29:17 -07:00
. mode = 0444 ,
. proc_handler = & proc_dointvec ,
. strategy = & sysctl_intvec
2005-04-16 15:20:36 -07:00
} ,
{
. ctl_name = NET_SCTP_ADDIP_ENABLE ,
. procname = " addip_enable " ,
. data = & sctp_addip_enable ,
. maxlen = sizeof ( int ) ,
. mode = 0644 ,
2006-08-22 13:29:17 -07:00
. proc_handler = & proc_dointvec ,
. strategy = & sysctl_intvec
2005-04-16 15:20:36 -07:00
} ,
{
. ctl_name = NET_SCTP_PRSCTP_ENABLE ,
. procname = " prsctp_enable " ,
. data = & sctp_prsctp_enable ,
. maxlen = sizeof ( int ) ,
. mode = 0644 ,
2006-08-22 13:29:17 -07:00
. proc_handler = & proc_dointvec ,
. strategy = & sysctl_intvec
2005-04-16 15:20:36 -07:00
} ,
2005-06-28 13:24:23 -07:00
{
. ctl_name = NET_SCTP_SACK_TIMEOUT ,
. procname = " sack_timeout " ,
. data = & sctp_sack_timeout ,
. maxlen = sizeof ( long ) ,
. mode = 0644 ,
2006-08-22 13:29:17 -07:00
. proc_handler = & proc_dointvec_minmax ,
. strategy = & sysctl_intvec ,
2005-06-28 13:24:23 -07:00
. extra1 = & sack_timer_min ,
. extra2 = & sack_timer_max ,
} ,
2007-08-15 16:07:44 -07:00
{
. ctl_name = CTL_UNNUMBERED ,
. procname = " sctp_mem " ,
. data = & sysctl_sctp_mem ,
. maxlen = sizeof ( sysctl_sctp_mem ) ,
. mode = 0644 ,
. proc_handler = & proc_dointvec ,
} ,
{
. ctl_name = CTL_UNNUMBERED ,
. procname = " sctp_rmem " ,
. data = & sysctl_sctp_rmem ,
. maxlen = sizeof ( sysctl_sctp_rmem ) ,
. mode = 0644 ,
. proc_handler = & proc_dointvec ,
} ,
{
. ctl_name = CTL_UNNUMBERED ,
. procname = " sctp_wmem " ,
. data = & sysctl_sctp_wmem ,
. maxlen = sizeof ( sysctl_sctp_wmem ) ,
. mode = 0644 ,
. proc_handler = & proc_dointvec ,
} ,
2007-09-16 19:31:35 -07:00
{
. ctl_name = CTL_UNNUMBERED ,
. procname = " auth_enable " ,
. data = & sctp_auth_enable ,
. maxlen = sizeof ( int ) ,
. mode = 0644 ,
. proc_handler = & proc_dointvec ,
. strategy = & sysctl_intvec
} ,
2005-04-16 15:20:36 -07:00
{ . ctl_name = 0 }
} ;
static ctl_table sctp_net_table [ ] = {
{
. ctl_name = NET_SCTP ,
. procname = " sctp " ,
. mode = 0555 ,
. child = sctp_table
} ,
{ . ctl_name = 0 }
} ;
static ctl_table sctp_root_table [ ] = {
{
. ctl_name = CTL_NET ,
. procname = " net " ,
. mode = 0555 ,
. child = sctp_net_table
} ,
{ . ctl_name = 0 }
} ;
static struct ctl_table_header * sctp_sysctl_header ;
/* Sysctl registration. */
void sctp_sysctl_register ( void )
{
2007-02-14 00:34:09 -08:00
sctp_sysctl_header = register_sysctl_table ( sctp_root_table ) ;
2005-04-16 15:20:36 -07:00
}
/* Sysctl deregistration. */
void sctp_sysctl_unregister ( void )
{
unregister_sysctl_table ( sctp_sysctl_header ) ;
}