vserver 2.0 rc7
[linux-2.6.git] / net / sunrpc / auth_null.c
index f112f63..9b72d3a 100644 (file)
 # define RPCDBG_FACILITY       RPCDBG_AUTH
 #endif
 
-static struct rpc_credops      null_credops;
+static struct rpc_auth null_auth;
+static struct rpc_cred null_cred;
 
 static struct rpc_auth *
 nul_create(struct rpc_clnt *clnt, rpc_authflavor_t flavor)
 {
-       struct rpc_auth *auth;
-
-       dprintk("RPC: creating NULL authenticator for client %p\n", clnt);
-       if (!(auth = (struct rpc_auth *) kmalloc(sizeof(*auth),GFP_KERNEL)))
-               return NULL;
-       auth->au_cslack = 4;
-       auth->au_rslack = 2;
-       auth->au_ops = &authnull_ops;
-       auth->au_expire = 1800 * HZ;
-       rpcauth_init_credcache(auth);
-
-       return (struct rpc_auth *) auth;
+       atomic_inc(&null_auth.au_count);
+       return &null_auth;
 }
 
 static void
 nul_destroy(struct rpc_auth *auth)
 {
-       dprintk("RPC: destroying NULL authenticator %p\n", auth);
-       rpcauth_free_credcache(auth);
 }
 
 /*
- * Create NULL creds for current process
+ * Lookup NULL creds for current process
  */
 static struct rpc_cred *
-nul_create_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags)
+nul_lookup_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags)
 {
-       struct rpc_cred *cred;
-
-       if (!(cred = (struct rpc_cred *) kmalloc(sizeof(*cred),GFP_KERNEL)))
-               return NULL;
-       atomic_set(&cred->cr_count, 0);
-       cred->cr_flags = RPCAUTH_CRED_UPTODATE;
-       cred->cr_uid = acred->uid;
-       cred->cr_ops = &null_credops;
-
-       return cred;
+       return get_rpccred(&null_cred);
 }
 
 /*
@@ -68,7 +48,6 @@ nul_create_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags)
 static void
 nul_destroy_cred(struct rpc_cred *cred)
 {
-       kfree(cred);
 }
 
 /*
@@ -84,7 +63,7 @@ nul_match(struct auth_cred *acred, struct rpc_cred *cred, int taskflags)
  * Marshal credential.
  */
 static u32 *
-nul_marshal(struct rpc_task *task, u32 *p, int ruid)
+nul_marshal(struct rpc_task *task, u32 *p)
 {
        *p++ = htonl(RPC_AUTH_NULL);
        *p++ = 0;
@@ -125,7 +104,7 @@ nul_validate(struct rpc_task *task, u32 *p)
        return p;
 }
 
-struct rpc_authops     authnull_ops = {
+struct rpc_authops authnull_ops = {
        .owner          = THIS_MODULE,
        .au_flavor      = RPC_AUTH_NULL,
 #ifdef RPC_DEBUG
@@ -133,14 +112,32 @@ struct rpc_authops        authnull_ops = {
 #endif
        .create         = nul_create,
        .destroy        = nul_destroy,
-       .crcreate       = nul_create_cred,
+       .lookup_cred    = nul_lookup_cred,
+};
+
+static
+struct rpc_auth null_auth = {
+       .au_cslack      = 4,
+       .au_rslack      = 2,
+       .au_ops         = &authnull_ops,
 };
 
 static
 struct rpc_credops     null_credops = {
+       .cr_name        = "AUTH_NULL",
        .crdestroy      = nul_destroy_cred,
        .crmatch        = nul_match,
        .crmarshal      = nul_marshal,
        .crrefresh      = nul_refresh,
        .crvalidate     = nul_validate,
 };
+
+static
+struct rpc_cred null_cred = {
+       .cr_ops         = &null_credops,
+       .cr_count       = ATOMIC_INIT(1),
+       .cr_flags       = RPCAUTH_CRED_UPTODATE,
+#ifdef RPC_DEBUG
+       .cr_magic       = RPCAUTH_CRED_MAGIC,
+#endif
+};