port-aix.h revision 197679
1195377Ssam/* $Id: port-aix.h,v 1.31 2009/08/20 06:20:50 dtucker Exp $ */ 2195377Ssam 3195377Ssam/* 4195377Ssam * 5195377Ssam * Copyright (c) 2001 Gert Doering. All rights reserved. 6195377Ssam * Copyright (c) 2004,2005,2006 Darren Tucker. All rights reserved. 7195377Ssam * 8195377Ssam * Redistribution and use in source and binary forms, with or without 9195377Ssam * modification, are permitted provided that the following conditions 10195377Ssam * are met: 11195377Ssam * 1. Redistributions of source code must retain the above copyright 12195377Ssam * notice, this list of conditions and the following disclaimer. 13195377Ssam * 2. Redistributions in binary form must reproduce the above copyright 14195377Ssam * notice, this list of conditions and the following disclaimer in the 15195377Ssam * documentation and/or other materials provided with the distribution. 16195377Ssam * 17195377Ssam * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18195377Ssam * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19195377Ssam * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20195377Ssam * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21195377Ssam * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22195377Ssam * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23195377Ssam * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24195377Ssam * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25195377Ssam * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26195377Ssam * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27195377Ssam */ 28195377Ssam 29195377Ssam#ifdef _AIX 30195377Ssam 31195377Ssam#ifdef HAVE_SYS_SOCKET_H 32195377Ssam# include <sys/socket.h> 33195377Ssam#endif 34195377Ssam 35195377Ssam#include "buffer.h" 36195377Ssam 37195377Ssam/* These should be in the system headers but are not. */ 38195377Ssamint usrinfo(int, char *, int); 39195377Ssam#if defined(HAVE_DECL_SETAUTHDB) && (HAVE_DECL_SETAUTHDB == 0) 40295126Sglebiusint setauthdb(const char *, char *); 41195377Ssam#endif 42195377Ssam/* these may or may not be in the headers depending on the version */ 43195377Ssam#if defined(HAVE_DECL_AUTHENTICATE) && (HAVE_DECL_AUTHENTICATE == 0) 44195377Ssamint authenticate(char *, char *, int *, char **); 45195377Ssam#endif 46257176Sglebius#if defined(HAVE_DECL_LOGINFAILED) && (HAVE_DECL_LOGINFAILED == 0) 47195377Ssamint loginfailed(char *, char *, char *); 48195377Ssam#endif 49195377Ssam#if defined(HAVE_DECL_LOGINRESTRICTIONS) && (HAVE_DECL_LOGINRESTRICTIONS == 0) 50195377Ssamint loginrestrictions(char *, int, char *, char **); 51195377Ssam#endif 52195618Srpaulo#if defined(HAVE_DECL_LOGINSUCCESS) && (HAVE_DECL_LOGINSUCCESS == 0) 53195377Ssamint loginsuccess(char *, char *, char *, char **); 54195377Ssam#endif 55195377Ssam#if defined(HAVE_DECL_PASSWDEXPIRED) && (HAVE_DECL_PASSWDEXPIRED == 0) 56195377Ssamint passwdexpired(char *, char **); 57195377Ssam#endif 58195377Ssam 59195377Ssam/* Some versions define r_type in the above headers, which causes a conflict */ 60195377Ssam#ifdef r_type 61195377Ssam# undef r_type 62195377Ssam#endif 63195377Ssam 64195377Ssam/* AIX 4.2.x doesn't have nanosleep but does have nsleep which is equivalent */ 65195377Ssam#if !defined(HAVE_NANOSLEEP) && defined(HAVE_NSLEEP) 66195377Ssam# define nanosleep(a,b) nsleep(a,b) 67195377Ssam#endif 68195377Ssam 69195377Ssam/* For struct timespec on AIX 4.2.x */ 70195377Ssam#ifdef HAVE_SYS_TIMERS_H 71195377Ssam# include <sys/timers.h> 72246502Smonthadar#endif 73195377Ssam 74195377Ssam/* for setpcred and friends */ 75195377Ssam#ifdef HAVE_USERSEC_H 76195377Ssam# include <usersec.h> 77195377Ssam#endif 78195377Ssam 79195377Ssam/* 80195377Ssam * According to the setauthdb man page, AIX password registries must be 15 81195377Ssam * chars or less plus terminating NUL. 82330470Seadler */ 83330470Seadler#ifdef HAVE_SETAUTHDB 84330470Seadler# define REGISTRY_SIZE 16 85330470Seadler#endif 86195377Ssam 87195377Ssamvoid aix_usrinfo(struct passwd *); 88195377Ssam 89195377Ssam#ifdef WITH_AIXAUTHENTICATE 90195377Ssam# define CUSTOM_SYS_AUTH_PASSWD 1 91254315Srpaulo# define CUSTOM_SYS_AUTH_ALLOWED_USER 1 92195377Ssamint sys_auth_allowed_user(struct passwd *, Buffer *); 93195377Ssam# define CUSTOM_SYS_AUTH_RECORD_LOGIN 1 94195377Ssamint sys_auth_record_login(const char *, const char *, const char *, Buffer *); 95195377Ssam# define CUSTOM_SYS_AUTH_GET_LASTLOGIN_MSG 96254315Srpaulochar *sys_auth_get_lastlogin_msg(const char *, uid_t); 97195377Ssam# define CUSTOM_FAILED_LOGIN 1 98195377Ssam#endif 99195377Ssam 100234874Smonthadarvoid aix_setauthdb(const char *); 101254315Srpaulovoid aix_restoreauthdb(void); 102195377Ssamvoid aix_remove_embedded_newlines(char *); 103195377Ssam 104195377Ssam#if defined(AIX_GETNAMEINFO_HACK) && !defined(BROKEN_GETADDRINFO) 105232479Sadrian# ifdef getnameinfo 106254315Srpaulo# undef getnameinfo 107246502Smonthadar# endif 108246502Smonthadarint sshaix_getnameinfo(const struct sockaddr *, size_t, char *, size_t, 109246502Smonthadar char *, size_t, int); 110195377Ssam# define getnameinfo(a,b,c,d,e,f,g) (sshaix_getnameinfo(a,b,c,d,e,f,g)) 111254315Srpaulo#endif 112195377Ssam 113195377Ssam/* 114195377Ssam * We use getgrset in preference to multiple getgrent calls for efficiency 115330470Seadler * plus it supports NIS and LDAP groups. 116330470Seadler */ 117330470Seadler#if !defined(HAVE_GETGROUPLIST) && defined(HAVE_GETGRSET) 118330470Seadler# define HAVE_GETGROUPLIST 119330470Seadler# define USE_GETGRSET 120195377Ssamint getgrouplist(const char *, gid_t, gid_t *, int *); 121195377Ssam#endif 122195377Ssam 123195377Ssam#endif /* _AIX */ 124195377Ssam