Exemple #1
0
nis_result *
nis_remove (const_nis_name name, const nis_object *obj)
{
  nis_result *res;
  nis_error status;
  struct ns_request req;

  res = calloc (1, sizeof (nis_result));
  if (res == NULL)
    return NULL;

  req.ns_name = (char *)name;

  if (obj != NULL)
    {
      req.ns_object.ns_object_len = 1;
      req.ns_object.ns_object_val = nis_clone_object (obj, NULL);
    }
  else
    {
      req.ns_object.ns_object_len = 0;
      req.ns_object.ns_object_val = NULL;
    }

  if ((status = __do_niscall (name, NIS_REMOVE, (xdrproc_t) _xdr_ns_request,
			      (caddr_t) &req, (xdrproc_t) _xdr_nis_result,
			      (caddr_t) res, MASTER_ONLY,
			      NULL)) != NIS_SUCCESS)
    NIS_RES_STATUS (res) = status;

  nis_destroy_object (req.ns_object.ns_object_val);

  return res;
}
nis_result *
nis_add_entry (const_nis_name name, const nis_object *obj2, unsigned int flags)
{
  nis_object obj;
  nis_result *res;
  nis_error status;
  ib_request *ibreq;
  size_t namelen = strlen (name);
  char buf1[namelen + 20];
  char buf4[namelen + 20];

  res = calloc (1, sizeof (nis_result));
  if (res == NULL)
    return NULL;

  if (name == NULL)
    {
      NIS_RES_STATUS (res) = NIS_BADNAME;
      return res;
    }

  if ((ibreq = __create_ib_request (name, flags)) == NULL)
    {
      NIS_RES_STATUS (res) = NIS_BADNAME;
      return res;
    }

  memcpy (&obj, obj2, sizeof (nis_object));

  if (obj.zo_name == NULL || strlen (obj.zo_name) == 0)
    obj.zo_name = nis_leaf_of_r (name, buf1, sizeof (buf1));

  if (obj.zo_owner == NULL || strlen (obj.zo_owner) == 0)
    obj.zo_owner = nis_local_principal ();

  if (obj.zo_group == NULL || strlen (obj.zo_group) == 0)
    obj.zo_group = nis_local_group ();

  obj.zo_domain = nis_domain_of_r (name, buf4, sizeof (buf4));

  ibreq->ibr_obj.ibr_obj_val = nis_clone_object (&obj, NULL);
  if (ibreq->ibr_obj.ibr_obj_val == NULL)
    {
      nis_free_request (ibreq);
      NIS_RES_STATUS (res) = NIS_NOMEMORY;
      return res;
    }
  ibreq->ibr_obj.ibr_obj_len = 1;

  if ((status = __do_niscall (ibreq->ibr_name, NIS_IBADD,
			      (xdrproc_t) _xdr_ib_request,
			      (caddr_t) ibreq,
			      (xdrproc_t) _xdr_nis_result,
			      (caddr_t) res, 0, NULL)) != NIS_SUCCESS)
    NIS_RES_STATUS (res) = status;

  nis_free_request (ibreq);

  return res;
}
Exemple #3
0
nis_result *
nis_add (const_nis_name name, const nis_object *obj2)
{
  nis_object obj;
  nis_result *res;
  nis_error status;
  struct ns_request req;
  size_t namelen = strlen (name);
  char buf1 [namelen + 20];
  char buf4 [namelen + 20];

  res = calloc (1, sizeof (nis_result));
  if (res == NULL)
    return NULL;

  req.ns_name = (char *)name;

  memcpy (&obj, obj2, sizeof (nis_object));

  if (obj.zo_name == NULL || obj.zo_name[0] == '\0')
    obj.zo_name = nis_leaf_of_r (name, buf1, sizeof (buf1));

  if (obj.zo_owner == NULL || obj.zo_owner[0] == '\0')
    obj.zo_owner = nis_local_principal ();

  if (obj.zo_group == NULL || obj.zo_group[0] == '\0')
    obj.zo_group = nis_local_group ();

  obj.zo_domain = nis_domain_of_r (name, buf4, sizeof (buf4));

  req.ns_object.ns_object_val = nis_clone_object (&obj, NULL);
  if (req.ns_object.ns_object_val == NULL)
    {
      NIS_RES_STATUS (res) = NIS_NOMEMORY;
      return res;
    }
  req.ns_object.ns_object_len = 1;

  status = __do_niscall (req.ns_object.ns_object_val[0].zo_domain,
			 NIS_ADD, (xdrproc_t) _xdr_ns_request,
			 (caddr_t) &req, (xdrproc_t) _xdr_nis_result,
			 (caddr_t) res, MASTER_ONLY, NULL);
  if (status != NIS_SUCCESS)
    NIS_RES_STATUS (res) = status;

  nis_destroy_object (req.ns_object.ns_object_val);

  return res;
}
Exemple #4
0
nis_result *
nis_remove_entry (const_nis_name name, const nis_object *obj,
                  unsigned int flags)
{
    nis_result *res;
    ib_request *ibreq;
    nis_error status;

    res = calloc (1, sizeof (nis_result));
    if (res == NULL)
        return NULL;

    if (name == NULL)
    {
        NIS_RES_STATUS (res) = NIS_BADNAME;
        return res;
    }

    ibreq = __create_ib_request (name, flags);
    if (ibreq == NULL)
    {
        NIS_RES_STATUS (res) = NIS_BADNAME;
        return res;
    }

    if (obj != NULL)
    {
        ibreq->ibr_obj.ibr_obj_val = nis_clone_object (obj, NULL);
        if (ibreq->ibr_obj.ibr_obj_val == NULL)
        {
            nis_free_request (ibreq);
            NIS_RES_STATUS (res) = NIS_NOMEMORY;
            return res;
        }
        ibreq->ibr_obj.ibr_obj_len = 1;
    }

    if ((status = __do_niscall (ibreq->ibr_name, NIS_IBREMOVE,
                                (xdrproc_t) _xdr_ib_request,
                                (caddr_t) ibreq, (xdrproc_t) _xdr_nis_result,
                                (caddr_t) res, 0, NULL)) != NIS_SUCCESS)
        NIS_RES_STATUS (res) = status;

    nis_free_request (ibreq);

    return res;
}