diff options
-rw-r--r-- | source3/include/includes.h | 2 | ||||
-rw-r--r-- | source3/include/nss_info.h | 28 | ||||
-rw-r--r-- | source3/nsswitch/nss_info.c | 31 | ||||
-rw-r--r-- | source3/nsswitch/winbindd.c | 2 |
4 files changed, 37 insertions, 26 deletions
diff --git a/source3/include/includes.h b/source3/include/includes.h index 84bd90cc27..148bfc4414 100644 --- a/source3/include/includes.h +++ b/source3/include/includes.h @@ -777,6 +777,8 @@ enum flush_reason_enum { #ifdef HAVE_LDAP #include "ads_protos.h" +#else +typedef LDAPMessage void; #endif /* We need this after proto.h to reference GetTimeOfDay(). */ diff --git a/source3/include/nss_info.h b/source3/include/nss_info.h index 6f93c2ce81..2d7a5682e2 100644 --- a/source3/include/nss_info.h +++ b/source3/include/nss_info.h @@ -20,6 +20,8 @@ Boston, MA 02111-1307, USA. */ +#ifdef WITH_ADS + #ifndef _IDMAP_NSS_H #define _IDMAP_NSS_H @@ -60,13 +62,31 @@ struct nss_info_methods { NTSTATUS (*get_nss_info)( struct nss_domain_entry *e, const DOM_SID *sid, TALLOC_CTX *ctx, -#ifdef WITH_ADS ADS_STRUCT *ads, LDAPMessage *msg, -#else - void *ads, void *msg, -#endif char **homedir, char **shell, char **gecos, gid_t *p_gid); NTSTATUS (*close_fn)( void ); }; + +/* The following definitions come from nsswitch/nss_info.c */ + +NTSTATUS smb_register_idmap_nss(int version, + const char *name, + struct nss_info_methods *methods); + +NTSTATUS nss_init( const char **nss_list ); + +NTSTATUS nss_get_info( const char *domain, const DOM_SID *user_sid, + TALLOC_CTX *ctx, + ADS_STRUCT *ads, LDAPMessage *msg, + char **homedir, char **shell, char **gecos, + gid_t *p_gid); + +NTSTATUS nss_close( const char *parameters ); + +NTSTATUS idmap_nss_init_domain( const char *domain ); + + #endif /* _IDMAP_NSS_H_ */ + +#endif /* WITH_ADS */ diff --git a/source3/nsswitch/nss_info.c b/source3/nsswitch/nss_info.c index 127484f537..747de4a2ba 100644 --- a/source3/nsswitch/nss_info.c +++ b/source3/nsswitch/nss_info.c @@ -20,6 +20,8 @@ Boston, MA 02111-1307, USA. */ +#ifdef WITH_ADS + #include "includes.h" #include "nss_info.h" @@ -27,23 +29,6 @@ static struct nss_function_entry *backends = NULL; static struct nss_domain_entry *nss_domain_list = NULL; /********************************************************************** - **********************************************************************/ - -const char *wb_posix_map_str(enum wb_posix_mapping mtype) -{ - switch (mtype) { - case WB_POSIX_MAP_SFU: - return "sfu"; - case WB_POSIX_MAP_RFC2307: - return "rfc2307"; - default: - break; - } - return NULL; -} - - -/********************************************************************** Get idmap nss methods. **********************************************************************/ @@ -63,7 +48,7 @@ static struct nss_function_entry *nss_get_backend(const char *name ) Allow a module to register itself as a backend. **********************************************************************/ -NTSTATUS smb_register_idmap_nss(int version, const char *name, struct nss_info_methods *methods) + NTSTATUS smb_register_idmap_nss(int version, const char *name, struct nss_info_methods *methods) { struct nss_function_entry *entry; @@ -145,7 +130,7 @@ static BOOL parse_nss_parm( const char *config, char **backend, char **domain ) to initialize the state on a per domain basis. *******************************************************************/ -NTSTATUS nss_init( const char **nss_list ) + NTSTATUS nss_init( const char **nss_list ) { NTSTATUS status; int i; @@ -230,7 +215,7 @@ NTSTATUS nss_init( const char **nss_list ) /******************************************************************** *******************************************************************/ -NTSTATUS nss_get_info( const char *domain, const DOM_SID *user_sid, + NTSTATUS nss_get_info( const char *domain, const DOM_SID *user_sid, TALLOC_CTX *ctx, ADS_STRUCT *ads, LDAPMessage *msg, char **homedir, char **shell, char **gecos, @@ -263,7 +248,7 @@ NTSTATUS nss_get_info( const char *domain, const DOM_SID *user_sid, /******************************************************************** *******************************************************************/ -NTSTATUS nss_close( const char *parameters ) + NTSTATUS nss_close( const char *parameters ) { struct nss_domain_entry *p = nss_domain_list; struct nss_domain_entry *q; @@ -285,7 +270,7 @@ NTSTATUS nss_close( const char *parameters ) Invoke the init function for a given domain's backend *******************************************************************/ -NTSTATUS idmap_nss_init_domain( const char *domain ) + NTSTATUS idmap_nss_init_domain( const char *domain ) { struct nss_domain_entry *p; @@ -303,3 +288,5 @@ NTSTATUS idmap_nss_init_domain( const char *domain ) return NT_STATUS_NO_SUCH_DOMAIN; } +#endif /* WITH_ADS */ + diff --git a/source3/nsswitch/winbindd.c b/source3/nsswitch/winbindd.c index ce39df350f..c44750ec6f 100644 --- a/source3/nsswitch/winbindd.c +++ b/source3/nsswitch/winbindd.c @@ -1009,7 +1009,9 @@ int main(int argc, char **argv, char **envp) DEBUG(1, ("Could not init idmap! - Sid/[UG]id mapping will not be available\n")); } +#ifdef WITH_ADS nss_init( lp_winbind_nss_info() ); +#endif /* Unblock all signals we are interested in as they may have been blocked by the parent process. */ |