diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /net/ipv4/sysctl_net_ipv4.c |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'net/ipv4/sysctl_net_ipv4.c')
-rw-r--r-- | net/ipv4/sysctl_net_ipv4.c | 698 |
1 files changed, 698 insertions, 0 deletions
diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c new file mode 100644 index 000000000000..3aafb298c1c1 --- /dev/null +++ b/net/ipv4/sysctl_net_ipv4.c | |||
@@ -0,0 +1,698 @@ | |||
1 | /* | ||
2 | * sysctl_net_ipv4.c: sysctl interface to net IPV4 subsystem. | ||
3 | * | ||
4 | * $Id: sysctl_net_ipv4.c,v 1.50 2001/10/20 00:00:11 davem Exp $ | ||
5 | * | ||
6 | * Begun April 1, 1996, Mike Shaver. | ||
7 | * Added /proc/sys/net/ipv4 directory entry (empty =) ). [MS] | ||
8 | */ | ||
9 | |||
10 | #include <linux/mm.h> | ||
11 | #include <linux/module.h> | ||
12 | #include <linux/sysctl.h> | ||
13 | #include <linux/config.h> | ||
14 | #include <net/snmp.h> | ||
15 | #include <net/ip.h> | ||
16 | #include <net/route.h> | ||
17 | #include <net/tcp.h> | ||
18 | |||
19 | /* From af_inet.c */ | ||
20 | extern int sysctl_ip_nonlocal_bind; | ||
21 | |||
22 | /* From icmp.c */ | ||
23 | extern int sysctl_icmp_echo_ignore_all; | ||
24 | extern int sysctl_icmp_echo_ignore_broadcasts; | ||
25 | extern int sysctl_icmp_ignore_bogus_error_responses; | ||
26 | |||
27 | /* From ip_fragment.c */ | ||
28 | extern int sysctl_ipfrag_low_thresh; | ||
29 | extern int sysctl_ipfrag_high_thresh; | ||
30 | extern int sysctl_ipfrag_time; | ||
31 | extern int sysctl_ipfrag_secret_interval; | ||
32 | |||
33 | /* From ip_output.c */ | ||
34 | extern int sysctl_ip_dynaddr; | ||
35 | |||
36 | /* From icmp.c */ | ||
37 | extern int sysctl_icmp_ratelimit; | ||
38 | extern int sysctl_icmp_ratemask; | ||
39 | |||
40 | /* From igmp.c */ | ||
41 | extern int sysctl_igmp_max_memberships; | ||
42 | extern int sysctl_igmp_max_msf; | ||
43 | |||
44 | /* From inetpeer.c */ | ||
45 | extern int inet_peer_threshold; | ||
46 | extern int inet_peer_minttl; | ||
47 | extern int inet_peer_maxttl; | ||
48 | extern int inet_peer_gc_mintime; | ||
49 | extern int inet_peer_gc_maxtime; | ||
50 | |||
51 | #ifdef CONFIG_SYSCTL | ||
52 | static int tcp_retr1_max = 255; | ||
53 | static int ip_local_port_range_min[] = { 1, 1 }; | ||
54 | static int ip_local_port_range_max[] = { 65535, 65535 }; | ||
55 | #endif | ||
56 | |||
57 | struct ipv4_config ipv4_config; | ||
58 | |||
59 | extern ctl_table ipv4_route_table[]; | ||
60 | |||
61 | #ifdef CONFIG_SYSCTL | ||
62 | |||
63 | static | ||
64 | int ipv4_sysctl_forward(ctl_table *ctl, int write, struct file * filp, | ||
65 | void __user *buffer, size_t *lenp, loff_t *ppos) | ||
66 | { | ||
67 | int val = ipv4_devconf.forwarding; | ||
68 | int ret; | ||
69 | |||
70 | ret = proc_dointvec(ctl, write, filp, buffer, lenp, ppos); | ||
71 | |||
72 | if (write && ipv4_devconf.forwarding != val) | ||
73 | inet_forward_change(); | ||
74 | |||
75 | return ret; | ||
76 | } | ||
77 | |||
78 | static int ipv4_sysctl_forward_strategy(ctl_table *table, | ||
79 | int __user *name, int nlen, | ||
80 | void __user *oldval, size_t __user *oldlenp, | ||
81 | void __user *newval, size_t newlen, | ||
82 | void **context) | ||
83 | { | ||
84 | int *valp = table->data; | ||
85 | int new; | ||
86 | |||
87 | if (!newval || !newlen) | ||
88 | return 0; | ||
89 | |||
90 | if (newlen != sizeof(int)) | ||
91 | return -EINVAL; | ||
92 | |||
93 | if (get_user(new, (int __user *)newval)) | ||
94 | return -EFAULT; | ||
95 | |||
96 | if (new == *valp) | ||
97 | return 0; | ||
98 | |||
99 | if (oldval && oldlenp) { | ||
100 | size_t len; | ||
101 | |||
102 | if (get_user(len, oldlenp)) | ||
103 | return -EFAULT; | ||
104 | |||
105 | if (len) { | ||
106 | if (len > table->maxlen) | ||
107 | len = table->maxlen; | ||
108 | if (copy_to_user(oldval, valp, len)) | ||
109 | return -EFAULT; | ||
110 | if (put_user(len, oldlenp)) | ||
111 | return -EFAULT; | ||
112 | } | ||
113 | } | ||
114 | |||
115 | *valp = new; | ||
116 | inet_forward_change(); | ||
117 | return 1; | ||
118 | } | ||
119 | |||
120 | ctl_table ipv4_table[] = { | ||
121 | { | ||
122 | .ctl_name = NET_IPV4_TCP_TIMESTAMPS, | ||
123 | .procname = "tcp_timestamps", | ||
124 | .data = &sysctl_tcp_timestamps, | ||
125 | .maxlen = sizeof(int), | ||
126 | .mode = 0644, | ||
127 | .proc_handler = &proc_dointvec | ||
128 | }, | ||
129 | { | ||
130 | .ctl_name = NET_IPV4_TCP_WINDOW_SCALING, | ||
131 | .procname = "tcp_window_scaling", | ||
132 | .data = &sysctl_tcp_window_scaling, | ||
133 | .maxlen = sizeof(int), | ||
134 | .mode = 0644, | ||
135 | .proc_handler = &proc_dointvec | ||
136 | }, | ||
137 | { | ||
138 | .ctl_name = NET_IPV4_TCP_SACK, | ||
139 | .procname = "tcp_sack", | ||
140 | .data = &sysctl_tcp_sack, | ||
141 | .maxlen = sizeof(int), | ||
142 | .mode = 0644, | ||
143 | .proc_handler = &proc_dointvec | ||
144 | }, | ||
145 | { | ||
146 | .ctl_name = NET_IPV4_TCP_RETRANS_COLLAPSE, | ||
147 | .procname = "tcp_retrans_collapse", | ||
148 | .data = &sysctl_tcp_retrans_collapse, | ||
149 | .maxlen = sizeof(int), | ||
150 | .mode = 0644, | ||
151 | .proc_handler = &proc_dointvec | ||
152 | }, | ||
153 | { | ||
154 | .ctl_name = NET_IPV4_FORWARD, | ||
155 | .procname = "ip_forward", | ||
156 | .data = &ipv4_devconf.forwarding, | ||
157 | .maxlen = sizeof(int), | ||
158 | .mode = 0644, | ||
159 | .proc_handler = &ipv4_sysctl_forward, | ||
160 | .strategy = &ipv4_sysctl_forward_strategy | ||
161 | }, | ||
162 | { | ||
163 | .ctl_name = NET_IPV4_DEFAULT_TTL, | ||
164 | .procname = "ip_default_ttl", | ||
165 | .data = &sysctl_ip_default_ttl, | ||
166 | .maxlen = sizeof(int), | ||
167 | .mode = 0644, | ||
168 | .proc_handler = &ipv4_doint_and_flush, | ||
169 | .strategy = &ipv4_doint_and_flush_strategy, | ||
170 | }, | ||
171 | { | ||
172 | .ctl_name = NET_IPV4_AUTOCONFIG, | ||
173 | .procname = "ip_autoconfig", | ||
174 | .data = &ipv4_config.autoconfig, | ||
175 | .maxlen = sizeof(int), | ||
176 | .mode = 0644, | ||
177 | .proc_handler = &proc_dointvec | ||
178 | }, | ||
179 | { | ||
180 | .ctl_name = NET_IPV4_NO_PMTU_DISC, | ||
181 | .procname = "ip_no_pmtu_disc", | ||
182 | .data = &ipv4_config.no_pmtu_disc, | ||
183 | .maxlen = sizeof(int), | ||
184 | .mode = 0644, | ||
185 | .proc_handler = &proc_dointvec | ||
186 | }, | ||
187 | { | ||
188 | .ctl_name = NET_IPV4_NONLOCAL_BIND, | ||
189 | .procname = "ip_nonlocal_bind", | ||
190 | .data = &sysctl_ip_nonlocal_bind, | ||
191 | .maxlen = sizeof(int), | ||
192 | .mode = 0644, | ||
193 | .proc_handler = &proc_dointvec | ||
194 | }, | ||
195 | { | ||
196 | .ctl_name = NET_IPV4_TCP_SYN_RETRIES, | ||
197 | .procname = "tcp_syn_retries", | ||
198 | .data = &sysctl_tcp_syn_retries, | ||
199 | .maxlen = sizeof(int), | ||
200 | .mode = 0644, | ||
201 | .proc_handler = &proc_dointvec | ||
202 | }, | ||
203 | { | ||
204 | .ctl_name = NET_TCP_SYNACK_RETRIES, | ||
205 | .procname = "tcp_synack_retries", | ||
206 | .data = &sysctl_tcp_synack_retries, | ||
207 | .maxlen = sizeof(int), | ||
208 | .mode = 0644, | ||
209 | .proc_handler = &proc_dointvec | ||
210 | }, | ||
211 | { | ||
212 | .ctl_name = NET_TCP_MAX_ORPHANS, | ||
213 | .procname = "tcp_max_orphans", | ||
214 | .data = &sysctl_tcp_max_orphans, | ||
215 | .maxlen = sizeof(int), | ||
216 | .mode = 0644, | ||
217 | .proc_handler = &proc_dointvec | ||
218 | }, | ||
219 | { | ||
220 | .ctl_name = NET_TCP_MAX_TW_BUCKETS, | ||
221 | .procname = "tcp_max_tw_buckets", | ||
222 | .data = &sysctl_tcp_max_tw_buckets, | ||
223 | .maxlen = sizeof(int), | ||
224 | .mode = 0644, | ||
225 | .proc_handler = &proc_dointvec | ||
226 | }, | ||
227 | { | ||
228 | .ctl_name = NET_IPV4_IPFRAG_HIGH_THRESH, | ||
229 | .procname = "ipfrag_high_thresh", | ||
230 | .data = &sysctl_ipfrag_high_thresh, | ||
231 | .maxlen = sizeof(int), | ||
232 | .mode = 0644, | ||
233 | .proc_handler = &proc_dointvec | ||
234 | }, | ||
235 | { | ||
236 | .ctl_name = NET_IPV4_IPFRAG_LOW_THRESH, | ||
237 | .procname = "ipfrag_low_thresh", | ||
238 | .data = &sysctl_ipfrag_low_thresh, | ||
239 | .maxlen = sizeof(int), | ||
240 | .mode = 0644, | ||
241 | .proc_handler = &proc_dointvec | ||
242 | }, | ||
243 | { | ||
244 | .ctl_name = NET_IPV4_DYNADDR, | ||
245 | .procname = "ip_dynaddr", | ||
246 | .data = &sysctl_ip_dynaddr, | ||
247 | .maxlen = sizeof(int), | ||
248 | .mode = 0644, | ||
249 | .proc_handler = &proc_dointvec | ||
250 | }, | ||
251 | { | ||
252 | .ctl_name = NET_IPV4_IPFRAG_TIME, | ||
253 | .procname = "ipfrag_time", | ||
254 | .data = &sysctl_ipfrag_time, | ||
255 | .maxlen = sizeof(int), | ||
256 | .mode = 0644, | ||
257 | .proc_handler = &proc_dointvec_jiffies, | ||
258 | .strategy = &sysctl_jiffies | ||
259 | }, | ||
260 | { | ||
261 | .ctl_name = NET_IPV4_TCP_KEEPALIVE_TIME, | ||
262 | .procname = "tcp_keepalive_time", | ||
263 | .data = &sysctl_tcp_keepalive_time, | ||
264 | .maxlen = sizeof(int), | ||
265 | .mode = 0644, | ||
266 | .proc_handler = &proc_dointvec_jiffies, | ||
267 | .strategy = &sysctl_jiffies | ||
268 | }, | ||
269 | { | ||
270 | .ctl_name = NET_IPV4_TCP_KEEPALIVE_PROBES, | ||
271 | .procname = "tcp_keepalive_probes", | ||
272 | .data = &sysctl_tcp_keepalive_probes, | ||
273 | .maxlen = sizeof(int), | ||
274 | .mode = 0644, | ||
275 | .proc_handler = &proc_dointvec | ||
276 | }, | ||
277 | { | ||
278 | .ctl_name = NET_IPV4_TCP_KEEPALIVE_INTVL, | ||
279 | .procname = "tcp_keepalive_intvl", | ||
280 | .data = &sysctl_tcp_keepalive_intvl, | ||
281 | .maxlen = sizeof(int), | ||
282 | .mode = 0644, | ||
283 | .proc_handler = &proc_dointvec_jiffies, | ||
284 | .strategy = &sysctl_jiffies | ||
285 | }, | ||
286 | { | ||
287 | .ctl_name = NET_IPV4_TCP_RETRIES1, | ||
288 | .procname = "tcp_retries1", | ||
289 | .data = &sysctl_tcp_retries1, | ||
290 | .maxlen = sizeof(int), | ||
291 | .mode = 0644, | ||
292 | .proc_handler = &proc_dointvec_minmax, | ||
293 | .strategy = &sysctl_intvec, | ||
294 | .extra2 = &tcp_retr1_max | ||
295 | }, | ||
296 | { | ||
297 | .ctl_name = NET_IPV4_TCP_RETRIES2, | ||
298 | .procname = "tcp_retries2", | ||
299 | .data = &sysctl_tcp_retries2, | ||
300 | .maxlen = sizeof(int), | ||
301 | .mode = 0644, | ||
302 | .proc_handler = &proc_dointvec | ||
303 | }, | ||
304 | { | ||
305 | .ctl_name = NET_IPV4_TCP_FIN_TIMEOUT, | ||
306 | .procname = "tcp_fin_timeout", | ||
307 | .data = &sysctl_tcp_fin_timeout, | ||
308 | .maxlen = sizeof(int), | ||
309 | .mode = 0644, | ||
310 | .proc_handler = &proc_dointvec_jiffies, | ||
311 | .strategy = &sysctl_jiffies | ||
312 | }, | ||
313 | #ifdef CONFIG_SYN_COOKIES | ||
314 | { | ||
315 | .ctl_name = NET_TCP_SYNCOOKIES, | ||
316 | .procname = "tcp_syncookies", | ||
317 | .data = &sysctl_tcp_syncookies, | ||
318 | .maxlen = sizeof(int), | ||
319 | .mode = 0644, | ||
320 | .proc_handler = &proc_dointvec | ||
321 | }, | ||
322 | #endif | ||
323 | { | ||
324 | .ctl_name = NET_TCP_TW_RECYCLE, | ||
325 | .procname = "tcp_tw_recycle", | ||
326 | .data = &sysctl_tcp_tw_recycle, | ||
327 | .maxlen = sizeof(int), | ||
328 | .mode = 0644, | ||
329 | .proc_handler = &proc_dointvec | ||
330 | }, | ||
331 | { | ||
332 | .ctl_name = NET_TCP_ABORT_ON_OVERFLOW, | ||
333 | .procname = "tcp_abort_on_overflow", | ||
334 | .data = &sysctl_tcp_abort_on_overflow, | ||
335 | .maxlen = sizeof(int), | ||
336 | .mode = 0644, | ||
337 | .proc_handler = &proc_dointvec | ||
338 | }, | ||
339 | { | ||
340 | .ctl_name = NET_TCP_STDURG, | ||
341 | .procname = "tcp_stdurg", | ||
342 | .data = &sysctl_tcp_stdurg, | ||
343 | .maxlen = sizeof(int), | ||
344 | .mode = 0644, | ||
345 | .proc_handler = &proc_dointvec | ||
346 | }, | ||
347 | { | ||
348 | .ctl_name = NET_TCP_RFC1337, | ||
349 | .procname = "tcp_rfc1337", | ||
350 | .data = &sysctl_tcp_rfc1337, | ||
351 | .maxlen = sizeof(int), | ||
352 | .mode = 0644, | ||
353 | .proc_handler = &proc_dointvec | ||
354 | }, | ||
355 | { | ||
356 | .ctl_name = NET_TCP_MAX_SYN_BACKLOG, | ||
357 | .procname = "tcp_max_syn_backlog", | ||
358 | .data = &sysctl_max_syn_backlog, | ||
359 | .maxlen = sizeof(int), | ||
360 | .mode = 0644, | ||
361 | .proc_handler = &proc_dointvec | ||
362 | }, | ||
363 | { | ||
364 | .ctl_name = NET_IPV4_LOCAL_PORT_RANGE, | ||
365 | .procname = "ip_local_port_range", | ||
366 | .data = &sysctl_local_port_range, | ||
367 | .maxlen = sizeof(sysctl_local_port_range), | ||
368 | .mode = 0644, | ||
369 | .proc_handler = &proc_dointvec_minmax, | ||
370 | .strategy = &sysctl_intvec, | ||
371 | .extra1 = ip_local_port_range_min, | ||
372 | .extra2 = ip_local_port_range_max | ||
373 | }, | ||
374 | { | ||
375 | .ctl_name = NET_IPV4_ICMP_ECHO_IGNORE_ALL, | ||
376 | .procname = "icmp_echo_ignore_all", | ||
377 | .data = &sysctl_icmp_echo_ignore_all, | ||
378 | .maxlen = sizeof(int), | ||
379 | .mode = 0644, | ||
380 | .proc_handler = &proc_dointvec | ||
381 | }, | ||
382 | { | ||
383 | .ctl_name = NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS, | ||
384 | .procname = "icmp_echo_ignore_broadcasts", | ||
385 | .data = &sysctl_icmp_echo_ignore_broadcasts, | ||
386 | .maxlen = sizeof(int), | ||
387 | .mode = 0644, | ||
388 | .proc_handler = &proc_dointvec | ||
389 | }, | ||
390 | { | ||
391 | .ctl_name = NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES, | ||
392 | .procname = "icmp_ignore_bogus_error_responses", | ||
393 | .data = &sysctl_icmp_ignore_bogus_error_responses, | ||
394 | .maxlen = sizeof(int), | ||
395 | .mode = 0644, | ||
396 | .proc_handler = &proc_dointvec | ||
397 | }, | ||
398 | { | ||
399 | .ctl_name = NET_IPV4_ROUTE, | ||
400 | .procname = "route", | ||
401 | .maxlen = 0, | ||
402 | .mode = 0555, | ||
403 | .child = ipv4_route_table | ||
404 | }, | ||
405 | #ifdef CONFIG_IP_MULTICAST | ||
406 | { | ||
407 | .ctl_name = NET_IPV4_IGMP_MAX_MEMBERSHIPS, | ||
408 | .procname = "igmp_max_memberships", | ||
409 | .data = &sysctl_igmp_max_memberships, | ||
410 | .maxlen = sizeof(int), | ||
411 | .mode = 0644, | ||
412 | .proc_handler = &proc_dointvec | ||
413 | }, | ||
414 | |||
415 | #endif | ||
416 | { | ||
417 | .ctl_name = NET_IPV4_IGMP_MAX_MSF, | ||
418 | .procname = "igmp_max_msf", | ||
419 | .data = &sysctl_igmp_max_msf, | ||
420 | .maxlen = sizeof(int), | ||
421 | .mode = 0644, | ||
422 | .proc_handler = &proc_dointvec | ||
423 | }, | ||
424 | { | ||
425 | .ctl_name = NET_IPV4_INET_PEER_THRESHOLD, | ||
426 | .procname = "inet_peer_threshold", | ||
427 | .data = &inet_peer_threshold, | ||
428 | .maxlen = sizeof(int), | ||
429 | .mode = 0644, | ||
430 | .proc_handler = &proc_dointvec | ||
431 | }, | ||
432 | { | ||
433 | .ctl_name = NET_IPV4_INET_PEER_MINTTL, | ||
434 | .procname = "inet_peer_minttl", | ||
435 | .data = &inet_peer_minttl, | ||
436 | .maxlen = sizeof(int), | ||
437 | .mode = 0644, | ||
438 | .proc_handler = &proc_dointvec_jiffies, | ||
439 | .strategy = &sysctl_jiffies | ||
440 | }, | ||
441 | { | ||
442 | .ctl_name = NET_IPV4_INET_PEER_MAXTTL, | ||
443 | .procname = "inet_peer_maxttl", | ||
444 | .data = &inet_peer_maxttl, | ||
445 | .maxlen = sizeof(int), | ||
446 | .mode = 0644, | ||
447 | .proc_handler = &proc_dointvec_jiffies, | ||
448 | .strategy = &sysctl_jiffies | ||
449 | }, | ||
450 | { | ||
451 | .ctl_name = NET_IPV4_INET_PEER_GC_MINTIME, | ||
452 | .procname = "inet_peer_gc_mintime", | ||
453 | .data = &inet_peer_gc_mintime, | ||
454 | .maxlen = sizeof(int), | ||
455 | .mode = 0644, | ||
456 | .proc_handler = &proc_dointvec_jiffies, | ||
457 | .strategy = &sysctl_jiffies | ||
458 | }, | ||
459 | { | ||
460 | .ctl_name = NET_IPV4_INET_PEER_GC_MAXTIME, | ||
461 | .procname = "inet_peer_gc_maxtime", | ||
462 | .data = &inet_peer_gc_maxtime, | ||
463 | .maxlen = sizeof(int), | ||
464 | .mode = 0644, | ||
465 | .proc_handler = &proc_dointvec_jiffies, | ||
466 | .strategy = &sysctl_jiffies | ||
467 | }, | ||
468 | { | ||
469 | .ctl_name = NET_TCP_ORPHAN_RETRIES, | ||
470 | .procname = "tcp_orphan_retries", | ||
471 | .data = &sysctl_tcp_orphan_retries, | ||
472 | .maxlen = sizeof(int), | ||
473 | .mode = 0644, | ||
474 | .proc_handler = &proc_dointvec | ||
475 | }, | ||
476 | { | ||
477 | .ctl_name = NET_TCP_FACK, | ||
478 | .procname = "tcp_fack", | ||
479 | .data = &sysctl_tcp_fack, | ||
480 | .maxlen = sizeof(int), | ||
481 | .mode = 0644, | ||
482 | .proc_handler = &proc_dointvec | ||
483 | }, | ||
484 | { | ||
485 | .ctl_name = NET_TCP_REORDERING, | ||
486 | .procname = "tcp_reordering", | ||
487 | .data = &sysctl_tcp_reordering, | ||
488 | .maxlen = sizeof(int), | ||
489 | .mode = 0644, | ||
490 | .proc_handler = &proc_dointvec | ||
491 | }, | ||
492 | { | ||
493 | .ctl_name = NET_TCP_ECN, | ||
494 | .procname = "tcp_ecn", | ||
495 | .data = &sysctl_tcp_ecn, | ||
496 | .maxlen = sizeof(int), | ||
497 | .mode = 0644, | ||
498 | .proc_handler = &proc_dointvec | ||
499 | }, | ||
500 | { | ||
501 | .ctl_name = NET_TCP_DSACK, | ||
502 | .procname = "tcp_dsack", | ||
503 | .data = &sysctl_tcp_dsack, | ||
504 | .maxlen = sizeof(int), | ||
505 | .mode = 0644, | ||
506 | .proc_handler = &proc_dointvec | ||
507 | }, | ||
508 | { | ||
509 | .ctl_name = NET_TCP_MEM, | ||
510 | .procname = "tcp_mem", | ||
511 | .data = &sysctl_tcp_mem, | ||
512 | .maxlen = sizeof(sysctl_tcp_mem), | ||
513 | .mode = 0644, | ||
514 | .proc_handler = &proc_dointvec | ||
515 | }, | ||
516 | { | ||
517 | .ctl_name = NET_TCP_WMEM, | ||
518 | .procname = "tcp_wmem", | ||
519 | .data = &sysctl_tcp_wmem, | ||
520 | .maxlen = sizeof(sysctl_tcp_wmem), | ||
521 | .mode = 0644, | ||
522 | .proc_handler = &proc_dointvec | ||
523 | }, | ||
524 | { | ||
525 | .ctl_name = NET_TCP_RMEM, | ||
526 | .procname = "tcp_rmem", | ||
527 | .data = &sysctl_tcp_rmem, | ||
528 | .maxlen = sizeof(sysctl_tcp_rmem), | ||
529 | .mode = 0644, | ||
530 | .proc_handler = &proc_dointvec | ||
531 | }, | ||
532 | { | ||
533 | .ctl_name = NET_TCP_APP_WIN, | ||
534 | .procname = "tcp_app_win", | ||
535 | .data = &sysctl_tcp_app_win, | ||
536 | .maxlen = sizeof(int), | ||
537 | .mode = 0644, | ||
538 | .proc_handler = &proc_dointvec | ||
539 | }, | ||
540 | { | ||
541 | .ctl_name = NET_TCP_ADV_WIN_SCALE, | ||
542 | .procname = "tcp_adv_win_scale", | ||
543 | .data = &sysctl_tcp_adv_win_scale, | ||
544 | .maxlen = sizeof(int), | ||
545 | .mode = 0644, | ||
546 | .proc_handler = &proc_dointvec | ||
547 | }, | ||
548 | { | ||
549 | .ctl_name = NET_IPV4_ICMP_RATELIMIT, | ||
550 | .procname = "icmp_ratelimit", | ||
551 | .data = &sysctl_icmp_ratelimit, | ||
552 | .maxlen = sizeof(int), | ||
553 | .mode = 0644, | ||
554 | .proc_handler = &proc_dointvec | ||
555 | }, | ||
556 | { | ||
557 | .ctl_name = NET_IPV4_ICMP_RATEMASK, | ||
558 | .procname = "icmp_ratemask", | ||
559 | .data = &sysctl_icmp_ratemask, | ||
560 | .maxlen = sizeof(int), | ||
561 | .mode = 0644, | ||
562 | .proc_handler = &proc_dointvec | ||
563 | }, | ||
564 | { | ||
565 | .ctl_name = NET_TCP_TW_REUSE, | ||
566 | .procname = "tcp_tw_reuse", | ||
567 | .data = &sysctl_tcp_tw_reuse, | ||
568 | .maxlen = sizeof(int), | ||
569 | .mode = 0644, | ||
570 | .proc_handler = &proc_dointvec | ||
571 | }, | ||
572 | { | ||
573 | .ctl_name = NET_TCP_FRTO, | ||
574 | .procname = "tcp_frto", | ||
575 | .data = &sysctl_tcp_frto, | ||
576 | .maxlen = sizeof(int), | ||
577 | .mode = 0644, | ||
578 | .proc_handler = &proc_dointvec | ||
579 | }, | ||
580 | { | ||
581 | .ctl_name = NET_TCP_LOW_LATENCY, | ||
582 | .procname = "tcp_low_latency", | ||
583 | .data = &sysctl_tcp_low_latency, | ||
584 | .maxlen = sizeof(int), | ||
585 | .mode = 0644, | ||
586 | .proc_handler = &proc_dointvec | ||
587 | }, | ||
588 | { | ||
589 | .ctl_name = NET_IPV4_IPFRAG_SECRET_INTERVAL, | ||
590 | .procname = "ipfrag_secret_interval", | ||
591 | .data = &sysctl_ipfrag_secret_interval, | ||
592 | .maxlen = sizeof(int), | ||
593 | .mode = 0644, | ||
594 | .proc_handler = &proc_dointvec_jiffies, | ||
595 | .strategy = &sysctl_jiffies | ||
596 | }, | ||
597 | { | ||
598 | .ctl_name = NET_TCP_NO_METRICS_SAVE, | ||
599 | .procname = "tcp_no_metrics_save", | ||
600 | .data = &sysctl_tcp_nometrics_save, | ||
601 | .maxlen = sizeof(int), | ||
602 | .mode = 0644, | ||
603 | .proc_handler = &proc_dointvec, | ||
604 | }, | ||
605 | { | ||
606 | .ctl_name = NET_TCP_WESTWOOD, | ||
607 | .procname = "tcp_westwood", | ||
608 | .data = &sysctl_tcp_westwood, | ||
609 | .maxlen = sizeof(int), | ||
610 | .mode = 0644, | ||
611 | .proc_handler = &proc_dointvec, | ||
612 | }, | ||
613 | { | ||
614 | .ctl_name = NET_TCP_VEGAS, | ||
615 | .procname = "tcp_vegas_cong_avoid", | ||
616 | .data = &sysctl_tcp_vegas_cong_avoid, | ||
617 | .maxlen = sizeof(int), | ||
618 | .mode = 0644, | ||
619 | .proc_handler = &proc_dointvec, | ||
620 | }, | ||
621 | { | ||
622 | .ctl_name = NET_TCP_VEGAS_ALPHA, | ||
623 | .procname = "tcp_vegas_alpha", | ||
624 | .data = &sysctl_tcp_vegas_alpha, | ||
625 | .maxlen = sizeof(int), | ||
626 | .mode = 0644, | ||
627 | .proc_handler = &proc_dointvec, | ||
628 | }, | ||
629 | { | ||
630 | .ctl_name = NET_TCP_VEGAS_BETA, | ||
631 | .procname = "tcp_vegas_beta", | ||
632 | .data = &sysctl_tcp_vegas_beta, | ||
633 | .maxlen = sizeof(int), | ||
634 | .mode = 0644, | ||
635 | .proc_handler = &proc_dointvec, | ||
636 | }, | ||
637 | { | ||
638 | .ctl_name = NET_TCP_VEGAS_GAMMA, | ||
639 | .procname = "tcp_vegas_gamma", | ||
640 | .data = &sysctl_tcp_vegas_gamma, | ||
641 | .maxlen = sizeof(int), | ||
642 | .mode = 0644, | ||
643 | .proc_handler = &proc_dointvec, | ||
644 | }, | ||
645 | { | ||
646 | .ctl_name = NET_TCP_BIC, | ||
647 | .procname = "tcp_bic", | ||
648 | .data = &sysctl_tcp_bic, | ||
649 | .maxlen = sizeof(int), | ||
650 | .mode = 0644, | ||
651 | .proc_handler = &proc_dointvec, | ||
652 | }, | ||
653 | { | ||
654 | .ctl_name = NET_TCP_BIC_FAST_CONVERGENCE, | ||
655 | .procname = "tcp_bic_fast_convergence", | ||
656 | .data = &sysctl_tcp_bic_fast_convergence, | ||
657 | .maxlen = sizeof(int), | ||
658 | .mode = 0644, | ||
659 | .proc_handler = &proc_dointvec, | ||
660 | }, | ||
661 | { | ||
662 | .ctl_name = NET_TCP_BIC_LOW_WINDOW, | ||
663 | .procname = "tcp_bic_low_window", | ||
664 | .data = &sysctl_tcp_bic_low_window, | ||
665 | .maxlen = sizeof(int), | ||
666 | .mode = 0644, | ||
667 | .proc_handler = &proc_dointvec, | ||
668 | }, | ||
669 | { | ||
670 | .ctl_name = NET_TCP_MODERATE_RCVBUF, | ||
671 | .procname = "tcp_moderate_rcvbuf", | ||
672 | .data = &sysctl_tcp_moderate_rcvbuf, | ||
673 | .maxlen = sizeof(int), | ||
674 | .mode = 0644, | ||
675 | .proc_handler = &proc_dointvec, | ||
676 | }, | ||
677 | { | ||
678 | .ctl_name = NET_TCP_TSO_WIN_DIVISOR, | ||
679 | .procname = "tcp_tso_win_divisor", | ||
680 | .data = &sysctl_tcp_tso_win_divisor, | ||
681 | .maxlen = sizeof(int), | ||
682 | .mode = 0644, | ||
683 | .proc_handler = &proc_dointvec, | ||
684 | }, | ||
685 | { | ||
686 | .ctl_name = NET_TCP_BIC_BETA, | ||
687 | .procname = "tcp_bic_beta", | ||
688 | .data = &sysctl_tcp_bic_beta, | ||
689 | .maxlen = sizeof(int), | ||
690 | .mode = 0644, | ||
691 | .proc_handler = &proc_dointvec, | ||
692 | }, | ||
693 | { .ctl_name = 0 } | ||
694 | }; | ||
695 | |||
696 | #endif /* CONFIG_SYSCTL */ | ||
697 | |||
698 | EXPORT_SYMBOL(ipv4_config); | ||