root/source3/include/nss_info.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* 
   2    Unix SMB/CIFS implementation.
   3    Idmap NSS headers
   4 
   5    Copyright (C) Gerald Carter             2006
   6 
   7    This library is free software; you can redistribute it and/or
   8    modify it under the terms of the GNU Lesser General Public
   9    License as published by the Free Software Foundation; either
  10    version 3 of the License, or (at your option) any later version.
  11    
  12    This library is distributed in the hope that it will be useful,
  13    but WITHOUT ANY WARRANTY; without even the implied warranty of
  14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15    Library General Public License for more details.
  16    
  17    You should have received a copy of the GNU Lesser General Public License
  18    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  19 */
  20 
  21 #ifndef _IDMAP_NSS_H
  22 #define _IDMAP_NSS_H
  23 
  24 #ifndef HAVE_LDAP
  25 #  ifndef LDAPMessage
  26 #    define LDAPMessage void
  27 #  endif
  28 #endif
  29 
  30 /* The interface version specifier */
  31 
  32 #define SMB_NSS_INFO_INTERFACE_VERSION    1
  33 
  34 /* List of available backends.  All backends must 
  35    register themselves */
  36 
  37 struct nss_function_entry {
  38         struct nss_function_entry *prev, *next;
  39         
  40         const char *name;
  41         struct nss_info_methods *methods;
  42 };
  43 
  44 /* List of configured domains.  Each domain points 
  45    back to its configured backend. */
  46 
  47 struct nss_domain_entry {
  48         struct nss_domain_entry *prev, *next;
  49 
  50         const char *domain;
  51 
  52         NTSTATUS init_status;   
  53         struct nss_function_entry *backend;
  54 
  55         /* hold state on a per domain basis */
  56 
  57         void *state;
  58 };
  59 
  60 /* API */
  61 
  62 struct nss_info_methods {
  63         NTSTATUS (*init)( struct nss_domain_entry *e );
  64         NTSTATUS (*get_nss_info)( struct nss_domain_entry *e, 
  65                                   const DOM_SID *sid, 
  66                                   TALLOC_CTX *ctx, 
  67                                   ADS_STRUCT *ads, LDAPMessage *msg,
  68                                   char **homedir, char **shell, char **gecos, gid_t *p_gid);
  69         NTSTATUS (*map_to_alias)(TALLOC_CTX *mem_ctx,
  70                                  struct nss_domain_entry *e,
  71                                  const char *name, char **alias);
  72         NTSTATUS (*map_from_alias)(TALLOC_CTX *mem_ctx,
  73                                    struct nss_domain_entry *e,
  74                                    const char *alias, char **name);
  75         NTSTATUS (*close_fn)( void );
  76 };
  77 
  78 
  79 /* The following definitions come from nsswitch/nss_info.c  */
  80 
  81 NTSTATUS smb_register_idmap_nss(int version, 
  82                                 const char *name, 
  83                                 struct nss_info_methods *methods);
  84 
  85 NTSTATUS nss_init( const char **nss_list );
  86 
  87 NTSTATUS nss_get_info( const char *domain, const DOM_SID *user_sid,
  88                        TALLOC_CTX *ctx,
  89                        ADS_STRUCT *ads, LDAPMessage *msg,
  90                        char **homedir, char **shell, char **gecos,
  91                        gid_t *p_gid);
  92 
  93 NTSTATUS nss_map_to_alias( TALLOC_CTX *mem_ctx, const char *domain,
  94                            const char *name, char **alias );
  95 
  96 NTSTATUS nss_map_from_alias( TALLOC_CTX *mem_ctx, const char *domain,
  97                              const char *alias, char **name );
  98 
  99 NTSTATUS nss_close( const char *parameters );
 100 
 101 #endif /* _IDMAP_NSS_H_ */
 102 

/* [<][>][^][v][top][bottom][index][help] */