split up child_dispatch_table into domain, idmap and locator tables
[metze/old/v3-2-winbind-ndr.git] / source / winbindd / winbindd_util.c
index 37d29e1765b8a77c951db3ebc6062af19e607089..49d20c527e54305ec7c55f3d62d88677690b0c1d 100644 (file)
@@ -186,7 +186,7 @@ static struct winbindd_domain *add_trusted_domain(const char *domain_name, const
        }
        
        /* Link to domain list */
-       DLIST_ADD(_domain_list, domain);
+       DLIST_ADD_END(_domain_list, domain, struct winbindd_domain *);
         
        wcache_tdc_add_domain( domain );
         
@@ -324,7 +324,10 @@ static void trustdom_recv(void *private_data, BOOL success)
                                                    &cache_methods,
                                                    &sid);
                        if (domain) {
-                               setup_domain_child(domain, &domain->child, NULL);
+                               setup_domain_child(domain,
+                                                  &domain->child,
+                                                  domain_dispatch_table,
+                                                  NULL);
                        }
                }
                p=q;
@@ -631,8 +634,6 @@ static void init_child_recv(void *private_data, BOOL success)
                state->response->data.domain_info.native_mode;
        state->domain->active_directory =
                state->response->data.domain_info.active_directory;
-       state->domain->sequence_number =
-               state->response->data.domain_info.sequence_number;
 
        init_dc_connection(state->domain);
 
@@ -677,8 +678,6 @@ enum winbindd_result winbindd_dual_init_connection(struct winbindd_domain *domai
                = domain->active_directory;
        state->response.data.domain_info.primary
                = domain->primary;
-       state->response.data.domain_info.sequence_number =
-               domain->sequence_number;
 
        return WINBINDD_OK;
 }
@@ -692,6 +691,31 @@ BOOL init_domain_list(void)
        /* Free existing list */
        free_domain_list();
 
+       /* BUILTIN domain */
+
+       domain = add_trusted_domain("BUILTIN", NULL, &passdb_methods,
+                                   &global_sid_Builtin);
+       if (domain) {
+               setup_domain_child(domain,
+                                  &domain->child,
+                                  domain_dispatch_table,
+                                  NULL);
+       }
+
+       /* Local SAM */
+
+       domain = add_trusted_domain(get_global_sam_name(), NULL,
+                                   &passdb_methods, get_global_sam_sid());
+       if (domain) {
+               if ( role != ROLE_DOMAIN_MEMBER ) {
+                       domain->primary = True;
+               }
+               setup_domain_child(domain,
+                                  &domain->child,
+                                  domain_dispatch_table,
+                                  NULL);
+       }
+
        /* Add ourselves as the first entry. */
 
        if ( role == ROLE_DOMAIN_MEMBER ) {
@@ -706,8 +730,11 @@ BOOL init_domain_list(void)
                                             &cache_methods, &our_sid);
                if (domain) {
                        domain->primary = True;
-                       setup_domain_child(domain, &domain->child, NULL);
-               
+                       setup_domain_child(domain,
+                                          &domain->child,
+                                          domain_dispatch_table,
+                                          NULL);
+
                        /* Even in the parent winbindd we'll need to
                           talk to the DC, so try and see if we can
                           contact it. Theoretically this isn't neccessary
@@ -718,25 +745,6 @@ BOOL init_domain_list(void)
                }
        }
 
-       /* Local SAM */
-
-       domain = add_trusted_domain(get_global_sam_name(), NULL,
-                                   &passdb_methods, get_global_sam_sid());
-       if (domain) {
-               if ( role != ROLE_DOMAIN_MEMBER ) {
-                       domain->primary = True;
-               }
-               setup_domain_child(domain, &domain->child, NULL);
-       }
-
-       /* BUILTIN domain */
-
-       domain = add_trusted_domain("BUILTIN", NULL, &passdb_methods,
-                                   &global_sid_Builtin);
-       if (domain) {
-               setup_domain_child(domain, &domain->child, NULL);
-       }
-
        return True;
 }
 
@@ -771,7 +779,10 @@ void check_domain_trusted( const char *name, const DOM_SID *user_sid )
        domain->internal = False;
        domain->online = True;  
 
-       setup_domain_child(domain, &domain->child, NULL);
+       setup_domain_child(domain,
+                          &domain->child,
+                          domain_dispatch_table,
+                          NULL);
 
        wcache_tdc_add_domain( domain );
 
@@ -1158,6 +1169,11 @@ void fill_domain_username(fstring name, const char *domain, const char *user, BO
  * Winbindd socket accessor functions
  */
 
+const char *get_winbind_pipe_dir(void) 
+{
+       return lp_parm_const_string(-1, "winbindd", "socket dir", WINBINDD_SOCKET_DIR);
+}
+
 char *get_winbind_priv_pipe_dir(void) 
 {
        return lock_path(WINBINDD_PRIV_SOCKET_SUBDIR);