]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/ipv4/sysctl_net_ipv4.c
Merge remote-tracking branch 'wireless-next/master'
[karo-tx-linux.git] / net / ipv4 / sysctl_net_ipv4.c
index 69c6a8dbe09dab14f32225f76e1241eb87be5353..d5b1390eebbee19715fcbbdbea742bbf0eddcc71 100644 (file)
@@ -838,32 +838,15 @@ static __net_init int ipv4_sysctl_init_net(struct net *net)
 
        table = ipv4_net_table;
        if (!net_eq(net, &init_net)) {
+               int i;
+
                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;
-               table[6].data =
-                       &net->ipv4.sysctl_ping_group_range;
-               table[7].data =
-                       &net->ipv4.sysctl_tcp_ecn;
-               table[8].data =
-                       &net->ipv4.sysctl_local_ports.range;
-
-               /* Don't export sysctls to unprivileged users */
-               if (net->user_ns != &init_user_ns)
-                       table[0].procname = NULL;
+               /* Update the variables to point into the current struct net */
+               for (i = 0; i < ARRAY_SIZE(ipv4_net_table) - 1; i++)
+                       table[i].data += (void *)net - (void *)&init_net;
        }
 
        /*