summaryrefslogtreecommitdiff
path: root/security/selinux/xfrm.c
diff options
context:
space:
mode:
authorJames Morris <jmorris@namei.org>2006-06-09 00:33:33 -0700
committerDavid S. Miller <davem@sunset.davemloft.net>2006-06-17 21:30:05 -0700
commit4e5ab4cb85683cf77b507ba0c4d48871e1562305 (patch)
treeaef7ba8b6050fcaccbaf0d05f8e5ba860a143eaf /security/selinux/xfrm.c
parent100468e9c05c10fb6872751c1af523b996d6afa9 (diff)
downloadlinux-3.10-4e5ab4cb85683cf77b507ba0c4d48871e1562305.tar.gz
linux-3.10-4e5ab4cb85683cf77b507ba0c4d48871e1562305.tar.bz2
linux-3.10-4e5ab4cb85683cf77b507ba0c4d48871e1562305.zip
[SECMARK]: Add new packet controls to SELinux
Add new per-packet access controls to SELinux, replacing the old packet controls. Packets are labeled with the iptables SECMARK and CONNSECMARK targets, then security policy for the packets is enforced with these controls. To allow for a smooth transition to the new controls, the old code is still present, but not active by default. To restore previous behavior, the old controls may be activated at runtime by writing a '1' to /selinux/compat_net, and also via the kernel boot parameter selinux_compat_net. Switching between the network control models requires the security load_policy permission. The old controls will probably eventually be removed and any continued use is discouraged. With this patch, the new secmark controls for SElinux are disabled by default, so existing behavior is entirely preserved, and the user is not affected at all. It also provides a config option to enable the secmark controls by default (which can always be overridden at boot and runtime). It is also noted in the kconfig help that the user will need updated userspace if enabling secmark controls for SELinux and that they'll probably need the SECMARK and CONNMARK targets, and conntrack protocol helpers, although such decisions are beyond the scope of kernel configuration. Signed-off-by: James Morris <jmorris@namei.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'security/selinux/xfrm.c')
-rw-r--r--security/selinux/xfrm.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/security/selinux/xfrm.c b/security/selinux/xfrm.c
index 0e24df41099..6633fb05931 100644
--- a/security/selinux/xfrm.c
+++ b/security/selinux/xfrm.c
@@ -387,18 +387,12 @@ int selinux_xfrm_postroute_last(u32 isec_sid, struct sk_buff *skb)
struct xfrm_state *x = dst_test->xfrm;
if (x && selinux_authorizable_xfrm(x))
- goto accept;
+ goto out;
}
}
rc = avc_has_perm(isec_sid, SECINITSID_UNLABELED, SECCLASS_ASSOCIATION,
ASSOCIATION__SENDTO, NULL);
- if (rc)
- goto drop;
-
-accept:
- return NF_ACCEPT;
-
-drop:
- return NF_DROP;
+out:
+ return rc;
}