rpc_msg.h
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035: #ifndef _RPC_MSG_H
036: #define _RPC_MSG_H 1
037:
038: #include <sys/cdefs.h>
039:
040: #include <rpc/xdr.h>
041: #include <rpc/clnt.h>
042:
043: #define RPC_MSG_VERSION ((u_long) 2)
044: #define RPC_SERVICE_PORT ((u_short) 2048)
045:
046: __BEGIN_DECLS
047:
048:
049:
050:
051:
052:
053:
054: enum msg_type {
055: CALL=0,
056: REPLY=1
057: };
058:
059: enum reply_stat {
060: MSG_ACCEPTED=0,
061: MSG_DENIED=1
062: };
063:
064: enum accept_stat {
065: SUCCESS=0,
066: PROG_UNAVAIL=1,
067: PROG_MISMATCH=2,
068: PROC_UNAVAIL=3,
069: GARBAGE_ARGS=4,
070: SYSTEM_ERR=5
071: };
072:
073: enum reject_stat {
074: RPC_MISMATCH=0,
075: AUTH_ERROR=1
076: };
077:
078:
079:
080:
081:
082:
083:
084:
085:
086:
087: struct accepted_reply {
088: struct opaque_auth ar_verf;
089: enum accept_stat ar_stat;
090: union {
091: struct {
092: u_long low;
093: u_long high;
094: } AR_versions;
095: struct {
096: caddr_t where;
097: xdrproc_t proc;
098: } AR_results;
099:
100: } ru;
101: #define ar_results ru.AR_results
102: #define ar_vers ru.AR_versions
103: };
104:
105:
106:
107:
108: struct rejected_reply {
109: enum reject_stat rj_stat;
110: union {
111: struct {
112: u_long low;
113: u_long high;
114: } RJ_versions;
115: enum auth_stat RJ_why;
116: } ru;
117: #define rj_vers ru.RJ_versions
118: #define rj_why ru.RJ_why
119: };
120:
121:
122:
123:
124: struct reply_body {
125: enum reply_stat rp_stat;
126: union {
127: struct accepted_reply RP_ar;
128: struct rejected_reply RP_dr;
129: } ru;
130: #define rp_acpt ru.RP_ar
131: #define rp_rjct ru.RP_dr
132: };
133:
134:
135:
136:
137: struct call_body {
138: u_long cb_rpcvers;
139: u_long cb_prog;
140: u_long cb_vers;
141: u_long cb_proc;
142: struct opaque_auth cb_cred;
143: struct opaque_auth cb_verf;
144: };
145:
146:
147:
148:
149: struct rpc_msg {
150: u_long rm_xid;
151: enum msg_type rm_direction;
152: union {
153: struct call_body RM_cmb;
154: struct reply_body RM_rmb;
155: } ru;
156: #define rm_call ru.RM_cmb
157: #define rm_reply ru.RM_rmb
158: };
159: #define acpted_rply ru.RM_rmb.ru.RP_ar
160: #define rjcted_rply ru.RM_rmb.ru.RP_dr
161:
162:
163:
164:
165:
166:
167:
168:
169: extern bool_t xdr_callmsg (XDR *__xdrs, struct rpc_msg *__cmsg) __THROW;
170:
171:
172:
173:
174:
175:
176:
177: extern bool_t xdr_callhdr (XDR *__xdrs, struct rpc_msg *__cmsg) __THROW;
178:
179:
180:
181:
182:
183:
184:
185: extern bool_t xdr_replymsg (XDR *__xdrs, struct rpc_msg *__rmsg) __THROW;
186:
187:
188:
189:
190:
191:
192:
193: extern void _seterr_reply (struct rpc_msg *__msg, struct rpc_err *__error)
194: __THROW;
195:
196: __END_DECLS
197:
198: #endif
199:
© Andrew Scott 2006 -
2025,
All Rights Reserved