[PATCH] Re: Plugable passdb (SAM) modules

Stefan (metze) Metzmacher metze at metzemix.de
Wed Jan 23 04:14:02 GMT 2002


I think an option like
./configure --with-smbpasswd=static \
                 --with-tdbsam=static  \
                 --with-ldapsam=shared \
                 --with-nisplus=shared
would be nice, so the user can decide at compile time witch modules are 
static and witch have to be loaded via dlopen();
./configure --enable-shared-sam-modules=yes
is the default on plattforms witch supports loaded modules
but you can disable it if you want!
./configure --enable-shared-sam-modules=no

the init functions should look like this:

#ifdef WITH_TDBSAM
...
tdbsam_pdb_functions()
...
#ifdef WITH_TDBSAM_STATIC
NTSTATUS pdb_init_ldapsam(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method)
#endif /* WITH_TDBSAM_STATIC */
#ifdef WITH_TDBSAM_SHARED
/* the "init" function is load via dlopen() */
NTSTATUS init (PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method)
#endif /* WITH_TDBSAM_SHARED */
{
         NTSTATUS nt_status;

         if (!NT_STATUS_IS_OK(nt_status = 
make_pdb_methods(pdb_context->mem_ctx, pdb_method))) {
                 return nt_status;
         }

         (*pdb_method)->setsampwent = tdbsam_setsampwent;
         (*pdb_method)->endsampwent = tdbsam_endsampwent;
         (*pdb_method)->getsampwent = tdbsam_getsampwent;
         (*pdb_method)->getsampwnam = tdbsam_getsampwnam;
         (*pdb_method)->getsampwrid = tdbsam_getsampwrid;
         (*pdb_method)->add_sam_account = tdbsam_add_sam_account;
         (*pdb_method)->update_sam_account = tdbsam_update_sam_account;
         (*pdb_method)->delete_sam_account = tdbsam_delete_sam_account;

         /* TODO: Setup private data and free */

         (*pdb_method)->private_data = talloc(pdb_context->mem_ctx, 
sizeof(struct tdb_enum_info));

         if (!(*pdb_method)->private_data) {
                 return NT_STATUS_NO_MEMORY;
         }

         (*pdb_method)->free_private_data = free_private_data;

         return NT_STATUS_OK;
  }
  ....
#endif /* WITH_TDBSAM */


metze

At 01:21 23.01.2002 -0800, you wrote:
>Yes, there are platforms that do not like loadable libraries, but for these
>platforms we only need a few #ifdefs to compile the needed module 
>statically, the same way we have done till now.
>
>On Wed, Jan 23, 2002 at 10:49:32AM +1100, Andrew Bartlett wrote:
> > Simo Sorce wrote:
> > >
> > > Absolutely the dlopen() is the way to go in the last!
> > >
> > > I would prefer to have all modules loaded as "extern"!
> >
> > I don't think this will happen.  We still have platforms that makes this
> > a pain (or so I'm told) and its easier to just keep these staticly
> > linked.  But where we support it, I certainly don't object - for new
> > external modules.
> >
> > Andrew Bartlett
> >
> > --
> > Andrew Bartlett                                 abartlet at pcug.org.au
> > Manager, Authentication Subsystems, Samba Team  abartlet at samba.org
> > Student Network Administrator, Hawker College   abartlet at hawkerc.net
> > http://samba.org     http://build.samba.org     http://hawkerc.net
> >
>
>--
>Simo Sorce       idra at samba.org
>-------------------------------
>Samba Team http://www.samba.org

MfG
metze

Stefan "metze" Metzmacher <metze at metzemix.de>





More information about the samba-technical mailing list