0001
0002
0003
0004
0005
0006 #include <linux/mm.h>
0007 #include <linux/sysctl.h>
0008 #include <linux/init.h>
0009 #include <net/ax25.h>
0010 #include <net/rose.h>
0011
0012 static int min_timer[] = {1 * HZ};
0013 static int max_timer[] = {300 * HZ};
0014 static int min_idle[] = {0 * HZ};
0015 static int max_idle[] = {65535 * HZ};
0016 static int min_route[1], max_route[] = {1};
0017 static int min_ftimer[] = {60 * HZ};
0018 static int max_ftimer[] = {600 * HZ};
0019 static int min_maxvcs[] = {1}, max_maxvcs[] = {254};
0020 static int min_window[] = {1}, max_window[] = {7};
0021
0022 static struct ctl_table_header *rose_table_header;
0023
0024 static struct ctl_table rose_table[] = {
0025 {
0026 .procname = "restart_request_timeout",
0027 .data = &sysctl_rose_restart_request_timeout,
0028 .maxlen = sizeof(int),
0029 .mode = 0644,
0030 .proc_handler = proc_dointvec_minmax,
0031 .extra1 = &min_timer,
0032 .extra2 = &max_timer
0033 },
0034 {
0035 .procname = "call_request_timeout",
0036 .data = &sysctl_rose_call_request_timeout,
0037 .maxlen = sizeof(int),
0038 .mode = 0644,
0039 .proc_handler = proc_dointvec_minmax,
0040 .extra1 = &min_timer,
0041 .extra2 = &max_timer
0042 },
0043 {
0044 .procname = "reset_request_timeout",
0045 .data = &sysctl_rose_reset_request_timeout,
0046 .maxlen = sizeof(int),
0047 .mode = 0644,
0048 .proc_handler = proc_dointvec_minmax,
0049 .extra1 = &min_timer,
0050 .extra2 = &max_timer
0051 },
0052 {
0053 .procname = "clear_request_timeout",
0054 .data = &sysctl_rose_clear_request_timeout,
0055 .maxlen = sizeof(int),
0056 .mode = 0644,
0057 .proc_handler = proc_dointvec_minmax,
0058 .extra1 = &min_timer,
0059 .extra2 = &max_timer
0060 },
0061 {
0062 .procname = "no_activity_timeout",
0063 .data = &sysctl_rose_no_activity_timeout,
0064 .maxlen = sizeof(int),
0065 .mode = 0644,
0066 .proc_handler = proc_dointvec_minmax,
0067 .extra1 = &min_idle,
0068 .extra2 = &max_idle
0069 },
0070 {
0071 .procname = "acknowledge_hold_back_timeout",
0072 .data = &sysctl_rose_ack_hold_back_timeout,
0073 .maxlen = sizeof(int),
0074 .mode = 0644,
0075 .proc_handler = proc_dointvec_minmax,
0076 .extra1 = &min_timer,
0077 .extra2 = &max_timer
0078 },
0079 {
0080 .procname = "routing_control",
0081 .data = &sysctl_rose_routing_control,
0082 .maxlen = sizeof(int),
0083 .mode = 0644,
0084 .proc_handler = proc_dointvec_minmax,
0085 .extra1 = &min_route,
0086 .extra2 = &max_route
0087 },
0088 {
0089 .procname = "link_fail_timeout",
0090 .data = &sysctl_rose_link_fail_timeout,
0091 .maxlen = sizeof(int),
0092 .mode = 0644,
0093 .proc_handler = proc_dointvec_minmax,
0094 .extra1 = &min_ftimer,
0095 .extra2 = &max_ftimer
0096 },
0097 {
0098 .procname = "maximum_virtual_circuits",
0099 .data = &sysctl_rose_maximum_vcs,
0100 .maxlen = sizeof(int),
0101 .mode = 0644,
0102 .proc_handler = proc_dointvec_minmax,
0103 .extra1 = &min_maxvcs,
0104 .extra2 = &max_maxvcs
0105 },
0106 {
0107 .procname = "window_size",
0108 .data = &sysctl_rose_window_size,
0109 .maxlen = sizeof(int),
0110 .mode = 0644,
0111 .proc_handler = proc_dointvec_minmax,
0112 .extra1 = &min_window,
0113 .extra2 = &max_window
0114 },
0115 { }
0116 };
0117
0118 void __init rose_register_sysctl(void)
0119 {
0120 rose_table_header = register_net_sysctl(&init_net, "net/rose", rose_table);
0121 }
0122
0123 void rose_unregister_sysctl(void)
0124 {
0125 unregister_net_sysctl_table(rose_table_header);
0126 }