Use pidl generated call to enumerate ds trusted domains in winbindd.
authorGünther Deschner <gd@samba.org>
Tue, 29 Jan 2008 13:20:20 +0000 (14:20 +0100)
committerGünther Deschner <gd@samba.org>
Tue, 29 Jan 2008 14:17:42 +0000 (15:17 +0100)
Guenther
(This used to be commit 3a3c1aed9bfc681457aa06f706fc6fe2d9b2e903)

source3/winbindd/winbindd_cm.c

index 94910072c35e614e5df717a8c169cd3baddbdc83..c22022d79a06316e6597a7c1229a385ea449503d 100644 (file)
@@ -1716,8 +1716,7 @@ static bool set_dc_type_and_flags_trustinfo( struct winbindd_domain *domain )
 {
        struct winbindd_domain *our_domain;
        NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
-       struct ds_domain_trust *domains = NULL;
-       int count = 0;
+       struct netr_DomainTrustList trusts;
        int i;
        uint32 flags = (DS_DOMAIN_IN_FOREST | 
                        DS_DOMAIN_DIRECT_OUTBOUND | 
@@ -1763,19 +1762,27 @@ static bool set_dc_type_and_flags_trustinfo( struct winbindd_domain *domain )
                return False;
        }       
 
-       result = rpccli_ds_enum_domain_trusts(cli, mem_ctx,
-                                             cli->cli->desthost, 
-                                             flags, &domains,
-                                             (unsigned int *)&count);
+       result = rpccli_netr_DsrEnumerateDomainTrusts(cli, mem_ctx,
+                                                     cli->cli->desthost,
+                                                     flags,
+                                                     &trusts,
+                                                     NULL);
+       if (!NT_STATUS_IS_OK(result)) {
+               DEBUG(0,("set_dc_type_and_flags_trustinfo: "
+                       "failed to query trusted domain list: %s\n",
+                       nt_errstr(result)));
+               talloc_destroy(mem_ctx);
+               return false;
+       }
 
        /* Now find the domain name and get the flags */
 
-       for ( i=0; i<count; i++ ) {
-               if ( strequal( domain->name, domains[i].netbios_domain ) ) {                    
-                       domain->domain_flags          = domains[i].flags;
-                       domain->domain_type           = domains[i].trust_type;
-                       domain->domain_trust_attribs  = domains[i].trust_attributes;
-                                               
+       for ( i=0; i<trusts.count; i++ ) {
+               if ( strequal( domain->name, trusts.array[i].netbios_name) ) {
+                       domain->domain_flags          = trusts.array[i].trust_flags;
+                       domain->domain_type           = trusts.array[i].trust_type;
+                       domain->domain_trust_attribs  = trusts.array[i].trust_attributes;
+
                        if ( domain->domain_type == DS_DOMAIN_TRUST_TYPE_UPLEVEL )
                                domain->active_directory = True;