Beispiel #1
0
bool_t
_xdr_directory_obj (XDR *xdrs, directory_obj *objp)
{
  bool_t res = xdr_nis_name (xdrs, &objp->do_name);
  if (__builtin_expect (res, TRUE))
    {
      res = xdr_nstype (xdrs, &objp->do_type);
      if (__builtin_expect (res, TRUE))
	{
	  res = xdr_array (xdrs, (void *) &objp->do_servers.do_servers_val,
			   &objp->do_servers.do_servers_len, ~0,
			   sizeof (nis_server), (xdrproc_t) _xdr_nis_server);
	  if (__builtin_expect (res, TRUE))
	    {
	      res = xdr_uint32_t (xdrs, &objp->do_ttl);
	      if (__builtin_expect (res, TRUE))
		res = xdr_array (xdrs,
				 (void *) &objp->do_armask.do_armask_val,
				 &objp->do_armask.do_armask_len, ~0,
				 sizeof (oar_mask), (xdrproc_t) xdr_oar_mask);
	    }
	}
    }
  return res;
}
Beispiel #2
0
static int xdr_RPGP_grid_t (XDR *xdrs, RPGP_grid_t *grid) {
    int len;

    len = 0;
    if (xdrs->x_op == XDR_DECODE) {
	grid->comp_params = NULL;
	grid->dimensions = NULL;
    }
    else
	len = Get_n_grid_points (grid);

    if (xdr_int (xdrs, &(grid->comp_type)) == 0 ||
	xdr_int (xdrs, &(grid->n_dimensions)) == 0 ||
	(grid->n_dimensions > 0 &&
	 xdr_array (xdrs, (char **)&(grid->dimensions), 
		(unsigned int *)&(grid->n_dimensions), MAX_ARRAY_SIZE, 
		sizeof (int), 
		(xdrproc_t)xdr_int) == 0) ||
	xdr_int (xdrs, &(grid->grid_type)) == 0 ||
	xdr_int (xdrs, &(grid->numof_comp_params)) == 0 ||
	(grid->numof_comp_params > 0 &&
	 xdr_array (xdrs, (char **)&(grid->comp_params), 
		(unsigned int *)&(grid->numof_comp_params), MAX_ARRAY_SIZE, 
		sizeof (RPGP_parameter_t), 
		(xdrproc_t)xdr_RPGP_parameter_t) == 0))
	return (0);

    if (xdrs->x_op == XDR_DECODE)
	len = Get_n_grid_points (grid);

    if (xdr_RPGP_data_t (xdrs, &(grid->data), len) == 0)
	return (0);
    return (1);
}
Beispiel #3
0
static int xdr_RPGP_radial_t (XDR *xdrs, RPGP_radial_t *radial) {

    if (xdrs->x_op == XDR_DECODE) {
	radial->description = NULL;
	radial->comp_params = NULL;
	radial->radials = NULL;
    }

    if (xdr_int (xdrs, &(radial->comp_type)) == 0 ||
	xdr_string (xdrs, &(radial->description), MAX_ARRAY_SIZE) == 0 ||
	xdr_float (xdrs, &(radial->bin_size)) == 0 ||
	xdr_float (xdrs, &(radial->first_range)) == 0 ||
	xdr_int (xdrs, &(radial->numof_comp_params)) == 0 ||
	(radial->numof_comp_params > 0 &&
	 xdr_array (xdrs, (char **)&(radial->comp_params), 
		(unsigned int *)&(radial->numof_comp_params), MAX_ARRAY_SIZE, 
		sizeof (RPGP_parameter_t), 
		(xdrproc_t)xdr_RPGP_parameter_t) == 0) ||
	xdr_int (xdrs, &(radial->numof_radials)) == 0)
	return (0);

    if (radial->numof_radials > 0) {
	if (xdr_array (xdrs, (char **)&(radial->radials), 
			(unsigned int *)&(radial->numof_radials), MAX_ARRAY_SIZE, 
			sizeof (RPGP_radial_data_t), 
			(xdrproc_t)xdr_RPGP_radial_data_t) == 0)
	    return (0);
    }

    return (1);
}
Beispiel #4
0
bool_t xdr_matrice2(XDR *xdrs, matrice2 *m) {
  bool_t res = 1;
  if (xdr_int(xdrs, &m->s) == 0) {
    res = 0;
  }
  if (xdr_int(xdrs, &m->mul) == 0) {
    res = 0;
  }
  
  //Force XDR to allocate memory while decoding
  if((xdrs->x_op == XDR_DECODE) && (m->x != NULL)) {
    free(m->x);
    m->x = NULL;
  }
  if((xdrs->x_op == XDR_DECODE) && (m->y != NULL)) {
    free(m->y);
    m->y = NULL;
  }
  // if(xdrs->x_op != XDR_DECODE) {
  //   printf("%d\n", m->x[0]);
  // }
  uint si = m->s*m->s;
  if (xdr_array(xdrs, (char **)&m->x, &si, (m->s*m->s), sizeof(int), (xdrproc_t)xdr_int) == 0) {
    res = 0;
  }
  if (xdr_array(xdrs, (char **)&m->y, &si, (m->s*m->s), sizeof(int), (xdrproc_t)xdr_int) == 0) {
    res = 0;
  }
  return res;
}
Beispiel #5
0
bool_t
xdr_rpc_request_session_update (XDR *xdrs, rpc_request_session_update *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->key.key_val, (u_int *) &objp->key.key_len, ~0,
		sizeof (uint8_t), (xdrproc_t) xdr_uint8_t))
		 return FALSE;
	return TRUE;
}
Beispiel #6
0
bool_t
xdr_rpc_request_is_type_supported (XDR *xdrs, rpc_request_is_type_supported *objp)
{

	 if (!xdr_array (xdrs, (char **)&objp->key_system.key_system_val, (u_int *) &objp->key_system.key_system_len, ~0,
		sizeof (char), (xdrproc_t) xdr_char))
		 return FALSE;
	 if (!xdr_array (xdrs, (char **)&objp->mime_type.mime_type_val, (u_int *) &objp->mime_type.mime_type_len, ~0,
		sizeof (char), (xdrproc_t) xdr_char))
		 return FALSE;
	return TRUE;
}
Beispiel #7
0
bool_t
xdr_ndmp3_data_start_recover_request (XDR *xdrs, ndmp3_data_start_recover_request *objp)
{
	if (!xdr_array (xdrs, (char **)&objp->env.env_val, (u_int *) &objp->env.env_len, ~0,
		sizeof (ndmp3_pval), (xdrproc_t) xdr_ndmp3_pval))
		return FALSE;
	if (!xdr_array (xdrs, (char **)&objp->nlist.nlist_val, (u_int *) &objp->nlist.nlist_len, ~0,
		sizeof (ndmp3_name), (xdrproc_t) xdr_ndmp3_name))
		return FALSE;
	if (!xdr_string (xdrs, &objp->bu_type, ~0))
		return FALSE;
	return TRUE;
}
Beispiel #8
0
bool_t
xdr_rpc_response_create_session (XDR *xdrs, rpc_response_create_session *objp)
{

	 if (!xdr_int (xdrs, &objp->platform_val))
		 return FALSE;
	 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->licence_req.licence_req_val, (u_int *) &objp->licence_req.licence_req_len, ~0,
		sizeof (char), (xdrproc_t) xdr_char))
		 return FALSE;
	return TRUE;
}
Beispiel #9
0
bool_t
xdr_rpc_request_create_session (XDR *xdrs, rpc_request_create_session *objp)
{

	 if (!xdr_array (xdrs, (char **)&objp->init_data_type.init_data_type_val, (u_int *) &objp->init_data_type.init_data_type_len, ~0,
		sizeof (char), (xdrproc_t) xdr_char))
		 return FALSE;
	 if (!xdr_array (xdrs, (char **)&objp->init_data.init_data_val, (u_int *) &objp->init_data.init_data_len, ~0,
		sizeof (uint8_t), (xdrproc_t) xdr_uint8_t))
		 return FALSE;
	 if (!xdr_rpc_request_callback_info (xdrs, &objp->callback_info))
		 return FALSE;
	return TRUE;
}
Beispiel #10
0
bool_t
xdr_ndmp3_file (XDR *xdrs, ndmp3_file *objp)
{
	if (!xdr_array (xdrs, (char **)&objp->names.names_val, (u_int *) &objp->names.names_len, ~0,
		sizeof (ndmp3_file_name), (xdrproc_t) xdr_ndmp3_file_name))
		return FALSE;
	if (!xdr_array (xdrs, (char **)&objp->stats.stats_val, (u_int *) &objp->stats.stats_len, ~0,
		sizeof (ndmp3_file_stat), (xdrproc_t) xdr_ndmp3_file_stat))
		return FALSE;
	if (!xdr_ndmp3_u_quad (xdrs, &objp->node))
		return FALSE;
	if (!xdr_ndmp3_u_quad (xdrs, &objp->fh_info))
		return FALSE;
	return TRUE;
}
Beispiel #11
0
/* Special xdr_db_dict_desc that understands optional version number at end. */
bool_t
xdr_db_dict_desc(XDR *xdrs, db_dict_desc *objp)
{

	if (!xdr_db_dict_version(xdrs, &objp->impl_vers))
		return (FALSE);
	if (!xdr_array(xdrs, (char **)&objp->tables.tables_val,
		(uint_t *)&objp->tables.tables_len, ~0,
		sizeof (db_table_desc_p), (xdrproc_t)xdr_db_table_desc_p))
		return (FALSE);
	if (!xdr_int(xdrs, &objp->count))
		return (FALSE);

	if (xdrs->x_op == XDR_DECODE) {
		/* If no version was found, set version to 0. */
		if (!xdr_vers(xdrs, (void**) &db_update_version))
			make_zero(&db_update_version);
		return (TRUE);
	} else if (xdrs->x_op == XDR_ENCODE) {
		/* Always write out version */
		if (!xdr_vers(xdrs, (void**) &db_update_version))
			return (FALSE);
	} /* else XDR_FREE: do nothing */

	return (TRUE);
}
Beispiel #12
0
bool_t
xdr_cprinc3_arg(XDR *xdrs, cprinc3_arg *objp)
{
	if (!xdr_ui_4(xdrs, &objp->api_version)) {
		return (FALSE);
	}
	if (objp->api_version == KADM5_API_VERSION_1) {
		if (!xdr_kadm5_principal_ent_rec_v1(xdrs, &objp->rec)) {
			return (FALSE);
		}
	} else {
		if (!xdr_kadm5_principal_ent_rec(xdrs, &objp->rec)) {
			return (FALSE);
		}
	}
	if (!xdr_long(xdrs, &objp->mask)) {
		return (FALSE);
	}
	if (!xdr_array(xdrs, (caddr_t *)&objp->ks_tuple,
		       (unsigned int *)&objp->n_ks_tuple, ~0,
		       sizeof(krb5_key_salt_tuple),
		       xdr_krb5_key_salt_tuple)) {
		return (FALSE);
	}
	if (!xdr_nullstring(xdrs, &objp->passwd)) {
		return (FALSE);
	}
	return (TRUE);
}
bool_t xdr_rpc_request_load_session(XDR *xdrs, rpc_request_load_session *objp) {
  if (!xdr_array(xdrs, (char **) &objp->session_id.session_id_val,
                 (u_int *) &objp->session_id.session_id_len, ~0,
                 sizeof(uint16_t), (xdrproc_t) xdr_uint16_t))
    return FALSE;
  return TRUE;
}
bool_t xdr_rpc_request_mediakeys(XDR *xdrs, rpc_request_mediakeys *objp) {
  if (!xdr_array(xdrs, (char **) &objp->key_system.key_system_val,
                 (u_int *) &objp->key_system.key_system_len, ~0, sizeof(char),
                 (xdrproc_t) xdr_char))
    return FALSE;
  return TRUE;
}
bool_t xdr_ls_hqn_state(XDR *xdrs, ls_hqn_state *objp)
{
  if (!xdr_array(xdrs, (char **)&objp->domlist.dom, (u_int *)&objp->domlist.len, ~0, sizeof(ls_domain), xdr_ls_domain)) {
    return (FALSE);
  }
  return (TRUE);
}
Beispiel #16
0
/*
 * XDR loopback unix auth parameters.
 * NOTE: this is an XDR_ENCODE only routine.
 */
bool_t
xdr_authloopback(XDR *xdrs)
{
	uid_t uid;
	gid_t gid;
	int len;
	caddr_t groups;
	char *name = uts_nodename();
	struct cred *cr;
	time_t now;

	if (xdrs->x_op != XDR_ENCODE)
		return (FALSE);

	cr = CRED();
	uid = crgetuid(cr);
	gid = crgetgid(cr);
	len = crgetngroups(cr);
	groups = (caddr_t)crgetgroups(cr);
	now = gethrestime_sec();
	if (xdr_uint32(xdrs, (uint32_t *)&now) &&
	    xdr_string(xdrs, &name, MAX_MACHINE_NAME) &&
	    xdr_uid_t(xdrs, &uid) &&
	    xdr_gid_t(xdrs, &gid) &&
	    xdr_array(xdrs, &groups, (uint_t *)&len, NGRPS_LOOPBACK,
	    sizeof (int), (xdrproc_t)xdr_int))
		return (TRUE);
	return (FALSE);
}
Beispiel #17
0
bool_t
xdr_cback_data (XDR *xdrs, cback_data *objp)
{
  return xdr_array (xdrs, (void *) &objp->entries.entries_val,
		    &objp->entries.entries_len, ~0,
		    sizeof (obj_p), (xdrproc_t) xdr_obj_p);
}
Beispiel #18
0
bool_t
xdr_deskeyarray(XDR *xdrs, deskeyarray *objp)
{
	return (xdr_array(xdrs, (char **)&objp->deskeyarray_val,
		(uint_t *)&objp->deskeyarray_len, ~0,
		sizeof (des_block), (xdrproc_t)xdr_des_block));
}
Beispiel #19
0
bool_t
xdr_chrand_ret(XDR *xdrs, chrand_ret *objp)
{
	if (!xdr_ui_4(xdrs, &objp->api_version)) {
		return (FALSE);
	}
	if (!xdr_kadm5_ret_t(xdrs, &objp->code)) {
		return (FALSE);
	}
	if (objp->api_version == KADM5_API_VERSION_1) {
	     if(objp->code == KADM5_OK) {
		  if (!xdr_krb5_keyblock(xdrs, &objp->key)) {
		       return (FALSE);
		  }
	     }
	} else {
	     if (objp->code == KADM5_OK) {
		  if (!xdr_array(xdrs, (char **)&objp->keys, &objp->n_keys, ~0,
				 sizeof(krb5_keyblock),
				 xdr_krb5_keyblock))
		       return FALSE;
	     }
	}

	return (TRUE);
}
Beispiel #20
0
bool_t
dfs_info_xdr(XDR *xdrs, dfs_info_t *objp)
{
	if (!xdr_vector(xdrs, (char *)objp->i_uncpath, DFS_PATH_MAX,
	    sizeof (char), (xdrproc_t)xdr_char))
		return (FALSE);

	if (!xdr_vector(xdrs, (char *)objp->i_comment, DFS_COMMENT_MAX,
	    sizeof (char), (xdrproc_t)xdr_char))
		return (FALSE);

	if (!xdr_vector(xdrs, (char *)objp->i_guid,
	    UUID_PRINTABLE_STRING_LENGTH, sizeof (char), (xdrproc_t)xdr_char))
		return (FALSE);

	if (!xdr_uint32_t(xdrs, &objp->i_state))
		return (FALSE);

	if (!xdr_uint32_t(xdrs, &objp->i_timeout))
		return (FALSE);

	if (!xdr_uint32_t(xdrs, &objp->i_propflags))
		return (FALSE);

	if (!xdr_uint32_t(xdrs, &objp->i_type))
		return (FALSE);

	if (!xdr_array(xdrs, (char **)&objp->i_targets,
	    (uint32_t *)&objp->i_ntargets, ~0, sizeof (dfs_target_t),
	    (xdrproc_t)dfs_target_xdr))
		return (FALSE);

	return (TRUE);
}
Beispiel #21
0
bool_t
_xdr_nis_taglist (XDR *xdrs, nis_taglist *objp)
{
  return xdr_array (xdrs, (void *) &objp->tags.tags_val,
		    &objp->tags.tags_len, ~0, sizeof (nis_tag),
		    (xdrproc_t) _xdr_nis_tag);
}
Beispiel #22
0
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;
}
Beispiel #23
0
bool_t
xdr_osa_princ_ent_rec(XDR *xdrs, osa_princ_ent_t objp)
{
    switch (xdrs->x_op) {
    case XDR_ENCODE:
	 objp->version = OSA_ADB_PRINC_VERSION_1;
	 /* fall through */
    case XDR_FREE:
	 if (!xdr_int(xdrs, &objp->version))
	      return FALSE;
	 break;
    case XDR_DECODE:
	 if (!xdr_int(xdrs, &objp->version))
	      return FALSE;
	 if (objp->version != OSA_ADB_PRINC_VERSION_1)
	      return FALSE;
	 break;
    }

    if (!xdr_nullstring(xdrs, &objp->policy))
	return (FALSE);
    if (!xdr_long(xdrs, &objp->aux_attributes))
	return (FALSE);
    if (!xdr_u_int(xdrs, &objp->old_key_next))
	return (FALSE);
    if (!xdr_krb5_kvno(xdrs, &objp->admin_history_kvno))
	return (FALSE);
    if (!xdr_array(xdrs, (caddr_t *) &objp->old_keys,
		   (unsigned int *) &objp->old_key_len, ~0,
		   sizeof(osa_pw_hist_ent),
		   xdr_osa_pw_hist_ent))
	return (FALSE);
    return (TRUE);
}
Beispiel #24
0
bool_t
xdr_ndmp3_fs_info (XDR *xdrs, ndmp3_fs_info *objp)
{
	if (!xdr_u_long (xdrs, &objp->invalid))
		return FALSE;
	if (!xdr_string (xdrs, &objp->fs_type, ~0))
		return FALSE;
	if (!xdr_string (xdrs, &objp->fs_logical_device, ~0))
		return FALSE;
	if (!xdr_string (xdrs, &objp->fs_physical_device, ~0))
		return FALSE;
	if (!xdr_ndmp3_u_quad (xdrs, &objp->total_size))
		return FALSE;
	if (!xdr_ndmp3_u_quad (xdrs, &objp->used_size))
		return FALSE;
	if (!xdr_ndmp3_u_quad (xdrs, &objp->avail_size))
		return FALSE;
	if (!xdr_ndmp3_u_quad (xdrs, &objp->total_inodes))
		return FALSE;
	if (!xdr_ndmp3_u_quad (xdrs, &objp->used_inodes))
		return FALSE;
	if (!xdr_array (xdrs, (char **)&objp->fs_env.fs_env_val, (u_int *) &objp->fs_env.fs_env_len, ~0,
		sizeof (ndmp3_pval), (xdrproc_t) xdr_ndmp3_pval))
		return FALSE;
	if (!xdr_string (xdrs, &objp->fs_status, ~0))
		return FALSE;
	return TRUE;
}
Beispiel #25
0
bool_t
_xdr_nis_result (XDR *xdrs, nis_result *objp)
{
  bool_t res = xdr_nis_error (xdrs, &objp->status);
  if (__builtin_expect (res, TRUE))
    {
      res = xdr_array (xdrs, (void *) &objp->objects.objects_val,
		       &objp->objects.objects_len, ~0,
		       sizeof (nis_object), (xdrproc_t) _xdr_nis_object);
      if (__builtin_expect (res, TRUE))
	{
	  res = xdr_netobj (xdrs, &objp->cookie);
	  if (__builtin_expect (res, TRUE))
	    {
	      res = xdr_uint32_t (xdrs, &objp->zticks);
	      if (__builtin_expect (res, TRUE))
		{
		  res = xdr_uint32_t (xdrs, &objp->dticks);
		  if (__builtin_expect (res, TRUE))
		    {
		      res = xdr_uint32_t (xdrs, &objp->aticks);
		      if (__builtin_expect (res, TRUE))
			res = xdr_uint32_t (xdrs, &objp->cticks);
		    }
		}
	    }
	}
    }
  return res;
}
Beispiel #26
0
bool_t
xdr_ndmp3_fh_add_dir_request (XDR *xdrs, ndmp3_fh_add_dir_request *objp)
{
	if (!xdr_array (xdrs, (char **)&objp->dirs.dirs_val, (u_int *) &objp->dirs.dirs_len, ~0,
		sizeof (ndmp3_dir), (xdrproc_t) xdr_ndmp3_dir))
		return FALSE;
	return TRUE;
}
Beispiel #27
0
bool_t
xdr_ndmp3_fh_add_node_request (XDR *xdrs, ndmp3_fh_add_node_request *objp)
{
	if (!xdr_array (xdrs, (char **)&objp->nodes.nodes_val, (u_int *) &objp->nodes.nodes_len, ~0,
		sizeof (ndmp3_node), (xdrproc_t) xdr_ndmp3_node))
		return FALSE;
	return TRUE;
}
Beispiel #28
0
bool_t
xdr_directory_obj(XDR *xdrs, directory_obj *objp)
{
	if (!xdr_nis_name(xdrs, &objp->do_name))
		return (FALSE);
	if (!xdr_nstype(xdrs, &objp->do_type))
		return (FALSE);
	if (!xdr_array(xdrs, (char **)&objp->do_servers.do_servers_val,
	    (uint_t *)&objp->do_servers.do_servers_len, ~0,
	    sizeof (nis_server), (xdrproc_t)xdr_nis_server))
		return (FALSE);
	if (!xdr_uint32_t(xdrs, &objp->do_ttl))
		return (FALSE);
	return (xdr_array(xdrs, (char **)&objp->do_armask.do_armask_val,
	    (uint_t *)&objp->do_armask.do_armask_len, ~0,
	    sizeof (oar_mask), (xdrproc_t)xdr_oar_mask));
}
Beispiel #29
0
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;
}
Beispiel #30
0
static int xdr_RPGP_table_t (XDR *xdrs, RPGP_table_t *table) {
    int len;

    if (xdrs->x_op == XDR_DECODE) {
	table->comp_params = NULL;
	table->column_labels = NULL;
	table->row_labels = NULL;
	table->entries = NULL;
    }

    if (xdr_int (xdrs, &(table->comp_type)) == 0 ||
	xdr_int (xdrs, &(table->numof_comp_params)) == 0 ||
	(table->numof_comp_params > 0 &&
	 xdr_array (xdrs, (char **)&(table->comp_params), 
		(unsigned int *)&(table->numof_comp_params), MAX_ARRAY_SIZE, 
		sizeof (RPGP_parameter_t), 
		(xdrproc_t)xdr_RPGP_parameter_t) == 0) ||
	xdr_RPGP_string_t (xdrs, &(table->title)) == 0 ||
	xdr_short (xdrs, &(table->n_columns)) == 0 ||
	xdr_short (xdrs, &(table->n_rows)) == 0)
	return (0);

    len = table->n_columns;
    if (len > 0 &&
	xdr_array (xdrs, (char **)&(table->column_labels), 
		(unsigned int *)&len, MAX_ARRAY_SIZE, 
		sizeof (RPGP_string_t), 
		(xdrproc_t)xdr_RPGP_string_t) == 0)
	return (0);
    len = table->n_rows;
    if (len > 0 &&
	xdr_array (xdrs, (char **)&(table->row_labels), 
		(unsigned int *)&len, MAX_ARRAY_SIZE, 
		sizeof (RPGP_string_t), 
		(xdrproc_t)xdr_RPGP_string_t) == 0)
	return (0);
    len = table->n_rows * table->n_columns;
    if (len > 0 &&
	xdr_array (xdrs, (char **)&(table->entries), 
		(unsigned int *)&len, MAX_ARRAY_SIZE, 
		sizeof (RPGP_string_t), 
		(xdrproc_t)xdr_RPGP_string_t) == 0)
	return (0);

    return (1);
}