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  */
  81 extern int valid_login(char *, struct passwd **, int *);
  82 extern int valid_gname(char *, struct group **, int *);
  83 extern int valid_group(char *, struct group **, int *);
  84 extern int valid_project(char *, struct project *, void *buf, size_t, int *);
  85 extern int valid_projname(char *, struct project *, void *buf, size_t, int *);
  86 extern void warningmsg(int, char *);
  87 extern void putgrent(struct group *, FILE *);
  88 
  89 /* passmgmt */
  90 #define PASSMGMT        "/usr/lib/passmgmt";
  91 #endif  /* _USERS_H */