Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
security
selinux
include
xfrm.h
Go to the documentation of this file.
1
/*
2
* SELinux support for the XFRM LSM hooks
3
*
4
* Author : Trent Jaeger, <
[email protected]
>
5
* Updated : Venkat Yekkirala, <
[email protected]
>
6
*/
7
#ifndef _SELINUX_XFRM_H_
8
#define _SELINUX_XFRM_H_
9
10
#include <
net/flow.h
>
11
12
int
selinux_xfrm_policy_alloc
(
struct
xfrm_sec_ctx
**ctxp,
13
struct
xfrm_user_sec_ctx
*sec_ctx);
14
int
selinux_xfrm_policy_clone
(
struct
xfrm_sec_ctx
*old_ctx,
15
struct
xfrm_sec_ctx
**new_ctxp);
16
void
selinux_xfrm_policy_free
(
struct
xfrm_sec_ctx
*
ctx
);
17
int
selinux_xfrm_policy_delete
(
struct
xfrm_sec_ctx
*
ctx
);
18
int
selinux_xfrm_state_alloc
(
struct
xfrm_state
*
x
,
19
struct
xfrm_user_sec_ctx
*sec_ctx,
u32
secid);
20
void
selinux_xfrm_state_free
(
struct
xfrm_state
*
x
);
21
int
selinux_xfrm_state_delete
(
struct
xfrm_state
*
x
);
22
int
selinux_xfrm_policy_lookup
(
struct
xfrm_sec_ctx
*
ctx
,
u32
fl_secid,
u8
dir);
23
int
selinux_xfrm_state_pol_flow_match
(
struct
xfrm_state
*
x
,
24
struct
xfrm_policy
*
xp
,
const
struct
flowi
*
fl
);
25
26
/*
27
* Extract the security blob from the sock (it's actually on the socket)
28
*/
29
static
inline
struct
inode_security_struct
*get_sock_isec(
struct
sock
*
sk
)
30
{
31
if
(!sk->
sk_socket
)
32
return
NULL
;
33
34
return
SOCK_INODE(sk->
sk_socket
)->i_security;
35
}
36
37
#ifdef CONFIG_SECURITY_NETWORK_XFRM
38
extern
atomic_t
selinux_xfrm_refcount
;
39
40
static
inline
int
selinux_xfrm_enabled(
void
)
41
{
42
return
(
atomic_read
(&selinux_xfrm_refcount) > 0);
43
}
44
45
int
selinux_xfrm_sock_rcv_skb
(
u32
sid
,
struct
sk_buff
*
skb
,
46
struct
common_audit_data
*ad);
47
int
selinux_xfrm_postroute_last
(
u32
isec_sid,
struct
sk_buff
*
skb
,
48
struct
common_audit_data
*ad,
u8
proto
);
49
int
selinux_xfrm_decode_session
(
struct
sk_buff
*
skb
,
u32
*
sid
,
int
ckall);
50
51
static
inline
void
selinux_xfrm_notify_policyload(
void
)
52
{
53
atomic_inc
(&
flow_cache_genid
);
54
rt_genid_bump(&
init_net
);
55
}
56
#else
57
static
inline
int
selinux_xfrm_enabled(
void
)
58
{
59
return
0;
60
}
61
62
static
inline
int
selinux_xfrm_sock_rcv_skb
(
u32
isec_sid,
struct
sk_buff
*
skb
,
63
struct
common_audit_data
*ad)
64
{
65
return
0;
66
}
67
68
static
inline
int
selinux_xfrm_postroute_last
(
u32
isec_sid,
struct
sk_buff
*
skb
,
69
struct
common_audit_data
*ad,
u8
proto
)
70
{
71
return
0;
72
}
73
74
static
inline
int
selinux_xfrm_decode_session
(
struct
sk_buff
*
skb
,
u32
*
sid
,
int
ckall)
75
{
76
*sid =
SECSID_NULL
;
77
return
0;
78
}
79
80
static
inline
void
selinux_xfrm_notify_policyload(
void
)
81
{
82
}
83
#endif
84
85
static
inline
void
selinux_skb_xfrm_sid(
struct
sk_buff
*
skb
,
u32
*
sid
)
86
{
87
int
err
=
selinux_xfrm_decode_session
(skb, sid, 0);
88
BUG_ON
(err);
89
}
90
91
#endif
/* _SELINUX_XFRM_H_ */
Generated on Thu Jan 10 2013 14:53:14 for Linux Kernel by
1.8.2