Messages in this thread Patch in this message | | | Date | Wed, 08 Apr 2009 10:17:00 +0800 | From | Shen Feng <> | Subject | [PATCH] IPv4/IPv6: update sysctl files |
| |
Now the following sysctl files in /proc/sys/net/ipv4 are used by both IPv4 and IPv6. tcp_mem tcp_rmem tcp_wmem udp_mem udp_rmem_min udp_wmem_min Putting them in /proc/sys/net/ipv4 is not a good choice.
So move tcp_mem tcp_rmem tcp_wmem to /proc/sys/net/tcp and move udp_mem udp_rmem_min udp_wmem_min to /poc/sys/net/udp.
Signed-off-by: Shen Feng <shen@cn.fujitsu.com> --- net/ipv4/sysctl_net_ipv4.c | 95 ++++++++++++++++++++++++++++++------------- 1 files changed, 66 insertions(+), 29 deletions(-)
diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c index 4710d21..a520011 100644 --- a/net/ipv4/sysctl_net_ipv4.c +++ b/net/ipv4/sysctl_net_ipv4.c @@ -503,30 +503,6 @@ static struct ctl_table ipv4_table[] = { .proc_handler = proc_dointvec }, { - .ctl_name = NET_TCP_MEM, - .procname = "tcp_mem", - .data = &sysctl_tcp_mem, - .maxlen = sizeof(sysctl_tcp_mem), - .mode = 0644, - .proc_handler = proc_dointvec - }, - { - .ctl_name = NET_TCP_WMEM, - .procname = "tcp_wmem", - .data = &sysctl_tcp_wmem, - .maxlen = sizeof(sysctl_tcp_wmem), - .mode = 0644, - .proc_handler = proc_dointvec - }, - { - .ctl_name = NET_TCP_RMEM, - .procname = "tcp_rmem", - .data = &sysctl_tcp_rmem, - .maxlen = sizeof(sysctl_tcp_rmem), - .mode = 0644, - .proc_handler = proc_dointvec - }, - { .ctl_name = NET_TCP_APP_WIN, .procname = "tcp_app_win", .data = &sysctl_tcp_app_win, @@ -712,6 +688,38 @@ static struct ctl_table ipv4_table[] = { .mode = 0644, .proc_handler = proc_dointvec, }, + { .ctl_name = 0 } +}; + +static struct ctl_table proc_tcp_table[] = { + { + .ctl_name = NET_TCP_MEM, + .procname = "tcp_mem", + .data = &sysctl_tcp_mem, + .maxlen = sizeof(sysctl_tcp_mem), + .mode = 0644, + .proc_handler = proc_dointvec + }, + { + .ctl_name = NET_TCP_WMEM, + .procname = "tcp_wmem", + .data = &sysctl_tcp_wmem, + .maxlen = sizeof(sysctl_tcp_wmem), + .mode = 0644, + .proc_handler = proc_dointvec + }, + { + .ctl_name = NET_TCP_RMEM, + .procname = "tcp_rmem", + .data = &sysctl_tcp_rmem, + .maxlen = sizeof(sysctl_tcp_rmem), + .mode = 0644, + .proc_handler = proc_dointvec + }, + {}, +}; + +static struct ctl_table proc_udp_table[] = { { .ctl_name = CTL_UNNUMBERED, .procname = "udp_mem", @@ -742,7 +750,7 @@ static struct ctl_table ipv4_table[] = { .strategy = sysctl_intvec, .extra1 = &zero }, - { .ctl_name = 0 } + {}, }; static struct ctl_table ipv4_net_table[] = { @@ -813,6 +821,20 @@ struct ctl_path net_ipv4_ctl_path[] = { }; EXPORT_SYMBOL_GPL(net_ipv4_ctl_path); +struct ctl_path net_tcp_ctl_path[] = { + { .procname = "net", .ctl_name = CTL_NET, }, + { .procname = "tcp", .ctl_name = CTL_UNNUMBERED, }, + {}, +}; +EXPORT_SYMBOL_GPL(net_tcp_ctl_path); + +struct ctl_path net_udp_ctl_path[] = { + { .procname = "net", .ctl_name = CTL_NET, }, + { .procname = "udp", .ctl_name = CTL_UNNUMBERED, }, + {}, +}; +EXPORT_SYMBOL_GPL(net_udp_ctl_path); + static __net_init int ipv4_sysctl_init_net(struct net *net) { struct ctl_table *table; @@ -871,14 +893,29 @@ static __net_initdata struct pernet_operations ipv4_sysctl_ops = { static __init int sysctl_ipv4_init(void) { - struct ctl_table_header *hdr; + struct ctl_table_header *hdr_ipv4, *hdr_tcp, *hdr_udp; + + hdr_ipv4 = register_sysctl_paths(net_ipv4_ctl_path, ipv4_table); + if (hdr_ipv4 == NULL) + return -ENOMEM; - hdr = register_sysctl_paths(net_ipv4_ctl_path, ipv4_table); - if (hdr == NULL) + hdr_tcp = register_sysctl_paths(net_tcp_ctl_path, proc_tcp_table); + if (hdr_tcp == NULL) { + unregister_sysctl_table(hdr_ipv4); return -ENOMEM; + } + + hdr_udp = register_sysctl_paths(net_udp_ctl_path, proc_udp_table); + if (hdr_udp == NULL) { + unregister_sysctl_table(hdr_ipv4); + unregister_sysctl_table(hdr_tcp); + return -ENOMEM; + } if (register_pernet_subsys(&ipv4_sysctl_ops)) { - unregister_sysctl_table(hdr); + unregister_sysctl_table(hdr_ipv4); + unregister_sysctl_table(hdr_tcp); + unregister_sysctl_table(hdr_udp); return -ENOMEM; } -- 1.6.0.6
| |