[NET]: Make /proc/net per network namespace
[linux-block.git] / net / ipv4 / proc.c
index cdbc6c1358494c616d8146c9a23712ca6c92e308..95a8f8f2de71af73ce64beab13f28b2edebf8dd3 100644 (file)
@@ -34,6 +34,7 @@
  *             2 of the License, or (at your option) any later version.
  */
 #include <linux/types.h>
+#include <net/net_namespace.h>
 #include <net/icmp.h>
 #include <net/protocol.h>
 #include <net/tcp.h>
@@ -244,6 +245,9 @@ static const struct snmp_mib snmp4_net_list[] = {
        SNMP_MIB_ITEM("TCPAbortOnLinger", LINUX_MIB_TCPABORTONLINGER),
        SNMP_MIB_ITEM("TCPAbortFailed", LINUX_MIB_TCPABORTFAILED),
        SNMP_MIB_ITEM("TCPMemoryPressures", LINUX_MIB_TCPMEMORYPRESSURES),
+       SNMP_MIB_ITEM("TCPSACKDiscard", LINUX_MIB_TCPSACKDISCARD),
+       SNMP_MIB_ITEM("TCPDSACKIgnoredOld", LINUX_MIB_TCPDSACKIGNOREDOLD),
+       SNMP_MIB_ITEM("TCPDSACKIgnoredNoUndo", LINUX_MIB_TCPDSACKIGNOREDNOUNDO),
        SNMP_MIB_SENTINEL
 };
 
@@ -260,7 +264,7 @@ static int snmp_seq_show(struct seq_file *seq, void *v)
                seq_printf(seq, " %s", snmp4_ipstats_list[i].name);
 
        seq_printf(seq, "\nIp: %d %d",
-                       ipv4_devconf.forwarding ? 1 : 2, sysctl_ip_default_ttl);
+                  IPV4_DEVCONF_ALL(FORWARDING) ? 1 : 2, sysctl_ip_default_ttl);
 
        for (i = 0; snmp4_ipstats_list[i].name != NULL; i++)
                seq_printf(seq, " %lu",
@@ -380,20 +384,20 @@ int __init ip_misc_proc_init(void)
 {
        int rc = 0;
 
-       if (!proc_net_fops_create("netstat", S_IRUGO, &netstat_seq_fops))
+       if (!proc_net_fops_create(&init_net, "netstat", S_IRUGO, &netstat_seq_fops))
                goto out_netstat;
 
-       if (!proc_net_fops_create("snmp", S_IRUGO, &snmp_seq_fops))
+       if (!proc_net_fops_create(&init_net, "snmp", S_IRUGO, &snmp_seq_fops))
                goto out_snmp;
 
-       if (!proc_net_fops_create("sockstat", S_IRUGO, &sockstat_seq_fops))
+       if (!proc_net_fops_create(&init_net, "sockstat", S_IRUGO, &sockstat_seq_fops))
                goto out_sockstat;
 out:
        return rc;
 out_sockstat:
-       proc_net_remove("snmp");
+       proc_net_remove(&init_net, "snmp");
 out_snmp:
-       proc_net_remove("netstat");
+       proc_net_remove(&init_net, "netstat");
 out_netstat:
        rc = -ENOMEM;
        goto out;