DDI_CRED(9F)            Kernel Functions for Drivers            DDI_CRED(9F)
NAME
       ddi_cred, crgetuid, crgetruid, crgetsuid, crgetgid, crgetrgid,
       crgetsgid, crgetzoneid, crgetgroups, crgetngroups - access and change
       parts of the cred_t structure
SYNOPSIS
       #include <sys/cred.h>       
uid_t crgetuid(
const cred_t *cr);       
uid_t crgetruid(
const cred_t *cr);       
uid_t crgetsuid(
const cred_t *cr);       
gid_t crgetgid(
const cred_t *cr);       
gid_t crgetrgid(
const cred_t *cr);       
gid_t crgetsgid(
const cred_t *cr);       
zoneid_t crgetzoneid(
const cred_t *cr);       
const gid_t *crgetgroups(
const cred_t *cr);       
int crgetngroups(
const cred_t *cr);       
int crsetresuid(
cred_t *cr, 
uid_t ruid, 
uid_t euid, 
uid_t suid);       
int crsetresgid(
cred_t *cr, 
gid_t rgid, 
gid_t egid, 
gid_t sgid);       
int crsetugid(
cred_t *cr, 
uid_t uid, 
gid_t gid);       
int crsetgroups(
cred_t *cr, 
int ngroups, 
gid_t gids);
INTERFACE LEVEL
       illumos DDI specific (illumos DDI).
PARAMETERS
       cr                                pointer to the user credential structure       
uid, 
ruid, 
euid, 
suid                                new user id, real, effective and saved user
                                id       
gid, 
rgid, 
egid, 
sgid                                new group id, real, effective and saved
                                group id       
ngroups                                number of groups in the group array       
gids                                pointer to array of new groups
DESCRIPTION
       The user credential is a shared, read-only, ref-counted data
       structure. Its actual size and layout are subject to change. The
       functions described in this page allow the programmer to retrieve
       fields from the structure and to initialize newly allocated
       credential structures.       
crgetuid(), 
crgetruid(), and 
crgetsuid() return, respectively, the
       effective, real, and saved user id from the user credential pointed
       to by 
cr.       
crgetgid(), 
crgetrgid(), and 
crgetsgid() return, respectively, the
       effective, real, and saved group id from the user credential pointed
       to by 
cr.       
crgetzoneid() returns the zone id from the user credential pointed to
       by 
cr.       
crgetgroups() returns the group list of the user credential pointed
       to by 
cr.       
crgetngroups() returns the number of groups in the user credential
       pointed to by 
cr.       
crsetresuid() sets the real, effective and saved user id. All but one
       can be specified as -1, which causes the original value not to
       change.       
crsetresgid() sets the real, effective and saved group id. All but
       one can be specified as -1, which causes the original value not to
       change.       
crsetugid() initializes the real, effective and saved user id 
all to       
uid. It initializes the real, effective, and saved group id 
all to       
gid.       
crsetgroups() sets the number of groups in the user credential to       
ngroups and copies the groups from 
gids to the user credential. If       
ngroups is 0, 
gids need not point to valid storage.
       It is an error to call this any of the 
crset*() functions on a user
       credential structure that was newly allocated.
RETURN VALUES
       The 
crget*() functions return the requested information.
       The 
crset*id() functions return 0 on success and -1 if any of the
       specified ids are invalid. The functions might cause a system panic
       if called on a user credential structure that is referenced by other
       parts of the system.
CONTEXT
       These functions can be called from user and kernel contexts.
ATTRIBUTES
       See 
attributes(7) for a description of the following attributes:
       +--------------------+-----------------+
       |  ATTRIBUTE TYPE    | ATTRIBUTE VALUE |
       +--------------------+-----------------+
       |Architecture        | All             |
       +--------------------+-----------------+
       |Interface Stability | Committed       |
       +--------------------+-----------------+
SEE ALSO
       attributes(7), 
privileges(7), 
drv_priv(9F)       Writing Device Drivers                               August 6, 2003                   DDI_CRED(9F)