xref: /minix3/external/bsd/tcpdump/dist/rpc_msg.h (revision b636d99d91c3d54204248f643c14627405d4afd1)
1*b636d99dSDavid van Moolenbroek /*
2*b636d99dSDavid van Moolenbroek  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
3*b636d99dSDavid van Moolenbroek  * unrestricted use provided that this legend is included on all tape
4*b636d99dSDavid van Moolenbroek  * media and as a part of the software program in whole or part.  Users
5*b636d99dSDavid van Moolenbroek  * may copy or modify Sun RPC without charge, but are not authorized
6*b636d99dSDavid van Moolenbroek  * to license or distribute it to anyone else except as part of a product or
7*b636d99dSDavid van Moolenbroek  * program developed by the user.
8*b636d99dSDavid van Moolenbroek  *
9*b636d99dSDavid van Moolenbroek  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
10*b636d99dSDavid van Moolenbroek  * WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
11*b636d99dSDavid van Moolenbroek  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
12*b636d99dSDavid van Moolenbroek  *
13*b636d99dSDavid van Moolenbroek  * Sun RPC is provided with no support and without any obligation on the
14*b636d99dSDavid van Moolenbroek  * part of Sun Microsystems, Inc. to assist in its use, correction,
15*b636d99dSDavid van Moolenbroek  * modification or enhancement.
16*b636d99dSDavid van Moolenbroek  *
17*b636d99dSDavid van Moolenbroek  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
18*b636d99dSDavid van Moolenbroek  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
19*b636d99dSDavid van Moolenbroek  * OR ANY PART THEREOF.
20*b636d99dSDavid van Moolenbroek  *
21*b636d99dSDavid van Moolenbroek  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
22*b636d99dSDavid van Moolenbroek  * or profits or other special, indirect and consequential damages, even if
23*b636d99dSDavid van Moolenbroek  * Sun has been advised of the possibility of such damages.
24*b636d99dSDavid van Moolenbroek  *
25*b636d99dSDavid van Moolenbroek  * Sun Microsystems, Inc.
26*b636d99dSDavid van Moolenbroek  * 2550 Garcia Avenue
27*b636d99dSDavid van Moolenbroek  * Mountain View, California  94043
28*b636d99dSDavid van Moolenbroek  *
29*b636d99dSDavid van Moolenbroek  *	from: @(#)rpc_msg.h 1.7 86/07/16 SMI
30*b636d99dSDavid van Moolenbroek  *	from: @(#)rpc_msg.h	2.1 88/07/29 4.0 RPCSRC
31*b636d99dSDavid van Moolenbroek  * $FreeBSD: src/include/rpc/rpc_msg.h,v 1.11.2.1 1999/08/29 14:39:07 peter Exp $
32*b636d99dSDavid van Moolenbroek  */
33*b636d99dSDavid van Moolenbroek 
34*b636d99dSDavid van Moolenbroek /*
35*b636d99dSDavid van Moolenbroek  * rpc_msg.h
36*b636d99dSDavid van Moolenbroek  * rpc message definition
37*b636d99dSDavid van Moolenbroek  *
38*b636d99dSDavid van Moolenbroek  * Copyright (C) 1984, Sun Microsystems, Inc.
39*b636d99dSDavid van Moolenbroek  */
40*b636d99dSDavid van Moolenbroek 
41*b636d99dSDavid van Moolenbroek #define SUNRPC_MSG_VERSION	((uint32_t) 2)
42*b636d99dSDavid van Moolenbroek 
43*b636d99dSDavid van Moolenbroek /*
44*b636d99dSDavid van Moolenbroek  * Bottom up definition of an rpc message.
45*b636d99dSDavid van Moolenbroek  * NOTE: call and reply use the same overall stuct but
46*b636d99dSDavid van Moolenbroek  * different parts of unions within it.
47*b636d99dSDavid van Moolenbroek  */
48*b636d99dSDavid van Moolenbroek 
49*b636d99dSDavid van Moolenbroek enum sunrpc_msg_type {
50*b636d99dSDavid van Moolenbroek 	SUNRPC_CALL=0,
51*b636d99dSDavid van Moolenbroek 	SUNRPC_REPLY=1
52*b636d99dSDavid van Moolenbroek };
53*b636d99dSDavid van Moolenbroek 
54*b636d99dSDavid van Moolenbroek enum sunrpc_reply_stat {
55*b636d99dSDavid van Moolenbroek 	SUNRPC_MSG_ACCEPTED=0,
56*b636d99dSDavid van Moolenbroek 	SUNRPC_MSG_DENIED=1
57*b636d99dSDavid van Moolenbroek };
58*b636d99dSDavid van Moolenbroek 
59*b636d99dSDavid van Moolenbroek enum sunrpc_accept_stat {
60*b636d99dSDavid van Moolenbroek 	SUNRPC_SUCCESS=0,
61*b636d99dSDavid van Moolenbroek 	SUNRPC_PROG_UNAVAIL=1,
62*b636d99dSDavid van Moolenbroek 	SUNRPC_PROG_MISMATCH=2,
63*b636d99dSDavid van Moolenbroek 	SUNRPC_PROC_UNAVAIL=3,
64*b636d99dSDavid van Moolenbroek 	SUNRPC_GARBAGE_ARGS=4,
65*b636d99dSDavid van Moolenbroek 	SUNRPC_SYSTEM_ERR=5
66*b636d99dSDavid van Moolenbroek };
67*b636d99dSDavid van Moolenbroek 
68*b636d99dSDavid van Moolenbroek enum sunrpc_reject_stat {
69*b636d99dSDavid van Moolenbroek 	SUNRPC_RPC_MISMATCH=0,
70*b636d99dSDavid van Moolenbroek 	SUNRPC_AUTH_ERROR=1
71*b636d99dSDavid van Moolenbroek };
72*b636d99dSDavid van Moolenbroek 
73*b636d99dSDavid van Moolenbroek /*
74*b636d99dSDavid van Moolenbroek  * Reply part of an rpc exchange
75*b636d99dSDavid van Moolenbroek  */
76*b636d99dSDavid van Moolenbroek 
77*b636d99dSDavid van Moolenbroek /*
78*b636d99dSDavid van Moolenbroek  * Reply to an rpc request that was rejected by the server.
79*b636d99dSDavid van Moolenbroek  */
80*b636d99dSDavid van Moolenbroek struct sunrpc_rejected_reply {
81*b636d99dSDavid van Moolenbroek 	uint32_t		 rj_stat;	/* enum reject_stat */
82*b636d99dSDavid van Moolenbroek 	union {
83*b636d99dSDavid van Moolenbroek 		struct {
84*b636d99dSDavid van Moolenbroek 			uint32_t low;
85*b636d99dSDavid van Moolenbroek 			uint32_t high;
86*b636d99dSDavid van Moolenbroek 		} RJ_versions;
87*b636d99dSDavid van Moolenbroek 		uint32_t RJ_why;  /* enum auth_stat - why authentication did not work */
88*b636d99dSDavid van Moolenbroek 	} ru;
89*b636d99dSDavid van Moolenbroek #define	rj_vers	ru.RJ_versions
90*b636d99dSDavid van Moolenbroek #define	rj_why	ru.RJ_why
91*b636d99dSDavid van Moolenbroek };
92*b636d99dSDavid van Moolenbroek 
93*b636d99dSDavid van Moolenbroek /*
94*b636d99dSDavid van Moolenbroek  * Body of a reply to an rpc request.
95*b636d99dSDavid van Moolenbroek  */
96*b636d99dSDavid van Moolenbroek struct sunrpc_reply_body {
97*b636d99dSDavid van Moolenbroek 	uint32_t	rp_stat;		/* enum reply_stat */
98*b636d99dSDavid van Moolenbroek 	struct sunrpc_rejected_reply rp_reject;	/* if rejected */
99*b636d99dSDavid van Moolenbroek };
100*b636d99dSDavid van Moolenbroek 
101*b636d99dSDavid van Moolenbroek /*
102*b636d99dSDavid van Moolenbroek  * Body of an rpc request call.
103*b636d99dSDavid van Moolenbroek  */
104*b636d99dSDavid van Moolenbroek struct sunrpc_call_body {
105*b636d99dSDavid van Moolenbroek 	uint32_t cb_rpcvers;	/* must be equal to two */
106*b636d99dSDavid van Moolenbroek 	uint32_t cb_prog;
107*b636d99dSDavid van Moolenbroek 	uint32_t cb_vers;
108*b636d99dSDavid van Moolenbroek 	uint32_t cb_proc;
109*b636d99dSDavid van Moolenbroek 	struct sunrpc_opaque_auth cb_cred;
110*b636d99dSDavid van Moolenbroek 	/* followed by opaque verifier */
111*b636d99dSDavid van Moolenbroek };
112*b636d99dSDavid van Moolenbroek 
113*b636d99dSDavid van Moolenbroek /*
114*b636d99dSDavid van Moolenbroek  * The rpc message
115*b636d99dSDavid van Moolenbroek  */
116*b636d99dSDavid van Moolenbroek struct sunrpc_msg {
117*b636d99dSDavid van Moolenbroek 	uint32_t		rm_xid;
118*b636d99dSDavid van Moolenbroek 	uint32_t		rm_direction;	/* enum msg_type */
119*b636d99dSDavid van Moolenbroek 	union {
120*b636d99dSDavid van Moolenbroek 		struct sunrpc_call_body RM_cmb;
121*b636d99dSDavid van Moolenbroek 		struct sunrpc_reply_body RM_rmb;
122*b636d99dSDavid van Moolenbroek 	} ru;
123*b636d99dSDavid van Moolenbroek #define	rm_call		ru.RM_cmb
124*b636d99dSDavid van Moolenbroek #define	rm_reply	ru.RM_rmb
125*b636d99dSDavid van Moolenbroek };
126*b636d99dSDavid van Moolenbroek #define	acpted_rply	ru.RM_rmb.ru.RP_ar
127*b636d99dSDavid van Moolenbroek #define	rjcted_rply	ru.RM_rmb.ru.RP_dr
128