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