2020-09-30 17:12:29 +02:00

310 lines
7.6 KiB
C

/***************************************************************************
*
* File Name: ./hprrm/rpcmsg.h
*
* Copyright (C) 1993-1996 Hewlett-Packard Company.
* All rights reserved.
*
* 11311 Chinden Blvd.
* Boise, Idaho 83714
*
* This is a part of the HP JetAdmin Printer Utility
*
* This source code is only intended as a supplement for support and
* localization of HP JetAdmin by 3rd party Operating System vendors.
* Modification of source code cannot be made without the express written
* consent of Hewlett-Packard.
*
*
* Description:
*
* Author: Name
*
*
* Modification history:
*
* date initials change description
*
* mm-dd-yy MJB
*
*
*
*
*
*
***************************************************************************/
#ifndef RPMSG_INC
#define RPMSG_INC
#include "rpsyshdr.h"
#include "aut.h"
#include "rpcxdr.h"
/*
* .unsupp/sys/_ became sxu
* machine/ became sxm
* sys/ became sx
* arpa/ became sx
* netinet/ became sx
* net/ became sx
* rpc/ became
* auth_ became aut
* auth became aut
* clnt_ became clnt
* nfsv3_ became nfs
* nfsv3 became nfs
* getrpc became gr
* pmap_ became pmap
* rpc_ became rpc
* svc_ became svc
* unix_ became ux
* unix became ux
* xdr_ became xdr
* reference became rf
* commondata became cd
* tablesize became tsz
* get_myaddress became gmyad
* bindresvport became brvp
* generic became gnc
* getmaps became map
* getport became port
* _prot became pro
* prot became pro
* simple became simp
* callmsg became call
* error became err
* stdsyms became syms
* socket became sock
* sysmacros became macs
* if_arp became ifarp
* errno became ern
* ioctl became ioct
* signal became sig
* param became parm
* types became typs
*/
/* @(#)rpmsg.h 2.1 88/07/29 4.0 RPCSRC */
/*
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
* unrestricted use provided that this legend is included on all tape
* media and as a part of the software program in whole or part. Users
* may copy or modify Sun RPC without charge, but are not authorized
* to license or distribute it to anyone else except as part of a product or
* program developed by the user or with the express written consent of
* Sun Microsystems, Inc.
*
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
*
* Sun RPC is provided with no support and without any obligation on the
* part of Sun Microsystems, Inc. to assist in its use, correction,
* modification or enhancement.
*
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
* OR ANY PART THEREOF.
*
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
* or profits or other special, indirect and consequential damages, even if
* Sun has been advised of the possibility of such damages.
*
* Sun Microsystems, Inc.
* 2550 Garcia Avenue
* Mountain View, California 94043
*/
/* @(#)rpc_msg.h 1.21 91/03/11 SMI */
/*
* rpmsg.h
* rpc message definition
*
* Copyright (C) 1984, Sun Microsystems, Inc.
*/
#ifdef PNVMS_PLATFORM_PRINTER
#define PRAGMA_ALIGN_HALF_WORD
#include "align.h"
#undef PRAGMA_ALIGN_HALF_WORD
#endif /* PNVMS_PLATFORM_PRINTER */
#define RPC_MSG_VERSION ((vers_t) 2)
#define RPC_SERVICE_PORT ((u_short) 2048)
/*
* Bottom up definition of an rpc message.
* NOTE: call and reply use the same overall stuct but
* different parts of unions within it.
*/
enum msg_type {
CALL=0,
REPLY=1
};
enum reply_stat {
MSG_ACCEPTED=0,
MSG_DENIED=1
};
enum accept_stat {
SUCCESS=0,
PROG_UNAVAIL=1,
PROG_MISMATCH=2,
PROC_UNAVAIL=3,
GARBAGE_ARGS=4,
SYSTEM_ERR=5
};
enum reject_stat {
RPC_MISMATCH=0,
AUTH_ERROR=1
};
/*
* Reply part of an rpc exchange
*/
/*
* Reply to an rpc request that was accepted by the server.
* Note: there could be an error even though the request was
* accepted.
*/
struct accepted_reply {
struct opaque_auth ar_verf;
enum_t ar_stat;
/*
* ar_stat is really an enum accept_stat. We have typed it as
* an enum_t to get around alignment problems. xdr_enum_t must
* know the size of any enum passed to it.
*
* enum accept_stat ar_stat;
*/
union {
struct {
vers_t low;
vers_t high;
} AR_versions;
struct {
caddr_t where;
xdrproc_t proc;
} AR_results;
/* and many other null cases */
} ru;
#define ar_results ru.AR_results
#define ar_vers ru.AR_versions
};
/*
* Reply to an rpc request that was rejected by the server.
*/
/*
* NOTE: For most instances of vers (such as low and high, below) in HP's
* modification of the Sun RPC code, we typed it as vers_t. In this
* case, we knew that low and high would be xdr'ed as u_long, so we
* typed them as u_long. An alternate solution would be to type
* them as vers_t and write the procedure, xdr_vers_t(), that would
* simply call xdr_u_long.
*/
struct rejected_reply {
enum_t rj_stat;
/*
* rj_stat is really an enum reject_stat. We have typed it as
* an enum_t to get around alignment problems. xdr_enum_t must
* know the size of any enum passed to it.
*
* enum reject_stat rj_stat;
*/
union {
struct {
vers_t low;
vers_t high;
} RJ_versions;
enum_t RJ_why; /* why authentication did not work */
/*
* RJ_why is really an enum auth_stat. We have typed it as
* an enum_t to get around alignment problems. xdr_enum_t must
* know the size of any enum passed to it.
*
* enum auth_stat RJ_why;
*/
} ru;
#define rj_vers ru.RJ_versions
#define rj_why ru.RJ_why
};
/*
* Body of a reply to an rpc request.
*/
struct reply_body {
enum_t rp_stat;
/*
* rp_stat is really an enum reply_stat. We have typed it as
* an enum_t to get around alignment problems. xdr_enum_t must
* know the size of any enum passed to it.
*
* enum reply_stat rp_stat;
*/
union {
struct accepted_reply RP_ar;
struct rejected_reply RP_dr;
} ru;
#define rp_acpt ru.RP_ar
#define rp_rjct ru.RP_dr
};
/*
* Body of an rpc request call.
*/
/*
* NOTE: For most instances of prog, vers, and proc in HP's modification
* of the Sun RPC code, we typed them as prog_t, vers_t, and proc_t,
* respectively. In the following case, we knew that they would be
* xdr'ed as u_long, so we typed them as u_long. An alternate
* solution would be to type them as *_t and write procedures,
* xdr_proc_t(), xdr_vers_t(), and xdr_proc_t(), that would simply
* call xdr_u_long.
*/
struct call_body {
u_long cb_rpcvers; /* must be equal to two */
prog_t cb_prog;
vers_t cb_vers;
proc_t cb_proc;
struct opaque_auth cb_cred;
struct opaque_auth cb_verf; /* protocol specific - provided by client */
};
/*
* The rpc message
*/
struct rpc_msg {
u_long rm_xid;
enum_t rm_direction;
/*
* rm_direction is really an enum msg_type. We have typed it as
* an enum_t to get around alignment problems. xdr_enum_t must
* know the size of any enum passed to it.
*
* enum msg_type rm_direction;
*/
union {
struct call_body RM_cmb;
struct reply_body RM_rmb;
} ru;
#define rm_call ru.RM_cmb
#define rm_reply ru.RM_rmb
};
#define acpted_rply ru.RM_rmb.ru.RP_ar
#define rjcted_rply ru.RM_rmb.ru.RP_dr
#ifdef PNVMS_PLATFORM_PRINTER
#define PRAGMA_ALIGN_DEFAULT
#include "align.h"
#undef PRAGMA_ALIGN_DEFAULT
#endif /* PNVMS_PLATFORM_PRINTER */
#endif /* not RPMSG_INC */