00001
00002 #ifndef RPCINTRF_H
00003 #define RPCINTRF_H
00004
00005 #include "rcs_defs.hh"
00006
00007 extern "C"
00008 {
00009
00010 #if defined(WIN32) && !defined(USE_OLD_WINSOCK)
00011
00012
00013 #include <winsock2.h>
00014 #endif
00015
00016 #if defined( __MSDOS__) && !defined(_Windows)
00017 #include <sys/tk_types.h>
00018 #else
00019 #include <sys/types.h>
00020 #endif
00021 #ifndef WIN32
00022 #ifndef __MSDOS__
00023 #ifndef VXWORKS
00024 #include <sys/time.h>
00025 #else
00026 #include <sys/times.h>
00027 #endif
00028 #else
00029 #include <sys/nfs_time.h>
00030 #endif
00031 #endif
00032 #include <rpc/rpc.h>
00033 #include <rpc/xdr.h>
00034
00035 }
00036
00037 #ifdef __cplusplus
00038 extern "C"
00039 {
00040 #endif
00041
00042
00043 extern int load_rpc_interface ();
00044 extern void unload_rpc_interface ();
00045
00046
00047 typedef int (RCS_FAR * PTR_TO_TKDLL_INIT) (void);
00048 extern PTR_TO_TKDLL_INIT ptr_to_tkdll_init;
00049 typedef int (RCS_FAR * PTR_TO_RPC_NT_INIT) (void);
00050 extern PTR_TO_RPC_NT_INIT ptr_to_rpc_nt_init;
00051 typedef int (RCS_FAR * PTR_TO_TKDLL_CLEANUP) (void);
00052 extern PTR_TO_TKDLL_CLEANUP ptr_to_tkdll_cleanup;
00053 typedef int (RCS_FAR * PTR_TO_RPC_NT_EXIT) (void);
00054
00055 extern PTR_TO_RPC_NT_EXIT ptr_to_rpc_nt_exit;
00056 typedef int *(RCS_FAR * PTR_TO_TKDLL_ERRNO) (void);
00057 extern PTR_TO_TKDLL_ERRNO ptr_to_tkdll_errno;
00058 typedef long (RCS_FAR * PTR_TO_TKDLL_VERSION) (void);
00059 extern PTR_TO_TKDLL_VERSION ptr_to_tkdll_version;
00060 typedef enum clnt_stat (RCS_FAR * PTR_TO_CLNT_CALL) (CLIENT *, u_long,
00061 xdrproc_t, caddr_t,
00062 xdrproc_t, caddr_t,
00063 struct timeval);
00064 extern PTR_TO_CLNT_CALL ptr_to_clnt_call;
00065 typedef bool_t (RCS_FAR * PTR_TO_CLNT_CONTROL) (CLIENT *, u_int, char *);
00066 extern PTR_TO_CLNT_CONTROL ptr_to_clnt_control;
00067 typedef void (RCS_FAR * PTR_TO_CLNT_DESTROY) (CLIENT *);
00068 extern PTR_TO_CLNT_DESTROY ptr_to_clnt_destroy;
00069 typedef CLIENT RCS_FAR *(RCS_FAR * PTR_TO_CLNT_CREATE) (char *,
00070 unsigned long,
00071 unsigned long,
00072 char *);
00073 extern PTR_TO_CLNT_CREATE ptr_to_clnt_create;
00074 typedef char RCS_FAR *(RCS_FAR *
00075 PTR_TO_CLNT_SPCREATEERROR) (char RCS_FAR *);
00076 extern PTR_TO_CLNT_SPCREATEERROR ptr_to_clnt_spcreateerror;
00077 typedef char RCS_FAR *(RCS_FAR * PTR_TO_CLNT_SPERRNO) (enum clnt_stat);
00078 extern PTR_TO_CLNT_SPERRNO ptr_to_clnt_sperrno;
00079
00080
00081
00082
00083 extern CLIENT *dl_clnt_create (char *, unsigned long, unsigned long,
00084 char *);
00085 extern bool_t dl_clnt_control (CLIENT *, u_int, char *);
00086 extern enum clnt_stat dl_clnt_call (CLIENT *, u_long, xdrproc_t, caddr_t,
00087 xdrproc_t, caddr_t, struct timeval);
00088 extern void dl_clnt_destroy (CLIENT *);
00089 extern char *dl_clnt_spcreateerror (char *);
00090 extern char *dl_clnt_sperrno (enum clnt_stat);
00091
00092
00093
00094 typedef void (RCS_PASCAL RCS_FAR *
00095 PTR_TO_PASCAL_XDRMEM_CREATE) (XDR RCS_FAR *, char RCS_FAR *,
00096 unsigned int, enum xdr_op);
00097 extern PTR_TO_PASCAL_XDRMEM_CREATE ptr_to_pascal_xdrmem_create;
00098 typedef void (RCS_PASCAL RCS_FAR *
00099 PTR_TO_PASCAL_XDR_DESTROY) (XDR RCS_FAR *);
00100 extern PTR_TO_PASCAL_XDR_DESTROY ptr_to_pascal_xdr_destroy;
00101 typedef u_long (RCS_PASCAL RCS_FAR * PTR_TO_PASCAL_XDR_GETPOS) (XDR *);
00102 extern PTR_TO_PASCAL_XDR_GETPOS ptr_to_pascal_xdr_getpos;
00103 typedef bool_t (RCS_PASCAL RCS_FAR * PTR_TO_PASCAL_XDR_SETPOS) (XDR *,
00104 u_long);
00105 extern PTR_TO_PASCAL_XDR_SETPOS ptr_to_pascal_xdr_setpos;
00106 typedef void (RCS_PASCAL RCS_FAR * PTR_TO_PASCAL_XDR_VOID) (XDR RCS_FAR *,
00107 caddr_t);
00108 extern PTR_TO_PASCAL_XDR_VOID ptr_to_pascal_xdr_void;
00109 typedef bool_t (RCS_PASCAL RCS_FAR * PTR_TO_PASCAL_XDR_INT) (XDR RCS_FAR *,
00110 int *);
00111 extern PTR_TO_PASCAL_XDR_INT ptr_to_pascal_xdr_int;
00112 typedef bool_t (RCS_PASCAL RCS_FAR *
00113 PTR_TO_PASCAL_XDR_U_INT) (XDR RCS_FAR *, unsigned int *);
00114 extern PTR_TO_PASCAL_XDR_U_INT ptr_to_pascal_xdr_u_int;
00115 typedef bool_t (RCS_PASCAL RCS_FAR *
00116 PTR_TO_PASCAL_XDR_SHORT) (XDR RCS_FAR *, short *);
00117 extern PTR_TO_PASCAL_XDR_SHORT ptr_to_pascal_xdr_short;
00118 typedef bool_t (RCS_PASCAL RCS_FAR *
00119 PTR_TO_PASCAL_XDR_U_SHORT) (XDR RCS_FAR *,
00120 unsigned short *);
00121 extern PTR_TO_PASCAL_XDR_U_SHORT ptr_to_pascal_xdr_u_short;
00122 typedef bool_t (RCS_PASCAL RCS_FAR * PTR_TO_PASCAL_XDR_LONG) (XDR RCS_FAR *,
00123 long *);
00124 extern PTR_TO_PASCAL_XDR_LONG ptr_to_pascal_xdr_long;
00125 typedef bool_t (RCS_PASCAL RCS_FAR *
00126 PTR_TO_PASCAL_XDR_U_LONG) (XDR RCS_FAR *, unsigned long *);
00127 extern PTR_TO_PASCAL_XDR_U_LONG ptr_to_pascal_xdr_u_long;
00128 typedef bool_t (RCS_PASCAL RCS_FAR * PTR_TO_PASCAL_XDR_CHAR) (XDR RCS_FAR *,
00129 char *);
00130 extern PTR_TO_PASCAL_XDR_CHAR ptr_to_pascal_xdr_char;
00131 typedef bool_t (RCS_PASCAL RCS_FAR *
00132 PTR_TO_PASCAL_XDR_U_CHAR) (XDR RCS_FAR *, unsigned char *);
00133 extern PTR_TO_PASCAL_XDR_U_CHAR ptr_to_pascal_xdr_u_char;
00134 typedef bool_t (RCS_PASCAL RCS_FAR *
00135 PTR_TO_PASCAL_XDR_FLOAT) (XDR RCS_FAR *, float *);
00136 extern PTR_TO_PASCAL_XDR_FLOAT ptr_to_pascal_xdr_float;
00137 typedef bool_t (RCS_PASCAL RCS_FAR *
00138 PTR_TO_PASCAL_XDR_DOUBLE) (XDR RCS_FAR *, double *);
00139 extern PTR_TO_PASCAL_XDR_DOUBLE ptr_to_pascal_xdr_double;
00140 typedef bool_t (RCS_PASCAL RCS_FAR *
00141 PTR_TO_PASCAL_XDR_BYTES) (XDR RCS_FAR *, char **,
00142 unsigned int *, unsigned int);
00143 extern PTR_TO_PASCAL_XDR_BYTES ptr_to_pascal_xdr_bytes;
00144 typedef bool_t (RCS_PASCAL RCS_FAR *
00145 PTR_TO_PASCAL_XDR_OPAQUE) (XDR RCS_FAR *, char *,
00146 unsigned int);
00147 extern PTR_TO_PASCAL_XDR_OPAQUE ptr_to_pascal_xdr_opaque;
00148 typedef bool_t (RCS_PASCAL RCS_FAR *
00149 PTR_TO_PASCAL_XDR_VECTOR) (XDR RCS_FAR *, char *,
00150 unsigned int, unsigned int,
00151 xdrproc_t);
00152 extern PTR_TO_PASCAL_XDR_VECTOR ptr_to_pascal_xdr_vector;
00153
00154 typedef void (RCS_FAR * PTR_TO_XDRMEM_CREATE) (XDR RCS_FAR *,
00155 char RCS_FAR *, unsigned int,
00156 enum xdr_op);
00157 extern PTR_TO_XDRMEM_CREATE ptr_to_xdrmem_create;
00158 typedef void (RCS_FAR * PTR_TO_XDR_DESTROY) (XDR RCS_FAR *);
00159 extern PTR_TO_XDR_DESTROY ptr_to_xdr_destroy;
00160 typedef u_long (RCS_FAR * PTR_TO_XDR_GETPOS) (XDR *);
00161 extern PTR_TO_XDR_GETPOS ptr_to_xdr_getpos;
00162 typedef bool_t (RCS_FAR * PTR_TO_XDR_SETPOS) (XDR *, u_long);
00163 extern PTR_TO_XDR_SETPOS ptr_to_xdr_setpos;
00164 typedef void (RCS_FAR * PTR_TO_XDR_VOID) (XDR RCS_FAR *, caddr_t);
00165 extern PTR_TO_XDR_VOID ptr_to_xdr_void;
00166 typedef bool_t (RCS_FAR * PTR_TO_XDR_INT) (XDR RCS_FAR *, int *);
00167 extern PTR_TO_XDR_INT ptr_to_xdr_int;
00168 typedef bool_t (RCS_FAR * PTR_TO_XDR_U_INT) (XDR RCS_FAR *, unsigned int *);
00169 extern PTR_TO_XDR_U_INT ptr_to_xdr_u_int;
00170 typedef bool_t (RCS_FAR * PTR_TO_XDR_SHORT) (XDR RCS_FAR *, short *);
00171 extern PTR_TO_XDR_SHORT ptr_to_xdr_short;
00172 typedef bool_t (RCS_FAR * PTR_TO_XDR_U_SHORT) (XDR RCS_FAR *,
00173 unsigned short *);
00174 extern PTR_TO_XDR_U_SHORT ptr_to_xdr_u_short;
00175 typedef bool_t (RCS_FAR * PTR_TO_XDR_LONG) (XDR RCS_FAR *, long *);
00176 extern PTR_TO_XDR_LONG ptr_to_xdr_long;
00177 typedef bool_t (RCS_FAR * PTR_TO_XDR_U_LONG) (XDR RCS_FAR *,
00178 unsigned long *);
00179 extern PTR_TO_XDR_U_LONG ptr_to_xdr_u_long;
00180 typedef bool_t (RCS_FAR * PTR_TO_XDR_CHAR) (XDR RCS_FAR *, char *);
00181 extern PTR_TO_XDR_CHAR ptr_to_xdr_char;
00182 typedef bool_t (RCS_FAR * PTR_TO_XDR_U_CHAR) (XDR RCS_FAR *,
00183 unsigned char *);
00184 extern PTR_TO_XDR_U_CHAR ptr_to_xdr_u_char;
00185 typedef bool_t (RCS_FAR * PTR_TO_XDR_FLOAT) (XDR RCS_FAR *, float *);
00186 extern PTR_TO_XDR_FLOAT ptr_to_xdr_float;
00187 typedef bool_t (RCS_FAR * PTR_TO_XDR_DOUBLE) (XDR RCS_FAR *, double *);
00188 extern PTR_TO_XDR_DOUBLE ptr_to_xdr_double;
00189 typedef bool_t (RCS_FAR * PTR_TO_XDR_BYTES) (XDR RCS_FAR *, char **,
00190 unsigned int *, unsigned int);
00191 extern PTR_TO_XDR_BYTES ptr_to_xdr_bytes;
00192 typedef bool_t (RCS_FAR * PTR_TO_XDR_OPAQUE) (XDR RCS_FAR *, char *,
00193 unsigned int);
00194 extern PTR_TO_XDR_OPAQUE ptr_to_xdr_opaque;
00195 typedef bool_t (RCS_FAR * PTR_TO_XDR_VECTOR) (XDR RCS_FAR *, char *,
00196 unsigned int, unsigned int,
00197 xdrproc_t);
00198 extern PTR_TO_XDR_VECTOR ptr_to_xdr_vector;
00199
00200 extern void dl_xdrmem_create (XDR *,
00201 char RCS_FAR *, unsigned int, enum xdr_op);
00202 extern void dl_xdr_destroy (XDR *);
00203 extern u_long dl_xdr_getpos (XDR *);
00204 extern bool_t dl_xdr_setpos (XDR *, u_long);
00205
00206 #ifdef __cplusplus
00207 }
00208 #endif
00209
00210 enum RPC_LIBRARY_TYPE
00211 {
00212 RPC_INVALID,
00213 RPC_UNIX,
00214 RPC_DOS,
00215 PCNFS_TKDLL_WINDOWS_31,
00216 RHAPCD_ONCRPC_WINDOWS_NT,
00217 LIBRPC_WINDOWS
00218 };
00219
00220 extern RPC_LIBRARY_TYPE rpc_library_type;
00221 #endif