コード例 #1
0
ファイル: nis_xdr.c プロジェクト: siddhesh/glibc
bool_t
_xdr_nis_object (XDR *xdrs, nis_object *objp)
{
  bool_t res = xdr_nis_oid (xdrs, &objp->zo_oid);
  if (__builtin_expect (res, TRUE))
    {
      res = xdr_nis_name (xdrs, &objp->zo_name);
      if (__builtin_expect (res, TRUE))
	{
	  res = xdr_nis_name (xdrs, &objp->zo_owner);
	  if (__builtin_expect (res, TRUE))
	    {
	      res = xdr_nis_name (xdrs, &objp->zo_group);
	      if (__builtin_expect (res, TRUE))
		{
		  res = xdr_nis_name (xdrs, &objp->zo_domain);
		  if (__builtin_expect (res, TRUE))
		    {
		      res = xdr_u_int (xdrs, &objp->zo_access);
		      if (__builtin_expect (res, TRUE))
			{
			  res = xdr_uint32_t (xdrs, &objp->zo_ttl);
			  if (__builtin_expect (res, TRUE))
			    res = xdr_objdata (xdrs, &objp->zo_data);
			}
		    }
		}
	    }
	}
    }
  return res;
}
コード例 #2
0
ファイル: nis_xdr.c プロジェクト: siddhesh/glibc
bool_t
_xdr_fd_args (XDR *xdrs, fd_args *objp)
{
  bool_t res = xdr_nis_name (xdrs, &objp->dir_name);
  if (__builtin_expect (res, TRUE))
    res = xdr_nis_name (xdrs, &objp->requester);
  return res;
}
コード例 #3
0
ファイル: nis_xdr.c プロジェクト: siddhesh/glibc
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;
}
コード例 #4
0
ファイル: nis_xdr.c プロジェクト: siddhesh/glibc
bool_t
_xdr_ping_args (XDR *xdrs, ping_args *objp)
{
  bool_t res = xdr_nis_name (xdrs, &objp->dir);
  if (__builtin_expect (res, TRUE))
    res = xdr_uint32_t (xdrs, &objp->stamp);
  return res;
}
コード例 #5
0
ファイル: nis_xdr.c プロジェクト: apprisi/illumos-gate
bool_t
xdr_nis_object(XDR *xdrs, nis_object *objp)
{
	if (!xdr_nis_oid(xdrs, &objp->zo_oid))
		return (FALSE);
	if (!xdr_nis_name(xdrs, &objp->zo_name))
		return (FALSE);
	if (!xdr_nis_name(xdrs, &objp->zo_owner))
		return (FALSE);
	if (!xdr_nis_name(xdrs, &objp->zo_group))
		return (FALSE);
	if (!xdr_nis_name(xdrs, &objp->zo_domain))
		return (FALSE);
	if (!xdr_u_int(xdrs, &objp->zo_access))
		return (FALSE);
	if (!xdr_uint32_t(xdrs, &objp->zo_ttl))
		return (FALSE);
	return (xdr_objdata(xdrs, &objp->zo_data));
}
コード例 #6
0
ファイル: nis_xdr.c プロジェクト: siddhesh/glibc
bool_t
_xdr_ns_request (XDR *xdrs, ns_request *objp)
{
  bool_t res = xdr_nis_name (xdrs, &objp->ns_name);
  if (__builtin_expect (res, TRUE))
    res = xdr_array (xdrs, (void *) &objp->ns_object.ns_object_val,
		     &objp->ns_object.ns_object_len, 1,
		     sizeof (nis_object), (xdrproc_t) _xdr_nis_object);
  return res;
}
コード例 #7
0
ファイル: nis_xdr.c プロジェクト: apprisi/illumos-gate
bool_t
xdr_link_obj(XDR *xdrs, link_obj *objp)
{
	if (!xdr_zotypes(xdrs, &objp->li_rtype))
		return (FALSE);
	if (!xdr_array(xdrs, (char **)&objp->li_attrs.li_attrs_val,
	    (uint_t *)&objp->li_attrs.li_attrs_len, ~0,
	    sizeof (nis_attr), (xdrproc_t)xdr_nis_attr))
		return (FALSE);
	return (xdr_nis_name(xdrs, &objp->li_name));
}
コード例 #8
0
ファイル: nis_xdr.c プロジェクト: apprisi/illumos-gate
bool_t
xdr_nis_server(XDR *xdrs, nis_server *objp)
{
	if (!xdr_nis_name(xdrs, &objp->name))
		return (FALSE);
	if (!xdr_array(xdrs, (char **)&objp->ep.ep_val,
	    (uint_t *)&objp->ep.ep_len, ~0,
	    sizeof (endpoint), (xdrproc_t)xdr_endpoint))
		return (FALSE);
	if (!xdr_u_int(xdrs, &objp->key_type))
		return (FALSE);
	return (xdr_netobj(xdrs, &objp->pkey));
}
コード例 #9
0
ファイル: nis_xdr.c プロジェクト: siddhesh/glibc
static bool_t
xdr_link_obj (XDR *xdrs, link_obj *objp)
{
  bool_t res = xdr_zotypes (xdrs, &objp->li_rtype);
  if (__builtin_expect (res, TRUE))
    {
      res = xdr_array (xdrs, (void *) &objp->li_attrs.li_attrs_val,
		       &objp->li_attrs.li_attrs_len, ~0,
		       sizeof (nis_attr), (xdrproc_t) xdr_nis_attr);
      if (__builtin_expect (res, TRUE))
	res = xdr_nis_name (xdrs, &objp->li_name);
    }
  return res;
}
コード例 #10
0
ファイル: nis_xdr.c プロジェクト: apprisi/illumos-gate
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));
}
コード例 #11
0
ファイル: nis_xdr.c プロジェクト: siddhesh/glibc
bool_t
_xdr_nis_server (XDR *xdrs, nis_server *objp)
{
  bool_t res = xdr_nis_name (xdrs, &objp->name);
  if (__builtin_expect (res, TRUE))
    {
      res = xdr_array (xdrs, (void *) &objp->ep.ep_val, &objp->ep.ep_len,
		       ~0, sizeof (endpoint), (xdrproc_t) xdr_endpoint);
      if (__builtin_expect (res, TRUE))
	{
	  res = xdr_u_int (xdrs, &objp->key_type);
	  if (__builtin_expect (res, TRUE))
	    res = xdr_netobj (xdrs, &objp->pkey);
	}
    }
  return res;
}
コード例 #12
0
ファイル: nis_xdr.c プロジェクト: siddhesh/glibc
bool_t
_xdr_fd_result (XDR *xdrs, fd_result *objp)
{
  bool_t res = xdr_nis_error (xdrs, &objp->status);
  if (__builtin_expect (res, TRUE))
    {
      res = xdr_nis_name (xdrs, &objp->source);
      if (__builtin_expect (res, TRUE))
	{
	  res = xdr_bytes (xdrs, (char **) &objp->dir_data.dir_data_val,
			   &objp->dir_data.dir_data_len, ~0);
	  if (__builtin_expect (res, TRUE))
	    res = xdr_bytes (xdrs, (char **) &objp->signature.signature_val,
			     &objp->signature.signature_len, ~0);
	}
    }
  return res;
}
コード例 #13
0
ファイル: nis_xdr.c プロジェクト: siddhesh/glibc
bool_t
_xdr_ib_request (XDR *xdrs, ib_request *objp)
{
  bool_t res = xdr_nis_name (xdrs, &objp->ibr_name);
  if (__builtin_expect (res, TRUE))
    {
      res = xdr_array (xdrs, (void *) &objp->ibr_srch.ibr_srch_val,
		       &objp->ibr_srch.ibr_srch_len, ~0,
		       sizeof (nis_attr), (xdrproc_t) xdr_nis_attr);
      if (__builtin_expect (res, TRUE))
	{
	  res = xdr_u_int (xdrs, &objp->ibr_flags);
	  if (__builtin_expect (res, TRUE))
	    {
	      res = xdr_array (xdrs, (void *) &objp->ibr_obj.ibr_obj_val,
			       &objp->ibr_obj.ibr_obj_len, 1,
			       sizeof (nis_object),
			       (xdrproc_t) _xdr_nis_object);
	      if (__builtin_expect (res, TRUE))
		{
		  res = xdr_array (xdrs,
				   (void *) &objp->ibr_cbhost.ibr_cbhost_val,
				   &objp->ibr_cbhost.ibr_cbhost_len, 1,
				   sizeof (nis_server),
				   (xdrproc_t) _xdr_nis_server);
		  if (__builtin_expect (res, TRUE))
		    {
		      res = xdr_u_int (xdrs, &objp->ibr_bufsize);
		      if (__builtin_expect (res, TRUE))
			res =  xdr_netobj (xdrs, &objp->ibr_cookie);
		    }
		}
	    }
	}
    }
  return res;
}
コード例 #14
0
ファイル: ldap_xdr.c プロジェクト: bahamas10/openzfs
/*
 * Imported from rpc.nisd/nis_db.c
 *
 * Special abbreviated XDR string which knows that the namep parameter (mainly
 * owner and group) has a trailing end which matches the last 'n' characters
 * in the domainname part.  It makes use of those common characters to
 * encode/decode this information.  We append an integer string to the
 * name to be encoded which denotes the place in the domainname from where the
 * common string starts.  For example, if the name was "foo.my.domain." and the
 * domainname was "my.domain.", the name would be encoded as "foo.10" because
 * the length of the common part "my.domain." is 10.
 */
bool_t
xdr_nis_name_abbrev(
	XDR		*xdrs,
	nis_name	*namep,
	nis_name	domainname)	/* domainname field from the table */
{
	size_t	name_len, dom_len, min_len;
	char 	buf[NIS_MAXNAMELEN];
	char 	*name;
	char	*lenstr, *tmp;
	int	i;

	switch (xdrs->x_op) {
	case XDR_ENCODE:
		/* Get the start of the common part */
		name = *namep;
		name_len = strlen(name);
		if (name_len == 0)
			return (xdr_nis_name(xdrs, namep));
		dom_len = strlen(domainname);
		min_len = (name_len < dom_len) ? name_len : dom_len;
		for (i = 1; i <= min_len; i++) {
			if (name[name_len - i] != domainname[dom_len - i])
				break;
		}
		i--;
		memcpy(buf, name, name_len - i);
		sprintf(buf + name_len - i, ".%d", dom_len - i);
		tmp = buf;
		return (xdr_nis_name(xdrs, &tmp));

	case XDR_DECODE:
		tmp = buf;
		if (!xdr_nis_name(xdrs, &tmp))
		    return (FALSE);
		if ((buf[0] == NULL) || buf[strlen(buf) - 1] == '.') {
			/* It is either a FQN or a NULL string */
			if (*namep) {
				strcpy(*namep, buf);
				return (TRUE);
			} else {
				if ((*namep = strdup(buf)) == NULL)
					return (FALSE);
				else
					return (TRUE);
			}
		}
		/* Now concoct the new name */
		if ((lenstr = strrchr(buf, '.')) == NULL) {
			/* something went wrong here */
			syslog(LOG_ERR,
				"xdr_nis_name_abbrev: no dot found in %s", buf);
			return (FALSE);
		}
		i = atoi(lenstr + 1);
		strcpy(lenstr, domainname + i);
		if (*namep) {
			strcpy(*namep, buf);
		} else {
			if ((*namep = strdup(buf)) == NULL)
				return (FALSE);
		}
		return (TRUE);

	default:
		return (xdr_nis_name(xdrs, namep));
	}
}
コード例 #15
0
ファイル: nis_xdr.c プロジェクト: siddhesh/glibc
bool_t
_xdr_nis_name (XDR *xdrs, nis_name *objp)
{
  return xdr_nis_name (xdrs, objp);
}