]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blame - security/selinux/include/xfrm.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[mirror_ubuntu-bionic-kernel.git] / security / selinux / include / xfrm.h
CommitLineData
b2441318 1/* SPDX-License-Identifier: GPL-2.0 */
d28d1e08
TJ
2/*
3 * SELinux support for the XFRM LSM hooks
4 *
5 * Author : Trent Jaeger, <jaegert@us.ibm.com>
e0d1caa7 6 * Updated : Venkat Yekkirala, <vyekkirala@TrustedCS.com>
d28d1e08
TJ
7 */
8#ifndef _SELINUX_XFRM_H_
9#define _SELINUX_XFRM_H_
10
778aae84
DH
11#include <net/flow.h>
12
03e1ad7b 13int selinux_xfrm_policy_alloc(struct xfrm_sec_ctx **ctxp,
52a4c640
NA
14 struct xfrm_user_sec_ctx *uctx,
15 gfp_t gfp);
03e1ad7b
PM
16int selinux_xfrm_policy_clone(struct xfrm_sec_ctx *old_ctx,
17 struct xfrm_sec_ctx **new_ctxp);
18void selinux_xfrm_policy_free(struct xfrm_sec_ctx *ctx);
19int selinux_xfrm_policy_delete(struct xfrm_sec_ctx *ctx);
e0d1caa7 20int selinux_xfrm_state_alloc(struct xfrm_state *x,
2e5aa866
PM
21 struct xfrm_user_sec_ctx *uctx);
22int selinux_xfrm_state_alloc_acquire(struct xfrm_state *x,
23 struct xfrm_sec_ctx *polsec, u32 secid);
d28d1e08 24void selinux_xfrm_state_free(struct xfrm_state *x);
c8c05a8e 25int selinux_xfrm_state_delete(struct xfrm_state *x);
03e1ad7b 26int selinux_xfrm_policy_lookup(struct xfrm_sec_ctx *ctx, u32 fl_secid, u8 dir);
e0d1caa7 27int selinux_xfrm_state_pol_flow_match(struct xfrm_state *x,
d1b17b09
PM
28 struct xfrm_policy *xp,
29 const struct flowi *fl);
d28d1e08 30
d28d1e08 31#ifdef CONFIG_SECURITY_NETWORK_XFRM
d621d35e
PM
32extern atomic_t selinux_xfrm_refcount;
33
34static inline int selinux_xfrm_enabled(void)
35{
36 return (atomic_read(&selinux_xfrm_refcount) > 0);
37}
38
eef9b416
PM
39int selinux_xfrm_sock_rcv_skb(u32 sk_sid, struct sk_buff *skb,
40 struct common_audit_data *ad);
41int selinux_xfrm_postroute_last(u32 sk_sid, struct sk_buff *skb,
42 struct common_audit_data *ad, u8 proto);
a51c64f1 43int selinux_xfrm_decode_session(struct sk_buff *skb, u32 *sid, int ckall);
817eff71 44int selinux_xfrm_skb_sid(struct sk_buff *skb, u32 *sid);
342a0cff
VY
45
46static inline void selinux_xfrm_notify_policyload(void)
47{
ca4c3fc2 48 struct net *net;
49
ca4c3fc2 50 rtnl_lock();
09c75704 51 for_each_net(net)
ca4c3fc2 52 rt_genid_bump_all(net);
53 rtnl_unlock();
342a0cff 54}
d28d1e08 55#else
d621d35e
PM
56static inline int selinux_xfrm_enabled(void)
57{
58 return 0;
59}
60
eef9b416
PM
61static inline int selinux_xfrm_sock_rcv_skb(u32 sk_sid, struct sk_buff *skb,
62 struct common_audit_data *ad)
d28d1e08
TJ
63{
64 return 0;
65}
66
eef9b416
PM
67static inline int selinux_xfrm_postroute_last(u32 sk_sid, struct sk_buff *skb,
68 struct common_audit_data *ad,
69 u8 proto)
d28d1e08 70{
4e5ab4cb 71 return 0;
d28d1e08 72}
e6f50719 73
d1b17b09
PM
74static inline int selinux_xfrm_decode_session(struct sk_buff *skb, u32 *sid,
75 int ckall)
a51c64f1
VY
76{
77 *sid = SECSID_NULL;
78 return 0;
79}
342a0cff
VY
80
81static inline void selinux_xfrm_notify_policyload(void)
82{
83}
d28d1e08 84
817eff71 85static inline int selinux_xfrm_skb_sid(struct sk_buff *skb, u32 *sid)
6b877699 86{
817eff71
PM
87 *sid = SECSID_NULL;
88 return 0;
6b877699 89}
817eff71 90#endif
6b877699 91
d28d1e08 92#endif /* _SELINUX_XFRM_H_ */