patch-2.4.26 linux-2.4.26/net/sctp/sysctl.c
Next file: linux-2.4.26/net/sctp/transport.c
Previous file: linux-2.4.26/net/sctp/ssnmap.c
Back to the patch index
Back to the overall index
- Lines: 270
- Date:
2004-04-14 06:05:41.000000000 -0700
- Orig file:
linux-2.4.25/net/sctp/sysctl.c
- Orig date:
2003-11-28 10:26:21.000000000 -0800
diff -urN linux-2.4.25/net/sctp/sysctl.c linux-2.4.26/net/sctp/sysctl.c
@@ -1,39 +1,40 @@
-/* SCTP kernel reference Implementation
+/* SCTP kernel reference Implementation
* Copyright (c) 2002 International Business Machines Corp.
* 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
+ *
+ * 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
+ *
+ * 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.
- *
+ * 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:
+ * 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>
*
* Any bugs reported given to us we will try to fix... any fixes shared will
* be incorporated into the next SCTP release.
@@ -42,49 +43,59 @@
#include <net/sctp/structs.h>
#include <linux/sysctl.h>
-extern struct sctp_protocol sctp_proto;
+static ctl_handler sctp_sysctl_jiffies_ms;
+static long rto_timer_min = 1;
+static long rto_timer_max = 86400000; /* One day */
static ctl_table sctp_table[] = {
{
.ctl_name = NET_SCTP_RTO_INITIAL,
.procname = "rto_initial",
- .data = &sctp_proto.rto_initial,
- .maxlen = sizeof(int),
+ .data = &sctp_rto_initial,
+ .maxlen = sizeof(long),
.mode = 0644,
- .proc_handler = &proc_dointvec_jiffies,
- .strategy = &sysctl_jiffies
+ .proc_handler = &proc_doulongvec_ms_jiffies_minmax,
+ .strategy = &sctp_sysctl_jiffies_ms,
+ .extra1 = &rto_timer_min,
+ .extra2 = &rto_timer_max
},
{
.ctl_name = NET_SCTP_RTO_MIN,
.procname = "rto_min",
- .data = &sctp_proto.rto_min,
- .maxlen = sizeof(int),
+ .data = &sctp_rto_min,
+ .maxlen = sizeof(long),
.mode = 0644,
- .proc_handler = &proc_dointvec_jiffies,
- .strategy = &sysctl_jiffies
+ .proc_handler = &proc_doulongvec_ms_jiffies_minmax,
+ .strategy = &sctp_sysctl_jiffies_ms,
+ .extra1 = &rto_timer_min,
+ .extra2 = &rto_timer_max
},
{
.ctl_name = NET_SCTP_RTO_MAX,
.procname = "rto_max",
- .data = &sctp_proto.rto_max,
- .maxlen = sizeof(int),
+ .data = &sctp_rto_max,
+ .maxlen = sizeof(long),
.mode = 0644,
- .proc_handler = &proc_dointvec_jiffies,
- .strategy = &sysctl_jiffies
+ .proc_handler = &proc_doulongvec_ms_jiffies_minmax,
+ .strategy = &sctp_sysctl_jiffies_ms,
+ .extra1 = &rto_timer_min,
+ .extra2 = &rto_timer_max
},
{
.ctl_name = NET_SCTP_VALID_COOKIE_LIFE,
.procname = "valid_cookie_life",
- .data = &sctp_proto.valid_cookie_life,
- .maxlen = sizeof(int),
+ .data = &sctp_valid_cookie_life,
+ .maxlen = sizeof(long),
.mode = 0644,
- .proc_handler = &proc_dointvec_jiffies,
- .strategy = &sysctl_jiffies
+ .proc_handler = &proc_doulongvec_ms_jiffies_minmax,
+ .strategy = &sctp_sysctl_jiffies_ms,
+ .extra1 = &rto_timer_min,
+ .extra2 = &rto_timer_max
},
{
.ctl_name = NET_SCTP_MAX_BURST,
.procname = "max_burst",
- .data = &sctp_proto.max_burst,
+ .data = &sctp_max_burst,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = &proc_dointvec
@@ -92,7 +103,7 @@
{
.ctl_name = NET_SCTP_ASSOCIATION_MAX_RETRANS,
.procname = "association_max_retrans",
- .data = &sctp_proto.max_retrans_association,
+ .data = &sctp_max_retrans_association,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = &proc_dointvec
@@ -100,7 +111,7 @@
{
.ctl_name = NET_SCTP_PATH_MAX_RETRANS,
.procname = "path_max_retrans",
- .data = &sctp_proto.max_retrans_path,
+ .data = &sctp_max_retrans_path,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = &proc_dointvec
@@ -108,7 +119,7 @@
{
.ctl_name = NET_SCTP_MAX_INIT_RETRANSMITS,
.procname = "max_init_retransmits",
- .data = &sctp_proto.max_retrans_init,
+ .data = &sctp_max_retrans_init,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = &proc_dointvec
@@ -116,25 +127,29 @@
{
.ctl_name = NET_SCTP_HB_INTERVAL,
.procname = "hb_interval",
- .data = &sctp_proto.hb_interval,
- .maxlen = sizeof(int),
+ .data = &sctp_hb_interval,
+ .maxlen = sizeof(long),
.mode = 0644,
- .proc_handler = &proc_dointvec_jiffies,
- .strategy = &sysctl_jiffies
+ .proc_handler = &proc_doulongvec_ms_jiffies_minmax,
+ .strategy = &sctp_sysctl_jiffies_ms,
+ .extra1 = &rto_timer_min,
+ .extra2 = &rto_timer_max
},
{
.ctl_name = NET_SCTP_PRESERVE_ENABLE,
.procname = "cookie_preserve_enable",
- .data = &sctp_proto.cookie_preserve_enable,
- .maxlen = sizeof(int),
+ .data = &sctp_cookie_preserve_enable,
+ .maxlen = sizeof(long),
.mode = 0644,
- .proc_handler = &proc_dointvec_jiffies,
- .strategy = &sysctl_jiffies
+ .proc_handler = &proc_doulongvec_ms_jiffies_minmax,
+ .strategy = &sctp_sysctl_jiffies_ms,
+ .extra1 = &rto_timer_min,
+ .extra2 = &rto_timer_max
},
{
.ctl_name = NET_SCTP_RTO_ALPHA,
.procname = "rto_alpha_exp_divisor",
- .data = &sctp_proto.rto_alpha,
+ .data = &sctp_rto_alpha,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = &proc_dointvec
@@ -142,7 +157,15 @@
{
.ctl_name = NET_SCTP_RTO_BETA,
.procname = "rto_beta_exp_divisor",
- .data = &sctp_proto.rto_beta,
+ .data = &sctp_rto_beta,
+ .maxlen = sizeof(int),
+ .mode = 0644,
+ .proc_handler = &proc_dointvec
+ },
+ {
+ .ctl_name = NET_SCTP_ADDIP_ENABLE,
+ .procname = "addip_enable",
+ .data = &sctp_addip_enable,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = &proc_dointvec
@@ -154,7 +177,6 @@
{
.ctl_name = NET_SCTP,
.procname = "sctp",
- .maxlen = 0,
.mode = 0555,
.child = sctp_table
},
@@ -165,7 +187,6 @@
{
.ctl_name = CTL_NET,
.procname = "net",
- .maxlen = 0,
.mode = 0555,
.child = sctp_net_table
},
@@ -185,3 +206,37 @@
{
unregister_sysctl_table(sctp_sysctl_header);
}
+
+/* Strategy function to convert jiffies to milliseconds. */
+static int sctp_sysctl_jiffies_ms(ctl_table *table, int *name, int nlen,
+ void *oldval, size_t *oldlenp,
+ void *newval, size_t newlen, void **context)
+{
+ if (oldval) {
+ size_t olen;
+
+ if (oldlenp) {
+ if (get_user(olen, oldlenp))
+ return -EFAULT;
+
+ if (olen != sizeof (int))
+ return -EINVAL;
+ }
+ if (put_user((*(int *)(table->data) * 1000) / HZ,
+ (int *)oldval) ||
+ (oldlenp && put_user(sizeof (int), oldlenp)))
+ return -EFAULT;
+ }
+ if (newval && newlen) {
+ int new;
+
+ if (newlen != sizeof (int))
+ return -EINVAL;
+
+ if (get_user(new, (int *)newval))
+ return -EFAULT;
+
+ *(int *)(table->data) = (new * HZ) / 1000;
+ }
+ return 1;
+}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)