The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/sys/ucred.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 1989, 1993
    3  *      The Regents of the University of California.  All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1. Redistributions of source code must retain the above copyright
    9  *    notice, this list of conditions and the following disclaimer.
   10  * 2. Redistributions in binary form must reproduce the above copyright
   11  *    notice, this list of conditions and the following disclaimer in the
   12  *    documentation and/or other materials provided with the distribution.
   13  * 3. All advertising materials mentioning features or use of this software
   14  *    must display the following acknowledgement:
   15  *      This product includes software developed by the University of
   16  *      California, Berkeley and its contributors.
   17  * 4. Neither the name of the University nor the names of its contributors
   18  *    may be used to endorse or promote products derived from this software
   19  *    without specific prior written permission.
   20  *
   21  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   22  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   24  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   25  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   26  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   27  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   28  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   30  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   31  * SUCH DAMAGE.
   32  *
   33  *      @(#)ucred.h     8.4 (Berkeley) 1/9/95
   34  * $FreeBSD: src/sys/sys/ucred.h,v 1.14.2.5 2002/03/09 05:20:25 dd Exp $
   35  * $DragonFly: src/sys/sys/ucred.h,v 1.9 2007/01/08 21:32:57 corecode Exp $
   36  */
   37 
   38 #ifndef _SYS_UCRED_H_
   39 #define _SYS_UCRED_H_
   40 
   41 #ifndef _SYS_TYPES_H_
   42 #include <sys/types.h>
   43 #endif
   44 #ifndef _SYS_PARAM_H_
   45 #include <sys/param.h>
   46 #endif
   47 #ifndef _SYS_SPINLOCK_H_
   48 #include <sys/spinlock.h>
   49 #endif
   50 
   51 struct prison;
   52 
   53 /*
   54  * Credentials.
   55  *
   56  * Please do not inspect cr_uid directly to determine superuserness.
   57  * Only the priv(9) functions should be used for this.
   58  */
   59 struct ucred {
   60         int     cr_ref;                 /* reference count */
   61         uid_t   cr_uid;                 /* effective user id */
   62         short   cr_ngroups;             /* number of groups */
   63         gid_t   cr_groups[NGROUPS];     /* groups */
   64         struct  uidinfo *cr_uidinfo;    /* per uid resource consumption */
   65         struct  uidinfo *cr_ruidinfo;   /* per ruid resource consumption */
   66         struct  prison *cr_prison;      /* prison info */
   67         uid_t   cr_ruid;                /* Real user id. */
   68         uid_t   cr_svuid;               /* Saved effective user id. */
   69         gid_t   cr_rgid;                /* Real group id. */
   70         gid_t   cr_svgid;               /* Saved effective group id. */
   71 };
   72 #define cr_gid cr_groups[0]
   73 #define NOCRED ((struct ucred *)0)      /* no credential available */
   74 #define FSCRED ((struct ucred *)-1)     /* filesystem credential */
   75 
   76 /*
   77  * This is the external representation of struct ucred, based upon the
   78  * size of a 4.2-RELEASE struct ucred.  There will probably never be
   79  * any need to change the size of this or layout of its used fields.
   80  */
   81 struct xucred {
   82         u_int   cr_version;             /* structure layout version */
   83         uid_t   cr_uid;                 /* effective user id */
   84         short   cr_ngroups;             /* number of groups */
   85         gid_t   cr_groups[NGROUPS];     /* groups */
   86         void    *_cr_unused1;           /* compatibility with old ucred */
   87 };
   88 #define XUCRED_VERSION  0
   89 
   90 #ifdef _KERNEL
   91 
   92 struct proc;
   93 
   94 struct ucred    *change_euid (uid_t euid);
   95 struct ucred    *change_ruid (uid_t ruid);
   96 struct ucred    *cratom (struct ucred **pcr);
   97 struct ucred    *crcopy (struct ucred *cr);
   98 struct ucred    *crdup (struct ucred *cr);
   99 void            crfree (struct ucred *cr);
  100 void            crinit (struct ucred *cr);
  101 struct ucred    *crget (void);
  102 struct ucred    *crhold (struct ucred *cr);
  103 void            cru2x (struct ucred *cr, struct xucred *xcr);
  104 int             groupmember (gid_t gid, struct ucred *cred);
  105 #endif /* _KERNEL */
  106 
  107 #endif /* !_SYS_UCRED_H_ */

Cache object: c6e95a737dda00489a248bd08fa5a583


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.