]> err.no Git - linux-2.6/blobdiff - net/decnet/sysctl_net_decnet.c
Merge branch 'locks' of git://linux-nfs.org/~bfields/linux
[linux-2.6] / net / decnet / sysctl_net_decnet.c
index 02bca49cb5084b60c4779b6d5badab8dde35ac93..ae354a43fb97af91d7f8c0250585051e0aa2b186 100644 (file)
@@ -10,9 +10,9 @@
  *
  * Changes:
  * Steve Whitehouse - C99 changes and default device handling
+ * Steve Whitehouse - Memory buffer settings, like the tcp ones
  *
  */
-#include <linux/config.h>
 #include <linux/mm.h>
 #include <linux/sysctl.h>
 #include <linux/fs.h>
@@ -37,6 +37,11 @@ int decnet_dr_count = 3;
 int decnet_log_martians = 1;
 int decnet_no_fc_max_cwnd = NSP_MIN_WINDOW;
 
+/* Reasonable defaults, I hope, based on tcp's defaults */
+int sysctl_decnet_mem[3] = { 768 << 3, 1024 << 3, 1536 << 3 };
+int sysctl_decnet_wmem[3] = { 4 * 1024, 16 * 1024, 128 * 1024 };
+int sysctl_decnet_rmem[3] = { 4 * 1024, 87380, 87380 * 2 };
+
 #ifdef CONFIG_SYSCTL
 extern int decnet_dst_gc_interval;
 static int min_decnet_time_wait[] = { 5 };
@@ -80,9 +85,9 @@ static void strip_it(char *str)
  * Simple routine to parse an ascii DECnet address
  * into a network order address.
  */
-static int parse_addr(dn_address *addr, char *str)
+static int parse_addr(__le16 *addr, char *str)
 {
-       dn_address area, node;
+       __u16 area, node;
 
        while(*str && !ISNUM(*str)) str++;
 
@@ -129,11 +134,10 @@ static int parse_addr(dn_address *addr, char *str)
 
 static int dn_node_address_strategy(ctl_table *table, int __user *name, int nlen,
                                void __user *oldval, size_t __user *oldlenp,
-                               void __user *newval, size_t newlen,
-                               void **context)
+                               void __user *newval, size_t newlen)
 {
        size_t len;
-       dn_address addr;
+       __le16 addr;
 
        if (oldval && oldlenp) {
                if (get_user(len, oldlenp))
@@ -141,14 +145,14 @@ static int dn_node_address_strategy(ctl_table *table, int __user *name, int nlen
                if (len) {
                        if (len != sizeof(unsigned short))
                                return -EINVAL;
-                       if (put_user(decnet_address, (unsigned short __user *)oldval))
+                       if (put_user(decnet_address, (__le16 __user *)oldval))
                                return -EFAULT;
                }
        }
        if (newval && newlen) {
                if (newlen != sizeof(unsigned short))
                        return -EINVAL;
-               if (get_user(addr, (unsigned short __user *)newval))
+               if (get_user(addr, (__le16 __user *)newval))
                        return -EFAULT;
 
                dn_dev_devices_off();
@@ -160,14 +164,14 @@ static int dn_node_address_strategy(ctl_table *table, int __user *name, int nlen
        return 0;
 }
 
-static int dn_node_address_handler(ctl_table *table, int write, 
+static int dn_node_address_handler(ctl_table *table, int write,
                                struct file *filp,
                                void __user *buffer,
                                size_t *lenp, loff_t *ppos)
 {
        char addr[DN_ASCBUF_LEN];
        size_t len;
-       dn_address dnaddr;
+       __le16 dnaddr;
 
        if (!*lenp || (*ppos && !write)) {
                *lenp = 0;
@@ -215,8 +219,7 @@ static int dn_node_address_handler(ctl_table *table, int write,
 
 static int dn_def_dev_strategy(ctl_table *table, int __user *name, int nlen,
                                void __user *oldval, size_t __user *oldlenp,
-                               void __user *newval, size_t newlen,
-                               void **context)
+                               void __user *newval, size_t newlen)
 {
        size_t len;
        struct net_device *dev;
@@ -237,7 +240,7 @@ static int dn_def_dev_strategy(ctl_table *table, int __user *name, int nlen,
                        }
 
                        namel = strlen(devname) + 1;
-                       if (len > namel) len = namel;   
+                       if (len > namel) len = namel;
 
                        if (copy_to_user(oldval, devname, len))
                                return -EFAULT;
@@ -256,7 +259,7 @@ static int dn_def_dev_strategy(ctl_table *table, int __user *name, int nlen,
 
                devname[newlen] = 0;
 
-               dev = dev_get_by_name(devname);
+               dev = dev_get_by_name(&init_net, devname);
                if (dev == NULL)
                        return -ENODEV;
 
@@ -272,7 +275,7 @@ static int dn_def_dev_strategy(ctl_table *table, int __user *name, int nlen,
 }
 
 
-static int dn_def_dev_handler(ctl_table *table, int write, 
+static int dn_def_dev_handler(ctl_table *table, int write,
                                struct file * filp,
                                void __user *buffer,
                                size_t *lenp, loff_t *ppos)
@@ -296,7 +299,7 @@ static int dn_def_dev_handler(ctl_table *table, int write,
                devname[*lenp] = 0;
                strip_it(devname);
 
-               dev = dev_get_by_name(devname);
+               dev = dev_get_by_name(&init_net, devname);
                if (dev == NULL)
                        return -ENODEV;
 
@@ -338,17 +341,17 @@ static int dn_def_dev_handler(ctl_table *table, int write,
 
 static ctl_table dn_table[] = {
        {
-               .ctl_name = NET_DECNET_NODE_ADDRESS, 
-               .procname = "node_address", 
-               .maxlen = 7, 
-               .mode = 0644, 
+               .ctl_name = NET_DECNET_NODE_ADDRESS,
+               .procname = "node_address",
+               .maxlen = 7,
+               .mode = 0644,
                .proc_handler = dn_node_address_handler,
                .strategy = dn_node_address_strategy,
        },
        {
                .ctl_name = NET_DECNET_NODE_NAME,
                .procname = "node_name",
-               .data = node_name, 
+               .data = node_name,
                .maxlen = 7,
                .mode = 0644,
                .proc_handler = &proc_dostring,
@@ -356,8 +359,8 @@ static ctl_table dn_table[] = {
        },
        {
                .ctl_name = NET_DECNET_DEFAULT_DEVICE,
-               .procname = "default_device", 
-               .maxlen = 16, 
+               .procname = "default_device",
+               .maxlen = 16,
                .mode = 0644,
                .proc_handler = dn_def_dev_handler,
                .strategy = dn_def_dev_strategy,
@@ -428,6 +431,33 @@ static ctl_table dn_table[] = {
                .extra1 = &min_decnet_no_fc_max_cwnd,
                .extra2 = &max_decnet_no_fc_max_cwnd
        },
+       {
+               .ctl_name = NET_DECNET_MEM,
+               .procname = "decnet_mem",
+               .data = &sysctl_decnet_mem,
+               .maxlen = sizeof(sysctl_decnet_mem),
+               .mode = 0644,
+               .proc_handler = &proc_dointvec,
+               .strategy = &sysctl_intvec,
+       },
+       {
+               .ctl_name = NET_DECNET_RMEM,
+               .procname = "decnet_rmem",
+               .data = &sysctl_decnet_rmem,
+               .maxlen = sizeof(sysctl_decnet_rmem),
+               .mode = 0644,
+               .proc_handler = &proc_dointvec,
+               .strategy = &sysctl_intvec,
+       },
+       {
+               .ctl_name = NET_DECNET_WMEM,
+               .procname = "decnet_wmem",
+               .data = &sysctl_decnet_wmem,
+               .maxlen = sizeof(sysctl_decnet_wmem),
+               .mode = 0644,
+               .proc_handler = &proc_dointvec,
+               .strategy = &sysctl_intvec,
+       },
        {
                .ctl_name = NET_DECNET_DEBUG_LEVEL,
                .procname = "debug",
@@ -442,18 +472,18 @@ static ctl_table dn_table[] = {
 
 static ctl_table dn_dir_table[] = {
        {
-               .ctl_name = NET_DECNET, 
-               .procname = "decnet", 
-               .mode = 0555, 
+               .ctl_name = NET_DECNET,
+               .procname = "decnet",
+               .mode = 0555,
                .child = dn_table},
        {0}
 };
 
 static ctl_table dn_root_table[] = {
        {
-               .ctl_name = CTL_NET, 
-               .procname = "net", 
-               .mode = 0555, 
+               .ctl_name = CTL_NET,
+               .procname = "net",
+               .mode = 0555,
                .child = dn_dir_table
        },
        {0}
@@ -461,7 +491,7 @@ static ctl_table dn_root_table[] = {
 
 void dn_register_sysctl(void)
 {
-       dn_table_header = register_sysctl_table(dn_root_table, 1);
+       dn_table_header = register_sysctl_table(dn_root_table);
 }
 
 void dn_unregister_sysctl(void)