int xdr_counted_string( FILE *fptr, char **p) { int32_t length, rlength; if( !xdr_int32_t( fptr, &length) ) return 0; if( !length) { *p = (char *) malloc( sizeof(char) ); (*p)[0] = '\0'; return 1; } if( !xdr_int32_t( fptr, &length) ) return 0; // round length up to multiple of 4, how data is stored rlength = length + ( (length%4) == 0 ? 0 : 4 - (length%4) ); *p = (char *) malloc( (length + 1) * sizeof(char) ); if( fread( *p, 1, length, fptr) != length) { free( *p); return 0; } (*p)[length] = '\0'; /* Null termination using string length */ if( rlength > length) if( fseek( fptr, rlength-length, SEEK_CUR) ) return 0; return 1; }
static bool_t xdr_timeval( XDR * xdrs, nfstime * timeval_ptr) { return(xdr_int32_t(xdrs, (int32_t *) &timeval_ptr->seconds) && xdr_int32_t(xdrs, (int32_t *) &timeval_ptr->useconds)); }
bool_t xdr_int32 (XDR *xdrs, int32 *objp) { if (!xdr_int32_t (xdrs, objp)) return FALSE; return TRUE; }
/* * Custom XDR routine for our API structure fmd_stat_t. This function must * match the definition of fmd_stat_t in <fm/fmd_api.h> and must also match * the corresponding routine in usr/src/cmd/fm/fmd/common/fmd_rpc_adm.c. */ bool_t xdr_fmd_stat(XDR *xp, fmd_stat_t *sp) { bool_t rv = TRUE; rv &= xdr_opaque(xp, sp->fmds_name, sizeof (sp->fmds_name)); rv &= xdr_u_int(xp, &sp->fmds_type); rv &= xdr_opaque(xp, sp->fmds_desc, sizeof (sp->fmds_desc)); switch (sp->fmds_type) { case FMD_TYPE_BOOL: rv &= xdr_int(xp, &sp->fmds_value.bool); break; case FMD_TYPE_INT32: rv &= xdr_int32_t(xp, &sp->fmds_value.i32); break; case FMD_TYPE_UINT32: rv &= xdr_uint32_t(xp, &sp->fmds_value.ui32); break; case FMD_TYPE_INT64: rv &= xdr_int64_t(xp, &sp->fmds_value.i64); break; case FMD_TYPE_UINT64: case FMD_TYPE_TIME: case FMD_TYPE_SIZE: rv &= xdr_uint64_t(xp, &sp->fmds_value.ui64); break; case FMD_TYPE_STRING: rv &= xdr_string(xp, &sp->fmds_value.str, ~0); break; } return (rv); }
bool_t xdr_rpc_request_mediaengine_data (XDR *xdrs, rpc_request_mediaengine_data *objp) { if (!xdr_array (xdrs, (char **)&objp->session_id.session_id_val, (u_int *) &objp->session_id.session_id_len, ~0, sizeof (char), (xdrproc_t) xdr_char)) return FALSE; if (!xdr_array (xdrs, (char **)&objp->auth_data.auth_data_val, (u_int *) &objp->auth_data.auth_data_len, ~0, sizeof (uint8_t), (xdrproc_t) xdr_uint8_t)) return FALSE; if (!xdr_int32_t (xdrs, &objp->id_exchange_shmem)) return FALSE; if (!xdr_int32_t (xdrs, &objp->id_exchange_sem)) return FALSE; return TRUE; }
/* * XDR encode/decode for smb_netuserinfo_t. */ bool_t smb_netuserinfo_xdr(XDR *xdrs, smb_netuserinfo_t *objp) { if (!xdr_uint64_t(xdrs, &objp->ui_session_id)) return (FALSE); if (!xdr_uint16_t(xdrs, &objp->ui_smb_uid)) return (FALSE); if (!xdr_uint16_t(xdrs, &objp->ui_domain_len)) return (FALSE); if (!xdr_string(xdrs, &objp->ui_domain, ~0)) return (FALSE); if (!xdr_uint16_t(xdrs, &objp->ui_account_len)) return (FALSE); if (!xdr_string(xdrs, &objp->ui_account, ~0)) return (FALSE); if (!xdr_uint32_t(xdrs, &objp->ui_posix_uid)) return (FALSE); if (!xdr_uint16_t(xdrs, &objp->ui_workstation_len)) return (FALSE); if (!xdr_string(xdrs, &objp->ui_workstation, ~0)) return (FALSE); if (!smb_inaddr_xdr(xdrs, &objp->ui_ipaddr)) return (FALSE); if (!xdr_int32_t(xdrs, &objp->ui_native_os)) return (FALSE); if (!xdr_int64_t(xdrs, &objp->ui_logon_time)) return (FALSE); if (!xdr_uint32_t(xdrs, &objp->ui_numopens)) return (FALSE); if (!xdr_uint32_t(xdrs, &objp->ui_flags)) return (FALSE); return (TRUE); }
bool_t xdr_int32(XDR *xdrs, int32 *objp) { if (!xdr_int32_t(xdrs, objp)) return (FALSE); return (TRUE); }
bool_t xdr_kdbe_key_t (XDR *xdrs, kdbe_key_t *objp) { int32_t *buf; if (!xdr_int32_t (xdrs, &objp->k_ver)) return FALSE; if (!xdr_int32_t (xdrs, &objp->k_kvno)) return FALSE; if (!xdr_array (xdrs, (char **)&objp->k_enctype.k_enctype_val, (u_int *) &objp->k_enctype.k_enctype_len, ~0, sizeof (int32_t), (xdrproc_t) xdr_int32_t)) return FALSE; if (!xdr_array (xdrs, (char **)&objp->k_contents.k_contents_val, (u_int *) &objp->k_contents.k_contents_len, ~0, sizeof (utf8str_t), (xdrproc_t) xdr_utf8str_t)) return FALSE; return TRUE; }
bool_t xdr_nlm4_notify(XDR *xdrs, nlm4_notify *objp) { if (!xdr_string(xdrs, &objp->name, MAXNAMELEN)) return (FALSE); if (!xdr_int32_t(xdrs, &objp->state)) return (FALSE); return (TRUE); }
bool_t xdr_kdbe_data_t (XDR *xdrs, kdbe_data_t *objp) { int32_t *buf; if (!xdr_int32_t (xdrs, &objp->k_magic)) return FALSE; if (!xdr_utf8str_t (xdrs, &objp->k_data)) return FALSE; return TRUE; }
bool_t xdr_nlm4_shareres(XDR * xdrs, nlm4_shareres * objp) { register int32_t *buf; if(!xdr_netobj(xdrs, &objp->cookie)) return FALSE; if(!xdr_nlm4_stats(xdrs, &objp->stat)) return FALSE; if(!xdr_int32_t(xdrs, &objp->sequence)) return FALSE; return TRUE; }
bool_t xdr_nlm4_sm_notifyargs(XDR * xdrs, nlm4_sm_notifyargs * objp) { register int32_t *buf; int i; if(!xdr_string(xdrs, &objp->name, SM_MAXSTRLEN)) return FALSE; if(!xdr_int32_t(xdrs, &objp->state)) return FALSE; if(!xdr_opaque(xdrs, objp->priv, SM_PRIV_SZ)) return FALSE; return TRUE; }
bool_t xdr_kdbe_princ_t (XDR *xdrs, kdbe_princ_t *objp) { int32_t *buf; if (!xdr_utf8str_t (xdrs, &objp->k_realm)) return FALSE; if (!xdr_array (xdrs, (char **)&objp->k_components.k_components_val, (u_int *) &objp->k_components.k_components_len, ~0, sizeof (kdbe_data_t), (xdrproc_t) xdr_kdbe_data_t)) return FALSE; if (!xdr_int32_t (xdrs, &objp->k_nametype)) return FALSE; return TRUE; }
bool_t smb_inaddr_xdr(XDR *xdrs, smb_inaddr_t *objp) { if (!xdr_int32_t(xdrs, &objp->a_family)) return (FALSE); if (objp->a_family == AF_INET) { if (!xdr_uint32_t(xdrs, (in_addr_t *)&objp->a_ipv4)) return (FALSE); } else { if (!xdr_vector(xdrs, (char *)&objp->a_ipv6, sizeof (objp->a_ipv6), sizeof (char), (xdrproc_t)xdr_char)) return (FALSE); } return (TRUE); }
bool_t xdr_nlm4_holder(XDR * xdrs, nlm4_holder * objp) { register int32_t *buf; if(!xdr_bool(xdrs, &objp->exclusive)) return FALSE; if(!xdr_int32_t(xdrs, &objp->svid)) return FALSE; if(!xdr_netobj(xdrs, &objp->oh)) return FALSE; if(!xdr_uint64_t(xdrs, &objp->l_offset)) return FALSE; if(!xdr_uint64_t(xdrs, &objp->l_len)) return FALSE; return TRUE; }
bool_t xdr_nlm4_lock(XDR * xdrs, nlm4_lock * objp) { register int32_t *buf; if(!xdr_string(xdrs, &objp->caller_name, LM_MAXSTRLEN)) return FALSE; if(!xdr_netobj(xdrs, &objp->fh)) return FALSE; if(!xdr_netobj(xdrs, &objp->oh)) return FALSE; if(!xdr_int32_t(xdrs, &objp->svid)) return FALSE; if(!xdr_uint64_t(xdrs, &objp->l_offset)) return FALSE; if(!xdr_uint64_t(xdrs, &objp->l_len)) return FALSE; return TRUE; }
bool_t xdr_nlm4_lockargs(XDR * xdrs, nlm4_lockargs * objp) { register int32_t *buf; if(!xdr_netobj(xdrs, &objp->cookie)) return FALSE; if(!xdr_bool(xdrs, &objp->block)) return FALSE; if(!xdr_bool(xdrs, &objp->exclusive)) return FALSE; if(!xdr_nlm4_lock(xdrs, &objp->alock)) return FALSE; if(!xdr_bool(xdrs, &objp->reclaim)) return FALSE; if(!xdr_int32_t(xdrs, &objp->state)) return FALSE; return TRUE; }
bool_t xdr_heh(XDR *xdrs, diropargs *heh) { int32_t werd = -1; return xdr_int32_t(xdrs, &werd); }