On Thu, 2002-10-03 at 07:22, Jelmer Vernooij wrote:
> On Thu, Oct 03, 2002 at 12:16:53AM +0200, Simo Sorce wrote about 'Re: [PATCH] sam 
>backend parameter':
> > yes a thing I'm not sure has ever been a good idea.
> > to be able to have sam2sam that is really read a backend + store all
> > info into another backend we may take several ways.
> 
> > We never need the 2 backend to be loaded at the same time to do the
> > operation, we may easily read all the accounts chnage the backend and
> > store them into the new one, or simply make custom code to load 2
> > different backends, and use theyr calls.
> 
> > It's easy to have 2 structures calle backend1 and backend2 that holds
> > the functon pointers for 2 backends.
> 
> > Al the context things always seemed to me overcomplicated even for
> > multiple backend code.
> the context stuff has been in passdb since the beginning and is not
> at all used for multiple backends - multiple backends are achieved by
> having multiple 'methods' structs in one context. 
> 
> Next to that, a 'multidb' backend will have to use multiple contexts. 
> 
> We don't want to spoil global name space with the variables
> sam_context contains.
> 
> If we are removing multiple domain support, we could remove
> sam_methods perhaps and move all the functions in sam_methods to 
> sam_context, but sam_context definitely has to stay...
> 
> Jelmer

Ok, I looked back at what do currently context contain in passdb (see
below Appendix A).

It is simply a structure containing the function pointers of the
backend.

Of course it need to stay here, it only have a really bad name that make
you think of a totally different thing :-)

I think pdb_functions could have been a better name (no not methods, we
are programmin in C not in Java ;-)

Simo.


Appendix A:

typedef struct pdb_context 
{
        struct pdb_methods *pdb_methods;
        struct pdb_methods *pwent_methods;
        
        /* These functions are wrappers for the functions listed above.
           They may do extra things like re-reading a SAM_ACCOUNT on update */

        BOOL (*pdb_setsampwent)(struct pdb_context *, BOOL update);
        
        void (*pdb_endsampwent)(struct pdb_context *);
        
        BOOL (*pdb_getsampwent)(struct pdb_context *, SAM_ACCOUNT *user);
        
        BOOL (*pdb_getsampwnam)(struct pdb_context *, SAM_ACCOUNT *sam_acct,
const char *username);
        
        BOOL (*pdb_getsampwsid)(struct pdb_context *, SAM_ACCOUNT *sam_acct,
const DOM_SID *sid);
        
        BOOL (*pdb_add_sam_account)(struct pdb_context *, SAM_ACCOUNT
*sampass);
        
        BOOL (*pdb_update_sam_account)(struct pdb_context *, SAM_ACCOUNT
*sampass);
        
        BOOL (*pdb_delete_sam_account)(struct pdb_context *, SAM_ACCOUNT
*username);
        
        void (*free_fn)(struct pdb_context **);
        
        TALLOC_CTX *mem_ctx;
        
} PDB_CONTEXT;


-- 
Simo Sorce - [EMAIL PROTECTED]
Xsec s.r.l.
via Durando 10 Ed. G - 20158 - Milano
tel. +39 02 2399 7130 - fax: +39 02 700 442 399

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to