[NETFILTER]: Remove IPv4 only connection tracking/NAT
[powerpc.git] / net / ipv4 / devinet.c
index ba5e7f4..043857b 100644 (file)
@@ -35,7 +35,6 @@
 #include <linux/module.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
-#include <linux/sched.h>
 #include <linux/string.h>
 #include <linux/mm.h>
 #include <linux/socket.h>
@@ -503,8 +502,10 @@ static struct in_ifaddr *rtm_to_ifaddr(struct nlmsghdr *nlh)
                goto errout;
 
        ifm = nlmsg_data(nlh);
-       if (ifm->ifa_prefixlen > 32 || tb[IFA_LOCAL] == NULL)
+       if (ifm->ifa_prefixlen > 32 || tb[IFA_LOCAL] == NULL) {
+               err = -EINVAL;
                goto errout;
+       }
 
        dev = __dev_get_by_index(ifm->ifa_index);
        if (dev == NULL) {
@@ -632,7 +633,7 @@ int devinet_ioctl(unsigned int cmd, void __user *arg)
        dev_load(ifr.ifr_name);
 #endif
 
-       switch(cmd) {
+       switch (cmd) {
        case SIOCGIFADDR:       /* Get interface address */
        case SIOCGIFBRDADDR:    /* Get the broadcast address */
        case SIOCGIFDSTADDR:    /* Get the destination address */
@@ -707,7 +708,7 @@ int devinet_ioctl(unsigned int cmd, void __user *arg)
        if (!ifa && cmd != SIOCSIFADDR && cmd != SIOCSIFFLAGS)
                goto done;
 
-       switch(cmd) {
+       switch (cmd) {
        case SIOCGIFADDR:       /* Get interface address */
                sin->sin_addr.s_addr = ifa->ifa_local;
                goto rarok;
@@ -1055,12 +1056,14 @@ static int inetdev_event(struct notifier_block *this, unsigned long event,
        ASSERT_RTNL();
 
        if (!in_dev) {
-               if (event == NETDEV_REGISTER && dev == &loopback_dev) {
+               if (event == NETDEV_REGISTER) {
                        in_dev = inetdev_init(dev);
                        if (!in_dev)
                                panic("devinet: Failed to create loopback\n");
-                       in_dev->cnf.no_xfrm = 1;
-                       in_dev->cnf.no_policy = 1;
+                       if (dev == &loopback_dev) {
+                               in_dev->cnf.no_xfrm = 1;
+                               in_dev->cnf.no_policy = 1;
+                       }
                }
                goto out;
        }
@@ -1577,7 +1580,6 @@ static void devinet_sysctl_register(struct in_device *in_dev,
                return;
        for (i = 0; i < ARRAY_SIZE(t->devinet_vars) - 1; i++) {
                t->devinet_vars[i].data += (char *)p - (char *)&ipv4_devconf;
-               t->devinet_vars[i].de = NULL;
        }
 
        if (dev) {
@@ -1599,15 +1601,11 @@ static void devinet_sysctl_register(struct in_device *in_dev,
 
        t->devinet_dev[0].procname    = dev_name;
        t->devinet_dev[0].child       = t->devinet_vars;
-       t->devinet_dev[0].de          = NULL;
        t->devinet_conf_dir[0].child  = t->devinet_dev;
-       t->devinet_conf_dir[0].de     = NULL;
        t->devinet_proto_dir[0].child = t->devinet_conf_dir;
-       t->devinet_proto_dir[0].de    = NULL;
        t->devinet_root_dir[0].child  = t->devinet_proto_dir;
-       t->devinet_root_dir[0].de     = NULL;
 
-       t->sysctl_header = register_sysctl_table(t->devinet_root_dir, 0);
+       t->sysctl_header = register_sysctl_table(t->devinet_root_dir);
        if (!t->sysctl_header)
            goto free_procname;
 
@@ -1641,7 +1639,7 @@ void __init devinet_init(void)
        rtnetlink_links[PF_INET] = inet_rtnetlink_table;
 #ifdef CONFIG_SYSCTL
        devinet_sysctl.sysctl_header =
-               register_sysctl_table(devinet_sysctl.devinet_root_dir, 0);
+               register_sysctl_table(devinet_sysctl.devinet_root_dir);
        devinet_sysctl_register(NULL, &ipv4_devconf_dflt);
 #endif
 }