1 /* 2 * This program is free software; you can redistribute it and/or modify 3 * it under the terms of the GNU General Public License as published by 4 * the Free Software Foundation; either version 2 of the License, or 5 * (at your option) any later version. 6 * 7 * Copyright (C) 1996 Mike Shaver (shaver@zeroknowledge.com) 8 */ 9 #include <linux/mm.h> 10 #include <linux/sysctl.h> 11 #include <linux/init.h> 12 #include <net/ax25.h> 13 #include <net/netrom.h> 14 15 /* 16 * Values taken from NET/ROM documentation. 17 */ 18 static int min_quality[] = {0}, max_quality[] = {255}; 19 static int min_obs[] = {0}, max_obs[] = {255}; 20 static int min_ttl[] = {0}, max_ttl[] = {255}; 21 static int min_t1[] = {5 * HZ}; 22 static int max_t1[] = {600 * HZ}; 23 static int min_n2[] = {2}, max_n2[] = {127}; 24 static int min_t2[] = {1 * HZ}; 25 static int max_t2[] = {60 * HZ}; 26 static int min_t4[] = {1 * HZ}; 27 static int max_t4[] = {1000 * HZ}; 28 static int min_window[] = {1}, max_window[] = {127}; 29 static int min_idle[] = {0 * HZ}; 30 static int max_idle[] = {65535 * HZ}; 31 static int min_route[] = {0}, max_route[] = {1}; 32 static int min_fails[] = {1}, max_fails[] = {10}; 33 static int min_reset[] = {0}, max_reset[] = {1}; 34 35 static struct ctl_table_header *nr_table_header; 36 37 static struct ctl_table nr_table[] = { 38 { 39 .procname = "default_path_quality", 40 .data = &sysctl_netrom_default_path_quality, 41 .maxlen = sizeof(int), 42 .mode = 0644, 43 .proc_handler = proc_dointvec_minmax, 44 .extra1 = &min_quality, 45 .extra2 = &max_quality 46 }, 47 { 48 .procname = "obsolescence_count_initialiser", 49 .data = &sysctl_netrom_obsolescence_count_initialiser, 50 .maxlen = sizeof(int), 51 .mode = 0644, 52 .proc_handler = proc_dointvec_minmax, 53 .extra1 = &min_obs, 54 .extra2 = &max_obs 55 }, 56 { 57 .procname = "network_ttl_initialiser", 58 .data = &sysctl_netrom_network_ttl_initialiser, 59 .maxlen = sizeof(int), 60 .mode = 0644, 61 .proc_handler = proc_dointvec_minmax, 62 .extra1 = &min_ttl, 63 .extra2 = &max_ttl 64 }, 65 { 66 .procname = "transport_timeout", 67 .data = &sysctl_netrom_transport_timeout, 68 .maxlen = sizeof(int), 69 .mode = 0644, 70 .proc_handler = proc_dointvec_minmax, 71 .extra1 = &min_t1, 72 .extra2 = &max_t1 73 }, 74 { 75 .procname = "transport_maximum_tries", 76 .data = &sysctl_netrom_transport_maximum_tries, 77 .maxlen = sizeof(int), 78 .mode = 0644, 79 .proc_handler = proc_dointvec_minmax, 80 .extra1 = &min_n2, 81 .extra2 = &max_n2 82 }, 83 { 84 .procname = "transport_acknowledge_delay", 85 .data = &sysctl_netrom_transport_acknowledge_delay, 86 .maxlen = sizeof(int), 87 .mode = 0644, 88 .proc_handler = proc_dointvec_minmax, 89 .extra1 = &min_t2, 90 .extra2 = &max_t2 91 }, 92 { 93 .procname = "transport_busy_delay", 94 .data = &sysctl_netrom_transport_busy_delay, 95 .maxlen = sizeof(int), 96 .mode = 0644, 97 .proc_handler = proc_dointvec_minmax, 98 .extra1 = &min_t4, 99 .extra2 = &max_t4 100 }, 101 { 102 .procname = "transport_requested_window_size", 103 .data = &sysctl_netrom_transport_requested_window_size, 104 .maxlen = sizeof(int), 105 .mode = 0644, 106 .proc_handler = proc_dointvec_minmax, 107 .extra1 = &min_window, 108 .extra2 = &max_window 109 }, 110 { 111 .procname = "transport_no_activity_timeout", 112 .data = &sysctl_netrom_transport_no_activity_timeout, 113 .maxlen = sizeof(int), 114 .mode = 0644, 115 .proc_handler = proc_dointvec_minmax, 116 .extra1 = &min_idle, 117 .extra2 = &max_idle 118 }, 119 { 120 .procname = "routing_control", 121 .data = &sysctl_netrom_routing_control, 122 .maxlen = sizeof(int), 123 .mode = 0644, 124 .proc_handler = proc_dointvec_minmax, 125 .extra1 = &min_route, 126 .extra2 = &max_route 127 }, 128 { 129 .procname = "link_fails_count", 130 .data = &sysctl_netrom_link_fails_count, 131 .maxlen = sizeof(int), 132 .mode = 0644, 133 .proc_handler = proc_dointvec_minmax, 134 .extra1 = &min_fails, 135 .extra2 = &max_fails 136 }, 137 { 138 .procname = "reset", 139 .data = &sysctl_netrom_reset_circuit, 140 .maxlen = sizeof(int), 141 .mode = 0644, 142 .proc_handler = proc_dointvec_minmax, 143 .extra1 = &min_reset, 144 .extra2 = &max_reset 145 }, 146 { } 147 }; 148 149 int __init nr_register_sysctl(void) 150 { 151 nr_table_header = register_net_sysctl(&init_net, "net/netrom", nr_table); 152 if (!nr_table_header) 153 return -ENOMEM; 154 return 0; 155 } 156 157 void nr_unregister_sysctl(void) 158 { 159 unregister_net_sysctl_table(nr_table_header); 160 } 161