xref: /titanic_50/usr/src/man/man3c/priv_addset.3c (revision 0a47c91c895e274dd0990009919e30e984364a8b)
te
Copyright (c) 2005, Sun Microsystems, Inc. All Rights Reserved.
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
PRIV_ADDSET 3C "Jan 28, 2005"
NAME
priv_addset, priv_allocset, priv_copyset, priv_delset, priv_emptyset, priv_fillset, priv_freeset, priv_intersect, priv_inverse, priv_isemptyset, priv_isequalset, priv_isfullset, priv_ismember, priv_issubset, priv_union - privilege set manipulation functions
SYNOPSIS

#include <priv.h>

int priv_addset(priv_set_t *sp, const char *priv);

priv_set_t *priv_allocset(void);

void priv_copyset(const priv_set_t *src, priv_set_t *dst);

int priv_delset(priv_set_t *sp, const char *priv);

void priv_emptyset(priv_set_t *sp);

void priv_fillset(priv_set_t *sp);

void priv_freeset(priv_set_t *sp);

void priv_intersect(const priv_set_t *src, priv_set_t *dst);

void priv_inverse(priv_set_t *sp);

boolean_t priv_isemptyset(const priv_set_t *sp);

boolean_t priv_isequalset(const priv_set_t *src, const priv_set_t *dst);

boolean_t priv_isfullset(const priv_set_t *sp);

boolean_t priv_ismember(const priv_set_t *sp, const char *priv);

boolean_t priv_issubset(const priv_set_t *src, const priv_set_t *dst);

void priv_union(const priv_set_t *src, priv_set_t *dst);
DESCRIPTION

The sp, src, and dst arguments point to privilege sets. The priv argument points to a named privilege.

The priv_addset() function adds the named privilege priv to sp.

The priv_allocset() function allocates sufficient memory to contain a privilege set. The value of the returned privilege set is indeterminate. The function returns NULL and sets errno when it fails to allocate memory.

The priv_copyset() function copies the set src to dst.

The priv_delset() function removes the named privilege priv from sp.

The priv_emptyset() function clears all privileges from sp.

The priv_fillset() function asserts all privileges in sp, including the privileges not currently defined in the system.

The priv_freeset() function frees the storage allocated by priv_allocset().

The priv_intersect() function intersects src with dst and places the results in dst.

The priv_inverse() function inverts the privilege set given as argument in place.

The priv_isemptyset() function checks whether the argument is an empty set.

The priv_isequalset() function checks whether the privilege set src is equal to dst.

The priv_isfullset() function checks whether the argument is a full set. A full set is a set with all bits set, regardless of whether the privilege is currently defined in the system.

The priv_ismember() function checks whether the named privilege priv is a member of sp.

The priv_issubset() function checks whether src is a subset of dst.

The priv_union() function takes the union of src and dst and places the result in dst.

RETURN VALUES

Upon successful completion, priv_allocset() returns a pointer to an opaque data structure. It returns NULL if memory allocation fails and sets errno to indicate the error.

Upon successful completion, priv_isemptyset(), priv_isfullset(), priv_isequalset(), priv_issubset(), and priv_ismember() return B_TRUE. Otherwise, they return B_FALSE.

Upon successful completion, priv_delset() and priv_addset() return 0. Otherwise, they return -1 and set errno to indicate the error.

ERRORS

The priv_allocset() function will fail if: ENOMEM

The physical limits of the system are exceeded by the memory allocation needed to hold a privilege set.

EAGAIN

There is insufficient memory for allocation to hold a privilege set. The application can try again later.

The priv_delset() and priv_addset() functions will fail if: EINVAL

The privilege argument is not a valid privilege name.

ATTRIBUTES

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE ATTRIBUTE VALUE
Interface Stability Evolving
MT-Level MT-Safe
SEE ALSO

setppriv(2), malloc(3C), priv_str_to_set(3C), attributes(5), privileges(5)

NOTES

The functions that compare sets operate on all bits of the set, regardless of whether the specific privileges are currently defined in the system.