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
include
linux
user_namespace.h
Go to the documentation of this file.
1
#ifndef _LINUX_USER_NAMESPACE_H
2
#define _LINUX_USER_NAMESPACE_H
3
4
#include <
linux/kref.h
>
5
#include <
linux/nsproxy.h
>
6
#include <linux/sched.h>
7
#include <
linux/err.h
>
8
9
#define UID_GID_MAP_MAX_EXTENTS 5
10
11
struct
uid_gid_map
{
/* 64 bytes -- 1 cache line */
12
u32
nr_extents
;
13
struct
uid_gid_extent
{
14
u32
first
;
15
u32
lower_first
;
16
u32
count
;
17
}
extent
[
UID_GID_MAP_MAX_EXTENTS
];
18
};
19
20
struct
user_namespace
{
21
struct
uid_gid_map
uid_map
;
22
struct
uid_gid_map
gid_map
;
23
struct
uid_gid_map
projid_map
;
24
struct
kref
kref
;
25
struct
user_namespace
*
parent
;
26
kuid_t
owner
;
27
kgid_t
group
;
28
};
29
30
extern
struct
user_namespace
init_user_ns
;
31
32
#ifdef CONFIG_USER_NS
33
34
static
inline
struct
user_namespace
*get_user_ns(
struct
user_namespace
*
ns
)
35
{
36
if
(ns)
37
kref_get(&ns->
kref
);
38
return
ns
;
39
}
40
41
extern
int
create_user_ns
(
struct
cred
*
new
);
42
extern
void
free_user_ns
(
struct
kref
*
kref
);
43
44
static
inline
void
put_user_ns(
struct
user_namespace
*ns)
45
{
46
if
(ns)
47
kref_put(&ns->
kref
,
free_user_ns
);
48
}
49
50
struct
seq_operations
;
51
extern
struct
seq_operations
proc_uid_seq_operations
;
52
extern
struct
seq_operations
proc_gid_seq_operations
;
53
extern
struct
seq_operations
proc_projid_seq_operations
;
54
extern
ssize_t
proc_uid_map_write
(
struct
file
*,
const
char
__user *,
size_t
, loff_t *);
55
extern
ssize_t
proc_gid_map_write
(
struct
file
*,
const
char
__user *,
size_t
, loff_t *);
56
extern
ssize_t
proc_projid_map_write
(
struct
file
*,
const
char
__user *,
size_t
, loff_t *);
57
#else
58
59
static
inline
struct
user_namespace
*get_user_ns(
struct
user_namespace
*ns)
60
{
61
return
&
init_user_ns
;
62
}
63
64
static
inline
int
create_user_ns
(
struct
cred
*
new
)
65
{
66
return
-
EINVAL
;
67
}
68
69
static
inline
void
put_user_ns(
struct
user_namespace
*ns)
70
{
71
}
72
73
#endif
74
75
#endif
/* _LINUX_USER_H */
Generated on Thu Jan 10 2013 14:52:46 for Linux Kernel by
1.8.2