From b8322ec2b23f60379cbecaf68c0ce8f254611d41 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sat, 4 Jul 2009 11:12:33 +0200 Subject: Add pdb_get_domain_info --- source3/include/passdb.h | 11 +++++++++++ source3/include/proto.h | 1 + source3/passdb/pdb_ads.c | 7 +++++++ source3/passdb/pdb_interface.c | 13 +++++++++++++ 4 files changed, 32 insertions(+) (limited to 'source3') diff --git a/source3/include/passdb.h b/source3/include/passdb.h index 53ba899d31..c288015c05 100644 --- a/source3/include/passdb.h +++ b/source3/include/passdb.h @@ -197,6 +197,14 @@ struct pdb_search { void (*search_end)(struct pdb_search *search); }; +struct pdb_domain_info { + char *name; + char *dns_domain; + char *dns_forest; + struct dom_sid sid; + struct GUID guid; +}; + #define PDB_CAP_STORE_RIDS 0x0001 #define PDB_CAP_ADS 0x0002 @@ -224,6 +232,9 @@ struct pdb_methods { const char *name; /* What name got this module */ + struct pdb_domain_info *(*get_domain_info)(struct pdb_methods *, + TALLOC_CTX *mem_ctx); + NTSTATUS (*getsampwnam)(struct pdb_methods *, struct samu *sam_acct, const char *username); NTSTATUS (*getsampwsid)(struct pdb_methods *, struct samu *sam_acct, const DOM_SID *sid); diff --git a/source3/include/proto.h b/source3/include/proto.h index 7f4907cd96..955a5a0947 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -4531,6 +4531,7 @@ NTSTATUS smb_register_passdb(int version, const char *name, pdb_init_function in struct pdb_init_function_entry *pdb_find_backend_entry(const char *name); struct event_context *pdb_get_event_context(void); NTSTATUS make_pdb_method_name(struct pdb_methods **methods, const char *selected); +struct pdb_domain_info *pdb_get_domain_info(TALLOC_CTX *mem_ctx); bool pdb_getsampwnam(struct samu *sam_acct, const char *username) ; bool guest_user_info( struct samu *user ); bool pdb_getsampwsid(struct samu *sam_acct, const DOM_SID *sid) ; diff --git a/source3/passdb/pdb_ads.c b/source3/passdb/pdb_ads.c index f6cf06f1b2..1f3788c94f 100644 --- a/source3/passdb/pdb_ads.c +++ b/source3/passdb/pdb_ads.c @@ -69,6 +69,12 @@ struct pdb_ads_samu_private { struct tldap_message *ldapmsg; }; +static struct pdb_domain_info *pdb_ads_get_domain_info( + struct pdb_methods *m, TALLOC_CTX *mem_ctx) +{ + return NULL; +} + static struct samu *pdb_ads_init_guest(TALLOC_CTX *mem_ctx, struct pdb_methods *m) { @@ -1962,6 +1968,7 @@ static NTSTATUS pdb_ads_enum_trusteddoms(struct pdb_methods *m, static void pdb_ads_init_methods(struct pdb_methods *m) { m->name = "ads"; + m->get_domain_info = pdb_ads_get_domain_info; m->getsampwnam = pdb_ads_getsampwnam; m->getsampwsid = pdb_ads_getsampwsid; m->create_user = pdb_ads_create_user; diff --git a/source3/passdb/pdb_interface.c b/source3/passdb/pdb_interface.c index a72409ea4a..465a6bf595 100644 --- a/source3/passdb/pdb_interface.c +++ b/source3/passdb/pdb_interface.c @@ -210,6 +210,12 @@ static struct pdb_methods *pdb_get_methods(void) return pdb_get_methods_reload(False); } +struct pdb_domain_info *pdb_get_domain_info(TALLOC_CTX *mem_ctx) +{ + struct pdb_methods *pdb = pdb_get_methods(); + return pdb->get_domain_info(pdb, mem_ctx); +} + bool pdb_getsampwnam(struct samu *sam_acct, const char *username) { struct pdb_methods *pdb = pdb_get_methods(); @@ -1992,6 +1998,12 @@ static NTSTATUS pdb_default_enum_trusteddoms(struct pdb_methods *methods, return secrets_trusted_domains(mem_ctx, num_domains, domains); } +static struct pdb_domain_info *pdb_default_get_domain_info( + struct pdb_methods *m, TALLOC_CTX *mem_ctx) +{ + return NULL; +} + /******************************************************************* Create a pdb_methods structure and initialize it with the default operations. In this way a passdb module can simply implement @@ -2008,6 +2020,7 @@ NTSTATUS make_pdb_method( struct pdb_methods **methods ) return NT_STATUS_NO_MEMORY; } + (*methods)->get_domain_info = pdb_default_get_domain_info; (*methods)->getsampwnam = pdb_default_getsampwnam; (*methods)->getsampwsid = pdb_default_getsampwsid; (*methods)->create_user = pdb_default_create_user; -- cgit