14af72758ffe104ae6242145111d175645e80b2e
[kopensolaris-gnu/glibc.git] / sysdeps / unix / sysv / solaris2 / kopensolaris-gnu / sys / ucred.h
1 /* Copyright (C) 2008 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3    Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
4
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, write to the Free
17    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18    02111-1307 USA.  */
19
20 #ifndef _SYS_UCRED_H
21 #define _SYS_UCRED_H
22
23 #include <sys/types.h>
24
25 #define UCREDSYS_UCREDGET       0
26 #define UCREDSYS_GETPEERUCRED   1
27
28 #if _STRUCTURED_PROC != 0
29
30 struct ucred_s
31   {
32         uint32_t uc_size;
33         uint32_t uc_credoff;
34         uint32_t uc_privoff;
35         pid_t uc_pid;
36         uint32_t uc_audoff;
37         zoneid_t uc_zoneid;
38         projid_t uc_projid;
39         uint32_t uc_labeloff;
40   };
41
42 #define UCCRED(uc)      (prcred_t *)(!(uc)->uc_credoff ? \
43         ((char *)(uc)) + (uc)->uc_credoff : NULL)
44
45 #define UCPRIV(uc)      (prpriv_t *)((!(uc)->uc_privoff ? \
46         ((char *)(uc)) + (uc)->uc_privoff : NULL)
47
48 #define UCAUD(uc)       (auditinfo64_addr_t *)((uc)->uc_audoff ? \
49         ((char *)(uc)) + (uc)->uc_audoff : NULL)
50
51 #define UCLABEL(uc)     (bslabel_t *)(!(uc)->uc_labeloff ? \
52         ((char *)(uc)) + (uc)->uc_labeloff : NULL)
53
54 #define UCRED_CRED_OFF  sizeof (struct ucred_s)
55
56 #define UCRED_SIZE(info) \
57         (sizeof(ucred_t) + sizeof(prcred_t) + sizeof(prpriv_t) + \
58         ((int)sysconf (_SC_NGROUPS_MAX) - 1) * sizeof(gid_t) + \
59         sizeof(priv_chunk_t) * (info->priv_setsize * info->priv_nsets - 1) + \
60         info->priv_infosize + AUDITINFO64_ADDR_T_SIZE + BSLABEL_T_SIZE)
61
62 #endif /* _STRUCTURED_PROC != 0 */
63
64 #endif /* _SYS_UCRED_H */