s3-passdb: add {get,set,del,enum}_trusted_domain calls
authorSumit Bose <sbose@redhat.com>
Thu, 15 Jul 2010 14:22:42 +0000 (16:22 +0200)
committerGünther Deschner <gd@samba.org>
Wed, 16 Feb 2011 10:34:44 +0000 (11:34 +0100)
Signed-off-by: Günther Deschner <gd@samba.org>
source3/include/passdb.h
source3/include/proto.h
source3/passdb/pdb_interface.c

index dc50533cdf4f6c8b9ce7c04638917b52fe921d60..5610897b42182de96418231df3a547636d0bc6dd 100644 (file)
@@ -225,6 +225,17 @@ struct pdb_domain_info {
        struct GUID guid;
 };
 
+struct pdb_trusted_domain {
+       char *domain_name;
+       char *netbios_name;
+       struct dom_sid security_identifier;
+       DATA_BLOB trust_auth_incoming;
+       DATA_BLOB trust_auth_outgoing;
+       uint32_t trust_direction;
+       uint32_t trust_type;
+       uint32_t trust_attributes;
+};
+
 /*
  * trusted domain entry/entries returned by secrets_get_trusted_domains
  * (used in _lsa_enum_trust_dom call)
@@ -438,6 +449,21 @@ struct pdb_methods
                                     TALLOC_CTX *mem_ctx, uint32_t *num_domains,
                                     struct trustdom_info ***domains);
 
+
+       NTSTATUS (*get_trusted_domain)(struct pdb_methods *methods,
+                                      TALLOC_CTX *mem_ctx,
+                                      const char *domain,
+                                      struct pdb_trusted_domain **td);
+       NTSTATUS (*set_trusted_domain)(struct pdb_methods *methods,
+                                      const char* domain,
+                                      const struct pdb_trusted_domain *td);
+       NTSTATUS (*del_trusted_domain)(struct pdb_methods *methods,
+                                      const char *domain);
+       NTSTATUS (*enum_trusted_domains)(struct pdb_methods *methods,
+                                        TALLOC_CTX *mem_ctx,
+                                        uint32_t *num_domains,
+                                        struct pdb_trusted_domain ***domains);
+
        void *private_data;  /* Private data of some kind */
 
        void (*free_private_data)(void **);
index 6f0dbae5612ea7f277fb88cf4730259fe5629d60..a5d69bc214690fc3f228606ba554cd30f8ee2305 100644 (file)
@@ -3873,6 +3873,13 @@ bool pdb_set_trusteddom_pw(const char* domain, const char* pwd,
 bool pdb_del_trusteddom_pw(const char *domain);
 NTSTATUS pdb_enum_trusteddoms(TALLOC_CTX *mem_ctx, uint32_t *num_domains,
                              struct trustdom_info ***domains);
+NTSTATUS pdb_get_trusted_domain(TALLOC_CTX *mem_ctx, const char *domain,
+                               struct pdb_trusted_domain **td);
+NTSTATUS pdb_set_trusted_domain(const char* domain,
+                               const struct pdb_trusted_domain *td);
+NTSTATUS pdb_del_trusted_domain(const char *domain);
+NTSTATUS pdb_enum_trusted_domains(TALLOC_CTX *mem_ctx, uint32_t *num_domains,
+                                 struct pdb_trusted_domain ***domains);
 NTSTATUS make_pdb_method( struct pdb_methods **methods ) ;
 
 /* The following definitions come from passdb/pdb_ldap.c  */
index b48f40958f426e47a0ba6207c88fcdb4b5fe2964..7712a85301a4c2a5383e40395f386605aa7a8334 100644 (file)
@@ -2098,6 +2098,66 @@ static NTSTATUS pdb_default_enum_trusteddoms(struct pdb_methods *methods,
        return secrets_trusted_domains(mem_ctx, num_domains, domains);
 }
 
+/*******************************************************************
+ trusted_domain methods
+ *******************************************************************/
+
+NTSTATUS pdb_get_trusted_domain(TALLOC_CTX *mem_ctx, const char *domain,
+                               struct pdb_trusted_domain **td)
+{
+       struct pdb_methods *pdb = pdb_get_methods();
+       return pdb->get_trusted_domain(pdb, mem_ctx, domain, td);
+}
+
+NTSTATUS pdb_set_trusted_domain(const char* domain,
+                               const struct pdb_trusted_domain *td)
+{
+       struct pdb_methods *pdb = pdb_get_methods();
+       return pdb->set_trusted_domain(pdb, domain, td);
+}
+
+NTSTATUS pdb_del_trusted_domain(const char *domain)
+{
+       struct pdb_methods *pdb = pdb_get_methods();
+       return pdb->del_trusted_domain(pdb, domain);
+}
+
+NTSTATUS pdb_enum_trusted_domains(TALLOC_CTX *mem_ctx, uint32_t *num_domains,
+                                 struct pdb_trusted_domain ***domains)
+{
+       struct pdb_methods *pdb = pdb_get_methods();
+       return pdb->enum_trusted_domains(pdb, mem_ctx, num_domains, domains);
+}
+
+static NTSTATUS pdb_default_get_trusted_domain(struct pdb_methods *methods,
+                                              TALLOC_CTX *mem_ctx,
+                                              const char *domain,
+                                              struct pdb_trusted_domain **td)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
+
+static NTSTATUS pdb_default_set_trusted_domain(struct pdb_methods *methods,
+                                              const char* domain,
+                                              const struct pdb_trusted_domain *td)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
+
+static NTSTATUS pdb_default_del_trusted_domain(struct pdb_methods *methods,
+                                              const char *domain)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
+
+static NTSTATUS pdb_default_enum_trusted_domains(struct pdb_methods *methods,
+                                                TALLOC_CTX *mem_ctx,
+                                                uint32_t *num_domains,
+                                                struct pdb_trusted_domain ***domains)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
+
 static struct pdb_domain_info *pdb_default_get_domain_info(
        struct pdb_methods *m, TALLOC_CTX *mem_ctx)
 {
@@ -2169,5 +2229,10 @@ NTSTATUS make_pdb_method( struct pdb_methods **methods )
        (*methods)->del_trusteddom_pw = pdb_default_del_trusteddom_pw;
        (*methods)->enum_trusteddoms  = pdb_default_enum_trusteddoms;
 
+       (*methods)->get_trusted_domain = pdb_default_get_trusted_domain;
+       (*methods)->set_trusted_domain = pdb_default_set_trusted_domain;
+       (*methods)->del_trusted_domain = pdb_default_del_trusted_domain;
+       (*methods)->enum_trusted_domains = pdb_default_enum_trusted_domains;
+
        return NT_STATUS_OK;
 }