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