ipv4: using prefetch requires including prefetch.h
[pandora-kernel.git] / net / ipv4 / ip_sockglue.c
index 8905e92..09ff51b 100644 (file)
@@ -33,6 +33,7 @@
 #include <linux/netfilter.h>
 #include <linux/route.h>
 #include <linux/mroute.h>
+#include <net/inet_ecn.h>
 #include <net/route.h>
 #include <net/xfrm.h>
 #include <net/compat.h>
@@ -578,8 +579,8 @@ static int do_ip_setsockopt(struct sock *sk, int level,
                break;
        case IP_TOS:    /* This sets both TOS and Precedence */
                if (sk->sk_type == SOCK_STREAM) {
-                       val &= ~3;
-                       val |= inet->tos & 3;
+                       val &= ~INET_ECN_MASK;
+                       val |= inet->tos & INET_ECN_MASK;
                }
                if (inet->tos != val) {
                        inet->tos = val;
@@ -961,7 +962,7 @@ mc_msf_out:
                break;
 
        case IP_TRANSPARENT:
-               if (!capable(CAP_NET_ADMIN)) {
+               if (!!val && !capable(CAP_NET_RAW) && !capable(CAP_NET_ADMIN)) {
                        err = -EPERM;
                        break;
                }