xref: /freebsd/contrib/tcpdump/rpc_msg.h (revision 1de50e9f417616cf647a842762944a2301cb1415)
11de50e9fSSam Leffler /* @(#) $Header: /tcpdump/master/tcpdump/rpc_msg.h,v 1.1 2004/12/27 00:41:32 guy Exp $ (LBL) */
21de50e9fSSam Leffler /*
31de50e9fSSam Leffler  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
41de50e9fSSam Leffler  * unrestricted use provided that this legend is included on all tape
51de50e9fSSam Leffler  * media and as a part of the software program in whole or part.  Users
61de50e9fSSam Leffler  * may copy or modify Sun RPC without charge, but are not authorized
71de50e9fSSam Leffler  * to license or distribute it to anyone else except as part of a product or
81de50e9fSSam Leffler  * program developed by the user.
91de50e9fSSam Leffler  *
101de50e9fSSam Leffler  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
111de50e9fSSam Leffler  * WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
121de50e9fSSam Leffler  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
131de50e9fSSam Leffler  *
141de50e9fSSam Leffler  * Sun RPC is provided with no support and without any obligation on the
151de50e9fSSam Leffler  * part of Sun Microsystems, Inc. to assist in its use, correction,
161de50e9fSSam Leffler  * modification or enhancement.
171de50e9fSSam Leffler  *
181de50e9fSSam Leffler  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
191de50e9fSSam Leffler  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
201de50e9fSSam Leffler  * OR ANY PART THEREOF.
211de50e9fSSam Leffler  *
221de50e9fSSam Leffler  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
231de50e9fSSam Leffler  * or profits or other special, indirect and consequential damages, even if
241de50e9fSSam Leffler  * Sun has been advised of the possibility of such damages.
251de50e9fSSam Leffler  *
261de50e9fSSam Leffler  * Sun Microsystems, Inc.
271de50e9fSSam Leffler  * 2550 Garcia Avenue
281de50e9fSSam Leffler  * Mountain View, California  94043
291de50e9fSSam Leffler  *
301de50e9fSSam Leffler  *	from: @(#)rpc_msg.h 1.7 86/07/16 SMI
311de50e9fSSam Leffler  *	from: @(#)rpc_msg.h	2.1 88/07/29 4.0 RPCSRC
321de50e9fSSam Leffler  * $FreeBSD$
331de50e9fSSam Leffler  */
341de50e9fSSam Leffler 
351de50e9fSSam Leffler /*
361de50e9fSSam Leffler  * rpc_msg.h
371de50e9fSSam Leffler  * rpc message definition
381de50e9fSSam Leffler  *
391de50e9fSSam Leffler  * Copyright (C) 1984, Sun Microsystems, Inc.
401de50e9fSSam Leffler  */
411de50e9fSSam Leffler 
421de50e9fSSam Leffler #ifndef __RPC_MSG_H_
431de50e9fSSam Leffler #define __RPC_MSG_H_
441de50e9fSSam Leffler 
451de50e9fSSam Leffler #define SUNRPC_MSG_VERSION	((u_int32_t) 2)
461de50e9fSSam Leffler 
471de50e9fSSam Leffler /*
481de50e9fSSam Leffler  * Bottom up definition of an rpc message.
491de50e9fSSam Leffler  * NOTE: call and reply use the same overall stuct but
501de50e9fSSam Leffler  * different parts of unions within it.
511de50e9fSSam Leffler  */
521de50e9fSSam Leffler 
531de50e9fSSam Leffler enum sunrpc_msg_type {
541de50e9fSSam Leffler 	SUNRPC_CALL=0,
551de50e9fSSam Leffler 	SUNRPC_REPLY=1
561de50e9fSSam Leffler };
571de50e9fSSam Leffler 
581de50e9fSSam Leffler enum sunrpc_reply_stat {
591de50e9fSSam Leffler 	SUNRPC_MSG_ACCEPTED=0,
601de50e9fSSam Leffler 	SUNRPC_MSG_DENIED=1
611de50e9fSSam Leffler };
621de50e9fSSam Leffler 
631de50e9fSSam Leffler enum sunrpc_accept_stat {
641de50e9fSSam Leffler 	SUNRPC_SUCCESS=0,
651de50e9fSSam Leffler 	SUNRPC_PROG_UNAVAIL=1,
661de50e9fSSam Leffler 	SUNRPC_PROG_MISMATCH=2,
671de50e9fSSam Leffler 	SUNRPC_PROC_UNAVAIL=3,
681de50e9fSSam Leffler 	SUNRPC_GARBAGE_ARGS=4,
691de50e9fSSam Leffler 	SUNRPC_SYSTEM_ERR=5
701de50e9fSSam Leffler };
711de50e9fSSam Leffler 
721de50e9fSSam Leffler enum sunrpc_reject_stat {
731de50e9fSSam Leffler 	SUNRPC_RPC_MISMATCH=0,
741de50e9fSSam Leffler 	SUNRPC_AUTH_ERROR=1
751de50e9fSSam Leffler };
761de50e9fSSam Leffler 
771de50e9fSSam Leffler /*
781de50e9fSSam Leffler  * Reply part of an rpc exchange
791de50e9fSSam Leffler  */
801de50e9fSSam Leffler 
811de50e9fSSam Leffler /*
821de50e9fSSam Leffler  * Reply to an rpc request that was rejected by the server.
831de50e9fSSam Leffler  */
841de50e9fSSam Leffler struct sunrpc_rejected_reply {
851de50e9fSSam Leffler 	u_int32_t		 rj_stat;	/* enum reject_stat */
861de50e9fSSam Leffler 	union {
871de50e9fSSam Leffler 		struct {
881de50e9fSSam Leffler 			u_int32_t low;
891de50e9fSSam Leffler 			u_int32_t high;
901de50e9fSSam Leffler 		} RJ_versions;
911de50e9fSSam Leffler 		u_int32_t RJ_why;  /* enum auth_stat - why authentication did not work */
921de50e9fSSam Leffler 	} ru;
931de50e9fSSam Leffler #define	rj_vers	ru.RJ_versions
941de50e9fSSam Leffler #define	rj_why	ru.RJ_why
951de50e9fSSam Leffler };
961de50e9fSSam Leffler 
971de50e9fSSam Leffler /*
981de50e9fSSam Leffler  * Body of a reply to an rpc request.
991de50e9fSSam Leffler  */
1001de50e9fSSam Leffler struct sunrpc_reply_body {
1011de50e9fSSam Leffler 	u_int32_t	rp_stat;		/* enum reply_stat */
1021de50e9fSSam Leffler 	struct sunrpc_rejected_reply rp_reject;	/* if rejected */
1031de50e9fSSam Leffler };
1041de50e9fSSam Leffler 
1051de50e9fSSam Leffler /*
1061de50e9fSSam Leffler  * Body of an rpc request call.
1071de50e9fSSam Leffler  */
1081de50e9fSSam Leffler struct sunrpc_call_body {
1091de50e9fSSam Leffler 	u_int32_t cb_rpcvers;	/* must be equal to two */
1101de50e9fSSam Leffler 	u_int32_t cb_prog;
1111de50e9fSSam Leffler 	u_int32_t cb_vers;
1121de50e9fSSam Leffler 	u_int32_t cb_proc;
1131de50e9fSSam Leffler 	struct sunrpc_opaque_auth cb_cred;
1141de50e9fSSam Leffler 	/* followed by opaque verifier */
1151de50e9fSSam Leffler };
1161de50e9fSSam Leffler 
1171de50e9fSSam Leffler /*
1181de50e9fSSam Leffler  * The rpc message
1191de50e9fSSam Leffler  */
1201de50e9fSSam Leffler struct sunrpc_msg {
1211de50e9fSSam Leffler 	u_int32_t		rm_xid;
1221de50e9fSSam Leffler 	u_int32_t		rm_direction;	/* enum msg_type */
1231de50e9fSSam Leffler 	union {
1241de50e9fSSam Leffler 		struct sunrpc_call_body RM_cmb;
1251de50e9fSSam Leffler 		struct sunrpc_reply_body RM_rmb;
1261de50e9fSSam Leffler 	} ru;
1271de50e9fSSam Leffler #define	rm_call		ru.RM_cmb
1281de50e9fSSam Leffler #define	rm_reply	ru.RM_rmb
1291de50e9fSSam Leffler };
1301de50e9fSSam Leffler #define	acpted_rply	ru.RM_rmb.ru.RP_ar
1311de50e9fSSam Leffler #define	rjcted_rply	ru.RM_rmb.ru.RP_dr
1321de50e9fSSam Leffler 
1331de50e9fSSam Leffler #endif /* !__RPC_MSG_H_ */
134