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