]> nv-tegra.nvidia Code Review - linux-2.6.git/blob - net/netrom/sysctl_net_netrom.c
[NETROM]: Fix locking order when establishing a NETROM circuit.
[linux-2.6.git] / net / netrom / sysctl_net_netrom.c
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 ctl_table nr_table[] = {
38         {
39                 .ctl_name       = NET_NETROM_DEFAULT_PATH_QUALITY,
40                 .procname       = "default_path_quality",
41                 .data           = &sysctl_netrom_default_path_quality,
42                 .maxlen         = sizeof(int),
43                 .mode           = 0644,
44                 .proc_handler   = &proc_dointvec_minmax,
45                 .strategy       = &sysctl_intvec,
46                 .extra1         = &min_quality,
47                 .extra2         = &max_quality
48         },
49         {
50                 .ctl_name       = NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER,
51                 .procname       = "obsolescence_count_initialiser",
52                 .data           = &sysctl_netrom_obsolescence_count_initialiser,
53                 .maxlen         = sizeof(int),
54                 .mode           = 0644,
55                 .proc_handler   = &proc_dointvec_minmax,
56                 .strategy       = &sysctl_intvec,
57                 .extra1         = &min_obs,
58                 .extra2         = &max_obs
59         },
60         {
61                 .ctl_name       = NET_NETROM_NETWORK_TTL_INITIALISER,
62                 .procname       = "network_ttl_initialiser",
63                 .data           = &sysctl_netrom_network_ttl_initialiser,
64                 .maxlen         = sizeof(int),
65                 .mode           = 0644,
66                 .proc_handler   = &proc_dointvec_minmax,
67                 .strategy       = &sysctl_intvec,
68                 .extra1         = &min_ttl,
69                 .extra2         = &max_ttl
70         },
71         {
72                 .ctl_name       = NET_NETROM_TRANSPORT_TIMEOUT,
73                 .procname       = "transport_timeout",
74                 .data           = &sysctl_netrom_transport_timeout,
75                 .maxlen         = sizeof(int),
76                 .mode           = 0644,
77                 .proc_handler   = &proc_dointvec_minmax,
78                 .strategy       = &sysctl_intvec,
79                 .extra1         = &min_t1,
80                 .extra2         = &max_t1
81         },
82         {
83                 .ctl_name       = NET_NETROM_TRANSPORT_MAXIMUM_TRIES,
84                 .procname       = "transport_maximum_tries",
85                 .data           = &sysctl_netrom_transport_maximum_tries,
86                 .maxlen         = sizeof(int),
87                 .mode           = 0644,
88                 .proc_handler   = &proc_dointvec_minmax,
89                 .strategy       = &sysctl_intvec,
90                 .extra1         = &min_n2,
91                 .extra2         = &max_n2
92         },
93         {
94                 .ctl_name       = NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY,
95                 .procname       = "transport_acknowledge_delay",
96                 .data           = &sysctl_netrom_transport_acknowledge_delay,
97                 .maxlen         = sizeof(int),
98                 .mode           = 0644,
99                 .proc_handler   = &proc_dointvec_minmax,
100                 .strategy       = &sysctl_intvec,
101                 .extra1         = &min_t2,
102                 .extra2         = &max_t2
103         },
104         {
105                 .ctl_name       = NET_NETROM_TRANSPORT_BUSY_DELAY,
106                 .procname       = "transport_busy_delay",
107                 .data           = &sysctl_netrom_transport_busy_delay,
108                 .maxlen         = sizeof(int),
109                 .mode           = 0644,
110                 .proc_handler   = &proc_dointvec_minmax,
111                 .strategy       = &sysctl_intvec,
112                 .extra1         = &min_t4,
113                 .extra2         = &max_t4
114         },
115         {
116                 .ctl_name       = NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE,
117                 .procname       = "transport_requested_window_size",
118                 .data           = &sysctl_netrom_transport_requested_window_size,
119                 .maxlen         = sizeof(int),
120                 .mode           = 0644,
121                 .proc_handler   = &proc_dointvec_minmax,
122                 .strategy       = &sysctl_intvec,
123                 .extra1         = &min_window,
124                 .extra2         = &max_window
125         },
126         {
127                 .ctl_name       = NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT,
128                 .procname       = "transport_no_activity_timeout",
129                 .data           = &sysctl_netrom_transport_no_activity_timeout,
130                 .maxlen         = sizeof(int),
131                 .mode           = 0644,
132                 .proc_handler   = &proc_dointvec_minmax,
133                 .strategy       = &sysctl_intvec,
134                 .extra1         = &min_idle,
135                 .extra2         = &max_idle
136         },
137         {
138                 .ctl_name       = NET_NETROM_ROUTING_CONTROL,
139                 .procname       = "routing_control",
140                 .data           = &sysctl_netrom_routing_control,
141                 .maxlen         = sizeof(int),
142                 .mode           = 0644,
143                 .proc_handler   = &proc_dointvec_minmax,
144                 .strategy       = &sysctl_intvec,
145                 .extra1         = &min_route,
146                 .extra2         = &max_route
147         },
148         {
149                 .ctl_name       = NET_NETROM_LINK_FAILS_COUNT,
150                 .procname       = "link_fails_count",
151                 .data           = &sysctl_netrom_link_fails_count,
152                 .maxlen         = sizeof(int),
153                 .mode           = 0644,
154                 .proc_handler   = &proc_dointvec_minmax,
155                 .strategy       = &sysctl_intvec,
156                 .extra1         = &min_fails,
157                 .extra2         = &max_fails
158         },
159         {
160                 .ctl_name       = NET_NETROM_RESET,
161                 .procname       = "reset",
162                 .data           = &sysctl_netrom_reset_circuit,
163                 .maxlen         = sizeof(int),
164                 .mode           = 0644,
165                 .proc_handler   = &proc_dointvec_minmax,
166                 .strategy       = &sysctl_intvec,
167                 .extra1         = &min_reset,
168                 .extra2         = &max_reset
169         },
170         { .ctl_name = 0 }
171 };
172
173 static ctl_table nr_dir_table[] = {
174         {
175                 .ctl_name       = NET_NETROM,
176                 .procname       = "netrom",
177                 .mode           = 0555,
178                 .child          = nr_table
179         },
180         { .ctl_name = 0 }
181 };
182
183 static ctl_table nr_root_table[] = {
184         {
185                 .ctl_name       = CTL_NET,
186                 .procname       = "net",
187                 .mode           = 0555,
188                 .child          = nr_dir_table
189         },
190         { .ctl_name = 0 }
191 };
192
193 void __init nr_register_sysctl(void)
194 {
195         nr_table_header = register_sysctl_table(nr_root_table, 1);
196 }
197
198 void nr_unregister_sysctl(void)
199 {
200         unregister_sysctl_table(nr_table_header);
201 }