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
net
ceph
auth_none.c
Go to the documentation of this file.
1
2
#include <
linux/ceph/ceph_debug.h
>
3
4
#include <
linux/err.h
>
5
#include <linux/module.h>
6
#include <linux/random.h>
7
#include <linux/slab.h>
8
9
#include <
linux/ceph/decode.h
>
10
#include <
linux/ceph/auth.h
>
11
12
#include "
auth_none.h
"
13
14
static
void
reset
(
struct
ceph_auth_client
*
ac
)
15
{
16
struct
ceph_auth_none_info
*
xi
= ac->
private
;
17
18
xi->
starting
=
true
;
19
xi->
built_authorizer
=
false
;
20
}
21
22
static
void
destroy
(
struct
ceph_auth_client
*
ac
)
23
{
24
kfree
(ac->
private
);
25
ac->
private
=
NULL
;
26
}
27
28
static
int
is_authenticated(
struct
ceph_auth_client
*
ac
)
29
{
30
struct
ceph_auth_none_info
*
xi
= ac->
private
;
31
32
return
!xi->
starting
;
33
}
34
35
static
int
should_authenticate(
struct
ceph_auth_client
*
ac
)
36
{
37
struct
ceph_auth_none_info
*
xi
= ac->
private
;
38
39
return
xi->
starting
;
40
}
41
42
/*
43
* the generic auth code decode the global_id, and we carry no actual
44
* authenticate state, so nothing happens here.
45
*/
46
static
int
handle_reply(
struct
ceph_auth_client
*
ac
,
int
result
,
47
void
*
buf
,
void
*
end
)
48
{
49
struct
ceph_auth_none_info
*
xi
= ac->
private
;
50
51
xi->
starting
=
false
;
52
return
result
;
53
}
54
55
/*
56
* build an 'authorizer' with our entity_name and global_id. we can
57
* reuse a single static copy since it is identical for all services
58
* we connect to.
59
*/
60
static
int
ceph_auth_none_create_authorizer(
61
struct
ceph_auth_client
*
ac
,
int
peer_type,
62
struct
ceph_auth_handshake
*
auth
)
63
{
64
struct
ceph_auth_none_info
*ai = ac->
private
;
65
struct
ceph_none_authorizer
*au = &ai->
au
;
66
void
*
p
, *
end
;
67
int
ret
;
68
69
if
(!ai->
built_authorizer
) {
70
p = au->
buf
;
71
end = p +
sizeof
(au->
buf
);
72
ceph_encode_8(&p, 1);
73
ret =
ceph_entity_name_encode
(ac->
name
, &p, end - 8);
74
if
(ret < 0)
75
goto
bad
;
76
ceph_decode_need
(&p, end,
sizeof
(
u64
), bad2);
77
ceph_encode_64(&p, ac->
global_id
);
78
au->
buf_len
= p - (
void
*)au->
buf
;
79
ai->
built_authorizer
=
true
;
80
dout
(
"built authorizer len %d\n"
, au->
buf_len
);
81
}
82
83
auth->
authorizer
= (
struct
ceph_authorizer *) au;
84
auth->
authorizer_buf
= au->
buf
;
85
auth->
authorizer_buf_len
= au->
buf_len
;
86
auth->
authorizer_reply_buf
= au->
reply_buf
;
87
auth->
authorizer_reply_buf_len
=
sizeof
(au->
reply_buf
);
88
89
return
0;
90
91
bad2:
92
ret = -
ERANGE
;
93
bad
:
94
return
ret
;
95
}
96
97
static
void
ceph_auth_none_destroy_authorizer(
struct
ceph_auth_client
*ac,
98
struct
ceph_authorizer *
a
)
99
{
100
/* nothing to do */
101
}
102
103
static
const
struct
ceph_auth_client_ops
ceph_auth_none_ops = {
104
.name =
"none"
,
105
.reset =
reset
,
106
.destroy =
destroy
,
107
.is_authenticated =
is_authenticated
,
108
.should_authenticate =
should_authenticate
,
109
.handle_reply =
handle_reply
,
110
.create_authorizer = ceph_auth_none_create_authorizer,
111
.destroy_authorizer = ceph_auth_none_destroy_authorizer,
112
};
113
114
int
ceph_auth_none_init
(
struct
ceph_auth_client
*ac)
115
{
116
struct
ceph_auth_none_info
*
xi
;
117
118
dout
(
"ceph_auth_none_init %p\n"
, ac);
119
xi = kzalloc(
sizeof
(*xi),
GFP_NOFS
);
120
if
(!xi)
121
return
-
ENOMEM
;
122
123
xi->
starting
=
true
;
124
xi->
built_authorizer
=
false
;
125
126
ac->
protocol
=
CEPH_AUTH_NONE
;
127
ac->
private
= xi;
128
ac->
ops
= &ceph_auth_none_ops;
129
return
0;
130
}
131
Generated on Thu Jan 10 2013 14:57:21 for Linux Kernel by
1.8.2