Annotation of 43BSD/contrib/sunrpc/rpc_msg.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
                      3:  * unrestricted use provided that this legend is included on all tape
                      4:  * media and as a part of the software program in whole or part.  Users
                      5:  * may copy or modify Sun RPC without charge, but are not authorized
                      6:  * to license or distribute it to anyone else except as part of a product or
                      7:  * program developed by the user.
                      8:  * 
                      9:  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
                     10:  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
                     11:  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
                     12:  * 
                     13:  * Sun RPC is provided with no support and without any obligation on the
                     14:  * part of Sun Microsystems, Inc. to assist in its use, correction,
                     15:  * modification or enhancement.
                     16:  * 
                     17:  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
                     18:  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
                     19:  * OR ANY PART THEREOF.
                     20:  * 
                     21:  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
                     22:  * or profits or other special, indirect and consequential damages, even if
                     23:  * Sun has been advised of the possibility of such damages.
                     24:  * 
                     25:  * Sun Microsystems, Inc.
                     26:  * 2550 Garcia Avenue
                     27:  * Mountain View, California  94043
                     28:  */
                     29: /*      @(#)rpc_msg.h 1.3 85/03/14 SMI      */
                     30: 
                     31: /*
                     32:  * rpc_msg.h
                     33:  * rpc message definition
                     34:  *
                     35:  * Copyright (C) 1984, Sun Microsystems, Inc.
                     36:  */
                     37: 
                     38: #define RPC_MSG_VERSION                ((u_long) 2)
                     39: #define RPC_SERVICE_PORT       ((u_short) 2048)
                     40: 
                     41: /*
                     42:  * Bottom up definition of an rpc message.
                     43:  * NOTE: call and reply use the same overall stuct but
                     44:  * different parts of unions within it.
                     45:  */
                     46: 
                     47: enum msg_type {
                     48:        CALL=0,
                     49:        REPLY=1
                     50: };
                     51: 
                     52: enum reply_stat {
                     53:        MSG_ACCEPTED=0,
                     54:        MSG_DENIED=1
                     55: };
                     56: 
                     57: enum accept_stat {
                     58:        SUCCESS=0,
                     59:        PROG_UNAVAIL=1,
                     60:        PROG_MISMATCH=2,
                     61:        PROC_UNAVAIL=3,
                     62:        GARBAGE_ARGS=4,
                     63:        SYSTEM_ERR=5
                     64: };
                     65: 
                     66: enum reject_stat {
                     67:        RPC_MISMATCH=0,
                     68:        AUTH_ERROR=1
                     69: };
                     70: 
                     71: /*
                     72:  * Reply part of an rpc exchange
                     73:  */
                     74: 
                     75: /*
                     76:  * Reply to an rpc request that was accepted by the server.
                     77:  * Note: there could be an error even though the request was
                     78:  * accepted.
                     79:  */
                     80: struct accepted_reply {
                     81:        struct opaque_auth      ar_verf;
                     82:        enum accept_stat        ar_stat;
                     83:        union {
                     84:                struct {
                     85:                        u_long  low;
                     86:                        u_long  high;
                     87:                } AR_versions;
                     88:                struct {
                     89:                        caddr_t where;
                     90:                        xdrproc_t proc;
                     91:                } AR_results;
                     92:                /* and many other null cases */
                     93:        } ru;
                     94: #define        ar_results      ru.AR_results
                     95: #define        ar_vers         ru.AR_versions
                     96: };
                     97: 
                     98: /*
                     99:  * Reply to an rpc request that was rejected by the server.
                    100:  */
                    101: struct rejected_reply {
                    102:        enum reject_stat rj_stat;
                    103:        union {
                    104:                struct {
                    105:                        u_long low;
                    106:                        u_long high;
                    107:                } RJ_versions;
                    108:                enum auth_stat RJ_why;  /* why authentication did not work */
                    109:        } ru;
                    110: #define        rj_vers ru.RJ_versions
                    111: #define        rj_why  ru.RJ_why
                    112: };
                    113: 
                    114: /*
                    115:  * Body of a reply to an rpc request.
                    116:  */
                    117: struct reply_body {
                    118:        enum reply_stat rp_stat;
                    119:        union {
                    120:                struct accepted_reply RP_ar;
                    121:                struct rejected_reply RP_dr;
                    122:        } ru;
                    123: #define        rp_acpt ru.RP_ar
                    124: #define        rp_rjct ru.RP_dr
                    125: };
                    126: 
                    127: /*
                    128:  * Body of an rpc request call.
                    129:  */
                    130: struct call_body {
                    131:        u_long cb_rpcvers;      /* must be equal to two */
                    132:        u_long cb_prog;
                    133:        u_long cb_vers;
                    134:        u_long cb_proc;
                    135:        struct opaque_auth cb_cred;
                    136:        struct opaque_auth cb_verf; /* protocol specific - provided by client */
                    137: };
                    138: 
                    139: /*
                    140:  * The rpc message
                    141:  */
                    142: struct rpc_msg {
                    143:        u_long                  rm_xid;
                    144:        enum msg_type           rm_direction;
                    145:        union {
                    146:                struct call_body RM_cmb;
                    147:                struct reply_body RM_rmb;
                    148:        } ru;
                    149: #define        rm_call         ru.RM_cmb
                    150: #define        rm_reply        ru.RM_rmb
                    151: };
                    152: #define        acpted_rply     ru.RM_rmb.ru.RP_ar
                    153: #define        rjcted_rply     ru.RM_rmb.ru.RP_dr
                    154: 
                    155: 
                    156: /*
                    157:  * XDR routine to handle a rpc message.
                    158:  * xdr_callmsg(xdrs, cmsg)
                    159:  *     XDR *xdrs;
                    160:  *     struct rpc_msg *cmsg;
                    161:  */
                    162: extern bool_t  xdr_callmsg();
                    163: 
                    164: /*
                    165:  * XDR routine to pre-serialize the static part of a rpc message.
                    166:  * xdr_callhdr(xdrs, cmsg)
                    167:  *     XDR *xdrs;
                    168:  *     struct rpc_msg *cmsg;
                    169:  */
                    170: extern bool_t  xdr_callhdr();
                    171: 
                    172: /*
                    173:  * XDR routine to handle a rpc reply.
                    174:  * xdr_replymsg(xdrs, rmsg)
                    175:  *     XDR *xdrs;
                    176:  *     struct rpc_msg *rmsg;
                    177:  */
                    178: extern bool_t  xdr_replymsg();
                    179: 
                    180: /*
                    181:  * Fills in the error part of a reply message.
                    182:  * _seterr_reply(msg, error)
                    183:  *     struct rpc_msg *msg;
                    184:  *     struct rpc_err *error;
                    185:  */
                    186: extern void    _seterr_reply();

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.