1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright 2016 Nexenta Systems, Inc. All rights reserved. 23 * Copyright 2017 RackTop Systems. 24 * 25 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 26 * Use is subject to license terms. 27 */ 28 29 /* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */ 30 /* All Rights Reserved */ 31 32 /* 33 * Portions of this source code were derived from Berkeley 4.3 BSD 34 * under license from the Regents of the University of California. 35 */ 36 37 #ifndef _SYS_CRED_H 38 #define _SYS_CRED_H 39 40 #include <sys/types.h> 41 42 #ifdef __cplusplus 43 extern "C" { 44 #endif 45 46 /* 47 * The credential is an opaque kernel private data structure defined in 48 * <sys/cred_impl.h>. 49 */ 50 51 typedef struct cred cred_t; 52 53 #if defined(_KERNEL) || defined(_FAKE_KERNEL) 54 55 cred_t *_curcred(void); 56 #define CRED() (_curcred()) /* current cred_t pointer */ 57 struct ksid; 58 59 extern int ngroups_max; 60 61 /* 62 * kcred is used when you need all privileges. 63 */ 64 extern struct cred *kcred; 65 66 extern void cred_init(void); 67 extern void crhold(cred_t *); 68 extern void crfree(cred_t *); 69 70 extern int groupmember(gid_t, const cred_t *); 71 72 extern cred_t *zone_kcred(void); 73 74 extern uid_t crgetuid(const cred_t *); 75 extern uid_t crgetruid(const cred_t *); 76 extern uid_t crgetsuid(const cred_t *); 77 extern gid_t crgetgid(const cred_t *); 78 extern gid_t crgetrgid(const cred_t *); 79 extern gid_t crgetsgid(const cred_t *); 80 extern zoneid_t crgetzoneid(const cred_t *); 81 extern struct zone *crgetzone(const cred_t *); 82 extern projid_t crgetprojid(const cred_t *); 83 extern struct ksid *crgetsid(const cred_t *, int); 84 85 extern const gid_t *crgetgroups(const cred_t *); 86 extern int crgetngroups(const cred_t *); 87 88 #endif /* _KERNEL */ 89 90 #ifdef __cplusplus 91 } 92 #endif 93 94 #endif /* _SYS_CRED_H */ 95