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 (c) 2013 Gary Mills
23 *
24 * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
25 */
26
27/*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
28/*	  All Rights Reserved  	*/
29
30
31#ifndef _USERS_H
32#define	_USERS_H
33
34
35#include <pwd.h>
36#include <grp.h>
37#include <project.h>
38
39#define	GROUP		"/etc/group"
40
41/* max number of projects that can be specified when adding a user */
42#define	NPROJECTS_MAX	1024
43
44/* validation returns */
45#define	NOTUNIQUE	0	/* not unique */
46#define	RESERVED	1	/* reserved */
47#define	UNIQUE		2	/* is unique */
48#define	TOOBIG		3	/* number too big */
49#define	INVALID		4
50#define	LONGNAME	5	/* string too long */
51
52/*
53 * Note: constraints checking for warning (release 2.6),
54 * and these may be enforced in the future releases.
55 */
56#define	WARN_NAME_TOO_LONG	0x1
57#define	WARN_BAD_GROUP_NAME	0x2
58#define	WARN_BAD_LOGNAME_CHAR	0x4
59#define	WARN_BAD_LOGNAME_FIRST	0x8
60#define	WARN_NO_LOWERCHAR	0x10
61#define	WARN_BAD_PROJ_NAME	0x20
62#define	WARN_LOGGED_IN		0x40
63
64/* Exit codes from passmgmt */
65#define	PEX_SUCCESS	0
66#define	PEX_NO_PERM	1
67#define	PEX_SYNTAX	2
68#define	PEX_BADARG	3
69#define	PEX_BADUID	4
70#define	PEX_HOSED_FILES	5
71#define	PEX_FAILED	6
72#define	PEX_MISSING	7
73#define	PEX_BUSY	8
74#define	PEX_BADNAME	9
75
76#define	REL_PATH(x)	(x && *x != '/')
77
78/*
79 * interfaces available from the library
80 */
81extern int valid_login(char *, struct passwd **, int *);
82extern int valid_gname(char *, struct group **, int *);
83extern int valid_group(char *, struct group **, int *);
84extern int valid_project(char *, struct project *, void *buf, size_t, int *);
85extern int valid_projname(char *, struct project *, void *buf, size_t, int *);
86extern void warningmsg(int, char *);
87extern void putgrent(struct group *, FILE *);
88
89/* passmgmt */
90#define	PASSMGMT	"/usr/lib/passmgmt";
91#endif	/* _USERS_H */
92