1d74d50a8SDag-Erling Smørgrav /* $Id: port-aix.h,v 1.21 2004/08/14 14:09:12 dtucker Exp $ */
2d95e11bfSDag-Erling Smørgrav 
34b17dab0SDag-Erling Smørgrav /*
44b17dab0SDag-Erling Smørgrav  *
54b17dab0SDag-Erling Smørgrav  * Copyright (c) 2001 Gert Doering.  All rights reserved.
64b17dab0SDag-Erling Smørgrav  *
74b17dab0SDag-Erling Smørgrav  * Redistribution and use in source and binary forms, with or without
84b17dab0SDag-Erling Smørgrav  * modification, are permitted provided that the following conditions
94b17dab0SDag-Erling Smørgrav  * are met:
104b17dab0SDag-Erling Smørgrav  * 1. Redistributions of source code must retain the above copyright
114b17dab0SDag-Erling Smørgrav  *    notice, this list of conditions and the following disclaimer.
124b17dab0SDag-Erling Smørgrav  * 2. Redistributions in binary form must reproduce the above copyright
134b17dab0SDag-Erling Smørgrav  *    notice, this list of conditions and the following disclaimer in the
144b17dab0SDag-Erling Smørgrav  *    documentation and/or other materials provided with the distribution.
154b17dab0SDag-Erling Smørgrav  *
164b17dab0SDag-Erling Smørgrav  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
174b17dab0SDag-Erling Smørgrav  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
184b17dab0SDag-Erling Smørgrav  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
194b17dab0SDag-Erling Smørgrav  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
204b17dab0SDag-Erling Smørgrav  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
214b17dab0SDag-Erling Smørgrav  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
224b17dab0SDag-Erling Smørgrav  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
234b17dab0SDag-Erling Smørgrav  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
244b17dab0SDag-Erling Smørgrav  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
254b17dab0SDag-Erling Smørgrav  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
264b17dab0SDag-Erling Smørgrav  */
274b17dab0SDag-Erling Smørgrav 
2883d2307dSDag-Erling Smørgrav #ifdef _AIX
29d0c8c0bcSDag-Erling Smørgrav 
30d95e11bfSDag-Erling Smørgrav #ifdef WITH_AIXAUTHENTICATE
31d95e11bfSDag-Erling Smørgrav # include <login.h>
32d95e11bfSDag-Erling Smørgrav # include <userpw.h>
33d95e11bfSDag-Erling Smørgrav # if defined(HAVE_SYS_AUDIT_H) && defined(AIX_LOGINFAILED_4ARG)
34d95e11bfSDag-Erling Smørgrav #  include <sys/audit.h>
35d95e11bfSDag-Erling Smørgrav # endif
36d95e11bfSDag-Erling Smørgrav # include <usersec.h>
37d95e11bfSDag-Erling Smørgrav #endif
38d95e11bfSDag-Erling Smørgrav 
39d95e11bfSDag-Erling Smørgrav /* Some versions define r_type in the above headers, which causes a conflict */
40d95e11bfSDag-Erling Smørgrav #ifdef r_type
41d95e11bfSDag-Erling Smørgrav # undef r_type
42d95e11bfSDag-Erling Smørgrav #endif
43d95e11bfSDag-Erling Smørgrav 
44d0c8c0bcSDag-Erling Smørgrav /* AIX 4.2.x doesn't have nanosleep but does have nsleep which is equivalent */
45d0c8c0bcSDag-Erling Smørgrav #if !defined(HAVE_NANOSLEEP) && defined(HAVE_NSLEEP)
46d0c8c0bcSDag-Erling Smørgrav # define nanosleep(a,b) nsleep(a,b)
47d0c8c0bcSDag-Erling Smørgrav #endif
48d0c8c0bcSDag-Erling Smørgrav 
49d0c8c0bcSDag-Erling Smørgrav /* For struct timespec on AIX 4.2.x */
50d0c8c0bcSDag-Erling Smørgrav #ifdef HAVE_SYS_TIMERS_H
51d0c8c0bcSDag-Erling Smørgrav # include <sys/timers.h>
52d0c8c0bcSDag-Erling Smørgrav #endif
53d0c8c0bcSDag-Erling Smørgrav 
54efcad6b7SDag-Erling Smørgrav /*
55efcad6b7SDag-Erling Smørgrav  * According to the setauthdb man page, AIX password registries must be 15
56efcad6b7SDag-Erling Smørgrav  * chars or less plus terminating NUL.
57efcad6b7SDag-Erling Smørgrav  */
58efcad6b7SDag-Erling Smørgrav #ifdef HAVE_SETAUTHDB
59efcad6b7SDag-Erling Smørgrav # define REGISTRY_SIZE	16
60d95e11bfSDag-Erling Smørgrav #endif
61d95e11bfSDag-Erling Smørgrav 
62d95e11bfSDag-Erling Smørgrav void aix_usrinfo(struct passwd *);
63efcad6b7SDag-Erling Smørgrav 
64efcad6b7SDag-Erling Smørgrav #ifdef WITH_AIXAUTHENTICATE
65efcad6b7SDag-Erling Smørgrav # define CUSTOM_SYS_AUTH_PASSWD 1
66d74d50a8SDag-Erling Smørgrav # define CUSTOM_SYS_AUTH_ALLOWED_USER 1
67d74d50a8SDag-Erling Smørgrav int sys_auth_allowed_user(struct passwd *);
68d74d50a8SDag-Erling Smørgrav # define CUSTOM_SYS_AUTH_RECORD_LOGIN 1
69d74d50a8SDag-Erling Smørgrav int sys_auth_record_login(const char *, const char *, const char *);
70efcad6b7SDag-Erling Smørgrav # define CUSTOM_FAILED_LOGIN 1
71efcad6b7SDag-Erling Smørgrav void record_failed_login(const char *, const char *);
72efcad6b7SDag-Erling Smørgrav #endif
73efcad6b7SDag-Erling Smørgrav 
74efcad6b7SDag-Erling Smørgrav void aix_setauthdb(const char *);
75efcad6b7SDag-Erling Smørgrav void aix_restoreauthdb(void);
76d95e11bfSDag-Erling Smørgrav void aix_remove_embedded_newlines(char *);
7783d2307dSDag-Erling Smørgrav #endif /* _AIX */
78