From: Shen Feng <shen@cn.fujitsu.com>
To: davem@davemloft.net
Cc: Andrew Morton <akpm@linux-foundation.org>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH] IPv4/IPv6: update sysctl files
Date: Wed, 08 Apr 2009 10:17:00 +0800 [thread overview]
Message-ID: <49DC091C.6070708@cn.fujitsu.com> (raw)
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
next reply other threads:[~2009-04-08 2:18 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-08 2:17 Shen Feng [this message]
2009-04-08 2:41 ` [PATCH] IPv4/IPv6: update sysctl files Eric W. Biederman
2009-04-08 2:47 ` Ben Hutchings
2009-04-08 3:28 ` Shen Feng
2009-04-08 7:18 ` David Miller
2009-04-08 8:50 ` Shen Feng
2009-04-08 9:09 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=49DC091C.6070708@cn.fujitsu.com \
--to=shen@cn.fujitsu.com \
--cc=akpm@linux-foundation.org \
--cc=davem@davemloft.net \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.