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