OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [net/] [sunrpc/] [auth_null.c] - Diff between revs 1275 and 1765

Only display areas with differences | Details | Blame | View Log

Rev 1275 Rev 1765
/*
/*
 * linux/net/sunrpc/rpcauth_null.c
 * linux/net/sunrpc/rpcauth_null.c
 *
 *
 * AUTH_NULL authentication. Really :-)
 * AUTH_NULL authentication. Really :-)
 *
 *
 * Copyright (C) 1996, Olaf Kirch <okir@monad.swb.de>
 * Copyright (C) 1996, Olaf Kirch <okir@monad.swb.de>
 */
 */
 
 
#include <linux/types.h>
#include <linux/types.h>
#include <linux/slab.h>
#include <linux/slab.h>
#include <linux/socket.h>
#include <linux/socket.h>
#include <linux/in.h>
#include <linux/in.h>
#include <linux/utsname.h>
#include <linux/utsname.h>
#include <linux/sunrpc/clnt.h>
#include <linux/sunrpc/clnt.h>
 
 
#ifdef RPC_DEBUG
#ifdef RPC_DEBUG
# define RPCDBG_FACILITY        RPCDBG_AUTH
# define RPCDBG_FACILITY        RPCDBG_AUTH
#endif
#endif
 
 
static struct rpc_credops       null_credops;
static struct rpc_credops       null_credops;
 
 
static struct rpc_auth *
static struct rpc_auth *
nul_create(struct rpc_clnt *clnt)
nul_create(struct rpc_clnt *clnt)
{
{
        struct rpc_auth *auth;
        struct rpc_auth *auth;
 
 
        dprintk("RPC: creating NULL authenticator for client %p\n", clnt);
        dprintk("RPC: creating NULL authenticator for client %p\n", clnt);
        if (!(auth = (struct rpc_auth *) rpc_allocate(0, sizeof(*auth))))
        if (!(auth = (struct rpc_auth *) rpc_allocate(0, sizeof(*auth))))
                return NULL;
                return NULL;
        auth->au_cslack = 4;
        auth->au_cslack = 4;
        auth->au_rslack = 2;
        auth->au_rslack = 2;
        auth->au_ops = &authnull_ops;
        auth->au_ops = &authnull_ops;
        auth->au_expire = 1800 * HZ;
        auth->au_expire = 1800 * HZ;
        rpcauth_init_credcache(auth);
        rpcauth_init_credcache(auth);
 
 
        return (struct rpc_auth *) auth;
        return (struct rpc_auth *) auth;
}
}
 
 
static void
static void
nul_destroy(struct rpc_auth *auth)
nul_destroy(struct rpc_auth *auth)
{
{
        dprintk("RPC: destroying NULL authenticator %p\n", auth);
        dprintk("RPC: destroying NULL authenticator %p\n", auth);
        rpcauth_free_credcache(auth);
        rpcauth_free_credcache(auth);
        rpc_free(auth);
        rpc_free(auth);
}
}
 
 
/*
/*
 * Create NULL creds for current process
 * Create NULL creds for current process
 */
 */
static struct rpc_cred *
static struct rpc_cred *
nul_create_cred(int flags)
nul_create_cred(int flags)
{
{
        struct rpc_cred *cred;
        struct rpc_cred *cred;
 
 
        if (!(cred = (struct rpc_cred *) rpc_allocate(flags, sizeof(*cred))))
        if (!(cred = (struct rpc_cred *) rpc_allocate(flags, sizeof(*cred))))
                return NULL;
                return NULL;
        atomic_set(&cred->cr_count, 0);
        atomic_set(&cred->cr_count, 0);
        cred->cr_flags = RPCAUTH_CRED_UPTODATE;
        cred->cr_flags = RPCAUTH_CRED_UPTODATE;
        cred->cr_uid = current->uid;
        cred->cr_uid = current->uid;
        cred->cr_ops = &null_credops;
        cred->cr_ops = &null_credops;
 
 
        return cred;
        return cred;
}
}
 
 
/*
/*
 * Destroy cred handle.
 * Destroy cred handle.
 */
 */
static void
static void
nul_destroy_cred(struct rpc_cred *cred)
nul_destroy_cred(struct rpc_cred *cred)
{
{
        rpc_free(cred);
        rpc_free(cred);
}
}
 
 
/*
/*
 * Match cred handle against current process
 * Match cred handle against current process
 */
 */
static int
static int
nul_match(struct rpc_cred *cred, int taskflags)
nul_match(struct rpc_cred *cred, int taskflags)
{
{
        return 1;
        return 1;
}
}
 
 
/*
/*
 * Marshal credential.
 * Marshal credential.
 */
 */
static u32 *
static u32 *
nul_marshal(struct rpc_task *task, u32 *p, int ruid)
nul_marshal(struct rpc_task *task, u32 *p, int ruid)
{
{
        *p++ = htonl(RPC_AUTH_NULL);
        *p++ = htonl(RPC_AUTH_NULL);
        *p++ = 0;
        *p++ = 0;
        *p++ = htonl(RPC_AUTH_NULL);
        *p++ = htonl(RPC_AUTH_NULL);
        *p++ = 0;
        *p++ = 0;
 
 
        return p;
        return p;
}
}
 
 
/*
/*
 * Refresh credential. This is a no-op for AUTH_NULL
 * Refresh credential. This is a no-op for AUTH_NULL
 */
 */
static int
static int
nul_refresh(struct rpc_task *task)
nul_refresh(struct rpc_task *task)
{
{
        return task->tk_status = -EACCES;
        return task->tk_status = -EACCES;
}
}
 
 
static u32 *
static u32 *
nul_validate(struct rpc_task *task, u32 *p)
nul_validate(struct rpc_task *task, u32 *p)
{
{
        u32             n = ntohl(*p++);
        u32             n = ntohl(*p++);
 
 
        if (n != RPC_AUTH_NULL) {
        if (n != RPC_AUTH_NULL) {
                printk("RPC: bad verf flavor: %ld\n", (unsigned long) n);
                printk("RPC: bad verf flavor: %ld\n", (unsigned long) n);
                return NULL;
                return NULL;
        }
        }
        if ((n = ntohl(*p++)) != 0) {
        if ((n = ntohl(*p++)) != 0) {
                printk("RPC: bad verf size: %ld\n", (unsigned long) n);
                printk("RPC: bad verf size: %ld\n", (unsigned long) n);
                return NULL;
                return NULL;
        }
        }
 
 
        return p;
        return p;
}
}
 
 
struct rpc_authops      authnull_ops = {
struct rpc_authops      authnull_ops = {
        RPC_AUTH_NULL,
        RPC_AUTH_NULL,
#ifdef RPC_DEBUG
#ifdef RPC_DEBUG
        "NULL",
        "NULL",
#endif
#endif
        nul_create,
        nul_create,
        nul_destroy,
        nul_destroy,
        nul_create_cred
        nul_create_cred
};
};
 
 
static
static
struct rpc_credops      null_credops = {
struct rpc_credops      null_credops = {
        nul_destroy_cred,
        nul_destroy_cred,
        nul_match,
        nul_match,
        nul_marshal,
        nul_marshal,
        nul_refresh,
        nul_refresh,
        nul_validate
        nul_validate
};
};
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.