00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044 #ifndef _RPC_RPCMSG_H
00045 #define _RPC_RPCMSG_H
00046
00047 #define RPC_MSG_VERSION ((u_long) 2)
00048 #define RPC_SERVICE_PORT ((u_short) 2048)
00049
00050
00051
00052
00053
00054
00055
00056 enum msg_type {
00057 CALL=0,
00058 REPLY=1
00059 };
00060
00061 enum reply_stat {
00062 MSG_ACCEPTED=0,
00063 MSG_DENIED=1
00064 };
00065
00066 enum accept_stat {
00067 SUCCESS=0,
00068 PROG_UNAVAIL=1,
00069 PROG_MISMATCH=2,
00070 PROC_UNAVAIL=3,
00071 GARBAGE_ARGS=4,
00072 SYSTEM_ERR=5
00073 };
00074
00075 enum reject_stat {
00076 RPC_MISMATCH=0,
00077 AUTH_ERROR=1
00078 };
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089 struct accepted_reply {
00090 struct opaque_auth ar_verf;
00091 enum accept_stat ar_stat;
00092 union {
00093 struct {
00094 u_int32_t low;
00095 u_int32_t high;
00096 } AR_versions;
00097 struct {
00098 caddr_t where;
00099 xdrproc_t proc;
00100 } AR_results;
00101
00102 } ru;
00103 #define ar_results ru.AR_results
00104 #define ar_vers ru.AR_versions
00105 };
00106
00107
00108
00109
00110 struct rejected_reply {
00111 enum reject_stat rj_stat;
00112 union {
00113 struct {
00114 u_int32_t low;
00115 u_int32_t high;
00116 } RJ_versions;
00117 enum auth_stat RJ_why;
00118 } ru;
00119 #define rj_vers ru.RJ_versions
00120 #define rj_why ru.RJ_why
00121 };
00122
00123
00124
00125
00126 struct reply_body {
00127 enum reply_stat rp_stat;
00128 union {
00129 struct accepted_reply RP_ar;
00130 struct rejected_reply RP_dr;
00131 } ru;
00132 #define rp_acpt ru.RP_ar
00133 #define rp_rjct ru.RP_dr
00134 };
00135
00136
00137
00138
00139 struct call_body {
00140 u_int32_t cb_rpcvers;
00141 u_int32_t cb_prog;
00142 u_int32_t cb_vers;
00143 u_int32_t cb_proc;
00144 struct opaque_auth cb_cred;
00145 struct opaque_auth cb_verf;
00146 };
00147
00148
00149
00150
00151 struct rpc_msg {
00152 u_int32_t rm_xid;
00153 enum msg_type rm_direction;
00154 union {
00155 struct call_body RM_cmb;
00156 struct reply_body RM_rmb;
00157 } ru;
00158 #define rm_call ru.RM_cmb
00159 #define rm_reply ru.RM_rmb
00160 };
00161 #define acpted_rply ru.RM_rmb.ru.RP_ar
00162 #define rjcted_rply ru.RM_rmb.ru.RP_dr
00163
00164 __BEGIN_DECLS
00165
00166
00167
00168
00169
00170
00171 extern bool_t xdr_callmsg __P((XDR *, struct rpc_msg *));
00172
00173
00174
00175
00176
00177
00178
00179 extern bool_t xdr_callhdr __P((XDR *, struct rpc_msg *));
00180
00181
00182
00183
00184
00185
00186
00187 extern bool_t xdr_replymsg __P((XDR *, struct rpc_msg *));
00188
00189
00190
00191
00192
00193
00194
00195 extern void _seterr_reply __P((struct rpc_msg *, struct rpc_err *));
00196 __END_DECLS
00197
00198 #endif