From patchwork Wed Apr 8 02:17:00 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shen Feng X-Patchwork-Id: 25699 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id C20A7DDFB2 for ; Wed, 8 Apr 2009 12:17:58 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758599AbZDHCRv (ORCPT ); Tue, 7 Apr 2009 22:17:51 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1757293AbZDHCRv (ORCPT ); Tue, 7 Apr 2009 22:17:51 -0400 Received: from cn.fujitsu.com ([222.73.24.84]:52832 "EHLO song.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1757150AbZDHCRu (ORCPT ); Tue, 7 Apr 2009 22:17:50 -0400 Received: from tang.cn.fujitsu.com (tang.cn.fujitsu.com [10.167.250.3]) by song.cn.fujitsu.com (Postfix) with ESMTP id 3D6B0170028; Wed, 8 Apr 2009 11:02:10 +0800 (CST) Received: from fnst.cn.fujitsu.com (localhost.localdomain [127.0.0.1]) by tang.cn.fujitsu.com (8.13.1/8.13.1) with ESMTP id n382LTIK016377; Wed, 8 Apr 2009 10:21:29 +0800 Received: from localhost.localdomain (unknown [10.167.141.45]) by fnst.cn.fujitsu.com (Postfix) with ESMTPA id B71FAD401A; Wed, 8 Apr 2009 10:22:50 +0800 (CST) Message-ID: <49DC091C.6070708@cn.fujitsu.com> Date: Wed, 08 Apr 2009 10:17:00 +0800 From: Shen Feng User-Agent: Thunderbird 2.0.0.14 (X11/20080501) MIME-Version: 1.0 To: davem@davemloft.net CC: Andrew Morton , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] IPv4/IPv6: update sysctl files Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 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 --- 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; }