The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/rpc/rpc_msg.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

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

Cache object: 3e016675dbe11e3f88add91a8ee5082f


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.