Blame view
net/ipv4/sysctl_net_ipv4.c
19.8 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 |
/* * sysctl_net_ipv4.c: sysctl interface to net IPV4 subsystem. * |
1da177e4c Linux-2.6.12-rc2 |
4 5 6 7 8 9 10 |
* Begun April 1, 1996, Mike Shaver. * Added /proc/sys/net/ipv4 directory entry (empty =) ). [MS] */ #include <linux/mm.h> #include <linux/module.h> #include <linux/sysctl.h> |
20380731b [NET]: Fix sparse... |
11 |
#include <linux/igmp.h> |
14c850212 [INET_SOCK]: Move... |
12 |
#include <linux/inetdevice.h> |
227b60f51 [INET]: local por... |
13 |
#include <linux/seqlock.h> |
3e37c3f99 [IPV4]: Use ctl p... |
14 |
#include <linux/init.h> |
5a0e3ad6a include cleanup: ... |
15 |
#include <linux/slab.h> |
c319b4d76 net: ipv4: add IP... |
16 |
#include <linux/nsproxy.h> |
3dc43e3e4 per-netns ipv4 sy... |
17 |
#include <linux/swap.h> |
1da177e4c Linux-2.6.12-rc2 |
18 |
#include <net/snmp.h> |
20380731b [NET]: Fix sparse... |
19 |
#include <net/icmp.h> |
1da177e4c Linux-2.6.12-rc2 |
20 21 22 |
#include <net/ip.h> #include <net/route.h> #include <net/tcp.h> |
95766fff6 [UDP]: Add memory... |
23 |
#include <net/udp.h> |
446fda4f2 [NetLabel]: CIPSO... |
24 |
#include <net/cipso_ipv4.h> |
04128f233 [INET]: Collect c... |
25 |
#include <net/inet_frag.h> |
c319b4d76 net: ipv4: add IP... |
26 |
#include <net/ping.h> |
3aaabe234 tcp buffer limita... |
27 |
#include <net/tcp_memcontrol.h> |
1da177e4c Linux-2.6.12-rc2 |
28 |
|
89cee8b1c [IPV4]: Safer rea... |
29 |
static int zero; |
e905a9eda [NET] IPV4: Fix w... |
30 |
static int tcp_retr1_max = 255; |
1da177e4c Linux-2.6.12-rc2 |
31 32 |
static int ip_local_port_range_min[] = { 1, 1 }; static int ip_local_port_range_max[] = { 65535, 65535 }; |
0147fc058 tcp: restrict net... |
33 34 |
static int tcp_adv_win_scale_min = -31; static int tcp_adv_win_scale_max = 31; |
249fab773 net: add limits t... |
35 36 |
static int ip_ttl_min = 1; static int ip_ttl_max = 255; |
c319b4d76 net: ipv4: add IP... |
37 38 |
static int ip_ping_group_range_min[] = { 0, 0 }; static int ip_ping_group_range_max[] = { GID_T_MAX, GID_T_MAX }; |
1da177e4c Linux-2.6.12-rc2 |
39 |
|
227b60f51 [INET]: local por... |
40 41 42 |
/* Update system visible IP port range */ static void set_local_port_range(int range[2]) { |
3c689b732 inet: cleanup of ... |
43 44 45 46 |
write_seqlock(&sysctl_local_ports.lock); sysctl_local_ports.range[0] = range[0]; sysctl_local_ports.range[1] = range[1]; write_sequnlock(&sysctl_local_ports.lock); |
227b60f51 [INET]: local por... |
47 48 49 |
} /* Validate changes from /proc interface. */ |
8d65af789 sysctl: remove "s... |
50 |
static int ipv4_local_port_range(ctl_table *table, int write, |
227b60f51 [INET]: local por... |
51 52 53 54 |
void __user *buffer, size_t *lenp, loff_t *ppos) { int ret; |
3c689b732 inet: cleanup of ... |
55 |
int range[2]; |
227b60f51 [INET]: local por... |
56 57 58 59 60 61 62 |
ctl_table tmp = { .data = &range, .maxlen = sizeof(range), .mode = table->mode, .extra1 = &ip_local_port_range_min, .extra2 = &ip_local_port_range_max, }; |
3c689b732 inet: cleanup of ... |
63 |
inet_get_local_port_range(range, range + 1); |
8d65af789 sysctl: remove "s... |
64 |
ret = proc_dointvec_minmax(&tmp, write, buffer, lenp, ppos); |
227b60f51 [INET]: local por... |
65 66 |
if (write && ret == 0) { |
a25de534f [INET]: Justifica... |
67 |
if (range[1] < range[0]) |
227b60f51 [INET]: local por... |
68 69 70 71 72 73 74 |
ret = -EINVAL; else set_local_port_range(range); } return ret; } |
c319b4d76 net: ipv4: add IP... |
75 |
|
e6560d4df net: ping: remove... |
76 |
static void inet_get_ping_group_range_table(struct ctl_table *table, gid_t *low, gid_t *high) |
c319b4d76 net: ipv4: add IP... |
77 78 79 80 81 82 83 84 85 86 87 88 |
{ gid_t *data = table->data; unsigned seq; do { seq = read_seqbegin(&sysctl_local_ports.lock); *low = data[0]; *high = data[1]; } while (read_seqretry(&sysctl_local_ports.lock, seq)); } /* Update system visible IP port range */ |
e6560d4df net: ping: remove... |
89 |
static void set_ping_group_range(struct ctl_table *table, gid_t range[2]) |
c319b4d76 net: ipv4: add IP... |
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
{ gid_t *data = table->data; write_seqlock(&sysctl_local_ports.lock); data[0] = range[0]; data[1] = range[1]; write_sequnlock(&sysctl_local_ports.lock); } /* Validate changes from /proc interface. */ static int ipv4_ping_group_range(ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { int ret; gid_t range[2]; ctl_table tmp = { .data = &range, .maxlen = sizeof(range), .mode = table->mode, .extra1 = &ip_ping_group_range_min, .extra2 = &ip_ping_group_range_max, }; inet_get_ping_group_range_table(table, range, range + 1); ret = proc_dointvec_minmax(&tmp, write, buffer, lenp, ppos); if (write && ret == 0) set_ping_group_range(table, range); return ret; } |
8d65af789 sysctl: remove "s... |
121 |
static int proc_tcp_congestion_control(ctl_table *ctl, int write, |
317a76f9a [TCP]: Add plugga... |
122 123 124 125 126 127 128 129 130 131 |
void __user *buffer, size_t *lenp, loff_t *ppos) { char val[TCP_CA_NAME_MAX]; ctl_table tbl = { .data = val, .maxlen = TCP_CA_NAME_MAX, }; int ret; tcp_get_default_congestion_control(val); |
8d65af789 sysctl: remove "s... |
132 |
ret = proc_dostring(&tbl, write, buffer, lenp, ppos); |
317a76f9a [TCP]: Add plugga... |
133 134 135 136 |
if (write && ret == 0) ret = tcp_set_default_congestion_control(val); return ret; } |
3ff825b28 [TCP]: Add tcp_av... |
137 |
static int proc_tcp_available_congestion_control(ctl_table *ctl, |
8d65af789 sysctl: remove "s... |
138 |
int write, |
3ff825b28 [TCP]: Add tcp_av... |
139 140 141 142 143 144 145 146 147 148 |
void __user *buffer, size_t *lenp, loff_t *ppos) { ctl_table tbl = { .maxlen = TCP_CA_BUF_MAX, }; int ret; tbl.data = kmalloc(tbl.maxlen, GFP_USER); if (!tbl.data) return -ENOMEM; tcp_get_available_congestion_control(tbl.data, TCP_CA_BUF_MAX); |
8d65af789 sysctl: remove "s... |
149 |
ret = proc_dostring(&tbl, write, buffer, lenp, ppos); |
3ff825b28 [TCP]: Add tcp_av... |
150 151 152 |
kfree(tbl.data); return ret; } |
ce7bc3bf1 [TCP]: Restrict c... |
153 |
static int proc_allowed_congestion_control(ctl_table *ctl, |
8d65af789 sysctl: remove "s... |
154 |
int write, |
ce7bc3bf1 [TCP]: Restrict c... |
155 156 157 158 159 160 161 162 163 164 165 |
void __user *buffer, size_t *lenp, loff_t *ppos) { ctl_table tbl = { .maxlen = TCP_CA_BUF_MAX }; int ret; tbl.data = kmalloc(tbl.maxlen, GFP_USER); if (!tbl.data) return -ENOMEM; tcp_get_allowed_congestion_control(tbl.data, tbl.maxlen); |
8d65af789 sysctl: remove "s... |
166 |
ret = proc_dostring(&tbl, write, buffer, lenp, ppos); |
ce7bc3bf1 [TCP]: Restrict c... |
167 168 169 170 171 |
if (write && ret == 0) ret = tcp_set_allowed_congestion_control(tbl.data); kfree(tbl.data); return ret; } |
3dc43e3e4 per-netns ipv4 sy... |
172 173 174 175 176 177 178 |
static int ipv4_tcp_mem(ctl_table *ctl, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { int ret; unsigned long vec[3]; struct net *net = current->nsproxy->net_ns; |
3aaabe234 tcp buffer limita... |
179 180 181 |
#ifdef CONFIG_CGROUP_MEM_RES_CTLR_KMEM struct mem_cgroup *memcg; #endif |
3dc43e3e4 per-netns ipv4 sy... |
182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
ctl_table tmp = { .data = &vec, .maxlen = sizeof(vec), .mode = ctl->mode, }; if (!write) { ctl->data = &net->ipv4.sysctl_tcp_mem; return proc_doulongvec_minmax(ctl, write, buffer, lenp, ppos); } ret = proc_doulongvec_minmax(&tmp, write, buffer, lenp, ppos); if (ret) return ret; |
3aaabe234 tcp buffer limita... |
197 198 199 200 201 202 203 204 205 |
#ifdef CONFIG_CGROUP_MEM_RES_CTLR_KMEM rcu_read_lock(); memcg = mem_cgroup_from_task(current); tcp_prot_mem(memcg, vec[0], 0); tcp_prot_mem(memcg, vec[1], 1); tcp_prot_mem(memcg, vec[2], 2); rcu_read_unlock(); #endif |
3dc43e3e4 per-netns ipv4 sy... |
206 207 208 209 210 211 |
net->ipv4.sysctl_tcp_mem[0] = vec[0]; net->ipv4.sysctl_tcp_mem[1] = vec[1]; net->ipv4.sysctl_tcp_mem[2] = vec[2]; return 0; } |
3e37c3f99 [IPV4]: Use ctl p... |
212 |
static struct ctl_table ipv4_table[] = { |
e905a9eda [NET] IPV4: Fix w... |
213 |
{ |
1da177e4c Linux-2.6.12-rc2 |
214 215 216 217 |
.procname = "tcp_timestamps", .data = &sysctl_tcp_timestamps, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
218 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
219 |
}, |
e905a9eda [NET] IPV4: Fix w... |
220 |
{ |
1da177e4c Linux-2.6.12-rc2 |
221 222 223 224 |
.procname = "tcp_window_scaling", .data = &sysctl_tcp_window_scaling, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
225 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
226 |
}, |
e905a9eda [NET] IPV4: Fix w... |
227 |
{ |
1da177e4c Linux-2.6.12-rc2 |
228 229 230 231 |
.procname = "tcp_sack", .data = &sysctl_tcp_sack, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
232 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
233 |
}, |
e905a9eda [NET] IPV4: Fix w... |
234 |
{ |
1da177e4c Linux-2.6.12-rc2 |
235 236 237 238 |
.procname = "tcp_retrans_collapse", .data = &sysctl_tcp_retrans_collapse, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
239 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
240 |
}, |
e905a9eda [NET] IPV4: Fix w... |
241 |
{ |
1da177e4c Linux-2.6.12-rc2 |
242 |
.procname = "ip_default_ttl", |
e905a9eda [NET] IPV4: Fix w... |
243 |
.data = &sysctl_ip_default_ttl, |
1da177e4c Linux-2.6.12-rc2 |
244 245 |
.maxlen = sizeof(int), .mode = 0644, |
249fab773 net: add limits t... |
246 247 248 |
.proc_handler = proc_dointvec_minmax, .extra1 = &ip_ttl_min, .extra2 = &ip_ttl_max, |
1da177e4c Linux-2.6.12-rc2 |
249 |
}, |
e905a9eda [NET] IPV4: Fix w... |
250 |
{ |
1da177e4c Linux-2.6.12-rc2 |
251 252 253 254 |
.procname = "ip_no_pmtu_disc", .data = &ipv4_config.no_pmtu_disc, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
255 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
256 257 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
258 259 260 261 |
.procname = "ip_nonlocal_bind", .data = &sysctl_ip_nonlocal_bind, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
262 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
263 264 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
265 266 267 268 |
.procname = "tcp_syn_retries", .data = &sysctl_tcp_syn_retries, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
269 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
270 271 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
272 273 274 275 |
.procname = "tcp_synack_retries", .data = &sysctl_tcp_synack_retries, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
276 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
277 278 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
279 280 281 282 |
.procname = "tcp_max_orphans", .data = &sysctl_tcp_max_orphans, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
283 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
284 285 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
286 |
.procname = "tcp_max_tw_buckets", |
295ff7edb [TIMEWAIT]: Intro... |
287 |
.data = &tcp_death_row.sysctl_max_tw_buckets, |
1da177e4c Linux-2.6.12-rc2 |
288 289 |
.maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
290 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
291 292 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
293 294 295 296 |
.procname = "ip_dynaddr", .data = &sysctl_ip_dynaddr, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
297 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
298 299 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
300 301 302 303 |
.procname = "tcp_keepalive_time", .data = &sysctl_tcp_keepalive_time, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
304 |
.proc_handler = proc_dointvec_jiffies, |
1da177e4c Linux-2.6.12-rc2 |
305 306 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
307 308 309 310 |
.procname = "tcp_keepalive_probes", .data = &sysctl_tcp_keepalive_probes, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
311 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
312 313 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
314 315 316 317 |
.procname = "tcp_keepalive_intvl", .data = &sysctl_tcp_keepalive_intvl, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
318 |
.proc_handler = proc_dointvec_jiffies, |
1da177e4c Linux-2.6.12-rc2 |
319 320 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
321 322 323 324 |
.procname = "tcp_retries1", .data = &sysctl_tcp_retries1, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
325 |
.proc_handler = proc_dointvec_minmax, |
1da177e4c Linux-2.6.12-rc2 |
326 327 328 |
.extra2 = &tcp_retr1_max }, { |
1da177e4c Linux-2.6.12-rc2 |
329 330 331 332 |
.procname = "tcp_retries2", .data = &sysctl_tcp_retries2, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
333 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
334 335 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
336 337 338 339 |
.procname = "tcp_fin_timeout", .data = &sysctl_tcp_fin_timeout, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
340 |
.proc_handler = proc_dointvec_jiffies, |
1da177e4c Linux-2.6.12-rc2 |
341 342 343 |
}, #ifdef CONFIG_SYN_COOKIES { |
1da177e4c Linux-2.6.12-rc2 |
344 345 346 347 |
.procname = "tcp_syncookies", .data = &sysctl_tcp_syncookies, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
348 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
349 350 351 |
}, #endif { |
1da177e4c Linux-2.6.12-rc2 |
352 |
.procname = "tcp_tw_recycle", |
295ff7edb [TIMEWAIT]: Intro... |
353 |
.data = &tcp_death_row.sysctl_tw_recycle, |
1da177e4c Linux-2.6.12-rc2 |
354 355 |
.maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
356 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
357 358 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
359 360 361 362 |
.procname = "tcp_abort_on_overflow", .data = &sysctl_tcp_abort_on_overflow, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
363 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
364 365 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
366 367 368 369 |
.procname = "tcp_stdurg", .data = &sysctl_tcp_stdurg, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
370 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
371 372 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
373 374 375 376 |
.procname = "tcp_rfc1337", .data = &sysctl_tcp_rfc1337, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
377 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
378 379 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
380 381 382 383 |
.procname = "tcp_max_syn_backlog", .data = &sysctl_max_syn_backlog, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
384 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
385 386 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
387 |
.procname = "ip_local_port_range", |
3c689b732 inet: cleanup of ... |
388 389 |
.data = &sysctl_local_ports.range, .maxlen = sizeof(sysctl_local_ports.range), |
1da177e4c Linux-2.6.12-rc2 |
390 |
.mode = 0644, |
6d9f239a1 net: '&' redux |
391 |
.proc_handler = ipv4_local_port_range, |
1da177e4c Linux-2.6.12-rc2 |
392 |
}, |
e3826f1e9 net: reserve port... |
393 394 395 396 397 398 399 |
{ .procname = "ip_local_reserved_ports", .data = NULL, /* initialized in sysctl_ipv4_init */ .maxlen = 65536, .mode = 0644, .proc_handler = proc_do_large_bitmap, }, |
1da177e4c Linux-2.6.12-rc2 |
400 |
{ |
1da177e4c Linux-2.6.12-rc2 |
401 402 403 404 |
.procname = "igmp_max_memberships", .data = &sysctl_igmp_max_memberships, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
405 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
406 |
}, |
1da177e4c Linux-2.6.12-rc2 |
407 |
{ |
1da177e4c Linux-2.6.12-rc2 |
408 409 410 411 |
.procname = "igmp_max_msf", .data = &sysctl_igmp_max_msf, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
412 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
413 414 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
415 416 417 418 |
.procname = "inet_peer_threshold", .data = &inet_peer_threshold, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
419 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
420 421 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
422 423 424 425 |
.procname = "inet_peer_minttl", .data = &inet_peer_minttl, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
426 |
.proc_handler = proc_dointvec_jiffies, |
1da177e4c Linux-2.6.12-rc2 |
427 428 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
429 430 431 432 |
.procname = "inet_peer_maxttl", .data = &inet_peer_maxttl, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
433 |
.proc_handler = proc_dointvec_jiffies, |
1da177e4c Linux-2.6.12-rc2 |
434 435 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
436 437 438 439 |
.procname = "tcp_orphan_retries", .data = &sysctl_tcp_orphan_retries, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
440 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
441 442 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
443 444 445 446 |
.procname = "tcp_fack", .data = &sysctl_tcp_fack, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
447 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
448 449 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
450 451 452 453 |
.procname = "tcp_reordering", .data = &sysctl_tcp_reordering, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
454 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
455 456 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
457 458 459 460 |
.procname = "tcp_ecn", .data = &sysctl_tcp_ecn, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
461 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
462 463 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
464 465 466 467 |
.procname = "tcp_dsack", .data = &sysctl_tcp_dsack, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
468 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
469 470 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
471 472 473 474 |
.procname = "tcp_wmem", .data = &sysctl_tcp_wmem, .maxlen = sizeof(sysctl_tcp_wmem), .mode = 0644, |
6d9f239a1 net: '&' redux |
475 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
476 477 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
478 479 480 481 |
.procname = "tcp_rmem", .data = &sysctl_tcp_rmem, .maxlen = sizeof(sysctl_tcp_rmem), .mode = 0644, |
6d9f239a1 net: '&' redux |
482 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
483 484 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
485 486 487 488 |
.procname = "tcp_app_win", .data = &sysctl_tcp_app_win, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
489 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
490 491 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
492 493 494 495 |
.procname = "tcp_adv_win_scale", .data = &sysctl_tcp_adv_win_scale, .maxlen = sizeof(int), .mode = 0644, |
0147fc058 tcp: restrict net... |
496 497 498 |
.proc_handler = proc_dointvec_minmax, .extra1 = &tcp_adv_win_scale_min, .extra2 = &tcp_adv_win_scale_max, |
1da177e4c Linux-2.6.12-rc2 |
499 500 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
501 502 503 504 |
.procname = "tcp_tw_reuse", .data = &sysctl_tcp_tw_reuse, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
505 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
506 507 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
508 509 510 511 |
.procname = "tcp_frto", .data = &sysctl_tcp_frto, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
512 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
513 514 |
}, { |
3cfe3baaf [TCP]: Add two ne... |
515 516 517 518 |
.procname = "tcp_frto_response", .data = &sysctl_tcp_frto_response, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
519 |
.proc_handler = proc_dointvec |
3cfe3baaf [TCP]: Add two ne... |
520 521 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
522 523 524 525 |
.procname = "tcp_low_latency", .data = &sysctl_tcp_low_latency, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
526 |
.proc_handler = proc_dointvec |
1da177e4c Linux-2.6.12-rc2 |
527 528 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
529 530 531 532 |
.procname = "tcp_no_metrics_save", .data = &sysctl_tcp_nometrics_save, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
533 |
.proc_handler = proc_dointvec, |
1da177e4c Linux-2.6.12-rc2 |
534 535 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
536 537 538 539 |
.procname = "tcp_moderate_rcvbuf", .data = &sysctl_tcp_moderate_rcvbuf, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
540 |
.proc_handler = proc_dointvec, |
1da177e4c Linux-2.6.12-rc2 |
541 542 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
543 544 545 546 |
.procname = "tcp_tso_win_divisor", .data = &sysctl_tcp_tso_win_divisor, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
547 |
.proc_handler = proc_dointvec, |
1da177e4c Linux-2.6.12-rc2 |
548 549 |
}, { |
317a76f9a [TCP]: Add plugga... |
550 |
.procname = "tcp_congestion_control", |
1da177e4c Linux-2.6.12-rc2 |
551 |
.mode = 0644, |
317a76f9a [TCP]: Add plugga... |
552 |
.maxlen = TCP_CA_NAME_MAX, |
6d9f239a1 net: '&' redux |
553 |
.proc_handler = proc_tcp_congestion_control, |
1da177e4c Linux-2.6.12-rc2 |
554 |
}, |
9772efb97 [TCP]: Appropriat... |
555 |
{ |
9772efb97 [TCP]: Appropriat... |
556 557 558 559 |
.procname = "tcp_abc", .data = &sysctl_tcp_abc, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
560 |
.proc_handler = proc_dointvec, |
9772efb97 [TCP]: Appropriat... |
561 |
}, |
5d424d5a6 [TCP]: MTU probing |
562 |
{ |
5d424d5a6 [TCP]: MTU probing |
563 564 565 566 |
.procname = "tcp_mtu_probing", .data = &sysctl_tcp_mtu_probing, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
567 |
.proc_handler = proc_dointvec, |
5d424d5a6 [TCP]: MTU probing |
568 569 |
}, { |
5d424d5a6 [TCP]: MTU probing |
570 571 572 573 |
.procname = "tcp_base_mss", .data = &sysctl_tcp_base_mss, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
574 |
.proc_handler = proc_dointvec, |
5d424d5a6 [TCP]: MTU probing |
575 |
}, |
e905a9eda [NET] IPV4: Fix w... |
576 |
{ |
15d99e02b [TCP]: sysctl to ... |
577 578 579 580 |
.procname = "tcp_workaround_signed_windows", .data = &sysctl_tcp_workaround_signed_windows, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
581 |
.proc_handler = proc_dointvec |
15d99e02b [TCP]: sysctl to ... |
582 |
}, |
959378258 [I/OAT]: Add a sy... |
583 584 |
#ifdef CONFIG_NET_DMA { |
959378258 [I/OAT]: Add a sy... |
585 586 587 588 |
.procname = "tcp_dma_copybreak", .data = &sysctl_tcp_dma_copybreak, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
589 |
.proc_handler = proc_dointvec |
959378258 [I/OAT]: Add a sy... |
590 591 |
}, #endif |
35089bb20 [TCP]: Add tcp_sl... |
592 |
{ |
35089bb20 [TCP]: Add tcp_sl... |
593 594 595 596 |
.procname = "tcp_slow_start_after_idle", .data = &sysctl_tcp_slow_start_after_idle, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
597 |
.proc_handler = proc_dointvec |
35089bb20 [TCP]: Add tcp_sl... |
598 |
}, |
446fda4f2 [NetLabel]: CIPSO... |
599 600 |
#ifdef CONFIG_NETLABEL { |
446fda4f2 [NetLabel]: CIPSO... |
601 602 603 604 |
.procname = "cipso_cache_enable", .data = &cipso_v4_cache_enabled, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
605 |
.proc_handler = proc_dointvec, |
446fda4f2 [NetLabel]: CIPSO... |
606 607 |
}, { |
446fda4f2 [NetLabel]: CIPSO... |
608 609 610 611 |
.procname = "cipso_cache_bucket_size", .data = &cipso_v4_cache_bucketsize, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
612 |
.proc_handler = proc_dointvec, |
446fda4f2 [NetLabel]: CIPSO... |
613 614 |
}, { |
446fda4f2 [NetLabel]: CIPSO... |
615 616 617 618 |
.procname = "cipso_rbm_optfmt", .data = &cipso_v4_rbm_optfmt, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
619 |
.proc_handler = proc_dointvec, |
446fda4f2 [NetLabel]: CIPSO... |
620 621 |
}, { |
446fda4f2 [NetLabel]: CIPSO... |
622 623 624 625 |
.procname = "cipso_rbm_strictvalid", .data = &cipso_v4_rbm_strictvalid, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
626 |
.proc_handler = proc_dointvec, |
446fda4f2 [NetLabel]: CIPSO... |
627 628 |
}, #endif /* CONFIG_NETLABEL */ |
3ff825b28 [TCP]: Add tcp_av... |
629 |
{ |
3ff825b28 [TCP]: Add tcp_av... |
630 631 632 |
.procname = "tcp_available_congestion_control", .maxlen = TCP_CA_BUF_MAX, .mode = 0444, |
6d9f239a1 net: '&' redux |
633 |
.proc_handler = proc_tcp_available_congestion_control, |
3ff825b28 [TCP]: Add tcp_av... |
634 |
}, |
ce7bc3bf1 [TCP]: Restrict c... |
635 |
{ |
ce7bc3bf1 [TCP]: Restrict c... |
636 637 638 |
.procname = "tcp_allowed_congestion_control", .maxlen = TCP_CA_BUF_MAX, .mode = 0644, |
6d9f239a1 net: '&' redux |
639 |
.proc_handler = proc_allowed_congestion_control, |
ce7bc3bf1 [TCP]: Restrict c... |
640 |
}, |
886236c12 [TCP]: Add RFC374... |
641 |
{ |
886236c12 [TCP]: Add RFC374... |
642 643 644 645 |
.procname = "tcp_max_ssthresh", .data = &sysctl_tcp_max_ssthresh, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
646 |
.proc_handler = proc_dointvec, |
886236c12 [TCP]: Add RFC374... |
647 |
}, |
95766fff6 [UDP]: Add memory... |
648 |
{ |
519855c50 TCPCT part 1c: sy... |
649 650 651 652 653 654 655 |
.procname = "tcp_cookie_size", .data = &sysctl_tcp_cookie_size, .maxlen = sizeof(int), .mode = 0644, .proc_handler = proc_dointvec }, { |
36e31b0af net: TCP thin lin... |
656 657 658 659 660 661 |
.procname = "tcp_thin_linear_timeouts", .data = &sysctl_tcp_thin_linear_timeouts, .maxlen = sizeof(int), .mode = 0644, .proc_handler = proc_dointvec }, |
7e3801755 net: TCP thin dupack |
662 663 664 665 666 667 668 |
{ .procname = "tcp_thin_dupack", .data = &sysctl_tcp_thin_dupack, .maxlen = sizeof(int), .mode = 0644, .proc_handler = proc_dointvec }, |
36e31b0af net: TCP thin lin... |
669 |
{ |
95766fff6 [UDP]: Add memory... |
670 671 672 673 |
.procname = "udp_mem", .data = &sysctl_udp_mem, .maxlen = sizeof(sysctl_udp_mem), .mode = 0644, |
8d987e5c7 net: avoid limits... |
674 |
.proc_handler = proc_doulongvec_minmax, |
95766fff6 [UDP]: Add memory... |
675 676 |
}, { |
95766fff6 [UDP]: Add memory... |
677 678 679 680 |
.procname = "udp_rmem_min", .data = &sysctl_udp_rmem_min, .maxlen = sizeof(sysctl_udp_rmem_min), .mode = 0644, |
6d9f239a1 net: '&' redux |
681 |
.proc_handler = proc_dointvec_minmax, |
95766fff6 [UDP]: Add memory... |
682 683 684 |
.extra1 = &zero }, { |
95766fff6 [UDP]: Add memory... |
685 686 687 688 |
.procname = "udp_wmem_min", .data = &sysctl_udp_wmem_min, .maxlen = sizeof(sysctl_udp_wmem_min), .mode = 0644, |
6d9f239a1 net: '&' redux |
689 |
.proc_handler = proc_dointvec_minmax, |
95766fff6 [UDP]: Add memory... |
690 691 |
.extra1 = &zero }, |
f8572d8f2 sysctl net: Remov... |
692 |
{ } |
1da177e4c Linux-2.6.12-rc2 |
693 |
}; |
3e37c3f99 [IPV4]: Use ctl p... |
694 |
|
68528f099 [NETNS][ICMP]: Ma... |
695 696 |
static struct ctl_table ipv4_net_table[] = { { |
68528f099 [NETNS][ICMP]: Ma... |
697 698 699 700 |
.procname = "icmp_echo_ignore_all", .data = &init_net.ipv4.sysctl_icmp_echo_ignore_all, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
701 |
.proc_handler = proc_dointvec |
68528f099 [NETNS][ICMP]: Ma... |
702 703 |
}, { |
68528f099 [NETNS][ICMP]: Ma... |
704 705 706 707 |
.procname = "icmp_echo_ignore_broadcasts", .data = &init_net.ipv4.sysctl_icmp_echo_ignore_broadcasts, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
708 |
.proc_handler = proc_dointvec |
68528f099 [NETNS][ICMP]: Ma... |
709 710 |
}, { |
68528f099 [NETNS][ICMP]: Ma... |
711 712 713 714 |
.procname = "icmp_ignore_bogus_error_responses", .data = &init_net.ipv4.sysctl_icmp_ignore_bogus_error_responses, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
715 |
.proc_handler = proc_dointvec |
68528f099 [NETNS][ICMP]: Ma... |
716 717 |
}, { |
68528f099 [NETNS][ICMP]: Ma... |
718 719 720 721 |
.procname = "icmp_errors_use_inbound_ifaddr", .data = &init_net.ipv4.sysctl_icmp_errors_use_inbound_ifaddr, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
722 |
.proc_handler = proc_dointvec |
68528f099 [NETNS][ICMP]: Ma... |
723 724 |
}, { |
68528f099 [NETNS][ICMP]: Ma... |
725 726 727 728 |
.procname = "icmp_ratelimit", .data = &init_net.ipv4.sysctl_icmp_ratelimit, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
729 |
.proc_handler = proc_dointvec_ms_jiffies, |
68528f099 [NETNS][ICMP]: Ma... |
730 731 |
}, { |
68528f099 [NETNS][ICMP]: Ma... |
732 733 734 735 |
.procname = "icmp_ratemask", .data = &init_net.ipv4.sysctl_icmp_ratemask, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
736 |
.proc_handler = proc_dointvec |
68528f099 [NETNS][ICMP]: Ma... |
737 |
}, |
1080d709f net: implement em... |
738 |
{ |
1080d709f net: implement em... |
739 740 741 742 |
.procname = "rt_cache_rebuild_count", .data = &init_net.ipv4.sysctl_rt_cache_rebuild_count, .maxlen = sizeof(int), .mode = 0644, |
6d9f239a1 net: '&' redux |
743 |
.proc_handler = proc_dointvec |
1080d709f net: implement em... |
744 |
}, |
c319b4d76 net: ipv4: add IP... |
745 746 747 748 749 750 751 |
{ .procname = "ping_group_range", .data = &init_net.ipv4.sysctl_ping_group_range, .maxlen = sizeof(init_net.ipv4.sysctl_ping_group_range), .mode = 0644, .proc_handler = ipv4_ping_group_range, }, |
3dc43e3e4 per-netns ipv4 sy... |
752 753 754 755 756 757 |
{ .procname = "tcp_mem", .maxlen = sizeof(init_net.ipv4.sysctl_tcp_mem), .mode = 0644, .proc_handler = ipv4_tcp_mem, }, |
68528f099 [NETNS][ICMP]: Ma... |
758 759 |
{ } }; |
3d7cc2ba6 [NETFILTER]: Swit... |
760 |
struct ctl_path net_ipv4_ctl_path[] = { |
f8572d8f2 sysctl net: Remov... |
761 762 |
{ .procname = "net", }, { .procname = "ipv4", }, |
3e37c3f99 [IPV4]: Use ctl p... |
763 764 |
{ }, }; |
3d7cc2ba6 [NETFILTER]: Swit... |
765 |
EXPORT_SYMBOL_GPL(net_ipv4_ctl_path); |
3e37c3f99 [IPV4]: Use ctl p... |
766 |
|
1577519d6 [NETNS][ICMP]: Re... |
767 768 |
static __net_init int ipv4_sysctl_init_net(struct net *net) { |
68528f099 [NETNS][ICMP]: Ma... |
769 |
struct ctl_table *table; |
3dc43e3e4 per-netns ipv4 sy... |
770 |
unsigned long limit; |
68528f099 [NETNS][ICMP]: Ma... |
771 772 |
table = ipv4_net_table; |
09ad9bc75 net: use net_eq t... |
773 |
if (!net_eq(net, &init_net)) { |
68528f099 [NETNS][ICMP]: Ma... |
774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 |
table = kmemdup(table, sizeof(ipv4_net_table), GFP_KERNEL); if (table == NULL) goto err_alloc; table[0].data = &net->ipv4.sysctl_icmp_echo_ignore_all; table[1].data = &net->ipv4.sysctl_icmp_echo_ignore_broadcasts; table[2].data = &net->ipv4.sysctl_icmp_ignore_bogus_error_responses; table[3].data = &net->ipv4.sysctl_icmp_errors_use_inbound_ifaddr; table[4].data = &net->ipv4.sysctl_icmp_ratelimit; table[5].data = &net->ipv4.sysctl_icmp_ratemask; |
1080d709f net: implement em... |
790 791 |
table[6].data = &net->ipv4.sysctl_rt_cache_rebuild_count; |
c319b4d76 net: ipv4: add IP... |
792 793 |
table[7].data = &net->ipv4.sysctl_ping_group_range; |
68528f099 [NETNS][ICMP]: Ma... |
794 |
} |
c319b4d76 net: ipv4: add IP... |
795 796 797 798 799 800 |
/* * Sane defaults - nobody may create ping sockets. * Boot scripts should set this to distro-specific group. */ net->ipv4.sysctl_ping_group_range[0] = 1; net->ipv4.sysctl_ping_group_range[1] = 0; |
1080d709f net: implement em... |
801 |
net->ipv4.sysctl_rt_cache_rebuild_count = 4; |
3dc43e3e4 per-netns ipv4 sy... |
802 803 804 805 806 |
limit = nr_free_buffer_pages() / 8; limit = max(limit, 128UL); net->ipv4.sysctl_tcp_mem[0] = limit / 4 * 3; net->ipv4.sysctl_tcp_mem[1] = limit; net->ipv4.sysctl_tcp_mem[2] = net->ipv4.sysctl_tcp_mem[0] * 2; |
68528f099 [NETNS][ICMP]: Ma... |
807 808 809 810 |
net->ipv4.ipv4_hdr = register_net_sysctl_table(net, net_ipv4_ctl_path, table); if (net->ipv4.ipv4_hdr == NULL) goto err_reg; |
1577519d6 [NETNS][ICMP]: Re... |
811 |
return 0; |
68528f099 [NETNS][ICMP]: Ma... |
812 813 |
err_reg: |
09ad9bc75 net: use net_eq t... |
814 |
if (!net_eq(net, &init_net)) |
68528f099 [NETNS][ICMP]: Ma... |
815 816 817 |
kfree(table); err_alloc: return -ENOMEM; |
1577519d6 [NETNS][ICMP]: Re... |
818 819 820 821 |
} static __net_exit void ipv4_sysctl_exit_net(struct net *net) { |
68528f099 [NETNS][ICMP]: Ma... |
822 823 824 825 826 |
struct ctl_table *table; table = net->ipv4.ipv4_hdr->ctl_table_arg; unregister_net_sysctl_table(net->ipv4.ipv4_hdr); kfree(table); |
1577519d6 [NETNS][ICMP]: Re... |
827 828 829 830 831 832 |
} static __net_initdata struct pernet_operations ipv4_sysctl_ops = { .init = ipv4_sysctl_init_net, .exit = ipv4_sysctl_exit_net, }; |
3e37c3f99 [IPV4]: Use ctl p... |
833 834 835 |
static __init int sysctl_ipv4_init(void) { struct ctl_table_header *hdr; |
e3826f1e9 net: reserve port... |
836 837 838 839 840 841 842 843 844 845 |
struct ctl_table *i; for (i = ipv4_table; i->procname; i++) { if (strcmp(i->procname, "ip_local_reserved_ports") == 0) { i->data = sysctl_local_reserved_ports; break; } } if (!i->procname) return -EINVAL; |
3e37c3f99 [IPV4]: Use ctl p... |
846 |
|
3d7cc2ba6 [NETFILTER]: Swit... |
847 |
hdr = register_sysctl_paths(net_ipv4_ctl_path, ipv4_table); |
1577519d6 [NETNS][ICMP]: Re... |
848 849 850 851 852 853 854 855 856 |
if (hdr == NULL) return -ENOMEM; if (register_pernet_subsys(&ipv4_sysctl_ops)) { unregister_sysctl_table(hdr); return -ENOMEM; } return 0; |
3e37c3f99 [IPV4]: Use ctl p... |
857 858 859 |
} __initcall(sysctl_ipv4_init); |