/pkgnet/tags/20220214/watt32/inc/rpc/auth.h |
---|
0,0 → 1,180 |
/*!\file rpc/auth.h |
* RPC authentication interface. |
*/ |
/* |
* 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. |
* |
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE |
* WARRANTIES OF DESIGN, MERCHANTABILITY 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 |
* |
* from: @(#)auth.h 1.17 88/02/08 SMI |
* from: @(#)auth.h 2.3 88/08/07 4.0 RPCSRC |
* $Id: auth.h,v 1.5 1996/01/31 08:02:11 hsu Exp $ |
*/ |
/* |
* auth.h, Authentication interface. |
* |
* Copyright (C) 1984, Sun Microsystems, Inc. |
* |
* The data structures are completely opaque to the client. The client |
* is required to pass a AUTH * to routines that create rpc |
* "sessions". |
*/ |
#ifndef __RPC_AUTH_H |
#define __RPC_AUTH_H |
#ifndef __SYS_CDEFS_H |
#include <sys/cdefs.h> |
#endif |
#ifndef __SYS_SOCKET_H |
#include <sys/socket.h> |
#endif |
#define MAX_AUTH_BYTES 400 |
#define MAXNETNAMELEN 255 /* maximum length of network user's name */ |
/* |
* Status returned from authentication check |
*/ |
enum auth_stat { |
AUTH_OK=0, |
/* |
* failed at remote end |
*/ |
AUTH_BADCRED=1, /* bogus credentials (seal broken) */ |
AUTH_REJECTEDCRED=2, /* client should begin new session */ |
AUTH_BADVERF=3, /* bogus verifier (seal broken) */ |
AUTH_REJECTEDVERF=4, /* verifier expired or was replayed */ |
AUTH_TOOWEAK=5, /* rejected due to security reasons */ |
/* |
* failed locally |
*/ |
AUTH_INVALIDRESP=6, /* bogus response verifier */ |
AUTH_FAILED=7 /* some unknown reason */ |
}; |
union des_block { |
struct { |
u_long high; |
u_long low; |
} key; |
char c[8]; |
}; |
typedef union des_block des_block; |
__BEGIN_DECLS |
extern bool_t xdr_des_block (XDR *, des_block *); |
__END_DECLS |
/* |
* Authentication info. Opaque to client. |
*/ |
struct opaque_auth { |
enum_t oa_flavor; /* flavor of auth */ |
caddr_t oa_base; /* address of more auth stuff */ |
u_int oa_length; /* not to exceed MAX_AUTH_BYTES */ |
}; |
/* |
* Auth handle, interface to client side authenticators. |
*/ |
typedef struct { |
struct opaque_auth ah_cred; |
struct opaque_auth ah_verf; |
union des_block ah_key; |
struct auth_ops { |
void (*ah_nextverf)(); |
int (*ah_marshal)(); /* nextverf & serialize */ |
int (*ah_validate)(); /* validate verifier */ |
int (*ah_refresh)(); /* refresh credentials */ |
void (*ah_destroy)(); /* destroy this structure */ |
} *ah_ops; |
caddr_t ah_private; |
} AUTH; |
/* |
* Authentication ops. |
* The ops and the auth handle provide the interface to the authenticators. |
* |
* AUTH *auth; |
* XDR *xdrs; |
* struct opaque_auth verf; |
*/ |
#define AUTH_NEXTVERF(auth) ((*((auth)->ah_ops->ah_nextverf))(auth)) |
#define auth_nextverf(auth) ((*((auth)->ah_ops->ah_nextverf))(auth)) |
#define AUTH_MARSHALL(auth,xdrs) ((*((auth)->ah_ops->ah_marshal))(auth, xdrs)) |
#define auth_marshall(auth,xdrs) ((*((auth)->ah_ops->ah_marshal))(auth, xdrs)) |
#define AUTH_VALIDATE(auth,verfp) ((*((auth)->ah_ops->ah_validate))((auth), verfp)) |
#define auth_validate(auth,verfp) ((*((auth)->ah_ops->ah_validate))((auth), verfp)) |
#define AUTH_REFRESH(auth) ((*((auth)->ah_ops->ah_refresh))(auth)) |
#define auth_refresh(auth) ((*((auth)->ah_ops->ah_refresh))(auth)) |
#define AUTH_DESTROY(auth) ((*((auth)->ah_ops->ah_destroy))(auth)) |
#define auth_destroy(auth) ((*((auth)->ah_ops->ah_destroy))(auth)) |
extern struct opaque_auth _null_auth; |
/* |
* These are the various implementations of client side authenticators. |
*/ |
/* |
* Unix style authentication |
* AUTH *authunix_create(machname, uid, gid, len, aup_gids) |
* char *machname; |
* int uid; |
* int gid; |
* int len; |
* int *aup_gids; |
*/ |
__BEGIN_DECLS |
extern AUTH *authunix_create (char *, int, int, int, int *); |
extern AUTH *authunix_create_default(void); |
extern AUTH *authnone_create (void); |
extern AUTH *authdes_create (char*, u_int, struct sockaddr*, des_block*); |
__END_DECLS |
#define AUTH_NONE 0 /* no authentication */ |
#define AUTH_NULL 0 /* backward compatibility */ |
#define AUTH_UNIX 1 /* unix style (uid, gids) */ |
#define AUTH_SHORT 2 /* short hand unix style */ |
#define AUTH_DES 3 /* des style (encrypted timestamps) */ |
#endif |
/pkgnet/tags/20220214/watt32/inc/rpc/auth_des.h |
---|
0,0 → 1,109 |
/*!\file rpc/auth_des.h |
* RPC authentication. |
*/ |
/* @(#)auth_des.h 2.2 88/07/29 4.0 RPCSRC; from 1.3 88/02/08 SMI */ |
/* |
* 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. |
* |
* 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 |
*/ |
/* |
* Copyright (c) 1988 by Sun Microsystems, Inc. |
*/ |
/* |
* auth_des.h, Protocol for DES style authentication for RPC |
*/ |
#ifndef __AUTH_DES_H |
#define __AUTH_DES_H |
/* |
* There are two kinds of "names": fullnames and nicknames |
*/ |
enum authdes_namekind { |
ADN_FULLNAME, |
ADN_NICKNAME |
}; |
/* |
* A fullname contains the network name of the client, |
* a conversation key and the window |
*/ |
struct authdes_fullname { |
char *name; /* network name of client, up to MAXNETNAMELEN */ |
des_block key; /* conversation key */ |
u_long window; /* associated window */ |
}; |
/* |
* A credential |
*/ |
struct authdes_cred { |
enum authdes_namekind adc_namekind; |
struct authdes_fullname adc_fullname; |
u_long adc_nickname; |
}; |
/* |
* A des authentication verifier |
*/ |
struct authdes_verf { |
union { |
struct timeval adv_ctime; /* clear time */ |
des_block adv_xtime; /* crypt time */ |
} adv_time_u; |
u_long adv_int_u; |
}; |
/* |
* des authentication verifier: client variety |
* |
* adv_timestamp is the current time. |
* adv_winverf is the credential window + 1. |
* Both are encrypted using the conversation key. |
*/ |
#define adv_timestamp adv_time_u.adv_ctime |
#define adv_xtimestamp adv_time_u.adv_xtime |
#define adv_winverf adv_int_u |
/* |
* des authentication verifier: server variety |
* |
* adv_timeverf is the client's timestamp + client's window |
* adv_nickname is the server's nickname for the client. |
* adv_timeverf is encrypted using the conversation key. |
*/ |
#define adv_timeverf adv_time_u.adv_ctime |
#define adv_xtimeverf adv_time_u.adv_xtime |
#define adv_nickname adv_int_u |
#endif /* !__AUTH_DES_H */ |
/pkgnet/tags/20220214/watt32/inc/rpc/auth_uni.h |
---|
0,0 → 1,89 |
/*!\file rpc/auth_uni.h |
* RPC authentication. |
*/ |
/* |
* 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. |
* |
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE |
* WARRANTIES OF DESIGN, MERCHANTABILITY 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 |
* |
* from: @(#)auth_unix.h 1.8 88/02/08 SMI |
* from: @(#)auth_unix.h 2.2 88/07/29 4.0 RPCSRC |
* $Id: auth_unix.h,v 1.4 1996/01/30 23:31:42 mpp Exp $ |
*/ |
/* |
* auth_unix.h, Protocol for UNIX style authentication parameters for RPC |
* |
* Copyright (C) 1984, Sun Microsystems, Inc. |
*/ |
/* |
* The system is very weak. The client uses no encryption for it |
* credentials and only sends null verifiers. The server sends backs |
* null verifiers or optionally a verifier that suggests a new short hand |
* for the credentials. |
*/ |
#ifndef __RPC_AUTH_UNIX_H |
#define __RPC_AUTH_UNIX_H |
#include <sys/cdefs.h> |
/* The machine name is part of a credential; it may not exceed 255 bytes */ |
#define MAX_MACHINE_NAME 255 |
/* gids compose part of a credential; there may not be more than 16 of them */ |
#define NGRPS 16 |
/* |
* Unix style credentials. |
*/ |
struct authunix_parms { |
u_long aup_time; |
char *aup_machname; |
int aup_uid; |
int aup_gid; |
u_int aup_len; |
int *aup_gids; |
}; |
__BEGIN_DECLS |
extern bool_t xdr_authunix_parms (XDR *, struct authunix_parms *); |
__END_DECLS |
/* |
* If a response verifier has flavor AUTH_SHORT, |
* then the body of the response verifier encapsulates the following structure; |
* again it is serialized in the obvious fashion. |
*/ |
struct short_hand_verf { |
struct opaque_auth new_cred; |
}; |
#endif |
/pkgnet/tags/20220214/watt32/inc/rpc/clnt.h |
---|
0,0 → 1,356 |
/*!\file rpc/clnt.h |
* RPC client-side interface. |
*/ |
/* |
* 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. |
* |
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE |
* WARRANTIES OF DESIGN, MERCHANTABILITY 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 |
* |
* from: @(#)clnt.h 1.31 88/02/08 SMI |
* from: @(#)clnt.h 2.1 88/07/29 4.0 RPCSRC |
* $Id: clnt.h,v 1.4 1996/01/30 23:31:48 mpp Exp $ |
*/ |
/* |
* clnt.h - Client side remote procedure call interface. |
* |
* Copyright (C) 1984, Sun Microsystems, Inc. |
*/ |
#ifndef __RPC_CLIENT_H |
#define __RPC_CLIENT_H |
#include <sys/cdefs.h> |
#include <rpc/types.h> |
#include <rpc/xdr.h> |
/* |
* Rpc calls return an enum clnt_stat. This should be looked at more, |
* since each implementation is required to live with this (implementation |
* independent) list of errors. |
*/ |
enum clnt_stat { |
RPC_SUCCESS=0, /* call succeeded */ |
/* |
* local errors |
*/ |
RPC_CANTENCODEARGS=1, /* can't encode arguments */ |
RPC_CANTDECODERES=2, /* can't decode results */ |
RPC_CANTSEND=3, /* failure in sending call */ |
RPC_CANTRECV=4, /* failure in receiving result */ |
RPC_TIMEDOUT=5, /* call timed out */ |
/* |
* remote errors |
*/ |
RPC_VERSMISMATCH=6, /* rpc versions not compatible */ |
RPC_AUTHERROR=7, /* authentication error */ |
RPC_PROGUNAVAIL=8, /* program not available */ |
RPC_PROGVERSMISMATCH=9, /* program version mismatched */ |
RPC_PROCUNAVAIL=10, /* procedure unavailable */ |
RPC_CANTDECODEARGS=11, /* decode arguments error */ |
RPC_SYSTEMERROR=12, /* generic "other problem" */ |
/* |
* callrpc & clnt_create errors |
*/ |
RPC_UNKNOWNHOST=13, /* unknown host name */ |
RPC_UNKNOWNPROTO=17, /* unkown protocol */ |
/* |
* _ create errors |
*/ |
RPC_PMAPFAILURE=14, /* the pmapper failed in its call */ |
RPC_PROGNOTREGISTERED=15, /* remote program is not registered */ |
/* |
* unspecified error |
*/ |
RPC_FAILED=16 |
}; |
/* |
* Error info. |
*/ |
struct rpc_err { |
enum clnt_stat re_status; |
union { |
int RE_errno; /* related system error */ |
enum auth_stat RE_why; /* why the auth error occurred */ |
struct { |
u_long low; /* lowest verion supported */ |
u_long high; /* highest verion supported */ |
} RE_vers; |
struct { /* maybe meaningful if RPC_FAILED */ |
long s1; |
long s2; |
} RE_lb; /* life boot & debugging only */ |
} ru; |
#define re_errno ru.RE_errno |
#define re_why ru.RE_why |
#define re_vers ru.RE_vers |
#define re_lb ru.RE_lb |
}; |
/* |
* Client rpc handle. |
* Created by individual implementations, see e.g. rpc_udp.c. |
* Client is responsible for initializing auth, see e.g. auth_none.c. |
*/ |
typedef struct { |
AUTH *cl_auth; /* authenticator */ |
struct clnt_ops { |
enum clnt_stat(*cl_call)(); /* call remote procedure */ |
void (*cl_abort)(); /* abort a call */ |
void (*cl_geterr)(); /* get specific error code */ |
bool_t (*cl_freeres)(); /* frees results */ |
void (*cl_destroy)(); /* destroy this structure */ |
bool_t (*cl_control)(); /* the ioctl() of rpc */ |
} *cl_ops; |
caddr_t cl_private; /* private stuff */ |
} CLIENT; |
/* |
* client side rpc interface ops |
* |
* Parameter types are: |
* |
*/ |
/* |
* enum clnt_stat |
* CLNT_CALL(rh, proc, xargs, argsp, xres, resp, timeout) |
* CLIENT *rh; |
* u_long proc; |
* xdrproc_t xargs; |
* caddr_t argsp; |
* xdrproc_t xres; |
* caddr_t resp; |
* struct timeval timeout; |
*/ |
#define CLNT_CALL(rh, proc, xargs, argsp, xres, resp, secs) \ |
((*(rh)->cl_ops->cl_call)(rh, proc, xargs, argsp, xres, resp, secs)) |
#define clnt_call(rh, proc, xargs, argsp, xres, resp, secs) \ |
((*(rh)->cl_ops->cl_call)(rh, proc, xargs, argsp, xres, resp, secs)) |
/* |
* void |
* CLNT_ABORT(rh); |
* CLIENT *rh; |
*/ |
#define CLNT_ABORT(rh) ((*(rh)->cl_ops->cl_abort)(rh)) |
#define clnt_abort(rh) ((*(rh)->cl_ops->cl_abort)(rh)) |
/* |
* struct rpc_err |
* CLNT_GETERR(rh); |
* CLIENT *rh; |
*/ |
#define CLNT_GETERR(rh,errp) ((*(rh)->cl_ops->cl_geterr)(rh, errp)) |
#define clnt_geterr(rh,errp) ((*(rh)->cl_ops->cl_geterr)(rh, errp)) |
/* |
* bool_t |
* CLNT_FREERES(rh, xres, resp); |
* CLIENT *rh; |
* xdrproc_t xres; |
* caddr_t resp; |
*/ |
#define CLNT_FREERES(rh,xres,resp) ((*(rh)->cl_ops->cl_freeres)(rh,xres,resp)) |
#define clnt_freeres(rh,xres,resp) ((*(rh)->cl_ops->cl_freeres)(rh,xres,resp)) |
/* |
* bool_t |
* CLNT_CONTROL(cl, request, info) |
* CLIENT *cl; |
* u_int request; |
* char *info; |
*/ |
#define CLNT_CONTROL(cl,rq,in) ((*(cl)->cl_ops->cl_control)(cl,rq,in)) |
#define clnt_control(cl,rq,in) ((*(cl)->cl_ops->cl_control)(cl,rq,in)) |
/* |
* control operations that apply to both udp and tcp transports |
*/ |
#define CLSET_TIMEOUT 1 /* set timeout (timeval) */ |
#define CLGET_TIMEOUT 2 /* get timeout (timeval) */ |
#define CLGET_SERVER_ADDR 3 /* get server's address (sockaddr) */ |
/* |
* udp only control operations |
*/ |
#define CLSET_RETRY_TIMEOUT 4 /* set retry timeout (timeval) */ |
#define CLGET_RETRY_TIMEOUT 5 /* get retry timeout (timeval) */ |
/* |
* void |
* CLNT_DESTROY(rh); |
* CLIENT *rh; |
*/ |
#define CLNT_DESTROY(rh) ((*(rh)->cl_ops->cl_destroy)(rh)) |
#define clnt_destroy(rh) ((*(rh)->cl_ops->cl_destroy)(rh)) |
/* |
* RPCTEST is a test program which is accessible on every rpc |
* transport/port. It is used for testing, performance evaluation, |
* and network administration. |
*/ |
#define RPCTEST_PROGRAM ((u_long)1) |
#define RPCTEST_VERSION ((u_long)1) |
#define RPCTEST_NULL_PROC ((u_long)2) |
#define RPCTEST_NULL_BATCH_PROC ((u_long)3) |
/* |
* By convention, procedure 0 takes null arguments and returns them |
*/ |
#define NULLPROC ((u_long)0) |
__BEGIN_DECLS |
/* |
* Below are the client handle creation routines for the various |
* implementations of client side rpc. They can return NULL if a |
* creation failure occurs. |
*/ |
/* |
* Memory based rpc (for speed check and testing) |
* CLIENT * |
* clntraw_create(prog, vers) |
* u_long prog; |
* u_long vers; |
*/ |
extern CLIENT *clntraw_create (u_long, u_long); |
/* |
* Generic client creation routine. Supported protocols are "udp" and "tcp" |
* CLIENT * |
* clnt_create(host, prog, vers, prot); |
* char *host; -- hostname |
* u_long prog; -- program number |
* u_long vers; -- version number |
* char *prot; -- protocol |
*/ |
extern CLIENT *clnt_create (char *, u_long, u_long, char *); |
/* |
* TCP based rpc |
* CLIENT * |
* clnttcp_create(raddr, prog, vers, sockp, sendsz, recvsz) |
* struct sockaddr_in *raddr; |
* u_long prog; |
* u_long version; |
* register int *sockp; |
* u_int sendsz; |
* u_int recvsz; |
*/ |
extern CLIENT *clnttcp_create (struct sockaddr_in *, u_long, u_long, |
int *, u_int, u_int); |
/* |
* UDP based rpc. |
* CLIENT * |
* clntudp_create(raddr, program, version, wait, sockp) |
* struct sockaddr_in *raddr; |
* u_long program; |
* u_long version; |
* struct timeval wait; |
* int *sockp; |
* |
* Same as above, but you specify max packet sizes. |
* CLIENT * |
* clntudp_bufcreate(raddr, program, version, wait, sockp, sendsz, recvsz) |
* struct sockaddr_in *raddr; |
* u_long program; |
* u_long version; |
* struct timeval wait; |
* int *sockp; |
* u_int sendsz; |
* u_int recvsz; |
*/ |
extern CLIENT *clntudp_create (struct sockaddr_in *, u_long, u_long, |
struct timeval, int *); |
extern CLIENT *clntudp_bufcreate(struct sockaddr_in *, u_long, u_long, |
struct timeval, int *, u_int, u_int); |
/* |
* Print why creation failed |
*/ |
extern void clnt_pcreateerror (char *); /* stderr */ |
extern char *clnt_spcreateerror (char *); /* string */ |
/* |
* Like clnt_perror(), but is more verbose in its output |
*/ |
extern void clnt_perrno (enum clnt_stat); /* stderr */ |
extern char *clnt_sperrno(enum clnt_stat); /* string */ |
/* |
* Print an English error message, given the client error code |
*/ |
extern void clnt_perror (CLIENT *, char *); /* stderr */ |
extern char *clnt_sperror(CLIENT *, char *); /* string */ |
/* |
* Call routine on remote host |
*/ |
extern int callrpc (char *host, u_long prognum, u_long versnum, u_long procnum, |
xdrproc_t inproc, char *in, |
xdrproc_t outproc, char *out); |
__END_DECLS |
/* |
* If a creation fails, the following allows the user to figure out why. |
*/ |
struct rpc_createerr { |
enum clnt_stat cf_stat; |
struct rpc_err cf_error; /* useful when cf_stat == RPC_PMAPFAILURE */ |
const char *cf_file; /* failed file + line */ |
unsigned cf_line; |
}; |
extern struct rpc_createerr rpc_createerr; |
#define UDPMSGSIZE 8800 /* rpc imposed limit on udp msg size */ |
#define RPCSMALLMSGSIZE 400 /* a more reasonable packet size */ |
#endif |
/pkgnet/tags/20220214/watt32/inc/rpc/key_prot.h |
---|
0,0 → 1,99 |
/*!\file rpc/key_prot.h |
* RPC key exchange protocol. |
*/ |
/* |
* This is a RPCGEN generated file. Do not edit. |
* |
* Generated: Sun Mar 14 19:22:40 1999 |
*/ |
#ifndef __KEY_PROT_H |
#define __KEY_PROT_H |
/* |
* Copyright (c) 1988 by Sun Microsystems, Inc. |
*/ |
#define PROOT 3 |
#define HEXMODULUS "d4a0ba0250b6fd2ec626e7efd637df76c716e22d0944b88b" |
#define HEXKEYBYTES 48 |
#define KEYSIZE 192 |
#define KEYBYTES 24 |
#define KEYCHECKSUMSIZE 16 |
typedef enum keystatus { |
KEY_SUCCESS = 0, |
KEY_NOSECRET = 1, |
KEY_UNKNOWN = 2, |
KEY_SYSTEMERR = 3, |
} keystatus; |
bool_t xdr_keystatus(); |
#ifndef KERNEL |
typedef char keybuf[HEXKEYBYTES]; |
bool_t xdr_keybuf(); |
#endif |
typedef char *netnamestr; |
bool_t xdr_netnamestr(); |
typedef struct cryptkeyarg { |
netnamestr remotename; |
des_block deskey; |
} cryptkeyarg; |
bool_t xdr_cryptkeyarg(); |
typedef struct cryptkeyres { |
keystatus status; |
union { |
des_block deskey; |
} cryptkeyres_u; |
} cryptkeyres; |
bool_t xdr_cryptkeyres(); |
#define MAXGIDS 16 |
typedef struct unixcred { |
long uid; |
long gid; |
struct { |
u_long gids_len; |
long *gids_val; |
} gids; |
} unixcred; |
bool_t xdr_unixcred(); |
typedef struct getcredres { |
keystatus status; |
union { |
unixcred cred; |
} getcredres_u; |
} getcredres; |
bool_t xdr_getcredres(); |
#define KEY_PROG 100029UL |
#define KEY_VERS 1UL |
#define KEY_SET 1UL |
extern long *key_set_1(); |
#define KEY_ENCRYPT 2UL |
extern cryptkeyres *key_encrypt_1(); |
#define KEY_DECRYPT 3UL |
extern cryptkeyres *key_decrypt_1(); |
#define KEY_GEN 4UL |
extern des_block *key_gen_1(); |
#define KEY_GETCRED 5UL |
extern getcredres *key_getcred_1(); |
#endif /* !__KEY_PROT_H */ |
/pkgnet/tags/20220214/watt32/inc/rpc/pmap_cln.h |
---|
0,0 → 1,86 |
/*!\file rpc/pmap_cln.h |
* RPC portmapper (client-side). |
*/ |
/* |
* 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. |
* |
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE |
* WARRANTIES OF DESIGN, MERCHANTABILITY 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 |
* |
* from: @(#)pmap_clnt.h 1.11 88/02/08 SMI |
* from: @(#)pmap_clnt.h 2.1 88/07/29 4.0 RPCSRC |
* $Id: pmap_clnt.h,v 1.4 1996/01/30 23:31:59 mpp Exp $ |
*/ |
/* |
* pmap_clnt.h |
* Supplies C routines to get to portmap services. |
* |
* Copyright (C) 1984, Sun Microsystems, Inc. |
*/ |
/* |
* Usage: |
* success = pmap_set(program, version, protocol, port); |
* success = pmap_unset(program, version); |
* port = pmap_getport(address, program, version, protocol); |
* head = pmap_getmaps(address); |
* clnt_stat = pmap_rmtcall(address, program, version, procedure, |
* xdrargs, argsp, xdrres, resp, tout, port_ptr) |
* (works for udp only.) |
* clnt_stat = clnt_broadcast(program, version, procedure, |
* xdrargs, argsp, xdrres, resp, eachresult) |
* (like pmap_rmtcall, except the call is broadcasted to all |
* locally connected nets. For each valid response received, |
* the procedure eachresult is called. Its form is: |
* done = eachresult(resp, raddr) |
* bool_t done; |
* caddr_t resp; |
* struct sockaddr_in raddr; |
* where resp points to the results of the call and raddr is the |
* address if the responder to the broadcast. |
*/ |
#ifndef __RPC_PMAP_CLIENT_H |
#define __RPC_PMAP_CLIENT_H |
#include <sys/cdefs.h> |
__BEGIN_DECLS |
extern bool_t pmap_set (u_long, u_long, int, int); |
extern bool_t pmap_unset (u_long, u_long); |
extern struct pmaplist *pmap_getmaps (struct sockaddr_in *); |
extern enum clnt_stat pmap_rmtcall (struct sockaddr_in *, u_long, u_long, |
u_long, xdrproc_t, caddr_t, xdrproc_t, |
caddr_t, struct timeval, u_long *); |
extern enum clnt_stat clnt_broadcast(u_long, u_long, u_long, xdrproc_t, |
char *, xdrproc_t, char *, bool_t (*)()); |
extern u_short pmap_getport (struct sockaddr_in *, u_long, u_long, u_int); |
__END_DECLS |
#endif |
/pkgnet/tags/20220214/watt32/inc/rpc/pmap_pro.h |
---|
0,0 → 1,111 |
/*!\file rpc/pmap_pro.h |
* RPC portmappper. |
*/ |
/* |
* 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. |
* |
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE |
* WARRANTIES OF DESIGN, MERCHANTABILITY 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 |
* |
* from: @(#)pmap_prot.h 1.14 88/02/08 SMI |
* from: @(#)pmap_prot.h 2.1 88/07/29 4.0 RPCSRC |
* $Id: pmap_prot.h,v 1.4 1996/01/30 23:32:08 mpp Exp $ |
*/ |
/* |
* pmap_prot.h |
* Protocol for the local binder service, or pmap. |
* |
* Copyright (C) 1984, Sun Microsystems, Inc. |
* |
* The following procedures are supported by the protocol: |
* |
* PMAPPROC_NULL() returns () |
* takes nothing, returns nothing |
* |
* PMAPPROC_SET(struct pmap) returns (bool_t) |
* TRUE is success, FALSE is failure. Registers the tuple |
* [prog, vers, prot, port]. |
* |
* PMAPPROC_UNSET(struct pmap) returns (bool_t) |
* TRUE is success, FALSE is failure. Un-registers pair |
* [prog, vers]. prot and port are ignored. |
* |
* PMAPPROC_GETPORT(struct pmap) returns (long unsigned). |
* 0 is failure. Otherwise returns the port number where the pair |
* [prog, vers] is registered. It may lie! |
* |
* PMAPPROC_DUMP() RETURNS (struct pmaplist *) |
* |
* PMAPPROC_CALLIT(unsigned, unsigned, unsigned, string<>) |
* RETURNS (port, string<>); |
* usage: encapsulatedresults = PMAPPROC_CALLIT(prog, vers, proc, encapsulatedargs); |
* Calls the procedure on the local machine. If it is not registered, |
* this procedure is quite; ie it does not return error information!!! |
* This procedure only is supported on rpc/udp and calls via |
* rpc/udp. This routine only passes null authentication parameters. |
* This file has no interface to xdr routines for PMAPPROC_CALLIT. |
* |
* The service supports remote procedure calls on udp/ip or tcp/ip socket 111. |
*/ |
#ifndef __RPC_PMAP_PROT_H |
#define __RPC_PMAP_PROT_H |
#include <sys/cdefs.h> |
#define PMAPPORT ((u_short)111) |
#define PMAPPROG ((u_long)100000) |
#define PMAPVERS ((u_long)2) |
#define PMAPVERS_PROTO ((u_long)2) |
#define PMAPVERS_ORIG ((u_long)1) |
#define PMAPPROC_NULL ((u_long)0) |
#define PMAPPROC_SET ((u_long)1) |
#define PMAPPROC_UNSET ((u_long)2) |
#define PMAPPROC_GETPORT ((u_long)3) |
#define PMAPPROC_DUMP ((u_long)4) |
#define PMAPPROC_CALLIT ((u_long)5) |
struct pmap { |
long unsigned pm_prog; |
long unsigned pm_vers; |
long unsigned pm_prot; |
long unsigned pm_port; |
}; |
struct pmaplist { |
struct pmap pml_map; |
struct pmaplist *pml_next; |
}; |
__BEGIN_DECLS |
extern bool_t xdr_pmap (XDR *, struct pmap *); |
extern bool_t xdr_pmaplist(XDR *, struct pmaplist **); |
__END_DECLS |
#endif |
/pkgnet/tags/20220214/watt32/inc/rpc/pmap_rmt.h |
---|
0,0 → 1,70 |
/*!\file rpc/pmap_rmt.h |
* RPC portmapper definitions. |
*/ |
/* |
* 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. |
* |
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE |
* WARRANTIES OF DESIGN, MERCHANTABILITY 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 |
* |
* from: @(#)pmap_rmt.h 1.2 88/02/08 SMI |
* from: @(#)pmap_rmt.h 2.1 88/07/29 4.0 RPCSRC |
* $Id: pmap_rmt.h,v 1.4 1996/01/30 23:32:12 mpp Exp $ |
*/ |
/* |
* Structures and XDR routines for parameters to and replies from |
* the portmapper remote-call-service. |
* |
* Copyright (C) 1986, Sun Microsystems, Inc. |
*/ |
#ifndef __RPC_PMAP_REMOTE_H |
#define __RPC_PMAP_REMOTE_H |
#include <sys/cdefs.h> |
struct rmtcallargs { |
u_long prog, vers, proc, arglen; |
caddr_t args_ptr; |
xdrproc_t xdr_args; |
}; |
struct rmtcallres { |
u_long *port_ptr; |
u_long resultslen; |
caddr_t results_ptr; |
xdrproc_t xdr_results; |
}; |
__BEGIN_DECLS |
extern bool_t xdr_rmtcall_args (XDR *, struct rmtcallargs *); |
extern bool_t xdr_rmtcallres (XDR *, struct rmtcallres *); |
__END_DECLS |
#endif |
/pkgnet/tags/20220214/watt32/inc/rpc/rpc.h |
---|
0,0 → 1,111 |
/*!\file rpc/rpc.h |
* Main RPC header. |
*/ |
/* |
* 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. |
* |
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE |
* WARRANTIES OF DESIGN, MERCHANTABILITY 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 |
* |
* from: @(#)rpc.h 1.9 88/02/08 SMI |
* from: @(#)rpc.h 2.4 89/07/11 4.0 RPCSRC |
* $Id: rpc.h,v 1.5 1996/01/30 23:32:20 mpp Exp $ |
*/ |
/* |
* rpc.h, Just includes the billions of rpc header files necessary to |
* do remote procedure calling. |
* |
* Copyright (C) 1984, Sun Microsystems, Inc. |
*/ |
#ifndef __RPC_RPC_H |
#define __RPC_RPC_H |
#include <rpc/types.h> /* some typedefs */ |
/* external data representation interfaces */ |
#include <rpc/xdr.h> /* generic (de)serializer */ |
/* Client side only authentication */ |
#include <rpc/auth.h> /* generic authenticator (client side) */ |
/* Client side (mostly) remote procedure call */ |
#include <rpc/clnt.h> /* generic rpc stuff */ |
/* semi-private protocol headers */ |
#include <rpc/rpc_msg.h> /* protocol for rpc messages */ |
#include <rpc/auth_uni.h> /* protocol for unix style cred */ |
/* |
* Uncomment-out the next line if you are building the rpc library with |
* DES Authentication (see the README file in the secure_rpc/ directory). |
*/ |
#if 1 |
#include <rpc/auth_des.h> /* protocol for des style cred */ |
#endif |
/* Server side only remote procedure callee */ |
#include <rpc/svc.h> /* service manager and multiplexer */ |
#include <rpc/svc_auth.h> /* service side authenticator */ |
/* |
* COMMENT OUT THE NEXT INCLUDE (or add to the #ifndef) IF RUNNING ON |
* A VERSION OF UNIX THAT USES SUN'S NFS SOURCE. These systems will |
* already have the structures defined by <rpc/netdb.h> included in <netdb.h>. |
*/ |
/* routines for parsing /etc/rpc */ |
struct rpcent { |
char *r_name; /* name of server for this rpc program */ |
char **r_aliases; /* alias list */ |
long r_number; /* rpc program number. */ |
}; /* Must be 32-bit for small/large model */ |
__BEGIN_DECLS |
extern struct rpcent *getrpcbyname (char *); |
extern struct rpcent *getrpcbynumber(long); |
extern struct rpcent *getrpcent (void); |
extern void setrpcent (int); |
extern void endrpcent (void); |
#if defined(__MSDOS__) || defined(__TURBOC__) || defined(__HIGHC__) || \ |
defined(__DJGPP__) || defined(__WATCOMC__) |
/* from RPC-DOS v0.1Alpha by Mike Durkin <mdurkin@tsoft.net> */ |
/* updated by G.Vanem <giva@bgnett.no> */ |
extern void rpc_init (void); |
extern void set_user_id (u_long uid); |
extern void set_group_id (u_long gid); |
extern u_long __geteuid (void); |
extern u_long __getegid (void); |
#endif |
__END_DECLS |
#endif |
/pkgnet/tags/20220214/watt32/inc/rpc/rpc_msg.h |
---|
0,0 → 1,208 |
/*!\file rpc/rpc_msg.h |
* RPC message definitions. |
*/ |
/* |
* 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. |
* |
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE |
* WARRANTIES OF DESIGN, MERCHANTABILITY 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 |
* |
* from: @(#)rpc_msg.h 1.7 86/07/16 SMI |
* from: @(#)rpc_msg.h 2.1 88/07/29 4.0 RPCSRC |
* $Id: rpc_msg.h,v 1.5 1996/01/30 23:32:24 mpp Exp $ |
*/ |
/* |
* rpc_msg.h |
* rpc message definition |
* |
* Copyright (C) 1984, Sun Microsystems, Inc. |
*/ |
#ifndef __RPC_RPC_MSG_H |
#define __RPC_RPCM_SG_H |
#include <sys/cdefs.h> |
#define RPC_MSG_VERSION ((u_long) 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 |
*/ |
#include <sys/packon.h> |
/* |
* 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 accept_stat ar_stat; |
union { |
struct { |
u_long low; |
u_long 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. |
*/ |
struct rejected_reply { |
enum reject_stat rj_stat; |
union { |
struct { |
u_long low; |
u_long high; |
} RJ_versions; |
enum auth_stat RJ_why; /* why authentication did not work */ |
} 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 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. |
*/ |
struct call_body { |
u_long cb_rpcvers; /* must be equal to two */ |
u_long cb_prog; |
u_long cb_vers; |
u_long 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 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 |
#include <sys/packoff.h> |
__BEGIN_DECLS |
/* |
* XDR routine to handle a rpc message. |
* xdr_callmsg(xdrs, cmsg) |
* XDR *xdrs; |
* struct rpc_msg *cmsg; |
*/ |
extern bool_t xdr_callmsg (XDR *, struct rpc_msg *); |
/* |
* XDR routine to pre-serialize the static part of a rpc message. |
* xdr_callhdr(xdrs, cmsg) |
* XDR *xdrs; |
* struct rpc_msg *cmsg; |
*/ |
extern bool_t xdr_callhdr (XDR *, struct rpc_msg *); |
/* |
* XDR routine to handle a rpc reply. |
* xdr_replymsg(xdrs, rmsg) |
* XDR *xdrs; |
* struct rpc_msg *rmsg; |
*/ |
extern bool_t xdr_replymsg (XDR *, struct rpc_msg *); |
/* |
* Fills in the error part of a reply message. |
* _seterr_reply(msg, error) |
* struct rpc_msg *msg; |
* struct rpc_err *error; |
*/ |
struct rpc_err; |
extern void _seterr_reply (struct rpc_msg *, struct rpc_err *); |
__END_DECLS |
#endif |
/pkgnet/tags/20220214/watt32/inc/rpc/svc.h |
---|
0,0 → 1,291 |
/*!\file rpc/svc.h |
* RPC server-side interface. |
*/ |
/* |
* 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. |
* |
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE |
* WARRANTIES OF DESIGN, MERCHANTABILITY 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 |
* |
* from: @(#)svc.h 1.20 88/02/08 SMI |
* from: @(#)svc.h 2.2 88/07/29 4.0 RPCSRC |
* $Id: svc.h,v 1.5 1996/01/30 23:32:29 mpp Exp $ |
*/ |
/* |
* svc.h, Server-side remote procedure call interface. |
* |
* Copyright (C) 1984, Sun Microsystems, Inc. |
*/ |
#ifndef __RPC_SVC_H |
#define __RPC_SVC_H |
#ifndef __SYS_CDEFS_H |
#include <sys/cdefs.h> |
#endif |
/* |
* This interface must manage two items concerning remote procedure calling: |
* |
* 1) An arbitrary number of transport connections upon which rpc requests |
* are received. The two most notable transports are TCP and UDP; they are |
* created and registered by routines in svc_tcp.c and svc_udp.c, respectively; |
* they in turn call xprt_register and xprt_unregister. |
* |
* 2) An arbitrary number of locally registered services. Services are |
* described by the following four data: program number, version number, |
* "service dispatch" function, a transport handle, and a boolean that |
* indicates whether or not the exported program should be registered with a |
* local binder service; if true the program's number and version and the |
* port number from the transport handle are registered with the binder. |
* These data are registered with the rpc svc system via svc_register. |
* |
* A service's dispatch function is called whenever an rpc request comes in |
* on a transport. The request's program and version numbers must match |
* those of the registered service. The dispatch function is passed two |
* parameters, struct svc_req * and SVCXPRT *, defined below. |
*/ |
enum xprt_stat { |
XPRT_DIED, |
XPRT_MOREREQS, |
XPRT_IDLE |
}; |
/* |
* Server side transport handle |
*/ |
typedef struct { |
int xp_sock; |
u_short xp_port; /* associated port number */ |
struct xp_ops { |
bool_t (*xp_recv)(); /* receive incoming requests */ |
enum xprt_stat (*xp_stat)(); /* get transport status */ |
bool_t (*xp_getargs)(); /* get arguments */ |
bool_t (*xp_reply)(); /* send reply */ |
bool_t (*xp_freeargs)();/* free mem allocated for args */ |
void (*xp_destroy)(); /* destroy this struct */ |
} *xp_ops; |
int xp_addrlen; /* length of remote address */ |
struct sockaddr_in xp_raddr; /* remote address */ |
struct opaque_auth xp_verf; /* raw response verifier */ |
caddr_t xp_p1; /* private */ |
caddr_t xp_p2; /* private */ |
} SVCXPRT; |
/* |
* Approved way of getting address of caller |
*/ |
#define svc_getcaller(x) (&(x)->xp_raddr) |
/* |
* Operations defined on an SVCXPRT handle |
* |
* SVCXPRT *xprt; |
* struct rpc_msg *msg; |
* xdrproc_t xargs; |
* caddr_t argsp; |
*/ |
#define SVC_RECV(xprt, msg) \ |
(*(xprt)->xp_ops->xp_recv)((xprt), (msg)) |
#define svc_recv(xprt, msg) \ |
(*(xprt)->xp_ops->xp_recv)((xprt), (msg)) |
#define SVC_STAT(xprt) \ |
(*(xprt)->xp_ops->xp_stat)(xprt) |
#define svc_stat(xprt) \ |
(*(xprt)->xp_ops->xp_stat)(xprt) |
#define SVC_GETARGS(xprt, xargs, argsp) \ |
(*(xprt)->xp_ops->xp_getargs)((xprt), (xargs), (argsp)) |
#define svc_getargs(xprt, xargs, argsp) \ |
(*(xprt)->xp_ops->xp_getargs)((xprt), (xargs), (argsp)) |
#define SVC_REPLY(xprt, msg) \ |
(*(xprt)->xp_ops->xp_reply) ((xprt), (msg)) |
#define svc_reply(xprt, msg) \ |
(*(xprt)->xp_ops->xp_reply) ((xprt), (msg)) |
#define SVC_FREEARGS(xprt, xargs, argsp) \ |
(*(xprt)->xp_ops->xp_freeargs)((xprt), (xargs), (argsp)) |
#define svc_freeargs(xprt, xargs, argsp) \ |
(*(xprt)->xp_ops->xp_freeargs)((xprt), (xargs), (argsp)) |
#define SVC_DESTROY(xprt) \ |
(*(xprt)->xp_ops->xp_destroy)(xprt) |
#define svc_destroy(xprt) \ |
(*(xprt)->xp_ops->xp_destroy)(xprt) |
/* |
* Service request |
*/ |
struct svc_req { |
u_long rq_prog; /* service program number */ |
u_long rq_vers; /* service protocol version */ |
u_long rq_proc; /* the desired procedure */ |
struct opaque_auth rq_cred; /* raw creds from the wire */ |
caddr_t rq_clntcred; /* read only cooked cred */ |
SVCXPRT *rq_xprt; /* associated transport */ |
}; |
__BEGIN_DECLS |
/* |
* Service registration |
* |
* svc_register(xprt, prog, vers, dispatch, protocol) |
* SVCXPRT *xprt; |
* u_long prog; |
* u_long vers; |
* void (*dispatch)(); |
* int protocol; // like TCP or UDP, zero means do not register |
*/ |
extern bool_t svc_register (SVCXPRT *, u_long, u_long, void (*)(), int); |
/* |
* Service un-registration |
* |
* svc_unregister(prog, vers) |
* u_long prog; |
* u_long vers; |
*/ |
extern void svc_unregister (u_long, u_long); |
/* |
* Transport registration. |
* |
* xprt_register(xprt) |
* SVCXPRT *xprt; |
*/ |
extern void xprt_register (SVCXPRT *); |
/* |
* Transport un-register |
* |
* xprt_unregister(xprt) |
* SVCXPRT *xprt; |
*/ |
extern void xprt_unregister (SVCXPRT *); |
/* |
* When the service routine is called, it must first check to see if it |
* knows about the procedure; if not, it should call svcerr_noproc |
* and return. If so, it should deserialize its arguments via |
* SVC_GETARGS (defined above). If the deserialization does not work, |
* svcerr_decode should be called followed by a return. Successful |
* decoding of the arguments should be followed the execution of the |
* procedure's code and a call to svc_sendreply. |
* |
* Also, if the service refuses to execute the procedure due to too- |
* weak authentication parameters, svcerr_weakauth should be called. |
* Note: do not confuse access-control failure with weak authentication! |
* |
* NB: In pure implementations of rpc, the caller always waits for a reply |
* msg. This message is sent when svc_sendreply is called. |
* Therefore pure service implementations should always call |
* svc_sendreply even if the function logically returns void; use |
* xdr.h - xdr_void for the xdr routine. HOWEVER, tcp based rpc allows |
* for the abuse of pure rpc via batched calling or pipelining. In the |
* case of a batched call, svc_sendreply should NOT be called since |
* this would send a return message, which is what batching tries to avoid. |
* It is the service/protocol writer's responsibility to know which calls are |
* batched and which are not. Warning: responding to batch calls may |
* deadlock the caller and server processes! |
*/ |
extern bool_t svc_sendreply (SVCXPRT *, xdrproc_t, char *); |
extern void svcerr_decode (SVCXPRT *); |
extern void svcerr_weakauth (SVCXPRT *); |
extern void svcerr_noproc (SVCXPRT *); |
extern void svcerr_progvers (SVCXPRT *, u_long, u_long); |
extern void svcerr_auth (SVCXPRT *, enum auth_stat); |
extern void svcerr_noprog (SVCXPRT *); |
extern void svcerr_systemerr(SVCXPRT *); |
/* |
* Lowest level dispatching -OR- who owns this process anyway. |
* Somebody has to wait for incoming requests and then call the correct |
* service routine. The routine svc_run does infinite waiting; i.e., |
* svc_run never returns. |
* Since another (co-existant) package may wish to selectively wait for |
* incoming calls or other events outside of the rpc architecture, the |
* routine svc_getreq is provided. It must be passed readfds, the |
* "in-place" results of a select system call (see select, section 2). |
*/ |
/* |
* Global keeper of rpc service descriptors in use |
* dynamic; must be inspected before each call to select |
*/ |
#ifdef FD_SETSIZE |
extern void svc_getreqset (fd_set *); |
extern fd_set svc_fdset; |
#define svc_fds svc_fdset.fds_bits[0] /* compatibility */ |
#else |
extern int svc_fds; |
#endif |
/* |
* a small program implemented by the svc_rpc implementation itself; |
* also see clnt.h for protocol numbers. |
*/ |
extern void rpctest_service(); |
extern void svc_getreq (int); |
extern void svc_run (void); |
/* |
* Socket to use on svcxxx_create call to get default socket |
*/ |
#define RPC_ANYSOCK -1 |
/* |
* These are the existing service side transport implementations |
*/ |
/* |
* Memory based rpc for testing and timing. |
*/ |
extern SVCXPRT *svcraw_create (void); |
/* |
* Udp based rpc. |
*/ |
extern SVCXPRT *svcudp_create (int); |
extern SVCXPRT *svcudp_bufcreate (int, u_int, u_int); |
/* |
* Tcp based rpc. |
*/ |
extern SVCXPRT *svctcp_create (int, u_int, u_int); |
__END_DECLS |
#endif |
/pkgnet/tags/20220214/watt32/inc/rpc/svc_auth.h |
---|
0,0 → 1,56 |
/*!\file rpc/svc_auth.h |
* RPC authentication (server-side). |
*/ |
/* |
* 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. |
* |
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE |
* WARRANTIES OF DESIGN, MERCHANTABILITY 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 |
* |
* from: @(#)svc_auth.h 1.6 86/07/16 SMI |
* from: @(#)svc_auth.h 2.1 88/07/29 4.0 RPCSRC |
* $Id: svc_auth.h,v 1.4 1996/01/30 23:32:36 mpp Exp $ |
*/ |
/* |
* svc_auth.h, Service side of rpc authentication. |
* |
* Copyright (C) 1984, Sun Microsystems, Inc. |
*/ |
#ifndef __RPC_SVC_AUTH_H |
#define __RPC_SVC_AUTH_H |
/* |
* Server side authenticator |
*/ |
__BEGIN_DECLS |
extern enum auth_stat _authenticate (struct svc_req *, struct rpc_msg *); |
__END_DECLS |
#endif |
/pkgnet/tags/20220214/watt32/inc/rpc/types.h |
---|
0,0 → 1,70 |
/*!\file rpc/types.h |
* RPC type definitions. |
*/ |
/* |
* 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. |
* |
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE |
* WARRANTIES OF DESIGN, MERCHANTABILITY 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 |
* |
* from: @(#)types.h 1.18 87/07/24 SMI |
* from: @(#)types.h 2.3 88/08/15 4.0 RPCSRC |
* $Id: types.h,v 1.4 1996/01/30 23:32:39 mpp Exp $ |
*/ |
/* |
* Rpc additions to <sys/wtypes.h> |
*/ |
#ifndef __RPC_TYPES_H |
#define __RPC_TYPES_H |
#define bool_t int |
#define enum_t int |
#define __dontcare__ -1 |
#ifndef FALSE |
# define FALSE (0) |
#endif |
#ifndef TRUE |
# define TRUE (1) |
#endif |
#define mem_alloc(bsize) malloc(bsize) |
#define mem_free(ptr, bsize) free(ptr) |
#include <sys/wtypes.h> |
#include <sys/wtime.h> |
#include <netinet/in.h> |
#ifndef INADDR_LOOPBACK |
#define INADDR_LOOPBACK (u_long)0x7F000001 |
#endif |
#ifndef MAXHOSTNAMELEN |
#define MAXHOSTNAMELEN 64 |
#endif |
#endif |
/pkgnet/tags/20220214/watt32/inc/rpc/xdr.h |
---|
0,0 → 1,311 |
/*!\file rpc/xdr.h |
* eXternal Data Representation. |
*/ |
/* |
* 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. |
* |
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE |
* WARRANTIES OF DESIGN, MERCHANTABILITY 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 |
* |
* from: @(#)xdr.h 1.19 87/04/22 SMI |
* from: @(#)xdr.h 2.2 88/07/29 4.0 RPCSRC |
* $Id: xdr.h,v 1.4 1996/01/30 23:32:45 mpp Exp $ |
*/ |
/* |
* xdr.h, External Data Representation Serialization Routines. |
* |
* Copyright (C) 1984, Sun Microsystems, Inc. |
*/ |
#ifndef __RPC_XDR_H |
#define __RPC_XDR_H |
#ifndef __SYS_CDEFS_H |
#include <sys/cdefs.h> |
#endif |
/* |
* XDR provides a conventional way for converting between C data |
* types and an external bit-string representation. Library supplied |
* routines provide for the conversion on built-in C data types. These |
* routines and utility routines defined here are used to help implement |
* a type encode/decode routine for each user-defined type. |
* |
* Each data type provides a single procedure which takes two arguments: |
* |
* bool_t |
* xdrproc(xdrs, argresp) |
* XDR *xdrs; |
* <type> *argresp; |
* |
* xdrs is an instance of a XDR handle, to which or from which the data |
* type is to be converted. argresp is a pointer to the structure to be |
* converted. The XDR handle contains an operation field which indicates |
* which of the operations (ENCODE, DECODE * or FREE) is to be performed. |
* |
* XDR_DECODE may allocate space if the pointer argresp is null. This |
* data can be freed with the XDR_FREE operation. |
* |
* We write only one procedure per data type to make it easy |
* to keep the encode and decode procedures for a data type consistent. |
* In many cases the same code performs all operations on a user defined type, |
* because all the hard work is done in the component type routines. |
* decode as a series of calls on the nested data types. |
*/ |
/* |
* Xdr operations. XDR_ENCODE causes the type to be encoded into the |
* stream. XDR_DECODE causes the type to be extracted from the stream. |
* XDR_FREE can be used to release the space allocated by an XDR_DECODE |
* request. |
*/ |
enum xdr_op { |
XDR_ENCODE = 0, |
XDR_DECODE = 1, |
XDR_FREE = 2 |
}; |
/* |
* This is the number of bytes per unit of external data. |
*/ |
#define BYTES_PER_XDR_UNIT (4) |
#define RNDUP(x) ((((x) + BYTES_PER_XDR_UNIT - 1) / BYTES_PER_XDR_UNIT) \ |
* BYTES_PER_XDR_UNIT) |
/* |
* A xdrproc_t exists for each data type which is to be encoded or decoded. |
* |
* The second argument to the xdrproc_t is a pointer to an opaque pointer. |
* The opaque pointer generally points to a structure of the data type |
* to be decoded. If this pointer is 0, then the type routines should |
* allocate dynamic storage of the appropriate size and return it. |
* bool_t (*xdrproc_t)(XDR *, caddr_t *); |
*/ |
typedef bool_t (*xdrproc_t)(); |
/* |
* The XDR handle. |
* Contains operation which is being applied to the stream, |
* an operations vector for the particular implementation (e.g. see xdr_mem.c), |
* and two private fields for the use of the particular implementation. |
*/ |
typedef struct { |
enum xdr_op x_op; /* operation; fast additional param */ |
struct xdr_ops { |
bool_t (*x_getlong)(); /* get a long from underlying stream */ |
bool_t (*x_putlong)(); /* put a long to " */ |
bool_t (*x_getbytes)();/* get some bytes from " */ |
bool_t (*x_putbytes)();/* put some bytes to " */ |
u_int (*x_getpostn)();/* returns bytes off from beginning */ |
bool_t (*x_setpostn)();/* lets you reposition the stream */ |
long * (*x_inline)(); /* buf quick ptr to buffered data */ |
void (*x_destroy)(); /* free privates of this xdr_stream */ |
} *x_ops; |
caddr_t x_public; /* users' data */ |
caddr_t x_private; /* pointer to private data */ |
caddr_t x_base; /* private used for position info */ |
int x_handy; /* extra private word */ |
} XDR; |
/* |
* Operations defined on a XDR handle |
* |
* XDR *xdrs; |
* long *longp; |
* caddr_t addr; |
* u_int len; |
* u_int pos; |
*/ |
#define XDR_GETLONG(xdrs, longp) \ |
(*(xdrs)->x_ops->x_getlong)(xdrs, longp) |
#define xdr_getlong(xdrs, longp) \ |
(*(xdrs)->x_ops->x_getlong)(xdrs, longp) |
#define XDR_PUTLONG(xdrs, longp) \ |
(*(xdrs)->x_ops->x_putlong)(xdrs, longp) |
#define xdr_putlong(xdrs, longp) \ |
(*(xdrs)->x_ops->x_putlong)(xdrs, longp) |
#define XDR_GETBYTES(xdrs, addr, len) \ |
(*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) |
#define xdr_getbytes(xdrs, addr, len) \ |
(*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) |
#define XDR_PUTBYTES(xdrs, addr, len) \ |
(*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) |
#define xdr_putbytes(xdrs, addr, len) \ |
(*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) |
#define XDR_GETPOS(xdrs) \ |
(*(xdrs)->x_ops->x_getpostn)(xdrs) |
#define xdr_getpos(xdrs) \ |
(*(xdrs)->x_ops->x_getpostn)(xdrs) |
#define XDR_SETPOS(xdrs, pos) \ |
(*(xdrs)->x_ops->x_setpostn)(xdrs, pos) |
#define xdr_setpos(xdrs, pos) \ |
(*(xdrs)->x_ops->x_setpostn)(xdrs, pos) |
#define XDR_INLINE(xdrs, len) \ |
(*(xdrs)->x_ops->x_inline)(xdrs, len) |
#define xdr_inline(xdrs, len) \ |
(*(xdrs)->x_ops->x_inline)(xdrs, len) |
#define XDR_DESTROY(xdrs) \ |
if ((xdrs)->x_ops->x_destroy) \ |
(*(xdrs)->x_ops->x_destroy)(xdrs) |
#define xdr_destroy(xdrs) \ |
if ((xdrs)->x_ops->x_destroy) \ |
(*(xdrs)->x_ops->x_destroy)(xdrs) |
/* |
* Support struct for discriminated unions. |
* You create an array of xdrdiscrim structures, terminated with |
* a entry with a null procedure pointer. The xdr_union routine gets |
* the discriminant value and then searches the array of structures |
* for a matching value. If a match is found the associated xdr routine |
* is called to handle that part of the union. If there is |
* no match, then a default routine may be called. |
* If there is no match and no default routine it is an error. |
*/ |
#define NULL_xdrproc_t ((xdrproc_t)0L) |
struct xdr_discrim { |
int value; |
xdrproc_t proc; |
}; |
/* |
* In-line routines for fast encode/decode of primitive data types. |
* Caveat emptor: these use single memory cycles to get the |
* data from the underlying buffer, and will fail to operate |
* properly if the data is not aligned. The standard way to use these |
* is to say: |
* if ((buf = XDR_INLINE(xdrs, count)) == NULL) |
* return (FALSE); |
* <<< macro calls >>> |
* where ``count'' is the number of bytes of data occupied |
* by the primitive data types. |
* |
* N.B. and frozen for all time: each data type here uses 4 bytes |
* of external representation. |
*/ |
#define IXDR_GET_LONG(buf) ((long)ntohl((u_long)*(buf)++)) |
#define IXDR_PUT_LONG(buf, v) (*(buf)++ = (long)htonl((u_long)v)) |
#define IXDR_GET_BOOL(buf) ((bool_t)IXDR_GET_LONG(buf)) |
#define IXDR_GET_ENUM(buf, t) ((t)IXDR_GET_LONG(buf)) |
#define IXDR_GET_U_LONG(buf) ((u_long)IXDR_GET_LONG(buf)) |
#define IXDR_GET_SHORT(buf) ((short)IXDR_GET_LONG(buf)) |
#define IXDR_GET_U_SHORT(buf) ((u_short)IXDR_GET_LONG(buf)) |
#define IXDR_PUT_BOOL(buf, v) IXDR_PUT_LONG((buf), ((long)(v))) |
#define IXDR_PUT_ENUM(buf, v) IXDR_PUT_LONG((buf), ((long)(v))) |
#define IXDR_PUT_U_LONG(buf, v) IXDR_PUT_LONG((buf), ((long)(v))) |
#define IXDR_PUT_SHORT(buf, v) IXDR_PUT_LONG((buf), ((long)(v))) |
#define IXDR_PUT_U_SHORT(buf, v) IXDR_PUT_LONG((buf), ((long)(v))) |
/* |
* These are the "generic" xdr routines. |
*/ |
__BEGIN_DECLS |
extern bool_t xdr_void (XDR *, caddr_t); |
extern bool_t xdr_int (XDR *, int *); |
extern bool_t xdr_u_int (XDR *, u_int *); |
extern bool_t xdr_long (XDR *, long *); |
extern bool_t xdr_u_long (XDR *, u_long *); |
extern bool_t xdr_short (XDR *, short *); |
extern bool_t xdr_u_short (XDR *, u_short *); |
extern bool_t xdr_bool (XDR *, bool_t *); |
extern bool_t xdr_enum (XDR *, enum_t *); |
extern bool_t xdr_array (XDR *, char **, u_int *, u_int, u_int, xdrproc_t); |
extern bool_t xdr_bytes (XDR *, char **, u_int *, u_int); |
extern bool_t __xdr_opaque (XDR *, caddr_t, u_int); |
extern bool_t xdr_string (XDR *, char **, u_int); |
extern bool_t xdr_union (XDR *, enum_t *, char *, struct xdr_discrim *, xdrproc_t); |
extern bool_t xdr_char (XDR *, char *); |
extern bool_t xdr_u_char (XDR *, char *); |
extern bool_t xdr_vector (XDR *, char *, u_int, u_int, xdrproc_t); |
extern bool_t xdr_float (XDR *, float *); |
extern bool_t xdr_double (XDR *, double *); |
extern bool_t xdr_reference (XDR *, caddr_t *, u_int, xdrproc_t); |
extern bool_t xdr_pointer (XDR *, caddr_t *, u_int, xdrproc_t); |
extern bool_t xdr_wrapstring (XDR *, char **); |
extern void xdr_free (xdrproc_t, char *); |
/* |
* Hack to avoid missing typecast from rpcgen when |
* producing xdr_opaque() |
*/ |
#define xdr_opaque(xdr,obj,size) __xdr_opaque(xdr,(caddr_t)obj,size) |
__END_DECLS |
/* |
* Common opaque bytes objects used by many rpc protocols; |
* declared here due to commonality. |
*/ |
#define MAX_NETOBJ_SZ 1024 |
struct netobj { |
u_int n_len; |
char *n_bytes; |
}; |
typedef struct netobj netobj; |
/* |
* These are the public routines for the various implementations of |
* xdr streams. |
*/ |
__BEGIN_DECLS |
extern bool_t xdr_netobj (XDR *, struct netobj *); |
/* XDR using memory buffers */ |
extern void xdrmem_create (XDR *, char *, u_int, enum xdr_op); |
#if defined(__STDIO_H) || defined(_STDIO_H) || defined(__dj_include_stdio_h_) |
/* XDR using stdio library */ |
extern void xdrstdio_create (XDR *, FILE *, enum xdr_op); |
#endif |
/* XDR pseudo records for tcp */ |
extern void xdrrec_create (XDR *, u_int, u_int, char *, int (*)(), int (*)()); |
/* make end of xdr record */ |
extern bool_t xdrrec_endofrecord (XDR *, int); |
/* move to beginning of next record */ |
extern bool_t xdrrec_skiprecord (XDR *); |
/* true if no more input */ |
extern bool_t xdrrec_eof (XDR *); |
__END_DECLS |
#endif |