Blame view

kernel/linux-imx6_3.14.28/security/selinux/include/xfrm.h 2.43 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
  /*
   * SELinux support for the XFRM LSM hooks
   *
   * Author : Trent Jaeger, <jaegert@us.ibm.com>
   * Updated : Venkat Yekkirala, <vyekkirala@TrustedCS.com>
   */
  #ifndef _SELINUX_XFRM_H_
  #define _SELINUX_XFRM_H_
  
  #include <net/flow.h>
  
  int selinux_xfrm_policy_alloc(struct xfrm_sec_ctx **ctxp,
  			      struct xfrm_user_sec_ctx *uctx,
  			      gfp_t gfp);
  int selinux_xfrm_policy_clone(struct xfrm_sec_ctx *old_ctx,
  			      struct xfrm_sec_ctx **new_ctxp);
  void selinux_xfrm_policy_free(struct xfrm_sec_ctx *ctx);
  int selinux_xfrm_policy_delete(struct xfrm_sec_ctx *ctx);
  int selinux_xfrm_state_alloc(struct xfrm_state *x,
  			     struct xfrm_user_sec_ctx *uctx);
  int selinux_xfrm_state_alloc_acquire(struct xfrm_state *x,
  				     struct xfrm_sec_ctx *polsec, u32 secid);
  void selinux_xfrm_state_free(struct xfrm_state *x);
  int selinux_xfrm_state_delete(struct xfrm_state *x);
  int selinux_xfrm_policy_lookup(struct xfrm_sec_ctx *ctx, u32 fl_secid, u8 dir);
  int selinux_xfrm_state_pol_flow_match(struct xfrm_state *x,
  				      struct xfrm_policy *xp,
  				      const struct flowi *fl);
  
  #ifdef CONFIG_SECURITY_NETWORK_XFRM
  extern atomic_t selinux_xfrm_refcount;
  
  static inline int selinux_xfrm_enabled(void)
  {
  	return (atomic_read(&selinux_xfrm_refcount) > 0);
  }
  
  int selinux_xfrm_sock_rcv_skb(u32 sk_sid, struct sk_buff *skb,
  			      struct common_audit_data *ad);
  int selinux_xfrm_postroute_last(u32 sk_sid, struct sk_buff *skb,
  				struct common_audit_data *ad, u8 proto);
  int selinux_xfrm_decode_session(struct sk_buff *skb, u32 *sid, int ckall);
  int selinux_xfrm_skb_sid(struct sk_buff *skb, u32 *sid);
  
  static inline void selinux_xfrm_notify_policyload(void)
  {
  	struct net *net;
  
  	atomic_inc(&flow_cache_genid);
  	rtnl_lock();
  	for_each_net(net)
  		rt_genid_bump_all(net);
  	rtnl_unlock();
  }
  #else
  static inline int selinux_xfrm_enabled(void)
  {
  	return 0;
  }
  
  static inline int selinux_xfrm_sock_rcv_skb(u32 sk_sid, struct sk_buff *skb,
  					    struct common_audit_data *ad)
  {
  	return 0;
  }
  
  static inline int selinux_xfrm_postroute_last(u32 sk_sid, struct sk_buff *skb,
  					      struct common_audit_data *ad,
  					      u8 proto)
  {
  	return 0;
  }
  
  static inline int selinux_xfrm_decode_session(struct sk_buff *skb, u32 *sid,
  					      int ckall)
  {
  	*sid = SECSID_NULL;
  	return 0;
  }
  
  static inline void selinux_xfrm_notify_policyload(void)
  {
  }
  
  static inline int selinux_xfrm_skb_sid(struct sk_buff *skb, u32 *sid)
  {
  	*sid = SECSID_NULL;
  	return 0;
  }
  #endif
  
  #endif /* _SELINUX_XFRM_H_ */