00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049 #ifndef __XDR_HEADER__
00050 #define __XDR_HEADER__
00051
00052 #if !defined(_WINDOWS) && !defined(WIN32)
00053 #error This version of XDR only for Windows NT.
00054 #endif
00055
00056
00057
00058
00059 #include "xdrtypes.h"
00060
00061 #define _X86_
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097 enum xdr_op {
00098 XDR_ENCODE=0,
00099 XDR_DECODE=1,
00100 XDR_FREE=2
00101 };
00102
00103
00104
00105
00106 #define BYTES_PER_XDR_UNIT (4)
00107 #define RNDUP(x) ((((x) + BYTES_PER_XDR_UNIT - 1) / BYTES_PER_XDR_UNIT) \
00108 * BYTES_PER_XDR_UNIT)
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119 typedef bool_t (*xdrproc_t)();
00120
00121
00122
00123
00124
00125
00126
00127
00128 #ifdef __cplusplus
00129
00130 typedef struct {
00131 enum xdr_op x_op;
00132 struct xdr_ops {
00133 bool_t (*x_getlong)(void *, long *);
00134 bool_t (*x_putlong)(void *, long *);
00135 bool_t (*x_getbytes)(void *, void *, int );
00136 bool_t (*x_putbytes)(void *, void *, int);
00137 u_int (*x_getpostn)(void *);
00138 bool_t (*x_setpostn)(void *, int);
00139 long * (*x_inline)(void *, int);
00140 void (*x_destroy)(void *);
00141 } *x_ops;
00142 caddr_t x_public;
00143 caddr_t x_private;
00144 caddr_t x_base;
00145 int x_handy;
00146 } XDR;
00147
00148 #else
00149
00150 typedef struct {
00151 enum xdr_op x_op;
00152 struct xdr_ops {
00153 bool_t (*x_getlong)();
00154 bool_t (*x_putlong)();
00155 bool_t (*x_getbytes)();
00156 bool_t (*x_putbytes)();
00157 u_int (*x_getpostn)();
00158 bool_t (*x_setpostn)();
00159 long * (*x_inline)();
00160 void (*x_destroy)();
00161 } *x_ops;
00162 caddr_t x_public;
00163 caddr_t x_private;
00164 caddr_t x_base;
00165 int x_handy;
00166 } XDR;
00167
00168 #endif
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179 #define XDR_GETLONG(xdrs, longp) \
00180 (*(xdrs)->x_ops->x_getlong)(xdrs, longp)
00181 #define xdr_getlong(xdrs, longp) \
00182 (*(xdrs)->x_ops->x_getlong)(xdrs, longp)
00183
00184 #define XDR_PUTLONG(xdrs, longp) \
00185 (*(xdrs)->x_ops->x_putlong)(xdrs, longp)
00186 #define xdr_putlong(xdrs, longp) \
00187 (*(xdrs)->x_ops->x_putlong)(xdrs, longp)
00188
00189 #define XDR_GETBYTES(xdrs, addr, len) \
00190 (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len)
00191 #define xdr_getbytes(xdrs, addr, len) \
00192 (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len)
00193
00194 #define XDR_PUTBYTES(xdrs, addr, len) \
00195 (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len)
00196 #define xdr_putbytes(xdrs, addr, len) \
00197 (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len)
00198
00199 #define XDR_GETPOS(xdrs) \
00200 (*(xdrs)->x_ops->x_getpostn)(xdrs)
00201 #define xdr_getpos(xdrs) \
00202 (*(xdrs)->x_ops->x_getpostn)(xdrs)
00203
00204 #define XDR_SETPOS(xdrs, pos) \
00205 (*(xdrs)->x_ops->x_setpostn)(xdrs, pos)
00206 #define xdr_setpos(xdrs, pos) \
00207 (*(xdrs)->x_ops->x_setpostn)(xdrs, pos)
00208
00209 #define XDR_INLINE(xdrs, len) \
00210 (*(xdrs)->x_ops->x_inline)(xdrs, len)
00211 #define xdr_inline(xdrs, len) \
00212 (*(xdrs)->x_ops->x_inline)(xdrs, len)
00213
00214 #define XDR_DESTROY(xdrs) \
00215 if ((xdrs)->x_ops->x_destroy) \
00216 (*(xdrs)->x_ops->x_destroy)(xdrs)
00217 #define xdr_destroy(xdrs) \
00218 if ((xdrs)->x_ops->x_destroy) \
00219 (*(xdrs)->x_ops->x_destroy)(xdrs)
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231 #define NULL_xdrproc_t ((xdrproc_t)0)
00232 struct xdr_discrim {
00233 int value;
00234 xdrproc_t proc;
00235 };
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252 #define IXDR_GET_LONG(buf) ((long)ntohl((u_long)*(buf)++))
00253 #define IXDR_PUT_LONG(buf, v) (*(buf)++ = (long)htonl((u_long)v))
00254
00255 #define IXDR_GET_BOOL(buf) ((bool_t)IXDR_GET_LONG(buf))
00256 #define IXDR_GET_ENUM(buf, t) ((t)IXDR_GET_LONG(buf))
00257 #define IXDR_GET_U_LONG(buf) ((u_long)IXDR_GET_LONG(buf))
00258 #define IXDR_GET_SHORT(buf) ((short)IXDR_GET_LONG(buf))
00259 #define IXDR_GET_U_SHORT(buf) ((u_short)IXDR_GET_LONG(buf))
00260
00261 #define IXDR_PUT_BOOL(buf, v) IXDR_PUT_LONG((buf), ((long)(v)))
00262 #define IXDR_PUT_ENUM(buf, v) IXDR_PUT_LONG((buf), ((long)(v)))
00263 #define IXDR_PUT_U_LONG(buf, v) IXDR_PUT_LONG((buf), ((long)(v)))
00264 #define IXDR_PUT_SHORT(buf, v) IXDR_PUT_LONG((buf), ((long)(v)))
00265 #define IXDR_PUT_U_SHORT(buf, v) IXDR_PUT_LONG((buf), ((long)(v)))
00266
00267
00268
00269
00270
00271
00272
00273 #define MAX_NETOBJ_SZ 1024
00274 struct netobj {
00275 u_int n_len;
00276 char *n_bytes;
00277 };
00278 typedef struct netobj netobj;
00279 extern bool_t xdr_netobj();
00280
00281
00282
00283
00284
00285
00286 #ifdef __cplusplus
00287 void xdrmem_create(XDR *xdrs, caddr_t addr, u_int size, enum xdr_op op);
00288
00289
00290
00291
00292 extern bool_t xdr_void();
00293 extern bool_t xdr_int(XDR *, int *);
00294 extern bool_t xdr_u_int(XDR *, unsigned int *);
00295 extern bool_t xdr_long(XDR *, long *);
00296 extern bool_t xdr_u_long(XDR *,unsigned long *);
00297 extern bool_t xdr_short(XDR *, short *);
00298 extern bool_t xdr_u_short(XDR *, unsigned short *);
00299 extern bool_t xdr_bool();
00300 extern bool_t xdr_enum();
00301 extern bool_t xdr_array();
00302 extern bool_t xdr_bytes(XDR *, char **, unsigned int *, unsigned int);
00303 extern bool_t xdr_opaque();
00304 extern bool_t xdr_string();
00305 extern bool_t xdr_union();
00306 extern bool_t xdr_char(XDR *, char *);
00307 extern bool_t xdr_u_char(XDR *, unsigned char *);
00308 extern bool_t xdr_vector(XDR *, char *, int , int, xdrproc_t);
00309 extern bool_t xdr_float(XDR *, float *);
00310 extern bool_t xdr_double(XDR *, double *);
00311 extern bool_t xdr_reference();
00312 extern bool_t xdr_pointer();
00313 extern bool_t xdr_wrapstring();
00314
00315 #else
00316
00317
00318
00319
00320 extern bool_t xdr_void();
00321 extern bool_t xdr_int();
00322 extern bool_t xdr_u_int();
00323 extern bool_t xdr_long();
00324 extern bool_t xdr_u_long();
00325 extern bool_t xdr_short();
00326 extern bool_t xdr_u_short();
00327 extern bool_t xdr_bool();
00328 extern bool_t xdr_enum();
00329 extern bool_t xdr_array();
00330 extern bool_t xdr_bytes();
00331 extern bool_t xdr_opaque();
00332 extern bool_t xdr_string();
00333 extern bool_t xdr_union();
00334 extern bool_t xdr_char();
00335 extern bool_t xdr_u_char();
00336 extern bool_t xdr_vector();
00337 extern bool_t xdr_float();
00338 extern bool_t xdr_double();
00339 extern bool_t xdr_reference();
00340 extern bool_t xdr_pointer();
00341 extern bool_t xdr_wrapstring();
00342
00343 extern void xdrmem_create();
00344 #endif
00345
00346 #if !defined(UNDER_CE) && !defined(WINDOWS_CE)
00347 extern void xdrstdio_create();
00348 #endif
00349
00350 extern void xdrrec_create();
00351 extern bool_t xdrrec_endofrecord();
00352 extern bool_t xdrrec_skiprecord();
00353 extern bool_t xdrrec_eof();
00354
00355 #endif