Add pdb_get_domain_info
authorVolker Lendecke <vl@samba.org>
Sat, 4 Jul 2009 09:12:33 +0000 (11:12 +0200)
committerVolker Lendecke <vl@samba.org>
Sat, 4 Jul 2009 10:54:22 +0000 (12:54 +0200)
source3/include/passdb.h
source3/include/proto.h
source3/passdb/pdb_ads.c
source3/passdb/pdb_interface.c

index 53ba899d31f3af1a2bea4879c995f8f6b1119671..c288015c053cdc7609220fc772aeb8aa44451b3e 100644 (file)
@@ -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);
index 7f4907cd9674df9702646f8e672d236d5db19bf6..955a5a0947f7e6481b076569415e9096996829c2 100644 (file)
@@ -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) ;
index f6cf06f1b26bc56829a72e3584be09c12854ac67..1f3788c94fe7414aee952b4ba77f1ed933f7fee5 100644 (file)
@@ -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;
index a72409ea4af54b43ade8651d8b8720a7c3ddc09d..465a6bf5958f8af61a9a1a8d6604aa5afef11dd7 100644 (file)
@@ -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;