s3: Introduce domain_is_forest_root() helper function
authorVolker Lendecke <vl@samba.org>
Wed, 30 Dec 2009 09:25:41 +0000 (10:25 +0100)
committerVolker Lendecke <vl@samba.org>
Sat, 2 Jan 2010 11:09:05 +0000 (12:09 +0100)
Hopefully this makes the flag tests a bit more understandable

source3/winbindd/winbindd_ads.c
source3/winbindd/winbindd_proto.h
source3/winbindd/winbindd_util.c

index b0ca9b8176e54dd76f27a58d6fc59c307cb65333..d15fb86d86e16f8fbb82aa15fce1b9bc33c44e8c 100644 (file)
@@ -1263,7 +1263,6 @@ static NTSTATUS trusted_domains(struct winbindd_domain *domain,
        int                     i;
        uint32                  flags;  
        struct rpc_pipe_client *cli;
-       uint32                 fr_flags = (NETR_TRUST_FLAG_IN_FOREST | NETR_TRUST_FLAG_TREEROOT);
        int ret_count;
 
        DEBUG(3,("ads: trusted_domains\n"));
@@ -1274,9 +1273,7 @@ static NTSTATUS trusted_domains(struct winbindd_domain *domain,
           query for all trusts.  If not, then just look for domain
           trusts in the target forest */
 
-       if ( domain->primary ||
-               ((domain->domain_flags&fr_flags) == fr_flags) ) 
-       {
+       if (domain->primary || domain_is_forest_root(domain)) {
                flags = NETR_TRUST_FLAG_OUTBOUND |
                        NETR_TRUST_FLAG_INBOUND |
                        NETR_TRUST_FLAG_IN_FOREST;
@@ -1354,7 +1351,7 @@ static NTSTATUS trusted_domains(struct winbindd_domain *domain,
 
                        wcache_tdc_add_domain( &d );
                        ret_count++;
-               } else if ( (domain->domain_flags&fr_flags) == fr_flags ) {
+               } else if (domain_is_forest_root(domain)) {
                        /* Check if we already have this record. If
                         * we are following our forest root that is not
                         * our primary domain, we want to keep trust
index 263e3269177e9ab438b5d21fad923b7ee8966789..cf429c764fa4d1d8b42a48cd5fc901efa2c47fd9 100644 (file)
@@ -413,6 +413,7 @@ enum winbindd_result winbindd_dual_pam_chng_pswd_auth_crap(struct winbindd_domai
 
 struct winbindd_domain *domain_list(void);
 void free_domain_list(void);
+bool domain_is_forest_root(const struct winbindd_domain *domain);
 void rescan_trusted_domains(struct tevent_context *ev, struct tevent_timer *te,
                            struct timeval now, void *private_data);
 enum winbindd_result winbindd_dual_init_connection(struct winbindd_domain *domain,
index 17603820d4f725999161a0fe52395ffc686f165b..5442a90cdfc3c646d3ba86764931c2733b4eaf6d 100644 (file)
@@ -223,6 +223,14 @@ done:
        return domain;
 }
 
+bool domain_is_forest_root(const struct winbindd_domain *domain)
+{
+       const uint32_t fr_flags =
+               (NETR_TRUST_FLAG_TREEROOT|NETR_TRUST_FLAG_IN_FOREST);
+
+       return ((domain->domain_flags & fr_flags) == fr_flags);
+}
+
 /********************************************************************
   rescan our domains looking for new trusted domains
 ********************************************************************/
@@ -243,8 +251,6 @@ static void add_trusted_domains( struct winbindd_domain *domain )
        TALLOC_CTX *mem_ctx;
        struct winbindd_request *request;
        struct winbindd_response *response;
-       uint32 fr_flags = (NETR_TRUST_FLAG_TREEROOT|NETR_TRUST_FLAG_IN_FOREST);
-
        struct trustdom_state *state;
 
        mem_ctx = talloc_init("add_trusted_domains");
@@ -269,7 +275,7 @@ static void add_trusted_domains( struct winbindd_domain *domain )
        /* Flags used to know how to continue the forest trust search */
 
        state->primary = domain->primary;
-       state->forest_root = ((domain->domain_flags & fr_flags) == fr_flags );
+       state->forest_root = domain_is_forest_root(domain);
 
        request->length = sizeof(*request);
        request->cmd = WINBINDD_LIST_TRUSTDOM;