[NET]: Make the device list and device lookups per namespace.
[pandora-kernel.git] / net / ipv6 / ipv6_sockglue.c
index 761a910..eb330a4 100644 (file)
@@ -249,7 +249,7 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
                        }
 
                        if (ipv6_only_sock(sk) ||
-                           !(ipv6_addr_type(&np->daddr) & IPV6_ADDR_MAPPED)) {
+                           !ipv6_addr_v4mapped(&np->daddr)) {
                                retv = -EADDRNOTAVAIL;
                                break;
                        }
@@ -542,7 +542,7 @@ done:
                if (sk->sk_bound_dev_if && sk->sk_bound_dev_if != val)
                        goto e_inval;
 
-               if (__dev_get_by_index(val) == NULL) {
+               if (__dev_get_by_index(&init_net, val) == NULL) {
                        retv = -ENODEV;
                        break;
                }
@@ -554,6 +554,10 @@ done:
        {
                struct ipv6_mreq mreq;
 
+               retv = -EPROTO;
+               if (inet_sk(sk)->is_icsk)
+                       break;
+
                retv = -EFAULT;
                if (copy_from_user(&mreq, optval, sizeof(struct ipv6_mreq)))
                        break;