]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/8021q/vlan_netlink.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-sched
[linux-2.6-omap-h63xx.git] / net / 8021q / vlan_netlink.c
index 844c7e43d0fa02658fd700b09c33ba0ab64510d8..0996185e2ed5dd816946df9fdcf10a1d4a1d4b13 100644 (file)
@@ -11,6 +11,7 @@
 #include <linux/kernel.h>
 #include <linux/netdevice.h>
 #include <linux/if_vlan.h>
+#include <net/net_namespace.h>
 #include <net/netlink.h>
 #include <net/rtnetlink.h>
 #include "vlan.h"
@@ -41,6 +42,13 @@ static int vlan_validate(struct nlattr *tb[], struct nlattr *data[])
        u16 id;
        int err;
 
+       if (tb[IFLA_ADDRESS]) {
+               if (nla_len(tb[IFLA_ADDRESS]) != ETH_ALEN)
+                       return -EINVAL;
+               if (!is_valid_ether_addr(nla_data(tb[IFLA_ADDRESS])))
+                       return -EADDRNOTAVAIL;
+       }
+
        if (!data)
                return -EINVAL;
 
@@ -105,7 +113,7 @@ static int vlan_newlink(struct net_device *dev,
 
        if (!tb[IFLA_LINK])
                return -EINVAL;
-       real_dev = __dev_get_by_index(nla_get_u32(tb[IFLA_LINK]));
+       real_dev = __dev_get_by_index(&init_net, nla_get_u32(tb[IFLA_LINK]));
        if (!real_dev)
                return -ENODEV;