~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to net/sunrpc/auth_null.c

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * linux/net/sunrpc/auth_null.c
 
3
 *
 
4
 * AUTH_NULL authentication. Really :-)
 
5
 *
 
6
 * Copyright (C) 1996, Olaf Kirch <okir@monad.swb.de>
 
7
 */
 
8
 
 
9
#include <linux/types.h>
 
10
#include <linux/module.h>
 
11
#include <linux/sunrpc/clnt.h>
 
12
 
 
13
#ifdef RPC_DEBUG
 
14
# define RPCDBG_FACILITY        RPCDBG_AUTH
 
15
#endif
 
16
 
 
17
static struct rpc_auth null_auth;
 
18
static struct rpc_cred null_cred;
 
19
 
 
20
static struct rpc_auth *
 
21
nul_create(struct rpc_clnt *clnt, rpc_authflavor_t flavor)
 
22
{
 
23
        atomic_inc(&null_auth.au_count);
 
24
        return &null_auth;
 
25
}
 
26
 
 
27
static void
 
28
nul_destroy(struct rpc_auth *auth)
 
29
{
 
30
}
 
31
 
 
32
/*
 
33
 * Lookup NULL creds for current process
 
34
 */
 
35
static struct rpc_cred *
 
36
nul_lookup_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags)
 
37
{
 
38
        return get_rpccred(&null_cred);
 
39
}
 
40
 
 
41
/*
 
42
 * Destroy cred handle.
 
43
 */
 
44
static void
 
45
nul_destroy_cred(struct rpc_cred *cred)
 
46
{
 
47
}
 
48
 
 
49
/*
 
50
 * Match cred handle against current process
 
51
 */
 
52
static int
 
53
nul_match(struct auth_cred *acred, struct rpc_cred *cred, int taskflags)
 
54
{
 
55
        return 1;
 
56
}
 
57
 
 
58
/*
 
59
 * Marshal credential.
 
60
 */
 
61
static __be32 *
 
62
nul_marshal(struct rpc_task *task, __be32 *p)
 
63
{
 
64
        *p++ = htonl(RPC_AUTH_NULL);
 
65
        *p++ = 0;
 
66
        *p++ = htonl(RPC_AUTH_NULL);
 
67
        *p++ = 0;
 
68
 
 
69
        return p;
 
70
}
 
71
 
 
72
/*
 
73
 * Refresh credential. This is a no-op for AUTH_NULL
 
74
 */
 
75
static int
 
76
nul_refresh(struct rpc_task *task)
 
77
{
 
78
        set_bit(RPCAUTH_CRED_UPTODATE, &task->tk_rqstp->rq_cred->cr_flags);
 
79
        return 0;
 
80
}
 
81
 
 
82
static __be32 *
 
83
nul_validate(struct rpc_task *task, __be32 *p)
 
84
{
 
85
        rpc_authflavor_t        flavor;
 
86
        u32                     size;
 
87
 
 
88
        flavor = ntohl(*p++);
 
89
        if (flavor != RPC_AUTH_NULL) {
 
90
                printk("RPC: bad verf flavor: %u\n", flavor);
 
91
                return NULL;
 
92
        }
 
93
 
 
94
        size = ntohl(*p++);
 
95
        if (size != 0) {
 
96
                printk("RPC: bad verf size: %u\n", size);
 
97
                return NULL;
 
98
        }
 
99
 
 
100
        return p;
 
101
}
 
102
 
 
103
const struct rpc_authops authnull_ops = {
 
104
        .owner          = THIS_MODULE,
 
105
        .au_flavor      = RPC_AUTH_NULL,
 
106
        .au_name        = "NULL",
 
107
        .create         = nul_create,
 
108
        .destroy        = nul_destroy,
 
109
        .lookup_cred    = nul_lookup_cred,
 
110
};
 
111
 
 
112
static
 
113
struct rpc_auth null_auth = {
 
114
        .au_cslack      = 4,
 
115
        .au_rslack      = 2,
 
116
        .au_ops         = &authnull_ops,
 
117
        .au_flavor      = RPC_AUTH_NULL,
 
118
        .au_count       = ATOMIC_INIT(0),
 
119
};
 
120
 
 
121
static
 
122
const struct rpc_credops null_credops = {
 
123
        .cr_name        = "AUTH_NULL",
 
124
        .crdestroy      = nul_destroy_cred,
 
125
        .crbind         = rpcauth_generic_bind_cred,
 
126
        .crmatch        = nul_match,
 
127
        .crmarshal      = nul_marshal,
 
128
        .crrefresh      = nul_refresh,
 
129
        .crvalidate     = nul_validate,
 
130
};
 
131
 
 
132
static
 
133
struct rpc_cred null_cred = {
 
134
        .cr_lru         = LIST_HEAD_INIT(null_cred.cr_lru),
 
135
        .cr_auth        = &null_auth,
 
136
        .cr_ops         = &null_credops,
 
137
        .cr_count       = ATOMIC_INIT(1),
 
138
        .cr_flags       = 1UL << RPCAUTH_CRED_UPTODATE,
 
139
#ifdef RPC_DEBUG
 
140
        .cr_magic       = RPCAUTH_CRED_MAGIC,
 
141
#endif
 
142
};