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