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