Why:   Deprecated by the new (standard) device driver binding model. Use
        i2c_driver->probe() and ->remove() instead.
 Who:   Jean Delvare <khali@linux-fr.org>
+
+---------------------------
+
+What:  SELinux "compat_net" functionality
+When:  2.6.30 at the earliest
+Why:   In 2.6.18 the Secmark concept was introduced to replace the "compat_net"
+       network access control functionality of SELinux.  Secmark offers both
+       better performance and greater flexibility than the "compat_net"
+       mechanism.  Now that the major Linux distributions have moved to
+       Secmark, it is time to deprecate the older mechanism and start the
+       process of removing the old code.
+Who:   Paul Moore <paul.moore@hp.com>
 
 
          If you are unsure how to answer this question, answer 1.
 
-config SECURITY_SELINUX_ENABLE_SECMARK_DEFAULT
-       bool "NSA SELinux enable new secmark network controls by default"
-       depends on SECURITY_SELINUX
-       default n
-       help
-         This option determines whether the new secmark-based network
-         controls will be enabled by default.  If not, the old internal
-         per-packet controls will be enabled by default, preserving
-         old behavior.
-
-         If you enable the new controls, you will need updated
-         SELinux userspace libraries, tools and policy.  Typically,
-         your distribution will provide these and enable the new controls
-         in the kernel they also distribute.
-
-         Note that this option can be overridden at boot with the
-         selinux_compat_net parameter, and after boot via
-         /selinux/compat_net.  See Documentation/kernel-parameters.txt
-         for details on this parameter.
-
-         If you enable the new network controls, you will likely
-         also require the SECMARK and CONNSECMARK targets, as
-         well as any conntrack helpers for protocols which you
-         wish to control.
-
-         If you are unsure what to do here, select N.
-
 config SECURITY_SELINUX_POLICYDB_VERSION_MAX
        bool "NSA SELinux maximum supported policy format version"
        depends on SECURITY_SELINUX
 
 static int selinux_sock_rcv_skb_compat(struct sock *sk, struct sk_buff *skb,
                                       u16 family)
 {
-       int err;
+       int err = 0;
        struct sk_security_struct *sksec = sk->sk_security;
        u32 peer_sid;
        u32 sk_sid = sksec->sid;
        if (selinux_compat_net)
                err = selinux_sock_rcv_skb_iptables_compat(sk, skb, &ad,
                                                           family, addrp);
-       else
+       else if (selinux_secmark_enabled())
                err = avc_has_perm(sk_sid, skb->secmark, SECCLASS_PACKET,
                                   PACKET__RECV, &ad);
        if (err)
                if (selinux_ip_postroute_iptables_compat(skb->sk, ifindex,
                                                         &ad, family, addrp))
                        return NF_DROP;
-       } else {
+       } else if (selinux_secmark_enabled()) {
                if (avc_has_perm(sksec->sid, skb->secmark,
                                 SECCLASS_PACKET, PACKET__SEND, &ad))
                        return NF_DROP;
 
 
 unsigned int selinux_checkreqprot = CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE;
 
-#ifdef CONFIG_SECURITY_SELINUX_ENABLE_SECMARK_DEFAULT
-#define SELINUX_COMPAT_NET_VALUE 0
-#else
-#define SELINUX_COMPAT_NET_VALUE 1
-#endif
-
-int selinux_compat_net = SELINUX_COMPAT_NET_VALUE;
+int selinux_compat_net = 0;
 
 static int __init checkreqprot_setup(char *str)
 {
        if (sscanf(page, "%d", &new_value) != 1)
                goto out;
 
-       selinux_compat_net = new_value ? 1 : 0;
+       if (new_value) {
+               printk(KERN_NOTICE
+                      "SELinux: compat_net is deprecated, please use secmark"
+                      " instead\n");
+               selinux_compat_net = 1;
+       } else
+               selinux_compat_net = 0;
        length = count;
 out:
        free_page((unsigned long) page);