bool_t xdr_float(XDR *xdrs, float *fp) { switch (xdrs->x_op) { case XDR_ENCODE: if (sizeof(float) == sizeof(long)) return (XDR_PUTLONG(xdrs, (long *)fp)); else if (sizeof(float) == sizeof(int)) { long tmp = *(int *)fp; return (XDR_PUTLONG(xdrs, &tmp)); } break; case XDR_DECODE: if (sizeof(float) == sizeof(long)) return (XDR_GETLONG(xdrs, (long *)fp)); else if (sizeof(float) == sizeof(int)) { long tmp; if (XDR_GETLONG(xdrs, &tmp)) { *(int *)fp = tmp; return (TRUE); } } break; case XDR_FREE: return (TRUE); } return (FALSE); }
/* * XDR unsigned 64-bit integers */ bool_t xdr_uint64_t(XDR *xdrs, uint64_t *ullp) { u_long ul[2]; switch (xdrs->x_op) { case XDR_ENCODE: ul[0] = (u_long)(*ullp >> 32) & 0xffffffff; ul[1] = (u_long)(*ullp) & 0xffffffff; if (XDR_PUTLONG(xdrs, (long *)&ul[0]) == FALSE) return (FALSE); return (XDR_PUTLONG(xdrs, (long *)&ul[1])); case XDR_DECODE: if (XDR_GETLONG(xdrs, (long *)&ul[0]) == FALSE) return (FALSE); if (XDR_GETLONG(xdrs, (long *)&ul[1]) == FALSE) return (FALSE); *ullp = (uint64_t) (((uint64_t)ul[0] << 32) | ((uint64_t)ul[1])); return (TRUE); case XDR_FREE: return (TRUE); } /* NOTREACHED */ return (FALSE); }
/* * XDR short integers */ bool_t xdr_short(XDR *xdrs, short *sp) { long l; switch (xdrs->x_op) { case XDR_ENCODE: VALGRIND_CHECK_DEFINED(*sp); l = (long) *sp; return (XDR_PUTLONG(xdrs, &l)); case XDR_DECODE: if (!XDR_GETLONG(xdrs, &l)) { return (FALSE); } if (l > SHRT_MAX || l < SHRT_MIN) return (FALSE); *sp = (short) l; return (TRUE); case XDR_FREE: return (TRUE); } return (FALSE); }
/* * XDR integers */ bool_t xdr_int(XDR *xdrs, int *ip) { long l; switch (xdrs->x_op) { case XDR_ENCODE: VALGRIND_CHECK_DEFINED(*ip); if (*ip > 0x7fffffffL || *ip < -0x7fffffffL - 1L) return (FALSE); l = (long) *ip; return (XDR_PUTLONG(xdrs, &l)); case XDR_DECODE: if (!XDR_GETLONG(xdrs, &l)) return (FALSE); if (l > INT_MAX || l < INT_MIN) return (FALSE); *ip = (int) l; case XDR_FREE: return (TRUE); } /*NOTREACHED*/ return(FALSE); }
/* * XDR booleans */ bool_t xdr_bool( XDR *xdrs, bool_t *bp) { long lb; switch (xdrs->x_op) { case XDR_ENCODE: lb = *bp ? XDR_TRUE : XDR_FALSE; return (XDR_PUTLONG(xdrs, &lb)); case XDR_DECODE: if (!XDR_GETLONG(xdrs, &lb)) { return (FALSE); } *bp = (lb == XDR_FALSE) ? FALSE : TRUE; return (TRUE); case XDR_FREE: return (TRUE); } /* NOTREACHED */ return (FALSE); }
/* * XDR unsigned 16-bit integers */ bool_t xdr_u_int16_t( XDR *xdrs, u_int16_t *u_int16_p) { u_long l; switch (xdrs->x_op) { case XDR_ENCODE: l = (u_long) *u_int16_p; return (XDR_PUTLONG(xdrs, (long *)&l)); case XDR_DECODE: if (!XDR_GETLONG(xdrs, (long *)&l)) { return (FALSE); } *u_int16_p = (u_int16_t) l; return (TRUE); case XDR_FREE: return (TRUE); } /* NOTREACHED */ return (FALSE); }
/* * XDR short integers */ bool_t xdr_short( XDR *xdrs, short *sp) { long l; switch (xdrs->x_op) { case XDR_ENCODE: l = (long) *sp; return (XDR_PUTLONG(xdrs, &l)); case XDR_DECODE: if (!XDR_GETLONG(xdrs, &l)) { return (FALSE); } *sp = (short) l; return (TRUE); case XDR_FREE: return (TRUE); } /* NOTREACHED */ return (FALSE); }
/* * XDR 32-bit integers * same as xdr_u_int32_t - open coded to save a proc call! */ bool_t xdr_int32_t( XDR *xdrs, int32_t *int32_p) { long l; switch (xdrs->x_op) { case XDR_ENCODE: l = (long) *int32_p; return (XDR_PUTLONG(xdrs, &l)); case XDR_DECODE: if (!XDR_GETLONG(xdrs, &l)) { return (FALSE); } *int32_p = (int32_t) l; return (TRUE); case XDR_FREE: return (TRUE); } /* NOTREACHED */ return (FALSE); }
/* * XDR unsigned integers */ bool_t xdr_u_int(XDR *xdrs, u_int *up) { u_long l; switch (xdrs->x_op) { case XDR_ENCODE: VALGRIND_CHECK_DEFINED(*up); if (*up > 0xffffffffUL) return (FALSE); l = (u_long)*up; return (XDR_PUTLONG(xdrs, (long *) &l)); case XDR_DECODE: if (!XDR_GETLONG(xdrs, (long *) &l)) return (FALSE); if ((uint32_t)l > UINT_MAX) return (FALSE); *up = (u_int) l; return (TRUE); case XDR_FREE: return (TRUE); } /*NOTREACHED*/ return(FALSE); }
bool_t xdr_double(register XDR *xdrs, double *dp) { register long *lp; switch (xdrs->x_op) { case XDR_ENCODE: lp = (long *)dp; return (XDR_PUTLONG(xdrs, lp+1) && XDR_PUTLONG(xdrs, lp)); case XDR_DECODE: lp = (long *)dp; return (XDR_GETLONG(xdrs, lp+1) && XDR_GETLONG(xdrs, lp)); case XDR_FREE: return (TRUE); } return (FALSE); }
bool_t xdr_double(XDR *xdrs, double *dp) { switch (xdrs->x_op) { case XDR_ENCODE: if (2*sizeof(long) == sizeof(double)) { long *lp = (long *)dp; return (XDR_PUTLONG(xdrs, lp+!LSW) && XDR_PUTLONG(xdrs, lp+LSW)); } else if (2*sizeof(int) == sizeof(double)) { int *ip = (int *)dp; long tmp[2]; tmp[0] = ip[!LSW]; tmp[1] = ip[LSW]; return (XDR_PUTLONG(xdrs, tmp) && XDR_PUTLONG(xdrs, tmp+1)); } break; case XDR_DECODE: if (2*sizeof(long) == sizeof(double)) { long *lp = (long *)dp; return (XDR_GETLONG(xdrs, lp+!LSW) && XDR_GETLONG(xdrs, lp+LSW)); } else if (2*sizeof(int) == sizeof(double)) { int *ip = (int *)dp; long tmp[2]; if (XDR_GETLONG(xdrs, tmp+!LSW) && XDR_GETLONG(xdrs, tmp+LSW)) { ip[0] = tmp[0]; ip[1] = tmp[1]; return (TRUE); } } break; case XDR_FREE: return (TRUE); } return (FALSE); }
/* * XDR unsigned long integers * same as xdr_long - open coded to save a proc call! */ bool_t xdr_u_long(XDR *xdrs, u_long *ulp) { if (xdrs->x_op == XDR_DECODE) return (XDR_GETLONG(xdrs, (long *)ulp)); if (xdrs->x_op == XDR_ENCODE) return (XDR_PUTLONG(xdrs, (long *)ulp)); if (xdrs->x_op == XDR_FREE) return (TRUE); return (FALSE); }
bool_t xdr_float(register XDR *xdrs, register float *fp) { switch (xdrs->x_op) { case XDR_ENCODE: return (XDR_PUTLONG(xdrs, (long *)fp)); case XDR_DECODE: return (XDR_GETLONG(xdrs, (long *)fp)); case XDR_FREE: return (TRUE); } return (FALSE); }
/* * XDR unsigned long integers * same as xdr_long - open coded to save a proc call! */ bool_t xdr_u_long(XDR *xdrs, u_long *ulp) { switch (xdrs->x_op) { case XDR_ENCODE: return (XDR_PUTLONG(xdrs, (long *)ulp)); case XDR_DECODE: return (XDR_GETLONG(xdrs, (long *)ulp)); case XDR_FREE: return (TRUE); } return (FALSE); }
/* * XDR long integers * same as xdr_u_long - open coded to save a proc call! */ bool_t xdr_long(XDR *xdrs, long *lp) { switch (xdrs->x_op) { case XDR_ENCODE: return (XDR_PUTLONG(xdrs, lp)); case XDR_DECODE: return (XDR_GETLONG(xdrs, lp)); case XDR_FREE: return (TRUE); } /* NOTREACHED */ return (FALSE); }
/* * XDR long integers * same as xdr_u_long - open coded to save a proc call! */ bool_t xdr_long(register XDR *xdrs, long *lp) { if (xdrs->x_op == XDR_ENCODE) return (XDR_PUTLONG(xdrs, lp)); if (xdrs->x_op == XDR_DECODE) return (XDR_GETLONG(xdrs, lp)); if (xdrs->x_op == XDR_FREE) return (TRUE); return (FALSE); }
/* * XDR long integers * same as xdr_u_long - open coded to save a proc call! */ bool_t xdr_long(XDR* xdrs, long* lp) { if (xdrs->x_op == XDR_ENCODE && (sizeof(int32_t) == sizeof(long) || (int32_t) *lp == *lp)) return (XDR_PUTLONG(xdrs, lp)); if (xdrs->x_op == XDR_DECODE) return (XDR_GETLONG(xdrs, lp)); if (xdrs->x_op == XDR_FREE) return (TRUE); return (FALSE); }
/* * XDR unsigned long integers */ bool_t xdr_u_long(XDR *xdrs, u_long *ulp) { switch (xdrs->x_op) { case XDR_ENCODE: VALGRIND_CHECK_DEFINED(*ulp); if (*ulp > 0xffffffffUL) return (FALSE); return (XDR_PUTLONG(xdrs, (long *) ulp)); case XDR_DECODE: return (XDR_GETLONG(xdrs, (long *) ulp)); case XDR_FREE: return (TRUE); } return (FALSE); }
/* * XDR long integers */ bool_t xdr_long(XDR *xdrs, long *lp) { switch (xdrs->x_op) { case XDR_ENCODE: VALGRIND_CHECK_DEFINED(*lp); if (*lp > 0x7fffffffL || *lp < -0x7fffffffL - 1L) return (FALSE); return (XDR_PUTLONG(xdrs, lp)); case XDR_DECODE: return (XDR_GETLONG(xdrs, lp)); case XDR_FREE: return (TRUE); } return (FALSE); }
/* * XDR unsigned integers */ bool_t xdr_u_int(XDR* xdrs, unsigned int* up) { if (sizeof(unsigned int) == sizeof(unsigned long)) { return (xdr_u_long(xdrs, (unsigned long *) up)); } else if (sizeof(unsigned int) < sizeof(unsigned long)) { unsigned long l; switch (xdrs->x_op) { case XDR_ENCODE: l = (unsigned long) *up; return XDR_PUTLONG(xdrs, (long*)&l); case XDR_DECODE: if (!XDR_GETLONG(xdrs, (long*)&l)) return FALSE; *up = (unsigned int) l; case XDR_FREE: return TRUE; } return FALSE; } else { return (xdr_short(xdrs, (short *) up)); } }
/* * XDR unsigned short integers */ bool_t xdr_u_short(XDR* xdrs, unsigned short* usp) { unsigned long l; switch (xdrs->x_op) { case XDR_ENCODE: l = (unsigned long) * usp; return (XDR_PUTLONG(xdrs, (long*)&l)); case XDR_DECODE: if (!XDR_GETLONG(xdrs, (long*)&l)) { return (FALSE); } *usp = (unsigned short) l; return (TRUE); case XDR_FREE: return (TRUE); } return (FALSE); }
/* * XDR integers */ bool_t xdr_int(XDR* xdrs, int* ip) { if (sizeof(int) == sizeof(long)) { return (xdr_long(xdrs, (long *) ip)); } else if (sizeof(int) < sizeof(long)) { long l; switch (xdrs->x_op) { case XDR_ENCODE: l = (long) *ip; return XDR_PUTLONG(xdrs, &l); case XDR_DECODE: if (!XDR_GETLONG(xdrs, &l)) return FALSE; *ip = (int) l; case XDR_FREE: return TRUE; } return FALSE; } else { return (xdr_short(xdrs, (short *) ip)); } }
/* * XDR unsigned short integers */ bool_t xdr_u_short(register XDR *xdrs, u_short *usp) { long l; switch (xdrs->x_op) { case XDR_ENCODE: l = (long) *usp; return (XDR_PUTLONG(xdrs, &l)); case XDR_DECODE: if (!XDR_GETLONG(xdrs, &l)) { return (FALSE); } *usp = (u_short) l; return (TRUE); case XDR_FREE: return (TRUE); } return (FALSE); }
/* * XDR unsigned integers */ bool_t xdr_u_int(XDR *xdrs, u_int *up) { u_long l; switch (xdrs->x_op) { case XDR_ENCODE: l = (u_long) *up; return (XDR_PUTLONG(xdrs, (long *)&l)); case XDR_DECODE: if (!XDR_GETLONG(xdrs, (long *)&l)) { return (FALSE); } *up = (u_int) l; return (TRUE); case XDR_FREE: return (TRUE); } return (FALSE); }
/* * XDR integers */ bool_t xdr_int(XDR *xdrs, int *ip) { long l; switch (xdrs->x_op) { case XDR_ENCODE: l = (long) *ip; return (XDR_PUTLONG(xdrs, &l)); case XDR_DECODE: if (!XDR_GETLONG(xdrs, &l)) { return (FALSE); } *ip = (int) l; return (TRUE); case XDR_FREE: return (TRUE); } return (FALSE); }
/* * XDR unsigned long integers * same as xdr_long - open coded to save a proc call! */ bool_t xdr_u_long(XDR* xdrs, unsigned long* ulp) { if (xdrs->x_op == XDR_DECODE) { long l; if (XDR_GETLONG(xdrs, &l) == FALSE) return FALSE; *ulp = (uint32_t) l; return TRUE; } if (xdrs->x_op == XDR_ENCODE) { if (sizeof(uint32_t) != sizeof(unsigned long) && (uint32_t) *ulp != *ulp) return FALSE; return (XDR_PUTLONG(xdrs, (long *) ulp)); } if (xdrs->x_op == XDR_FREE) return (TRUE); return (FALSE); }
/* * XDR booleans */ bool_t xdr_bool(XDR *xdrs, bool_t *bp) { long lb; switch (xdrs->x_op) { case XDR_ENCODE: VALGRIND_CHECK_DEFINED(*bp); lb = *bp ? XDR_TRUE : XDR_FALSE; return (XDR_PUTLONG(xdrs, &lb)); case XDR_DECODE: if (!XDR_GETLONG(xdrs, &lb)) { return (FALSE); } *bp = (lb == XDR_FALSE) ? FALSE : TRUE; return (TRUE); case XDR_FREE: return (TRUE); } return (FALSE); }
/* * XDR unsigned short integers */ bool_t xdr_u_short(XDR *xdrs, u_short *usp) { u_long l; switch (xdrs->x_op) { case XDR_ENCODE: VALGRIND_CHECK_DEFINED(*usp); l = (u_long) *usp; return (XDR_PUTLONG(xdrs, (long *) &l)); case XDR_DECODE: if (!XDR_GETLONG(xdrs, (long *) &l)) { return (FALSE); } *usp = (u_short) l; return (TRUE); case XDR_FREE: return (TRUE); } return (FALSE); }