source: rtems/c/src/lib/librpc/svc_auth.c @ 5dc30fb

4.104.114.84.95
Last change on this file since 5dc30fb was f470989, checked in by Joel Sherrill <joel.sherrill@…>, on 03/31/99 at 22:51:44

Removed warning.

  • Property mode set to 100644
File size: 3.8 KB
Line 
1
2#if !defined(lint) && defined(SCCSIDS)
3static char sccsid[] = "@(#)svc_auth.c  2.1 88/08/07 4.0 RPCSRC; from 1.19 87/08/11 Copyr 1984 Sun Micro";
4#endif
5/*
6 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
7 * unrestricted use provided that this legend is included on all tape
8 * media and as a part of the software program in whole or part.  Users
9 * may copy or modify Sun RPC without charge, but are not authorized
10 * to license or distribute it to anyone else except as part of a product or
11 * program developed by the user.
12 *
13 * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
14 * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
15 * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
16 *
17 * Sun RPC is provided with no support and without any obligation on the
18 * part of Sun Microsystems, Inc. to assist in its use, correction,
19 * modification or enhancement.
20 *
21 * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
22 * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
23 * OR ANY PART THEREOF.
24 *
25 * In no event will Sun Microsystems, Inc. be liable for any lost revenue
26 * or profits or other special, indirect and consequential damages, even if
27 * Sun has been advised of the possibility of such damages.
28 *
29 * Sun Microsystems, Inc.
30 * 2550 Garcia Avenue
31 * Mountain View, California  94043
32 */
33
34/*
35 * svc_auth_nodes.c, Server-side rpc authenticator interface,
36 * *WITHOUT* DES authentication.
37 *
38 * Copyright (C) 1984, Sun Microsystems, Inc.
39 */
40
41#include <rpc/rpc.h>
42
43/*
44 * svcauthsw is the bdevsw of server side authentication.
45 *
46 * Server side authenticators are called from authenticate by
47 * using the client auth struct flavor field to index into svcauthsw.
48 * The server auth flavors must implement a routine that looks 
49 * like:
50 *
51 *      enum auth_stat
52 *      flavorx_auth(rqst, msg)
53 *              register struct svc_req *rqst;
54 *              register struct rpc_msg *msg;
55 *
56 */
57
58enum auth_stat _svcauth_null();         /* no authentication */
59enum auth_stat _svcauth_unix();         /* unix style (uid, gids) */
60enum auth_stat _svcauth_short();        /* short hand unix style */
61
62static struct {
63        enum auth_stat (*authenticator)();
64} svcauthsw[] = {
65  {
66        _svcauth_null,                  /* AUTH_NULL */
67#ifdef MR
68        _svcauth_unix,                  /* AUTH_UNIX */
69        _svcauth_short                  /* AUTH_SHORT */
70#endif
71  }
72};
73
74#ifdef MR
75#define AUTH_MAX        2               /* HIGHEST AUTH NUMBER */
76#else
77#define AUTH_MAX        0               /* HIGHEST AUTH NUMBER */
78#endif
79
80
81/*
82 * The call rpc message, msg has been obtained from the wire.  The msg contains
83 * the raw form of credentials and verifiers.  authenticate returns AUTH_OK
84 * if the msg is successfully authenticated.  If AUTH_OK then the routine also
85 * does the following things:
86 * set rqst->rq_xprt->verf to the appropriate response verifier;
87 * sets rqst->rq_client_cred to the "cooked" form of the credentials.
88 *
89 * NB: rqst->rq_cxprt->verf must be pre-alloctaed;
90 * its length is set appropriately.
91 *
92 * The caller still owns and is responsible for msg->u.cmb.cred and
93 * msg->u.cmb.verf.  The authentication system retains ownership of
94 * rqst->rq_client_cred, the cooked credentials.
95 *
96 * There is an assumption that any flavour less than AUTH_NULL is
97 * invalid.
98 */
99enum auth_stat
100_authenticate(rqst, msg)
101        register struct svc_req *rqst;
102        struct rpc_msg *msg;
103{
104        register int cred_flavor;
105
106        rqst->rq_cred = msg->rm_call.cb_cred;
107        rqst->rq_xprt->xp_verf.oa_flavor = _null_auth.oa_flavor;
108        rqst->rq_xprt->xp_verf.oa_length = 0;
109        cred_flavor = rqst->rq_cred.oa_flavor;
110        if ((cred_flavor <= AUTH_MAX) && (cred_flavor >= AUTH_NULL)) {
111                return ((*(svcauthsw[cred_flavor].authenticator))(rqst, msg));
112        }
113
114        return (AUTH_REJECTEDCRED);
115}
116
117enum auth_stat
118_svcauth_null(/*rqst, msg*/)
119        /*struct svc_req *rqst;
120        struct rpc_msg *msg;*/
121{
122
123        return (AUTH_OK);
124}
Note: See TracBrowser for help on using the repository browser.