lkml.org 
[lkml]   [2009]   [Apr]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    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



    \
     
     \ /
      Last update: 2009-04-08 04:23    [W:0.026 / U:3.172 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site