/contrib/media/updf/include/rpc/auth.h |
---|
0,0 → 1,214 |
/* @(#)auth.h 2.3 88/08/07 4.0 RPCSRC; from 1.17 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 |
*/ |
/* |
* 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 1 |
#include <sys/cdefs.h> |
#include <sys/socket.h> |
#include <rpc/xdr.h> |
__BEGIN_DECLS |
#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 { |
uint32_t high; |
uint32_t low; |
} key; |
char c[8]; |
}; |
typedef union des_block des_block; |
extern bool_t xdr_des_block (XDR *__xdrs, des_block *__blkp) __THROW; |
/* |
* Authentication info. Opaque to client. |
*/ |
struct opaque_auth { |
enum_t oa_flavor; /* flavor of auth */ |
char* oa_base; /* address of more auth stuff */ |
unsigned int oa_length; /* not to exceed MAX_AUTH_BYTES */ |
}; |
/* |
* Auth handle, interface to client side authenticators. |
*/ |
typedef struct AUTH AUTH; |
struct AUTH { |
struct opaque_auth ah_cred; |
struct opaque_auth ah_verf; |
union des_block ah_key; |
struct auth_ops { |
void (*ah_nextverf) (AUTH *); |
int (*ah_marshal) (AUTH *, XDR *); /* nextverf & serialize */ |
int (*ah_validate) (AUTH *, struct opaque_auth *); |
/* validate verifier */ |
int (*ah_refresh) (AUTH *); /* refresh credentials */ |
void (*ah_destroy) (AUTH *); /* destroy this structure */ |
} *ah_ops; |
char* ah_private; |
}; |
/* |
* 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; |
*/ |
extern AUTH *authunix_create (char *__machname,uid_t __uid, gid_t __gid, |
int __len, gid_t *__aup_gids) __THROW; |
extern AUTH *authunix_create_default (void) __THROW; |
extern AUTH *authnone_create (void) __THROW; |
extern AUTH *authdes_create (const char *__servername, unsigned int __window, |
struct sockaddr *__syncaddr, des_block *__ckey) |
__THROW; |
extern AUTH *authdes_pk_create (const char *, netobj *, unsigned int, |
struct sockaddr *, des_block *) __THROW; |
#define AUTH_NONE 0 /* no authentication */ |
#define AUTH_NULL 0 /* backward compatibility */ |
#define AUTH_SYS 1 /* unix style (uid, gids) */ |
#define AUTH_UNIX AUTH_SYS |
#define AUTH_SHORT 2 /* short hand unix style */ |
#define AUTH_DES 3 /* des style (encrypted timestamps) */ |
#define AUTH_DH AUTH_DES /* Diffie-Hellman (this is DES) */ |
#define AUTH_KERB 4 /* kerberos style */ |
/* |
* Netname manipulating functions |
* |
*/ |
extern int getnetname (char *) __THROW; |
extern int host2netname (char *, const char *, const char *) __THROW; |
extern int user2netname (char *, const uid_t, const char *) __THROW; |
extern int netname2user (const char *, uid_t *, gid_t *, int *, gid_t *) |
__THROW; |
extern int netname2host (const char *, char *, const int) __THROW; |
/* |
* |
* These routines interface to the keyserv daemon |
* |
*/ |
extern int key_decryptsession (char *, des_block *) __THROW; |
extern int key_decryptsession_pk (char *, netobj *, des_block *) __THROW; |
extern int key_encryptsession (char *, des_block *) __THROW; |
extern int key_encryptsession_pk (char *, netobj *, des_block *) __THROW; |
extern int key_gendes (des_block *) __THROW; |
extern int key_setsecret (char *) __THROW; |
extern int key_secretkey_is_set (void) __THROW; |
extern int key_get_conv (char *, des_block *) __THROW; |
/* |
* XDR an opaque authentication struct. |
*/ |
extern bool_t xdr_opaque_auth (XDR *, struct opaque_auth *) __THROW; |
__END_DECLS |
#endif /* rpc/auth.h */ |
/contrib/media/updf/include/rpc/auth_des.h |
---|
0,0 → 1,112 |
/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. |
This file is part of the GNU C Library. |
The GNU C Library is free software; you can redistribute it and/or |
modify it under the terms of the GNU Library General Public License as |
published by the Free Software Foundation; either version 2 of the |
License, or (at your option) any later version. |
The GNU C Library is distributed in the hope that it will be useful, |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
Library General Public License for more details. |
You should have received a copy of the GNU Library General Public |
License along with the GNU C Library; see the file COPYING.LIB. If not, |
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
Boston, MA 02111-1307, USA. */ |
#ifndef _RPC_AUTH_DES_H |
#define _RPC_AUTH_DES_H 1 |
#include <sys/cdefs.h> |
#include <rpc/auth.h> |
__BEGIN_DECLS |
/* 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 */ |
uint32_t window; /* associated window */ |
}; |
/* A credential */ |
struct authdes_cred |
{ |
enum authdes_namekind adc_namekind; |
struct authdes_fullname adc_fullname; |
uint32_t adc_nickname; |
}; |
/* A timeval replacement for !32bit platforms */ |
struct rpc_timeval |
{ |
uint32_t tv_sec; /* Seconds. */ |
uint32_t tv_usec; /* Microseconds. */ |
}; |
/* A des authentication verifier */ |
struct authdes_verf |
{ |
union |
{ |
struct rpc_timeval adv_ctime; /* clear time */ |
des_block adv_xtime; /* crypt time */ |
} |
adv_time_u; |
uint32_t 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 |
/* Map a des credential into a unix cred. */ |
extern int authdes_getucred (const struct authdes_cred * __adc, |
uid_t * __uid, gid_t * __gid, |
short *__grouplen, gid_t * __groups) __THROW; |
/* Get the public key for NAME and place it in KEY. NAME can only be |
up to MAXNETNAMELEN bytes long and the destination buffer KEY should |
have HEXKEYBYTES + 1 bytes long to fit all characters from the key. */ |
extern int getpublickey (const char *__name, char *__key) __THROW; |
/* Get the secret key for NAME and place it in KEY. PASSWD is used to |
decrypt the encrypted key stored in the database. NAME can only be |
up to MAXNETNAMELEN bytes long and the destination buffer KEY |
should have HEXKEYBYTES + 1 bytes long to fit all characters from |
the key. */ |
extern int getsecretkey (const char *__name, char *__key, |
const char *__passwd) __THROW; |
extern int rtime (struct sockaddr_in *__addrp, struct rpc_timeval *__timep, |
struct rpc_timeval *__timeout) __THROW; |
__END_DECLS |
#endif /* rpc/auth_des.h */ |
/contrib/media/updf/include/rpc/auth_unix.h |
---|
0,0 → 1,90 |
/* @(#)auth_unix.h 2.2 88/07/29 4.0 RPCSRC; from 1.8 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 |
*/ |
/* @(#)auth_unix.h 1.5 86/07/16 SMI */ |
/* |
* 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 1 |
#include <sys/cdefs.h> |
#include <sys/types.h> |
#include <rpc/types.h> |
#include <rpc/auth.h> |
#include <rpc/xdr.h> |
__BEGIN_DECLS |
/* 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 |
{ |
unsigned long aup_time; |
char *aup_machname; |
uid_t aup_uid; |
gid_t aup_gid; |
unsigned int aup_len; |
gid_t *aup_gids; |
}; |
extern bool_t xdr_authunix_parms (XDR *__xdrs, struct authunix_parms *__p) |
__THROW; |
/* |
* 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; |
}; |
__END_DECLS |
#endif /* rpc/auth_unix.h */ |
/contrib/media/updf/include/rpc/clnt.h |
---|
0,0 → 1,421 |
/* @(#)clnt.h 2.1 88/07/29 4.0 RPCSRC; from 1.31 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 |
*/ |
/* |
* clnt.h - Client side remote procedure call interface. |
* |
* Copyright (C) 1984, Sun Microsystems, Inc. |
*/ |
#ifndef _RPC_CLNT_H |
#define _RPC_CLNT_H 1 |
#include <sys/cdefs.h> |
#include <sys/types.h> |
#include <rpc/types.h> |
#include <rpc/auth.h> |
#include <sys/un.h> |
__BEGIN_DECLS |
/* |
* 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" */ |
RPC_NOBROADCAST = 21, /* Broadcasting not supported */ |
/* |
* callrpc & clnt_create errors |
*/ |
RPC_UNKNOWNHOST=13, /* unknown host name */ |
RPC_UNKNOWNPROTO=17, /* unknown protocol */ |
RPC_UNKNOWNADDR = 19, /* Remote address unknown */ |
/* |
* rpcbind errors |
*/ |
RPC_RPCBFAILURE=14, /* portmapper failed in its call */ |
#define RPC_PMAPFAILURE RPC_RPCBFAILURE |
RPC_PROGNOTREGISTERED=15, /* remote program is not registered */ |
RPC_N2AXLATEFAILURE = 22, /* Name to addr translation failed */ |
/* |
* unspecified error |
*/ |
RPC_FAILED=16, |
RPC_INTR=18, |
RPC_TLIERROR=20, |
RPC_UDERROR=23, |
/* |
* asynchronous errors |
*/ |
RPC_INPROGRESS = 24, |
RPC_STALERACHANDLE = 25 |
}; |
/* |
* 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 { |
unsigned long low; /* lowest verion supported */ |
unsigned 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 CLIENT CLIENT; |
struct CLIENT { |
AUTH *cl_auth; /* authenticator */ |
struct clnt_ops { |
enum clnt_stat (*cl_call) (CLIENT *, unsigned long, xdrproc_t, char*, xdrproc_t, |
char*, struct timeval); |
/* call remote procedure */ |
void (*cl_abort) (void); /* abort a call */ |
void (*cl_geterr) (CLIENT *, struct rpc_err *); |
/* get specific error code */ |
bool_t (*cl_freeres) (CLIENT *, xdrproc_t, char*); |
/* frees results */ |
void (*cl_destroy) (CLIENT *); /* destroy this structure */ |
bool_t (*cl_control) (CLIENT *, int, char *); |
/* the ioctl() of rpc */ |
} *cl_ops; |
char* cl_private; /* private stuff */ |
}; |
/* |
* client side rpc interface ops |
* |
* Parameter types are: |
* |
*/ |
/* |
* enum clnt_stat |
* CLNT_CALL(rh, proc, xargs, argsp, xres, resp, timeout) |
* CLIENT *rh; |
* unsigned long proc; |
* xdrproc_t xargs; |
* char* argsp; |
* xdrproc_t xres; |
* char* 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; |
* char* 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; |
* unsigned 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 all transports |
* |
* Note: options marked XXX are no-ops in this implementation of RPC. |
* The are present in TI-RPC but can't be implemented here since they |
* depend on the presence of STREAMS/TLI, which we don't have. |
*/ |
#define CLSET_TIMEOUT 1 /* set timeout (timeval) */ |
#define CLGET_TIMEOUT 2 /* get timeout (timeval) */ |
#define CLGET_SERVER_ADDR 3 /* get server's address (sockaddr) */ |
#define CLGET_FD 6 /* get connections file descriptor */ |
#define CLGET_SVC_ADDR 7 /* get server's address (netbuf) XXX */ |
#define CLSET_FD_CLOSE 8 /* close fd while clnt_destroy */ |
#define CLSET_FD_NCLOSE 9 /* Do not close fd while clnt_destroy*/ |
#define CLGET_XID 10 /* Get xid */ |
#define CLSET_XID 11 /* Set xid */ |
#define CLGET_VERS 12 /* Get version number */ |
#define CLSET_VERS 13 /* Set version number */ |
#define CLGET_PROG 14 /* Get program number */ |
#define CLSET_PROG 15 /* Set program number */ |
#define CLSET_SVC_ADDR 16 /* get server's address (netbuf) XXX */ |
#define CLSET_PUSH_TIMOD 17 /* push timod if not already present XXX */ |
#define CLSET_POP_TIMOD 18 /* pop timod XXX */ |
/* |
* Connectionless 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 ((unsigned long)1) |
#define RPCTEST_VERSION ((unsigned long)1) |
#define RPCTEST_NULL_PROC ((unsigned long)2) |
#define RPCTEST_NULL_BATCH_PROC ((unsigned long)3) |
/* |
* By convention, procedure 0 takes null arguments and returns them |
*/ |
#define NULLPROC ((unsigned long)0) |
/* |
* 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) |
* unsigned long prog; |
* unsigned long vers; |
*/ |
extern CLIENT *clntraw_create (const unsigned long __prog, const unsigned long __vers) |
__THROW; |
/* |
* Generic client creation routine. Supported protocols are "udp", "tcp" and |
* "unix" |
* CLIENT * |
* clnt_create(host, prog, vers, prot) |
* char *host; -- hostname |
* unsigned long prog; -- program number |
* u_ong vers; -- version number |
* char *prot; -- protocol |
*/ |
extern CLIENT *clnt_create (const char *__host, const unsigned long __prog, |
const unsigned long __vers, const char *__prot) |
__THROW; |
/* |
* TCP based rpc |
* CLIENT * |
* clnttcp_create(raddr, prog, vers, sockp, sendsz, recvsz) |
* struct sockaddr_in *raddr; |
* unsigned long prog; |
* unsigned long version; |
* register int *sockp; |
* unsigned int sendsz; |
* unsigned int recvsz; |
*/ |
extern CLIENT *clnttcp_create (struct sockaddr_in *__raddr, unsigned long __prog, |
unsigned long __version, int *__sockp, unsigned int __sendsz, |
unsigned int __recvsz) __THROW; |
/* |
* UDP based rpc. |
* CLIENT * |
* clntudp_create(raddr, program, version, wait, sockp) |
* struct sockaddr_in *raddr; |
* unsigned long program; |
* unsigned long version; |
* struct timeval wait_resend; |
* 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; |
* unsigned long program; |
* unsigned long version; |
* struct timeval wait_resend; |
* int *sockp; |
* unsigned int sendsz; |
* unsigned int recvsz; |
*/ |
extern CLIENT *clntudp_create (struct sockaddr_in *__raddr, unsigned long __program, |
unsigned long __version, struct timeval __wait_resend, |
int *__sockp) __THROW; |
extern CLIENT *clntudp_bufcreate (struct sockaddr_in *__raddr, |
unsigned long __program, unsigned long __version, |
struct timeval __wait_resend, int *__sockp, |
unsigned int __sendsz, unsigned int __recvsz) __THROW; |
/* |
* AF_UNIX based rpc |
* CLIENT * |
* clntunix_create(raddr, prog, vers, sockp, sendsz, recvsz) |
* struct sockaddr_un *raddr; |
* unsigned long prog; |
* unsigned long version; |
* register int *sockp; |
* unsigned int sendsz; |
* unsigned int recvsz; |
*/ |
extern CLIENT *clntunix_create (struct sockaddr_un *__raddr, unsigned long __program, |
unsigned long __version, int *__sockp, |
unsigned int __sendsz, unsigned int __recvsz) __THROW; |
extern int callrpc (const char *__host, const unsigned long __prognum, |
const unsigned long __versnum, const unsigned long __procnum, |
const xdrproc_t __inproc, const char *__in, |
const xdrproc_t __outproc, char *__out) __THROW; |
extern int _rpc_dtablesize (void) __THROW; |
/* |
* Print why creation failed |
*/ |
extern void clnt_pcreateerror (const char *__msg) __THROW; /* stderr */ |
extern char *clnt_spcreateerror(const char *__msg) __THROW; /* string */ |
/* |
* Like clnt_perror(), but is more verbose in its output |
*/ |
extern void clnt_perrno (enum clnt_stat __num) __THROW; /* stderr */ |
/* |
* Print an English error message, given the client error code |
*/ |
extern void clnt_perror (CLIENT *__clnt, const char *__msg) __THROW; |
/* stderr */ |
extern char *clnt_sperror (CLIENT *__clnt, const char *__msg) __THROW; |
/* string */ |
/* |
* 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 */ |
}; |
extern struct rpc_createerr rpc_createerr; |
/* |
* Copy error message to buffer. |
*/ |
extern char *clnt_sperrno (enum clnt_stat __num) __THROW; /* string */ |
/* |
* get the port number on the host for the rpc program,version and proto |
*/ |
extern int getrpcport (const char * __host, unsigned long __prognum, |
unsigned long __versnum, unsigned int proto) __THROW; |
/* |
* get the local host's IP address without consulting |
* name service library functions |
*/ |
extern void get_myaddress (struct sockaddr_in *) __THROW; |
#define UDPMSGSIZE 8800 /* rpc imposed limit on udp msg size */ |
#define RPCSMALLMSGSIZE 400 /* a more reasonable packet size */ |
__END_DECLS |
#endif /* rpc/clnt.h */ |
/contrib/media/updf/include/rpc/des_crypt.h |
---|
0,0 → 1,97 |
/* |
* @(#)des_crypt.h 2.1 88/08/11 4.0 RPCSRC; from 1.4 88/02/08 (C) 1986 SMI |
* |
* des_crypt.h, des library routine interface |
* Copyright (C) 1986, Sun Microsystems, Inc. |
*/ |
/* |
* 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 |
*/ |
#ifndef __DES_CRYPT_H__ |
#define __DES_CRYPT_H__ 1 |
#include <features.h> |
__BEGIN_DECLS |
#define DES_MAXDATA 8192 /* max bytes encrypted in one call */ |
#define DES_DIRMASK (1 << 0) |
#define DES_ENCRYPT (0*DES_DIRMASK) /* Encrypt */ |
#define DES_DECRYPT (1*DES_DIRMASK) /* Decrypt */ |
#define DES_DEVMASK (1 << 1) |
#define DES_HW (0*DES_DEVMASK) /* Use hardware device */ |
#define DES_SW (1*DES_DEVMASK) /* Use software device */ |
#define DESERR_NONE 0 /* succeeded */ |
#define DESERR_NOHWDEVICE 1 /* succeeded, but hw device not available */ |
#define DESERR_HWERROR 2 /* failed, hardware/driver error */ |
#define DESERR_BADPARAM 3 /* failed, bad parameter to call */ |
#define DES_FAILED(err) \ |
((err) > DESERR_NOHWDEVICE) |
/* |
* cbc_crypt() |
* ecb_crypt() |
* |
* Encrypt (or decrypt) len bytes of a buffer buf. |
* The length must be a multiple of eight. |
* The key should have odd parity in the low bit of each byte. |
* ivec is the input vector, and is updated to the new one (cbc only). |
* The mode is created by oring together the appropriate parameters. |
* DESERR_NOHWDEVICE is returned if DES_HW was specified but |
* there was no hardware to do it on (the data will still be |
* encrypted though, in software). |
*/ |
/* |
* Cipher Block Chaining mode |
*/ |
extern int cbc_crypt (char *__key, char *__buf, unsigned __len, |
unsigned __mode, char *__ivec) __THROW; |
/* |
* Electronic Code Book mode |
*/ |
extern int ecb_crypt (char *__key, char *__buf, unsigned __len, |
unsigned __mode) __THROW; |
/* |
* Set des parity for a key. |
* DES parity is odd and in the low bit of each byte |
*/ |
extern void des_setparity (char *__key) __THROW; |
__END_DECLS |
#endif |
/contrib/media/updf/include/rpc/key_prot.h |
---|
0,0 → 1,346 |
/* |
* Please do not edit this file. |
* It was generated using rpcgen. |
*/ |
#ifndef _KEY_PROT_H_RPCGEN |
#define _KEY_PROT_H_RPCGEN |
#include <rpc/rpc.h> |
/* |
* 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 |
*/ |
#if 0 |
#pragma ident "@(#)key_prot.x 1.7 94/04/29 SMI" |
#endif |
/* Copyright (c) 1990, 1991 Sun Microsystems, Inc. */ |
/* |
* Compiled from key_prot.x using rpcgen. |
* DO NOT EDIT THIS FILE! |
* This is NOT source code! |
*/ |
#define PROOT 3 |
#define HEXMODULUS "d4a0ba0250b6fd2ec626e7efd637df76c716e22d0944b88b" |
#define HEXKEYBYTES 48 |
#define KEYSIZE 192 |
#define KEYBYTES 24 |
#define KEYCHECKSUMSIZE 16 |
enum keystatus { |
KEY_SUCCESS = 0, |
KEY_NOSECRET = 1, |
KEY_UNKNOWN = 2, |
KEY_SYSTEMERR = 3, |
}; |
typedef enum keystatus keystatus; |
#ifdef __cplusplus |
extern "C" bool_t xdr_keystatus(XDR *, keystatus*); |
#elif __STDC__ |
extern bool_t xdr_keystatus(XDR *, keystatus*); |
#else /* Old Style C */ |
bool_t xdr_keystatus(); |
#endif /* Old Style C */ |
typedef char keybuf[HEXKEYBYTES]; |
#ifdef __cplusplus |
extern "C" bool_t xdr_keybuf(XDR *, keybuf); |
#elif __STDC__ |
extern bool_t xdr_keybuf(XDR *, keybuf); |
#else /* Old Style C */ |
bool_t xdr_keybuf(); |
#endif /* Old Style C */ |
typedef char *netnamestr; |
#ifdef __cplusplus |
extern "C" bool_t xdr_netnamestr(XDR *, netnamestr*); |
#elif __STDC__ |
extern bool_t xdr_netnamestr(XDR *, netnamestr*); |
#else /* Old Style C */ |
bool_t xdr_netnamestr(); |
#endif /* Old Style C */ |
struct cryptkeyarg { |
netnamestr remotename; |
des_block deskey; |
}; |
typedef struct cryptkeyarg cryptkeyarg; |
#ifdef __cplusplus |
extern "C" bool_t xdr_cryptkeyarg(XDR *, cryptkeyarg*); |
#elif __STDC__ |
extern bool_t xdr_cryptkeyarg(XDR *, cryptkeyarg*); |
#else /* Old Style C */ |
bool_t xdr_cryptkeyarg(); |
#endif /* Old Style C */ |
struct cryptkeyarg2 { |
netnamestr remotename; |
netobj remotekey; |
des_block deskey; |
}; |
typedef struct cryptkeyarg2 cryptkeyarg2; |
#ifdef __cplusplus |
extern "C" bool_t xdr_cryptkeyarg2(XDR *, cryptkeyarg2*); |
#elif __STDC__ |
extern bool_t xdr_cryptkeyarg2(XDR *, cryptkeyarg2*); |
#else /* Old Style C */ |
bool_t xdr_cryptkeyarg2(); |
#endif /* Old Style C */ |
struct cryptkeyres { |
keystatus status; |
union { |
des_block deskey; |
} cryptkeyres_u; |
}; |
typedef struct cryptkeyres cryptkeyres; |
#ifdef __cplusplus |
extern "C" bool_t xdr_cryptkeyres(XDR *, cryptkeyres*); |
#elif __STDC__ |
extern bool_t xdr_cryptkeyres(XDR *, cryptkeyres*); |
#else /* Old Style C */ |
bool_t xdr_cryptkeyres(); |
#endif /* Old Style C */ |
#define MAXGIDS 16 |
struct unixcred { |
unsigned int uid; |
unsigned int gid; |
struct { |
unsigned int gids_len; |
unsigned int *gids_val; |
} gids; |
}; |
typedef struct unixcred unixcred; |
#ifdef __cplusplus |
extern "C" bool_t xdr_unixcred(XDR *, unixcred*); |
#elif __STDC__ |
extern bool_t xdr_unixcred(XDR *, unixcred*); |
#else /* Old Style C */ |
bool_t xdr_unixcred(); |
#endif /* Old Style C */ |
struct getcredres { |
keystatus status; |
union { |
unixcred cred; |
} getcredres_u; |
}; |
typedef struct getcredres getcredres; |
#ifdef __cplusplus |
extern "C" bool_t xdr_getcredres(XDR *, getcredres*); |
#elif __STDC__ |
extern bool_t xdr_getcredres(XDR *, getcredres*); |
#else /* Old Style C */ |
bool_t xdr_getcredres(); |
#endif /* Old Style C */ |
struct key_netstarg { |
keybuf st_priv_key; |
keybuf st_pub_key; |
netnamestr st_netname; |
}; |
typedef struct key_netstarg key_netstarg; |
#ifdef __cplusplus |
extern "C" bool_t xdr_key_netstarg(XDR *, key_netstarg*); |
#elif __STDC__ |
extern bool_t xdr_key_netstarg(XDR *, key_netstarg*); |
#else /* Old Style C */ |
bool_t xdr_key_netstarg(); |
#endif /* Old Style C */ |
struct key_netstres { |
keystatus status; |
union { |
key_netstarg knet; |
} key_netstres_u; |
}; |
typedef struct key_netstres key_netstres; |
#ifdef __cplusplus |
extern "C" bool_t xdr_key_netstres(XDR *, key_netstres*); |
#elif __STDC__ |
extern bool_t xdr_key_netstres(XDR *, key_netstres*); |
#else /* Old Style C */ |
bool_t xdr_key_netstres(); |
#endif /* Old Style C */ |
#ifndef opaque |
#define opaque char |
#endif |
#define KEY_PROG ((unsigned long)100029) |
#define KEY_VERS ((unsigned long)1) |
#ifdef __cplusplus |
#define KEY_SET ((unsigned long)1) |
extern "C" keystatus * key_set_1(opaque *, CLIENT *); |
extern "C" keystatus * key_set_1_svc(opaque *, struct svc_req *); |
#define KEY_ENCRYPT ((unsigned long)2) |
extern "C" cryptkeyres * key_encrypt_1(cryptkeyarg *, CLIENT *); |
extern "C" cryptkeyres * key_encrypt_1_svc(cryptkeyarg *, struct svc_req *); |
#define KEY_DECRYPT ((unsigned long)3) |
extern "C" cryptkeyres * key_decrypt_1(cryptkeyarg *, CLIENT *); |
extern "C" cryptkeyres * key_decrypt_1_svc(cryptkeyarg *, struct svc_req *); |
#define KEY_GEN ((unsigned long)4) |
extern "C" des_block * key_gen_1(void *, CLIENT *); |
extern "C" des_block * key_gen_1_svc(void *, struct svc_req *); |
#define KEY_GETCRED ((unsigned long)5) |
extern "C" getcredres * key_getcred_1(netnamestr *, CLIENT *); |
extern "C" getcredres * key_getcred_1_svc(netnamestr *, struct svc_req *); |
#elif __STDC__ |
#define KEY_SET ((unsigned long)1) |
extern keystatus * key_set_1(opaque *, CLIENT *); |
extern keystatus * key_set_1_svc(opaque *, struct svc_req *); |
#define KEY_ENCRYPT ((unsigned long)2) |
extern cryptkeyres * key_encrypt_1(cryptkeyarg *, CLIENT *); |
extern cryptkeyres * key_encrypt_1_svc(cryptkeyarg *, struct svc_req *); |
#define KEY_DECRYPT ((unsigned long)3) |
extern cryptkeyres * key_decrypt_1(cryptkeyarg *, CLIENT *); |
extern cryptkeyres * key_decrypt_1_svc(cryptkeyarg *, struct svc_req *); |
#define KEY_GEN ((unsigned long)4) |
extern des_block * key_gen_1(void *, CLIENT *); |
extern des_block * key_gen_1_svc(void *, struct svc_req *); |
#define KEY_GETCRED ((unsigned long)5) |
extern getcredres * key_getcred_1(netnamestr *, CLIENT *); |
extern getcredres * key_getcred_1_svc(netnamestr *, struct svc_req *); |
#else /* Old Style C */ |
#define KEY_SET ((unsigned long)1) |
extern keystatus * key_set_1(); |
extern keystatus * key_set_1_svc(); |
#define KEY_ENCRYPT ((unsigned long)2) |
extern cryptkeyres * key_encrypt_1(); |
extern cryptkeyres * key_encrypt_1_svc(); |
#define KEY_DECRYPT ((unsigned long)3) |
extern cryptkeyres * key_decrypt_1(); |
extern cryptkeyres * key_decrypt_1_svc(); |
#define KEY_GEN ((unsigned long)4) |
extern des_block * key_gen_1(); |
extern des_block * key_gen_1_svc(); |
#define KEY_GETCRED ((unsigned long)5) |
extern getcredres * key_getcred_1(); |
extern getcredres * key_getcred_1_svc(); |
#endif /* Old Style C */ |
#define KEY_VERS2 ((unsigned long)2) |
#ifdef __cplusplus |
extern "C" keystatus * key_set_2(opaque *, CLIENT *); |
extern "C" keystatus * key_set_2_svc(opaque *, struct svc_req *); |
extern "C" cryptkeyres * key_encrypt_2(cryptkeyarg *, CLIENT *); |
extern "C" cryptkeyres * key_encrypt_2_svc(cryptkeyarg *, struct svc_req *); |
extern "C" cryptkeyres * key_decrypt_2(cryptkeyarg *, CLIENT *); |
extern "C" cryptkeyres * key_decrypt_2_svc(cryptkeyarg *, struct svc_req *); |
extern "C" des_block * key_gen_2(void *, CLIENT *); |
extern "C" des_block * key_gen_2_svc(void *, struct svc_req *); |
extern "C" getcredres * key_getcred_2(netnamestr *, CLIENT *); |
extern "C" getcredres * key_getcred_2_svc(netnamestr *, struct svc_req *); |
#define KEY_ENCRYPT_PK ((unsigned long)6) |
extern "C" cryptkeyres * key_encrypt_pk_2(cryptkeyarg2 *, CLIENT *); |
extern "C" cryptkeyres * key_encrypt_pk_2_svc(cryptkeyarg2 *, struct svc_req *); |
#define KEY_DECRYPT_PK ((unsigned long)7) |
extern "C" cryptkeyres * key_decrypt_pk_2(cryptkeyarg2 *, CLIENT *); |
extern "C" cryptkeyres * key_decrypt_pk_2_svc(cryptkeyarg2 *, struct svc_req *); |
#define KEY_NET_PUT ((unsigned long)8) |
extern "C" keystatus * key_net_put_2(key_netstarg *, CLIENT *); |
extern "C" keystatus * key_net_put_2_svc(key_netstarg *, struct svc_req *); |
#define KEY_NET_GET ((unsigned long)9) |
extern "C" key_netstres * key_net_get_2(void *, CLIENT *); |
extern "C" key_netstres * key_net_get_2_svc(void *, struct svc_req *); |
#define KEY_GET_CONV ((unsigned long)10) |
extern "C" cryptkeyres * key_get_conv_2(opaque *, CLIENT *); |
extern "C" cryptkeyres * key_get_conv_2_svc(opaque *, struct svc_req *); |
#elif __STDC__ |
extern keystatus * key_set_2(opaque *, CLIENT *); |
extern keystatus * key_set_2_svc(opaque *, struct svc_req *); |
extern cryptkeyres * key_encrypt_2(cryptkeyarg *, CLIENT *); |
extern cryptkeyres * key_encrypt_2_svc(cryptkeyarg *, struct svc_req *); |
extern cryptkeyres * key_decrypt_2(cryptkeyarg *, CLIENT *); |
extern cryptkeyres * key_decrypt_2_svc(cryptkeyarg *, struct svc_req *); |
extern des_block * key_gen_2(void *, CLIENT *); |
extern des_block * key_gen_2_svc(void *, struct svc_req *); |
extern getcredres * key_getcred_2(netnamestr *, CLIENT *); |
extern getcredres * key_getcred_2_svc(netnamestr *, struct svc_req *); |
#define KEY_ENCRYPT_PK ((unsigned long)6) |
extern cryptkeyres * key_encrypt_pk_2(cryptkeyarg2 *, CLIENT *); |
extern cryptkeyres * key_encrypt_pk_2_svc(cryptkeyarg2 *, struct svc_req *); |
#define KEY_DECRYPT_PK ((unsigned long)7) |
extern cryptkeyres * key_decrypt_pk_2(cryptkeyarg2 *, CLIENT *); |
extern cryptkeyres * key_decrypt_pk_2_svc(cryptkeyarg2 *, struct svc_req *); |
#define KEY_NET_PUT ((unsigned long)8) |
extern keystatus * key_net_put_2(key_netstarg *, CLIENT *); |
extern keystatus * key_net_put_2_svc(key_netstarg *, struct svc_req *); |
#define KEY_NET_GET ((unsigned long)9) |
extern key_netstres * key_net_get_2(void *, CLIENT *); |
extern key_netstres * key_net_get_2_svc(void *, struct svc_req *); |
#define KEY_GET_CONV ((unsigned long)10) |
extern cryptkeyres * key_get_conv_2(opaque *, CLIENT *); |
extern cryptkeyres * key_get_conv_2_svc(opaque *, struct svc_req *); |
#else /* Old Style C */ |
extern keystatus * key_set_2(); |
extern keystatus * key_set_2_svc(); |
extern cryptkeyres * key_encrypt_2(); |
extern cryptkeyres * key_encrypt_2_svc(); |
extern cryptkeyres * key_decrypt_2(); |
extern cryptkeyres * key_decrypt_2_svc(); |
extern des_block * key_gen_2(); |
extern des_block * key_gen_2_svc(); |
extern getcredres * key_getcred_2(); |
extern getcredres * key_getcred_2_svc(); |
#define KEY_ENCRYPT_PK ((unsigned long)6) |
extern cryptkeyres * key_encrypt_pk_2(); |
extern cryptkeyres * key_encrypt_pk_2_svc(); |
#define KEY_DECRYPT_PK ((unsigned long)7) |
extern cryptkeyres * key_decrypt_pk_2(); |
extern cryptkeyres * key_decrypt_pk_2_svc(); |
#define KEY_NET_PUT ((unsigned long)8) |
extern keystatus * key_net_put_2(); |
extern keystatus * key_net_put_2_svc(); |
#define KEY_NET_GET ((unsigned long)9) |
extern key_netstres * key_net_get_2(); |
extern key_netstres * key_net_get_2_svc(); |
#define KEY_GET_CONV ((unsigned long)10) |
extern cryptkeyres * key_get_conv_2(); |
extern cryptkeyres * key_get_conv_2_svc(); |
#endif /* Old Style C */ |
#endif /* !_KEY_PROT_H_RPCGEN */ |
/contrib/media/updf/include/rpc/netdb.h |
---|
0,0 → 1,74 |
/* @(#)netdb.h 2.1 88/07/29 3.9 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. |
* |
* 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.h 1.8 87/07/24 SMI */ |
/* Cleaned up for GNU C library roland@gnu.ai.mit.edu: |
added multiple inclusion protection and use of <sys/cdefs.h>. |
In GNU this file is #include'd by <netdb.h>. */ |
#ifndef _RPC_NETDB_H |
#define _RPC_NETDB_H 1 |
#include <sys/cdefs.h> |
#define __need_size_t |
#include <stddef.h> |
__BEGIN_DECLS |
struct rpcent |
{ |
char *r_name; /* Name of server for this rpc program. */ |
char **r_aliases; /* Alias list. */ |
int r_number; /* RPC program number. */ |
}; |
extern void setrpcent (int __stayopen) __THROW; |
extern void endrpcent (void) __THROW; |
extern struct rpcent *getrpcbyname (const char *__name) __THROW; |
extern struct rpcent *getrpcbynumber (int __number) __THROW; |
extern struct rpcent *getrpcent (void) __THROW; |
#ifdef __USE_MISC |
extern int getrpcbyname_r (const char *__name, struct rpcent *__result_buf, |
char *__buffer, size_t __buflen, |
struct rpcent **__result) __THROW; |
extern int getrpcbynumber_r (int __number, struct rpcent *__result_buf, |
char *__buffer, size_t __buflen, |
struct rpcent **__result) __THROW; |
extern int getrpcent_r (struct rpcent *__result_buf, char *__buffer, |
size_t __buflen, struct rpcent **__result) __THROW; |
#endif |
__END_DECLS |
#endif /* rpc/netdb.h */ |
/contrib/media/updf/include/rpc/pmap_clnt.h |
---|
0,0 → 1,98 |
/* @(#)pmap_clnt.h 2.1 88/07/29 4.0 RPCSRC; from 1.11 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 |
*/ |
/* |
* pmap_clnt.h |
* Supplies C routines to get to portmap services. |
* |
* Copyright (C) 1984, Sun Microsystems, Inc. |
*/ |
#ifndef _RPC_PMAP_CLNT_H |
#define _RPC_PMAP_CLNT_H 1 |
#include <sys/cdefs.h> |
#include <rpc/types.h> |
#include <rpc/xdr.h> |
#include <rpc/clnt.h> |
__BEGIN_DECLS |
typedef bool_t (*resultproc_t) (char* resp, struct sockaddr_in *raddr); |
/* |
* 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; |
* char* 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. |
*/ |
extern bool_t pmap_set (const unsigned long __program, const unsigned long __vers, |
int __protocol, unsigned short __port) __THROW; |
extern bool_t pmap_unset (const unsigned long __program, const unsigned long __vers) |
__THROW; |
extern struct pmaplist *pmap_getmaps (struct sockaddr_in *__address) __THROW; |
extern enum clnt_stat pmap_rmtcall (struct sockaddr_in *__addr, |
const unsigned long __prog, |
const unsigned long __vers, |
const unsigned long __proc, |
xdrproc_t __xdrargs, |
char* __argsp, xdrproc_t __xdrres, |
char* __resp, struct timeval __tout, |
unsigned long *__port_ptr) __THROW; |
extern enum clnt_stat clnt_broadcast (const unsigned long __prog, |
const unsigned long __vers, |
const unsigned long __proc, xdrproc_t __xargs, |
char* __argsp, xdrproc_t __xresults, |
char* __resultsp, |
resultproc_t __eachresult) __THROW; |
extern unsigned short pmap_getport (struct sockaddr_in *__address, |
const unsigned long __program, |
const unsigned long __version, unsigned int __protocol) |
__THROW; |
__END_DECLS |
#endif /* rpc/pmap_clnt.h */ |
/contrib/media/updf/include/rpc/pmap_prot.h |
---|
0,0 → 1,108 |
/* @(#)pmap_prot.h 2.1 88/07/29 4.0 RPCSRC; from 1.14 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 |
*/ |
/* |
* pmap_prot.h |
* Protocol for the local binder service, or pmap. |
* |
* Copyright (C) 1984, Sun Microsystems, Inc. |
*/ |
#ifndef _RPC_PMAP_PROT_H |
#define _RPC_PMAP_PROT_H 1 |
#include <sys/cdefs.h> |
#include <rpc/xdr.h> |
__BEGIN_DECLS |
/* 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. |
*/ |
#define PMAPPORT ((unsigned short)111) |
#define PMAPPROG ((unsigned long)100000) |
#define PMAPVERS ((unsigned long)2) |
#define PMAPVERS_PROTO ((unsigned long)2) |
#define PMAPVERS_ORIG ((unsigned long)1) |
#define PMAPPROC_NULL ((unsigned long)0) |
#define PMAPPROC_SET ((unsigned long)1) |
#define PMAPPROC_UNSET ((unsigned long)2) |
#define PMAPPROC_GETPORT ((unsigned long)3) |
#define PMAPPROC_DUMP ((unsigned long)4) |
#define PMAPPROC_CALLIT ((unsigned long)5) |
struct pmap { |
long unsigned pm_prog; |
long unsigned pm_vers; |
long unsigned pm_prot; |
long unsigned pm_port; |
}; |
extern bool_t xdr_pmap (XDR *__xdrs, struct pmap *__regs) __THROW; |
struct pmaplist { |
struct pmap pml_map; |
struct pmaplist *pml_next; |
}; |
extern bool_t xdr_pmaplist (XDR *__xdrs, struct pmaplist **__rp) __THROW; |
__END_DECLS |
#endif /* rpc/pmap_prot.h */ |
/contrib/media/updf/include/rpc/pmap_rmt.h |
---|
0,0 → 1,68 |
/* @(#)pmap_rmt.h 2.1 88/07/29 4.0 RPCSRC; from 1.2 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 |
*/ |
/* |
* Structures and XDR routines for parameters to and replies from |
* the portmapper remote-call-service. |
* |
* Copyright (C) 1986, Sun Microsystems, Inc. |
*/ |
#ifndef _RPC_PMAP_RMT_H |
#define _RPC_PMAP_RMT_H 1 |
#include <sys/cdefs.h> |
#include <sys/types.h> |
#include <rpc/types.h> |
#include <rpc/xdr.h> |
__BEGIN_DECLS |
struct rmtcallargs { |
unsigned long prog, vers, proc, arglen; |
char* args_ptr; |
xdrproc_t xdr_args; |
}; |
extern bool_t xdr_rmtcall_args (XDR *__xdrs, struct rmtcallargs *__crp) |
__THROW; |
struct rmtcallres { |
unsigned long *port_ptr; |
unsigned long resultslen; |
char* results_ptr; |
xdrproc_t xdr_results; |
}; |
extern bool_t xdr_rmtcallres (XDR *__xdrs, struct rmtcallres *__crp) __THROW; |
__END_DECLS |
#endif /* rpc/pmap_rmt.h */ |
/contrib/media/updf/include/rpc/rpc.h |
---|
0,0 → 1,70 |
/* @(#)rpc.h 2.3 88/08/10 4.0 RPCSRC; from 1.9 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 |
*/ |
/* |
* 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 1 |
#include <rpc/types.h> /* some typedefs */ |
#include <netinet/in.h> |
/* 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_unix.h> /* protocol for unix style cred */ |
#include <rpc/auth_des.h> /* protocol for des style cred */ |
/* 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 IF RUNNING ON SUN OS OR ON A VERSION |
* OF UNIX BASED ON NFSSRC. These systems will already have the structures |
* defined by <rpc/netdb.h> included in <netdb.h>. |
*/ |
/* routines for parsing /etc/rpc */ |
#include <rpc/netdb.h> /* structures and routines to parse /etc/rpc */ |
#endif /* rpc/rpc.h */ |
/contrib/media/updf/include/rpc/rpc_des.h |
---|
0,0 → 1,76 |
/* |
* 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 |
*/ |
/* |
* Generic DES driver interface |
* Keep this file hardware independent! |
* Copyright (c) 1986 by Sun Microsystems, Inc. |
*/ |
#ifndef _DES_H |
#define _DES_H |
#include <sys/types.h> |
__BEGIN_DECLS |
#define DES_MAXLEN 65536 /* maximum # of bytes to encrypt */ |
#define DES_QUICKLEN 16 /* maximum # of bytes to encrypt quickly */ |
enum desdir |
{ |
ENCRYPT, DECRYPT |
}; |
enum desmode |
{ |
CBC, ECB |
}; |
/* |
* parameters to ioctl call |
*/ |
struct desparams |
{ |
u_char des_key[8]; /* key (with low bit parity) */ |
enum desdir des_dir; /* direction */ |
enum desmode des_mode; /* mode */ |
u_char des_ivec[8]; /* input vector */ |
unsigned des_len; /* number of bytes to crypt */ |
union |
{ |
u_char UDES_data[DES_QUICKLEN]; |
u_char *UDES_buf; |
} |
UDES; |
#define des_data UDES.UDES_data /* direct data here if quick */ |
#define des_buf UDES.UDES_buf /* otherwise, pointer to data */ |
}; |
__END_DECLS |
#endif |
/contrib/media/updf/include/rpc/rpc_msg.h |
---|
0,0 → 1,202 |
/* @(#)rpc_msg.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. |
* |
* 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.7 86/07/16 SMI */ |
#ifndef _RPC_MSG_H |
#define _RPC_MSG_H 1 |
#include <sys/cdefs.h> |
#include <rpc/xdr.h> |
#include <rpc/clnt.h> |
/* |
* rpc_msg.h |
* rpc message definition |
* |
* Copyright (C) 1984, Sun Microsystems, Inc. |
*/ |
#define RPC_MSG_VERSION ((unsigned long) 2) |
#define RPC_SERVICE_PORT ((unsigned short) 2048) |
__BEGIN_DECLS |
/* |
* Bottom up definition of an rpc message. |
* NOTE: call and reply use the same overall struct 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 accept_stat ar_stat; |
union { |
struct { |
unsigned long low; |
unsigned long high; |
} AR_versions; |
struct { |
char* 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 { |
unsigned long low; |
unsigned 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 { |
unsigned long cb_rpcvers; /* must be equal to two */ |
unsigned long cb_prog; |
unsigned long cb_vers; |
unsigned long cb_proc; |
struct opaque_auth cb_cred; |
struct opaque_auth cb_verf; /* protocol specific - provided by client */ |
}; |
/* |
* The rpc message |
*/ |
struct rpc_msg { |
unsigned 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 |
/* |
* XDR routine to handle a rpc message. |
* xdr_callmsg(xdrs, cmsg) |
* XDR *xdrs; |
* struct rpc_msg *cmsg; |
*/ |
extern bool_t xdr_callmsg (XDR *__xdrs, struct rpc_msg *__cmsg) __THROW; |
/* |
* 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 *__xdrs, struct rpc_msg *__cmsg) __THROW; |
/* |
* XDR routine to handle a rpc reply. |
* xdr_replymsg(xdrs, rmsg) |
* XDR *xdrs; |
* struct rpc_msg *rmsg; |
*/ |
extern bool_t xdr_replymsg (XDR *__xdrs, struct rpc_msg *__rmsg) __THROW; |
/* |
* Fills in the error part of a reply message. |
* _seterr_reply(msg, error) |
* struct rpc_msg *msg; |
* struct rpc_err *error; |
*/ |
extern void _seterr_reply (struct rpc_msg *__msg, struct rpc_err *__error) |
__THROW; |
__END_DECLS |
#endif /* rpc/rpc_msg.h */ |
/contrib/media/updf/include/rpc/svc.h |
---|
0,0 → 1,316 |
/* |
* 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 |
*/ |
/* |
* svc.h, Server-side remote procedure call interface. |
* |
* Copyright (C) 1984, Sun Microsystems, Inc. |
*/ |
#ifndef _RPC_SVC_H |
#define _RPC_SVC_H 1 |
#include <sys/cdefs.h> |
#include <rpc/rpc_msg.h> |
__BEGIN_DECLS |
/* |
* 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 SVCXPRT SVCXPRT; |
struct SVCXPRT { |
int xp_sock; |
unsigned short xp_port; /* associated port number */ |
const struct xp_ops { |
bool_t (*xp_recv) (SVCXPRT *__xprt, struct rpc_msg *__msg); |
/* receive incoming requests */ |
enum xprt_stat (*xp_stat) (SVCXPRT *__xprt); |
/* get transport status */ |
bool_t (*xp_getargs) (SVCXPRT *__xprt, xdrproc_t __xdr_args, |
char* args_ptr); /* get arguments */ |
bool_t (*xp_reply) (SVCXPRT *__xprt, struct rpc_msg *__msg); |
/* send reply */ |
bool_t (*xp_freeargs) (SVCXPRT *__xprt, xdrproc_t __xdr_args, |
char* args_ptr); |
/* free mem allocated for args */ |
void (*xp_destroy) (SVCXPRT *__xprt); |
/* 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 */ |
char* xp_p1; /* private */ |
char* xp_p2; /* private */ |
char xp_pad [256]; /* padding, internal use */ |
}; |
/* |
* 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; |
* char* 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 { |
rpcprog_t rq_prog; /* service program number */ |
rpcvers_t rq_vers; /* service protocol version */ |
rpcproc_t rq_proc; /* the desired procedure */ |
struct opaque_auth rq_cred; /* raw creds from the wire */ |
char* rq_clntcred; /* read only cooked cred */ |
SVCXPRT *rq_xprt; /* associated transport */ |
}; |
#ifndef __DISPATCH_FN_T |
#define __DISPATCH_FN_T |
typedef void (*__dispatch_fn_t) (struct svc_req*, SVCXPRT*); |
#endif |
/* |
* Service registration |
* |
* svc_register(xprt, prog, vers, dispatch, protocol) |
* SVCXPRT *xprt; |
* rpcprog_t prog; |
* rpcvers_t vers; |
* void (*dispatch)(struct svc_req*, SVCXPRT*); |
* rpcprot_t protocol; like TCP or UDP, zero means do not register |
*/ |
extern bool_t svc_register (SVCXPRT *__xprt, rpcprog_t __prog, |
rpcvers_t __vers, __dispatch_fn_t __dispatch, |
rpcprot_t __protocol) __THROW; |
/* |
* Service un-registration |
* |
* svc_unregister(prog, vers) |
* rpcprog_t prog; |
* rpcvers_t vers; |
*/ |
extern void svc_unregister (rpcprog_t __prog, rpcvers_t __vers) __THROW; |
/* |
* Transport registration. |
* |
* xprt_register(xprt) |
* SVCXPRT *xprt; |
*/ |
extern void xprt_register (SVCXPRT *__xprt) __THROW; |
/* |
* Transport un-register |
* |
* xprt_unregister(xprt) |
* SVCXPRT *xprt; |
*/ |
extern void xprt_unregister (SVCXPRT *__xprt) __THROW; |
/* |
* 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 *xprt, xdrproc_t __xdr_results, |
char* __xdr_location) __THROW; |
extern void svcerr_decode (SVCXPRT *__xprt) __THROW; |
extern void svcerr_weakauth (SVCXPRT *__xprt) __THROW; |
extern void svcerr_noproc (SVCXPRT *__xprt) __THROW; |
extern void svcerr_progvers (SVCXPRT *__xprt, rpcvers_t __low_vers, |
rpcvers_t __high_vers) __THROW; |
extern void svcerr_auth (SVCXPRT *__xprt, enum auth_stat __why) __THROW; |
extern void svcerr_noprog (SVCXPRT *__xprt) __THROW; |
extern void svcerr_systemerr (SVCXPRT *__xprt) __THROW; |
/* |
* 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 (coexistent) 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 |
*/ |
extern struct pollfd *svc_pollfd; |
extern int svc_max_pollfd; |
extern fd_set svc_fdset; |
#define svc_fds svc_fdset.fds_bits[0] /* compatibility */ |
/* |
* a small program implemented by the svc_rpc implementation itself; |
* also see clnt.h for protocol numbers. |
*/ |
extern void svc_getreq (int __rdfds) __THROW; |
extern void svc_getreq_common (const int __fd) __THROW; |
extern void svc_getreqset (fd_set *__readfds) __THROW; |
extern void svc_getreq_poll (struct pollfd *, const int) __THROW; |
extern void svc_exit (void) __THROW; |
extern void svc_run (void) __THROW; |
/* |
* 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) __THROW; |
/* |
* Udp based rpc. |
*/ |
extern SVCXPRT *svcudp_create (int __sock) __THROW; |
extern SVCXPRT *svcudp_bufcreate (int __sock, unsigned int __sendsz, unsigned int __recvsz) |
__THROW; |
/* |
* Tcp based rpc. |
*/ |
extern SVCXPRT *svctcp_create (int __sock, unsigned int __sendsize, unsigned int __recvsize) |
__THROW; |
/* |
* Unix based rpc. |
*/ |
extern SVCXPRT *svcunix_create (int __sock, unsigned int __sendsize, unsigned int __recvsize, |
char *__path) __THROW; |
__END_DECLS |
#endif /* rpc/svc.h */ |
/contrib/media/updf/include/rpc/svc_auth.h |
---|
0,0 → 1,54 |
/* @(#)svc_auth.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. |
* |
* 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 |
*/ |
/* @(#)svc_auth.h 1.6 86/07/16 SMI */ |
/* |
* svc_auth.h, Service side of rpc authentication. |
* |
* Copyright (C) 1984, Sun Microsystems, Inc. |
*/ |
#ifndef _RPC_SVC_AUTH_H |
#define _RPC_SVC_AUTH_H 1 |
#include <sys/cdefs.h> |
#include <rpc/svc.h> |
__BEGIN_DECLS |
/* |
* Server side authenticator |
*/ |
extern enum auth_stat _authenticate (struct svc_req *__rqst, |
struct rpc_msg *__msg) __THROW; |
__END_DECLS |
#endif /* rpc/svc_auth.h */ |
/contrib/media/updf/include/rpc/types.h |
---|
0,0 → 1,80 |
/* |
* 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 |
*/ |
/* fixincludes should not add extern "C" to this file */ |
/* |
* Rpc additions to <sys/types.h> |
*/ |
#ifndef _RPC_TYPES_H |
#define _RPC_TYPES_H 1 |
#include <sys/cdefs.h> |
__BEGIN_DECLS |
typedef int bool_t; |
typedef int enum_t; |
/* This needs to be changed to uint32_t in the future */ |
typedef unsigned long rpcprog_t; |
typedef unsigned long rpcvers_t; |
typedef unsigned long rpcproc_t; |
typedef unsigned long rpcprot_t; |
typedef unsigned long rpcport_t; |
#define __dontcare__ -1 |
#ifndef FALSE |
# define FALSE (0) |
#endif |
#ifndef TRUE |
# define TRUE (1) |
#endif |
#include <stdlib.h> /* For malloc decl. */ |
#define mem_alloc(bsize) malloc(bsize) |
#define mem_free(ptr, bsize) free(ptr) |
#ifndef makedev /* ie, we haven't already included it */ |
#include <sys/types.h> |
#endif |
#include <sys/time.h> |
#include <sys/param.h> |
#include <netinet/in.h> |
#ifndef INADDR_LOOPBACK |
#define INADDR_LOOPBACK 0x7F000001UL |
#endif |
#ifndef MAXHOSTNAMELEN |
#define MAXHOSTNAMELEN 64 |
#endif |
__END_DECLS |
#endif /* rpc/types.h */ |
/contrib/media/updf/include/rpc/xdr.h |
---|
0,0 → 1,379 |
/* |
* 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 |
*/ |
/* |
* xdr.h, External Data Representation Serialization Routines. |
* |
* Copyright (C) 1984, Sun Microsystems, Inc. |
*/ |
#ifndef _RPC_XDR_H |
#define _RPC_XDR_H 1 |
#include <sys/cdefs.h> |
#include <sys/types.h> |
#include <rpc/types.h> |
/* We need FILE. */ |
#include <stdio.h> |
__BEGIN_DECLS |
/* |
* 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) |
/* |
* This only works if the above is a power of 2. But it's defined to be |
* 4 by the appropriate RFCs. So it will work. And it's normally quicker |
* than the old routine. |
*/ |
#if 1 |
#define RNDUP(x) (((x) + BYTES_PER_XDR_UNIT - 1) & ~(BYTES_PER_XDR_UNIT - 1)) |
#else /* this is the old routine */ |
#define RNDUP(x) ((((x) + BYTES_PER_XDR_UNIT - 1) / BYTES_PER_XDR_UNIT) \ |
* BYTES_PER_XDR_UNIT) |
#endif |
/* |
* 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 XDR XDR; |
struct XDR |
{ |
enum xdr_op x_op; /* operation; fast additional param */ |
struct xdr_ops |
{ |
bool_t (*x_getlong) (XDR *__xdrs, long *__lp); |
/* get a long from underlying stream */ |
bool_t (*x_putlong) (XDR *__xdrs, const long *__lp); |
/* put a long to " */ |
bool_t (*x_getbytes) (XDR *__xdrs, char* __addr, unsigned int __len); |
/* get some bytes from " */ |
bool_t (*x_putbytes) (XDR *__xdrs, const char *__addr, unsigned int __len); |
/* put some bytes to " */ |
unsigned int (*x_getpostn) (const XDR *__xdrs); |
/* returns bytes off from beginning */ |
bool_t (*x_setpostn) (XDR *__xdrs, unsigned int __pos); |
/* lets you reposition the stream */ |
int32_t *(*x_inline) (XDR *__xdrs, unsigned int __len); |
/* buf quick ptr to buffered data */ |
void (*x_destroy) (XDR *__xdrs); |
/* free privates of this xdr_stream */ |
bool_t (*x_getint32) (XDR *__xdrs, int32_t *__ip); |
/* get a int from underlying stream */ |
bool_t (*x_putint32) (XDR *__xdrs, const int32_t *__ip); |
/* put a int to " */ |
} |
*x_ops; |
char* x_public; /* users' data */ |
char* x_private; /* pointer to private data */ |
char* x_base; /* private used for position info */ |
unsigned int x_handy; /* extra private word */ |
}; |
/* |
* 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 *, char* *); |
*/ |
typedef bool_t (*xdrproc_t) (XDR *, void *,...); |
/* |
* Operations defined on a XDR handle |
* |
* XDR *xdrs; |
* int32_t *int32p; |
* long *longp; |
* char* addr; |
* unsigned int len; |
* unsigned int pos; |
*/ |
#define XDR_GETINT32(xdrs, int32p) \ |
(*(xdrs)->x_ops->x_getint32)(xdrs, int32p) |
#define xdr_getint32(xdrs, int32p) \ |
(*(xdrs)->x_ops->x_getint32)(xdrs, int32p) |
#define XDR_PUTINT32(xdrs, int32p) \ |
(*(xdrs)->x_ops->x_putint32)(xdrs, int32p) |
#define xdr_putint32(xdrs, int32p) \ |
(*(xdrs)->x_ops->x_putint32)(xdrs, int32p) |
#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) \ |
do { \ |
if ((xdrs)->x_ops->x_destroy) \ |
(*(xdrs)->x_ops->x_destroy)(xdrs); \ |
} while (0) |
#define xdr_destroy(xdrs) \ |
do { \ |
if ((xdrs)->x_ops->x_destroy) \ |
(*(xdrs)->x_ops->x_destroy)(xdrs); \ |
} while (0) |
/* |
* 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)0) |
struct xdr_discrim |
{ |
int value; |
xdrproc_t proc; |
}; |
/* |
* Inline 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_INT32(buf) ((int32_t)ntohl((uint32_t)*(buf)++)) |
#define IXDR_PUT_INT32(buf, v) (*(buf)++ = (int32_t)htonl((uint32_t)(v))) |
#define IXDR_GET_U_INT32(buf) ((uint32_t)IXDR_GET_INT32(buf)) |
#define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_INT32(buf, (int32_t)(v)) |
/* WARNING: The IXDR_*_LONG defines are removed by Sun for new platforms |
* and shouldn't be used any longer. Code which use this defines or longs |
* in the RPC code will not work on 64bit Solaris platforms ! |
*/ |
#define IXDR_GET_LONG(buf) \ |
((long)ntohl((unsigned long)*__extension__((uint32_t*)(buf))++)) |
#define IXDR_PUT_LONG(buf, v) \ |
(*__extension__((uint32_t*)(buf))++ = (long)htonl((unsigned long)(v))) |
#define IXDR_GET_U_LONG(buf) ((unsigned long)IXDR_GET_LONG(buf)) |
#define IXDR_PUT_U_LONG(buf, v) IXDR_PUT_LONG(buf, (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_SHORT(buf) ((short)IXDR_GET_LONG(buf)) |
#define IXDR_GET_U_SHORT(buf) ((unsigned 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_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. |
* None of these can have const applied because it's not possible to |
* know whether the call is a read or a write to the passed parameter |
* also, the XDR structure is always updated by some of these calls. |
*/ |
extern bool_t xdr_void (void) __THROW; |
extern bool_t xdr_short (XDR *__xdrs, short *__sp) __THROW; |
extern bool_t xdr_u_short (XDR *__xdrs, unsigned short *__usp) __THROW; |
extern bool_t xdr_int (XDR *__xdrs, int *__ip) __THROW; |
extern bool_t xdr_u_int (XDR *__xdrs, unsigned int *__up) __THROW; |
extern bool_t xdr_long (XDR *__xdrs, long *__lp) __THROW; |
extern bool_t xdr_u_long (XDR *__xdrs, unsigned long *__ulp) __THROW; |
extern bool_t xdr_hyper (XDR *__xdrs, int64_t *__llp) __THROW; |
extern bool_t xdr_u_hyper (XDR *__xdrs, uint64_t *__ullp) __THROW; |
extern bool_t xdr_longlong_t (XDR *__xdrs, int64_t *__llp) __THROW; |
extern bool_t xdr_u_longlong_t (XDR *__xdrs, uint64_t *__ullp) __THROW; |
extern bool_t xdr_int8_t (XDR *__xdrs, int8_t *__ip) __THROW; |
extern bool_t xdr_uint8_t (XDR *__xdrs, uint8_t *__up) __THROW; |
extern bool_t xdr_int16_t (XDR *__xdrs, int16_t *__ip) __THROW; |
extern bool_t xdr_uint16_t (XDR *__xdrs, uint16_t *__up) __THROW; |
extern bool_t xdr_int32_t (XDR *__xdrs, int32_t *__ip) __THROW; |
extern bool_t xdr_uint32_t (XDR *__xdrs, uint32_t *__up) __THROW; |
extern bool_t xdr_int64_t (XDR *__xdrs, int64_t *__ip) __THROW; |
extern bool_t xdr_uint64_t (XDR *__xdrs, uint64_t *__up) __THROW; |
extern bool_t xdr_bool (XDR *__xdrs, bool_t *__bp) __THROW; |
extern bool_t xdr_enum (XDR *__xdrs, enum_t *__ep) __THROW; |
extern bool_t xdr_array (XDR * _xdrs, char* *__addrp, unsigned int *__sizep, |
unsigned int __maxsize, unsigned int __elsize, xdrproc_t __elproc) |
__THROW; |
extern bool_t xdr_bytes (XDR *__xdrs, char **__cpp, unsigned int *__sizep, |
unsigned int __maxsize) __THROW; |
extern bool_t xdr_opaque (XDR *__xdrs, char* __cp, unsigned int __cnt) __THROW; |
extern bool_t xdr_string (XDR *__xdrs, char **__cpp, unsigned int __maxsize) __THROW; |
extern bool_t xdr_union (XDR *__xdrs, enum_t *__dscmp, char *__unp, |
const struct xdr_discrim *__choices, |
xdrproc_t dfault) __THROW; |
extern bool_t xdr_char (XDR *__xdrs, char *__cp) __THROW; |
extern bool_t xdr_u_char (XDR *__xdrs, unsigned char *__cp) __THROW; |
extern bool_t xdr_vector (XDR *__xdrs, char *__basep, unsigned int __nelem, |
unsigned int __elemsize, xdrproc_t __xdr_elem) __THROW; |
extern bool_t xdr_float (XDR *__xdrs, float *__fp) __THROW; |
extern bool_t xdr_double (XDR *__xdrs, double *__dp) __THROW; |
extern bool_t xdr_reference (XDR *__xdrs, char* *__xpp, unsigned int __size, |
xdrproc_t __proc) __THROW; |
extern bool_t xdr_pointer (XDR *__xdrs, char **__objpp, |
unsigned int __obj_size, xdrproc_t __xdr_obj) __THROW; |
extern bool_t xdr_wrapstring (XDR *__xdrs, char **__cpp) __THROW; |
extern unsigned long xdr_sizeof (xdrproc_t, void *) __THROW; |
/* |
* Common opaque bytes objects used by many rpc protocols; |
* declared here due to commonality. |
*/ |
#define MAX_NETOBJ_SZ 1024 |
struct netobj |
{ |
unsigned int n_len; |
char *n_bytes; |
}; |
typedef struct netobj netobj; |
extern bool_t xdr_netobj (XDR *__xdrs, struct netobj *__np) __THROW; |
/* |
* These are the public routines for the various implementations of |
* xdr streams. |
*/ |
/* XDR using memory buffers */ |
extern void xdrmem_create (XDR *__xdrs, const char* __addr, |
unsigned int __size, enum xdr_op __xop) __THROW; |
/* XDR using stdio library */ |
extern void xdrstdio_create (XDR *__xdrs, FILE *__file, enum xdr_op __xop) |
__THROW; |
/* XDR pseudo records for tcp */ |
extern void xdrrec_create (XDR *__xdrs, unsigned int __sendsize, |
unsigned int __recvsize, char* __tcp_handle, |
int (*__readit) (char *, char *, int), |
int (*__writeit) (char *, char *, int)) __THROW; |
/* make end of xdr record */ |
extern bool_t xdrrec_endofrecord (XDR *__xdrs, bool_t __sendnow) __THROW; |
/* move to beginning of next record */ |
extern bool_t xdrrec_skiprecord (XDR *__xdrs) __THROW; |
/* true if no more input */ |
extern bool_t xdrrec_eof (XDR *__xdrs) __THROW; |
/* free memory buffers for xdr */ |
extern void xdr_free (xdrproc_t __proc, char *__objp) __THROW; |
__END_DECLS |
#endif /* rpc/xdr.h */ |