xref: /freebsd/sys/fs/nfs/nfsid.h (revision 53b4ae3bf0f7e625d51fa263a5bd3859792d61e3)
1 /*-
2  * SPDX-License-Identifier: BSD-3-Clause
3  *
4  * Copyright (c) 1989, 1993
5  *	The Regents of the University of California.  All rights reserved.
6  *
7  * This code is derived from software contributed to Berkeley by
8  * Rick Macklem at The University of Guelph.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  * 1. Redistributions of source code must retain the above copyright
14  *    notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the
17  *    documentation and/or other materials provided with the distribution.
18  * 3. Neither the name of the University nor the names of its contributors
19  *    may be used to endorse or promote products derived from this software
20  *    without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32  * SUCH DAMAGE.
33  */
34 
35 #ifndef _NFS_NFSID_H_
36 #define	_NFS_NFSID_H_
37 
38 /* Definitions for id<-->name mapping. */
39 struct nfsd_idargs {
40 	int		nid_flag;	/* Flags (see below) */
41 	uid_t		nid_uid;	/* user/group id */
42 	gid_t		nid_gid;
43 	int		nid_usermax;	/* Upper bound on user name cache */
44 	int		nid_usertimeout;/* User name timeout (minutes) */
45 	u_char		*nid_name;	/* Name */
46 	int		nid_namelen;	/* and its length */
47 	gid_t		*nid_grps;	/* and the list */
48 	int		nid_ngroup;	/* Size of groups list */
49 };
50 
51 /* And bits for nid_flag */
52 #define	NFSID_INITIALIZE	0x0001
53 #define	NFSID_ADDUID		0x0002
54 #define	NFSID_DELUID		0x0004
55 #define	NFSID_ADDUSERNAME	0x0008
56 #define	NFSID_DELUSERNAME	0x0010
57 #define	NFSID_ADDGID		0x0020
58 #define	NFSID_DELGID		0x0040
59 #define	NFSID_ADDGROUPNAME	0x0080
60 #define	NFSID_DELGROUPNAME	0x0100
61 #define	NFSID_SYSSPACE		0x0200
62 
63 #if defined(_KERNEL) || defined(KERNEL)
64 /*
65  * Define just enough NFSv4 id<-->name mappings to make things work
66  * until the nfsuserd(8) is running.
67  * XXX These name/ids must be kept the same as what is in /etc/passwd
68  *     and /etc/group.
69  */
70 struct nfs_prime_userd {
71 	int	flag;
72 	uid_t	uid;
73 	gid_t	gid;
74 	char	*nam;
75 };
76 
77 int nfssvc_idname(struct nfsd_idargs *);
78 #endif
79 
80 #endif	/* _NFS_NFSID_H */
81