3 * XDR routine for int64 (long long or struct)
11 #if defined(KERNEL) && !defined(UKERNEL)
12 #ifdef AFS_LINUX20_ENV
15 #include <sys/param.h>
16 #include <sys/systm.h>
22 #if defined(KERNEL) && !defined(UKERNEL)
24 #include <afs/longc_procs.h>
30 * XDR afs_int64 integers
32 bool_t xdr_int64(register XDR *xdrs, afs_int64 *ulp)
34 return xdr_afs_int64(xdrs, ulp);
37 bool_t xdr_afs_int64(register XDR *xdrs, afs_int64 *ulp)
39 static afs_int32 high;
40 static afs_uint32 low;
42 if (xdrs->x_op == XDR_DECODE) {
43 if (!XDR_GETINT32(xdrs, (afs_int32 *) &high)) return (FALSE);
44 if (!XDR_GETINT32(xdrs, (afs_int32 *) &low)) return (FALSE);
50 if (xdrs->x_op == XDR_ENCODE) {
52 low = *ulp & 0xFFFFFFFFL;
53 if (!XDR_PUTINT32(xdrs, (afs_int32 *) &high)) return (FALSE);
54 return (XDR_PUTINT32(xdrs, (afs_int32 *) &low));
56 if (xdrs->x_op == XDR_FREE)
62 * XDR afs_int64 integers
64 bool_t xdr_uint64(register XDR *xdrs, afs_uint64 *ulp)
66 return xdr_afs_uint64(xdrs, ulp);
68 bool_t xdr_afs_uint64(register XDR *xdrs, afs_uint64 *ulp)
70 static afs_uint32 high;
71 static afs_uint32 low;
73 if (xdrs->x_op == XDR_DECODE) {
74 if (!XDR_GETINT32(xdrs, (afs_uint32 *) &high)) return (FALSE);
75 if (!XDR_GETINT32(xdrs, (afs_uint32 *) &low)) return (FALSE);
81 if (xdrs->x_op == XDR_ENCODE) {
83 low = *ulp & 0xFFFFFFFFL;
84 if (!XDR_PUTINT32(xdrs, (afs_uint32 *) &high)) return (FALSE);
85 return (XDR_PUTINT32(xdrs, (afs_uint32 *) &low));
87 if (xdrs->x_op == XDR_FREE)
92 #else /* AFS_64BIT_ENV */
94 * XDR afs_int64 integers
96 bool_t xdr_int64(register XDR *xdrs, afs_int64 *ulp)
98 return xdr_afs_int64(xdrs, ulp);
100 bool_t xdr_afs_int64(register XDR *xdrs, afs_int64 *ulp)
102 if (xdrs->x_op == XDR_DECODE) {
103 if (!XDR_GETINT32(xdrs, (afs_int32 *) &ulp->high)) return (FALSE);
104 return (XDR_GETINT32(xdrs, (afs_int32 *) &ulp->low));
106 if (xdrs->x_op == XDR_ENCODE) {
107 if (!XDR_PUTINT32(xdrs, (afs_int32 *) &ulp->high)) return (FALSE);
108 return (XDR_PUTINT32(xdrs, (afs_int32 *) &ulp->low));
110 if (xdrs->x_op == XDR_FREE)
116 * XDR afs_uint64 integers
118 bool_t xdr_uint64(register XDR *xdrs, afs_uint64 *ulp)
120 return xdr_afs_uint64(xdrs, ulp);
122 bool_t xdr_afs_uint64(register XDR *xdrs, afs_uint64 *ulp)
124 if (xdrs->x_op == XDR_DECODE) {
125 if (!XDR_GETINT32(xdrs, (afs_uint32 *) &ulp->high)) return (FALSE);
126 return (XDR_GETINT32(xdrs, (afs_uint32 *) &ulp->low));
128 if (xdrs->x_op == XDR_ENCODE) {
129 if (!XDR_PUTINT32(xdrs, (afs_uint32 *) &ulp->high)) return (FALSE);
130 return (XDR_PUTINT32(xdrs, (afs_uint32 *) &ulp->low));
132 if (xdrs->x_op == XDR_FREE)
136 #endif /* AFS_64BIT_ENV */