~ubuntu-branches/debian/jessie/ufsutils/jessie

« back to all changes in this revision

Viewing changes to sys/sys/ucred.h

  • Committer: Package Import Robot
  • Author(s): Robert Millan
  • Date: 2013-11-29 14:21:12 UTC
  • mfrom: (11.1.1 experimental)
  • Revision ID: package-import@ubuntu.com-20131129142112-5tz5g7a4b6prb0dt
Tags: 9.2-2
* Avoid kfreebsd-kernel-headers versions prior to ino_t fix.
* Remove gratuitous dependency on libtermcap / libtinfo.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
 
 * 4. Neither the name of the University nor the names of its contributors
14
 
 *    may be used to endorse or promote products derived from this software
15
 
 *    without specific prior written permission.
16
 
 *
17
 
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18
 
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
 
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
 
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21
 
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
 
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23
 
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24
 
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
 
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
 
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27
 
 * SUCH DAMAGE.
28
 
 *
29
 
 *      @(#)ucred.h     8.4 (Berkeley) 1/9/95
30
 
 * $FreeBSD$
31
 
 */
32
 
 
33
 
#ifndef _SYS_UCRED_H_
34
 
#define _SYS_UCRED_H_
35
 
 
36
 
#if 0
37
 
#include <bsm/audit.h>
38
 
#endif
39
 
 
40
 
/*
41
 
 * Credentials.
42
 
 *
43
 
 * Please do not inspect cr_uid directly to determine superuserness.  The
44
 
 * priv(9) interface should be used to check for privilege.
45
 
 */
46
 
#if defined(_KERNEL) || defined(_WANT_UCRED)
47
 
struct ucred {
48
 
        u_int   cr_ref;                 /* reference count */
49
 
#define cr_startcopy cr_uid
50
 
        uid_t   cr_uid;                 /* effective user id */
51
 
        uid_t   cr_ruid;                /* real user id */
52
 
        uid_t   cr_svuid;               /* saved user id */
53
 
        int     cr_ngroups;             /* number of groups */
54
 
        gid_t   cr_rgid;                /* real group id */
55
 
        gid_t   cr_svgid;               /* saved group id */
56
 
        struct uidinfo  *cr_uidinfo;    /* per euid resource consumption */
57
 
        struct uidinfo  *cr_ruidinfo;   /* per ruid resource consumption */
58
 
        struct prison   *cr_prison;     /* jail(2) */
59
 
        void            *cr_pspare;     /* general use */
60
 
        u_int           cr_flags;       /* credential flags */
61
 
        void            *cr_pspare2[2]; /* general use 2 */
62
 
#define cr_endcopy      cr_label
63
 
        struct label    *cr_label;      /* MAC label */
64
 
        struct auditinfo_addr   cr_audit;       /* Audit properties. */
65
 
        gid_t   *cr_groups;             /* groups */
66
 
        int     cr_agroups;             /* Available groups */
67
 
};
68
 
#define NOCRED  ((struct ucred *)0)     /* no credential available */
69
 
#define FSCRED  ((struct ucred *)-1)    /* filesystem credential */
70
 
#endif /* _KERNEL || _WANT_UCRED */
71
 
 
72
 
#define XU_NGROUPS      16
73
 
 
74
 
/*
75
 
 * This is the external representation of struct ucred.
76
 
 */
77
 
struct xucred {
78
 
        u_int   cr_version;             /* structure layout version */
79
 
        uid_t   cr_uid;                 /* effective user id */
80
 
        short   cr_ngroups;             /* number of groups */
81
 
        gid_t   cr_groups[XU_NGROUPS];  /* groups */
82
 
        void    *_cr_unused1;           /* compatibility with old ucred */
83
 
};
84
 
#define XUCRED_VERSION  0
85
 
 
86
 
/* This can be used for both ucred and xucred structures. */
87
 
#define cr_gid cr_groups[0]
88
 
 
89
 
#ifdef _KERNEL
90
 
struct proc;
91
 
struct thread;
92
 
 
93
 
void    change_egid(struct ucred *newcred, gid_t egid);
94
 
void    change_euid(struct ucred *newcred, struct uidinfo *euip);
95
 
void    change_rgid(struct ucred *newcred, gid_t rgid);
96
 
void    change_ruid(struct ucred *newcred, struct uidinfo *ruip);
97
 
void    change_svgid(struct ucred *newcred, gid_t svgid);
98
 
void    change_svuid(struct ucred *newcred, uid_t svuid);
99
 
void    crcopy(struct ucred *dest, struct ucred *src);
100
 
struct ucred    *crcopysafe(struct proc *p, struct ucred *cr);
101
 
struct ucred    *crdup(struct ucred *cr);
102
 
void    cred_update_thread(struct thread *td);
103
 
void    crfree(struct ucred *cr);
104
 
struct ucred    *crget(void);
105
 
struct ucred    *crhold(struct ucred *cr);
106
 
int     crshared(struct ucred *cr);
107
 
void    cru2x(struct ucred *cr, struct xucred *xcr);
108
 
void    crsetgroups(struct ucred *cr, int n, gid_t *groups);
109
 
int     groupmember(gid_t gid, struct ucred *cred);
110
 
#endif /* _KERNEL */
111
 
 
112
 
#endif /* !_SYS_UCRED_H_ */