1/* 2 Unix SMB/CIFS implementation. 3 4 AIX loadable authentication module, providing identification 5 routines against Samba winbind/Windows NT Domain 6 7 Copyright (C) Aaron Collins 2003 8 9 This library is free software; you can redistribute it and/or 10 modify it under the terms of the GNU Lesser General Public 11 License as published by the Free Software Foundation; either 12 version 3 of the License, or (at your option) any later version. 13 14 This library is distributed in the hope that it will be useful, 15 but WITHOUT ANY WARRANTY; without even the implied warranty of 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17 Library General Public License for more details. 18 19 You should have received a copy of the GNU Lesser General Public License 20 along with this program. If not, see <http://www.gnu.org/licenses/>. 21*/ 22 23#include "winbind_client.h" 24 25/* Make sure that the module gets registered needed by freebsd 5.1 */ 26 27extern enum nss_status _nss_winbind_getgrent_r(struct group *, char *, size_t, 28 int *); 29extern enum nss_status _nss_winbind_getgrnam_r(const char *, struct group *, 30 char *, size_t, int *); 31extern enum nss_status _nss_winbind_getgrgid_r(gid_t gid, struct group *, char *, 32 size_t, int *); 33extern enum nss_status _nss_winbind_setgrent(void); 34extern enum nss_status _nss_winbind_endgrent(void); 35 36extern enum nss_status _nss_winbind_getpwent_r(struct passwd *, char *, size_t, 37 int *); 38extern enum nss_status _nss_winbind_getpwnam_r(const char *, struct passwd *, 39 char *, size_t, int *); 40extern enum nss_status _nss_winbind_getpwuid_r(gid_t gid, struct passwd *, char *, 41 size_t, int *); 42extern enum nss_status _nss_winbind_setpwent(void); 43extern enum nss_status _nss_winbind_endpwent(void); 44 45NSS_METHOD_PROTOTYPE(__nss_compat_getgrnam_r); 46NSS_METHOD_PROTOTYPE(__nss_compat_getgrgid_r); 47NSS_METHOD_PROTOTYPE(__nss_compat_getgrent_r); 48NSS_METHOD_PROTOTYPE(__nss_compat_setgrent); 49NSS_METHOD_PROTOTYPE(__nss_compat_endgrent); 50 51NSS_METHOD_PROTOTYPE(__nss_compat_getpwnam_r); 52NSS_METHOD_PROTOTYPE(__nss_compat_getpwuid_r); 53NSS_METHOD_PROTOTYPE(__nss_compat_getpwent_r); 54NSS_METHOD_PROTOTYPE(__nss_compat_setpwent); 55NSS_METHOD_PROTOTYPE(__nss_compat_endpwent); 56 57static ns_mtab methods[] = { 58{ NSDB_GROUP, "getgrnam_r", __nss_compat_getgrnam_r, _nss_winbind_getgrnam_r }, 59{ NSDB_GROUP, "getgrgid_r", __nss_compat_getgrgid_r, _nss_winbind_getgrgid_r }, 60{ NSDB_GROUP, "getgrent_r", __nss_compat_getgrent_r, _nss_winbind_getgrent_r }, 61{ NSDB_GROUP, "endgrent", __nss_compat_setgrent, _nss_winbind_setgrent }, 62{ NSDB_GROUP, "setgrent", __nss_compat_endgrent, _nss_winbind_endgrent }, 63 64{ NSDB_PASSWD, "getpwnam_r", __nss_compat_getpwnam_r, _nss_winbind_getpwnam_r }, 65{ NSDB_PASSWD, "getpwuid_r", __nss_compat_getpwuid_r, _nss_winbind_getpwuid_r }, 66{ NSDB_PASSWD, "getpwent_r", __nss_compat_getpwent_r, _nss_winbind_getpwent_r }, 67{ NSDB_PASSWD, "endpwent", __nss_compat_setpwent, _nss_winbind_setpwent }, 68{ NSDB_PASSWD, "setpwent", __nss_compat_endpwent, _nss_winbind_endpwent }, 69 70}; 71 72ns_mtab * 73nss_module_register(const char *source, unsigned int *mtabsize, 74 nss_module_unregister_fn *unreg) 75{ 76 *mtabsize = sizeof(methods)/sizeof(methods[0]); 77 *unreg = NULL; 78 return (methods); 79} 80