Blame view
net/ax25/sysctl_net_ax25.c
5.06 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 6 7 8 |
/* * This program 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 of the License, or * (at your option) any later version. * * Copyright (C) 1996 Mike Shaver (shaver@zeroknowledge.com) */ |
1da177e4c Linux-2.6.12-rc2 |
9 |
#include <linux/mm.h> |
5a0e3ad6a include cleanup: ... |
10 |
#include <linux/slab.h> |
1da177e4c Linux-2.6.12-rc2 |
11 12 13 14 15 16 17 18 19 20 |
#include <linux/sysctl.h> #include <linux/spinlock.h> #include <net/ax25.h> static int min_ipdefmode[1], max_ipdefmode[] = {1}; static int min_axdefmode[1], max_axdefmode[] = {1}; static int min_backoff[1], max_backoff[] = {2}; static int min_conmode[1], max_conmode[] = {2}; static int min_window[] = {1}, max_window[] = {7}; static int min_ewindow[] = {1}, max_ewindow[] = {63}; |
e1fdb5b39 [AX.25]: Eleminat... |
21 22 23 24 |
static int min_t1[] = {1}, max_t1[] = {30000}; static int min_t2[] = {1}, max_t2[] = {20000}; static int min_t3[1], max_t3[] = {3600000}; static int min_idle[1], max_idle[] = {65535000}; |
1da177e4c Linux-2.6.12-rc2 |
25 26 |
static int min_n2[] = {1}, max_n2[] = {31}; static int min_paclen[] = {1}, max_paclen[] = {512}; |
c7c694d19 [AX.25]: Fix pote... |
27 |
static int min_proto[1], max_proto[] = { AX25_PROTO_MAX }; |
e14bec2e2 ax25: fix warning... |
28 |
#ifdef CONFIG_AX25_DAMA_SLAVE |
e1fdb5b39 [AX.25]: Eleminat... |
29 |
static int min_ds_timeout[1], max_ds_timeout[] = {65535000}; |
e14bec2e2 ax25: fix warning... |
30 |
#endif |
1da177e4c Linux-2.6.12-rc2 |
31 32 33 34 35 |
static struct ctl_table_header *ax25_table_header; static ctl_table *ax25_table; static int ax25_table_size; |
c6995bdff [AX25]: Switch to... |
36 |
static struct ctl_path ax25_path[] = { |
f8572d8f2 sysctl net: Remov... |
37 38 |
{ .procname = "net", }, { .procname = "ax25", }, |
c6995bdff [AX25]: Switch to... |
39 |
{ } |
1da177e4c Linux-2.6.12-rc2 |
40 |
}; |
ffb208479 AX.25: Fix sysctl... |
41 |
|
1da177e4c Linux-2.6.12-rc2 |
42 43 |
static const ctl_table ax25_param_table[] = { { |
1da177e4c Linux-2.6.12-rc2 |
44 45 46 |
.procname = "ip_default_mode", .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
47 |
.proc_handler = proc_dointvec_minmax, |
1da177e4c Linux-2.6.12-rc2 |
48 49 50 51 |
.extra1 = &min_ipdefmode, .extra2 = &max_ipdefmode }, { |
1da177e4c Linux-2.6.12-rc2 |
52 53 54 |
.procname = "ax25_default_mode", .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
55 |
.proc_handler = proc_dointvec_minmax, |
1da177e4c Linux-2.6.12-rc2 |
56 57 58 59 |
.extra1 = &min_axdefmode, .extra2 = &max_axdefmode }, { |
1da177e4c Linux-2.6.12-rc2 |
60 61 62 |
.procname = "backoff_type", .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
63 |
.proc_handler = proc_dointvec_minmax, |
1da177e4c Linux-2.6.12-rc2 |
64 65 66 67 |
.extra1 = &min_backoff, .extra2 = &max_backoff }, { |
1da177e4c Linux-2.6.12-rc2 |
68 69 70 |
.procname = "connect_mode", .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
71 |
.proc_handler = proc_dointvec_minmax, |
1da177e4c Linux-2.6.12-rc2 |
72 73 74 75 |
.extra1 = &min_conmode, .extra2 = &max_conmode }, { |
1da177e4c Linux-2.6.12-rc2 |
76 77 78 |
.procname = "standard_window_size", .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
79 |
.proc_handler = proc_dointvec_minmax, |
1da177e4c Linux-2.6.12-rc2 |
80 81 82 83 |
.extra1 = &min_window, .extra2 = &max_window }, { |
1da177e4c Linux-2.6.12-rc2 |
84 85 86 |
.procname = "extended_window_size", .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
87 |
.proc_handler = proc_dointvec_minmax, |
1da177e4c Linux-2.6.12-rc2 |
88 89 90 91 |
.extra1 = &min_ewindow, .extra2 = &max_ewindow }, { |
1da177e4c Linux-2.6.12-rc2 |
92 93 94 |
.procname = "t1_timeout", .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
95 |
.proc_handler = proc_dointvec_minmax, |
1da177e4c Linux-2.6.12-rc2 |
96 97 98 99 |
.extra1 = &min_t1, .extra2 = &max_t1 }, { |
1da177e4c Linux-2.6.12-rc2 |
100 101 102 |
.procname = "t2_timeout", .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
103 |
.proc_handler = proc_dointvec_minmax, |
1da177e4c Linux-2.6.12-rc2 |
104 105 106 107 |
.extra1 = &min_t2, .extra2 = &max_t2 }, { |
1da177e4c Linux-2.6.12-rc2 |
108 109 110 |
.procname = "t3_timeout", .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
111 |
.proc_handler = proc_dointvec_minmax, |
1da177e4c Linux-2.6.12-rc2 |
112 113 114 115 |
.extra1 = &min_t3, .extra2 = &max_t3 }, { |
1da177e4c Linux-2.6.12-rc2 |
116 117 118 |
.procname = "idle_timeout", .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
119 |
.proc_handler = proc_dointvec_minmax, |
1da177e4c Linux-2.6.12-rc2 |
120 121 122 123 |
.extra1 = &min_idle, .extra2 = &max_idle }, { |
1da177e4c Linux-2.6.12-rc2 |
124 125 126 |
.procname = "maximum_retry_count", .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
127 |
.proc_handler = proc_dointvec_minmax, |
1da177e4c Linux-2.6.12-rc2 |
128 129 130 131 |
.extra1 = &min_n2, .extra2 = &max_n2 }, { |
1da177e4c Linux-2.6.12-rc2 |
132 133 134 |
.procname = "maximum_packet_length", .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
135 |
.proc_handler = proc_dointvec_minmax, |
1da177e4c Linux-2.6.12-rc2 |
136 137 138 139 |
.extra1 = &min_paclen, .extra2 = &max_paclen }, { |
1da177e4c Linux-2.6.12-rc2 |
140 141 142 |
.procname = "protocol", .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
143 |
.proc_handler = proc_dointvec_minmax, |
1da177e4c Linux-2.6.12-rc2 |
144 145 146 |
.extra1 = &min_proto, .extra2 = &max_proto }, |
ffb208479 AX.25: Fix sysctl... |
147 |
#ifdef CONFIG_AX25_DAMA_SLAVE |
1da177e4c Linux-2.6.12-rc2 |
148 |
{ |
1da177e4c Linux-2.6.12-rc2 |
149 150 151 |
.procname = "dama_slave_timeout", .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
152 |
.proc_handler = proc_dointvec_minmax, |
1da177e4c Linux-2.6.12-rc2 |
153 154 155 |
.extra1 = &min_ds_timeout, .extra2 = &max_ds_timeout }, |
ffb208479 AX.25: Fix sysctl... |
156 |
#endif |
f8572d8f2 sysctl net: Remov... |
157 |
{ } /* that's all, folks! */ |
1da177e4c Linux-2.6.12-rc2 |
158 159 160 161 162 163 164 165 166 167 |
}; void ax25_register_sysctl(void) { ax25_dev *ax25_dev; int n, k; spin_lock_bh(&ax25_dev_lock); for (ax25_table_size = sizeof(ctl_table), ax25_dev = ax25_dev_list; ax25_dev != NULL; ax25_dev = ax25_dev->next) ax25_table_size += sizeof(ctl_table); |
0da974f4f [NET]: Conversion... |
168 |
if ((ax25_table = kzalloc(ax25_table_size, GFP_ATOMIC)) == NULL) { |
1da177e4c Linux-2.6.12-rc2 |
169 170 171 |
spin_unlock_bh(&ax25_dev_lock); return; } |
1da177e4c Linux-2.6.12-rc2 |
172 |
for (n = 0, ax25_dev = ax25_dev_list; ax25_dev != NULL; ax25_dev = ax25_dev->next) { |
0459d70ad [AX25]: Use kmemdup |
173 174 175 |
struct ctl_table *child = kmemdup(ax25_param_table, sizeof(ax25_param_table), GFP_ATOMIC); |
1da177e4c Linux-2.6.12-rc2 |
176 177 178 179 180 181 182 |
if (!child) { while (n--) kfree(ax25_table[n].child); kfree(ax25_table); spin_unlock_bh(&ax25_dev_lock); return; } |
1da177e4c Linux-2.6.12-rc2 |
183 |
ax25_table[n].child = ax25_dev->systable = child; |
1da177e4c Linux-2.6.12-rc2 |
184 185 |
ax25_table[n].procname = ax25_dev->dev->name; ax25_table[n].mode = 0555; |
1da177e4c Linux-2.6.12-rc2 |
186 187 188 189 190 191 192 |
for (k = 0; k < AX25_MAX_VALUES; k++) child[k].data = &ax25_dev->values[k]; n++; } spin_unlock_bh(&ax25_dev_lock); |
c6995bdff [AX25]: Switch to... |
193 |
ax25_table_header = register_sysctl_paths(ax25_path, ax25_table); |
1da177e4c Linux-2.6.12-rc2 |
194 195 196 197 198 199 |
} void ax25_unregister_sysctl(void) { ctl_table *p; unregister_sysctl_table(ax25_table_header); |
f8572d8f2 sysctl net: Remov... |
200 |
for (p = ax25_table; p->procname; p++) |
1da177e4c Linux-2.6.12-rc2 |
201 202 203 |
kfree(p->child); kfree(ax25_table); } |