winbindd: move domain child specific stuff into its own file
authorStefan Metzmacher <metze@samba.org>
Thu, 13 Dec 2007 11:27:57 +0000 (12:27 +0100)
committerStefan Metzmacher <metze@samba.org>
Fri, 14 Dec 2007 07:28:35 +0000 (08:28 +0100)
metze
(This used to be commit 075d315e0f72d506b70040da10940e4af131b4e2)

source3/Makefile.in
source3/winbindd/winbindd.h
source3/winbindd/winbindd_domain.c [new file with mode: 0644]
source3/winbindd/winbindd_dual.c
source3/winbindd/winbindd_idmap.c
source3/winbindd/winbindd_locator.c
source3/winbindd/winbindd_util.c

index 5a8d7e19a8eebf305d149551b000dd878b6f00ba..c70ad6cfbb4eeee233a4ad6a045d56c609167316 100644 (file)
@@ -873,6 +873,7 @@ WINBINDD_OBJ1 = \
                winbindd/winbindd_creds.o \
                winbindd/winbindd_cred_cache.o \
                winbindd/winbindd_ccache_access.o \
+               winbindd/winbindd_domain.o \
                winbindd/winbindd_idmap.o \
                winbindd/winbindd_locator.o \
                auth/token_util.o
index d76e9b59219e3ca762dd3ec47244e6c8036d2963..6bf6e6c68f91213425d1953e8d6997710e1233fb 100644 (file)
@@ -143,8 +143,6 @@ struct winbindd_child_dispatch_table {
                                          struct winbindd_cli_state *state);
 };
 
-extern const struct winbindd_child_dispatch_table domain_dispatch_table[];
-
 struct winbindd_child {
        struct winbindd_child *next, *prev;
 
diff --git a/source3/winbindd/winbindd_domain.c b/source3/winbindd/winbindd_domain.c
new file mode 100644 (file)
index 0000000..1b758cd
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+   Unix SMB/CIFS implementation.
+
+   Winbind domain child functions
+
+   Copyright (C) Stefan Metzmacher 2007
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "includes.h"
+#include "winbindd.h"
+
+#undef DBGC_CLASS
+#define DBGC_CLASS DBGC_WINBIND
+
+static const struct winbindd_child_dispatch_table domain_dispatch_table[];
+
+void setup_domain_child(struct winbindd_domain *domain,
+                       struct winbindd_child *child)
+{
+       setup_child(child, domain_dispatch_table,
+                   "log.wb", domain->name);
+
+       child->domain = domain;
+}
+
+static const struct winbindd_child_dispatch_table domain_dispatch_table[] = {
+       {
+               .name           = "LOOKUPSID",
+               .struct_cmd     = WINBINDD_LOOKUPSID,
+               .struct_fn      = winbindd_dual_lookupsid,
+       },{
+               .name           = "LOOKUPNAME",
+               .struct_cmd     = WINBINDD_LOOKUPNAME,
+               .struct_fn      = winbindd_dual_lookupname,
+       },{
+               .name           = "LOOKUPRIDS",
+               .struct_cmd     = WINBINDD_LOOKUPRIDS,
+               .struct_fn      = winbindd_dual_lookuprids,
+       },{
+               .name           = "LIST_TRUSTDOM",
+               .struct_cmd     = WINBINDD_LIST_TRUSTDOM,
+               .struct_fn      = winbindd_dual_list_trusted_domains,
+       },{
+               .name           = "INIT_CONNECTION",
+               .struct_cmd     = WINBINDD_INIT_CONNECTION,
+               .struct_fn      = winbindd_dual_init_connection,
+       },{
+               .name           = "GETDCNAME",
+               .struct_cmd     = WINBINDD_GETDCNAME,
+               .struct_fn      = winbindd_dual_getdcname,
+       },{
+               .name           = "SHOW_SEQUENCE",
+               .struct_cmd     = WINBINDD_SHOW_SEQUENCE,
+               .struct_fn      = winbindd_dual_show_sequence,
+       },{
+               .name           = "PAM_AUTH",
+               .struct_cmd     = WINBINDD_PAM_AUTH,
+               .struct_fn      = winbindd_dual_pam_auth,
+       },{
+               .name           = "AUTH_CRAP",
+               .struct_cmd     = WINBINDD_PAM_AUTH_CRAP,
+               .struct_fn      = winbindd_dual_pam_auth_crap,
+       },{
+               .name           = "PAM_LOGOFF",
+               .struct_cmd     = WINBINDD_PAM_LOGOFF,
+               .struct_fn      = winbindd_dual_pam_logoff,
+       },{
+               .name           = "CHNG_PSWD_AUTH_CRAP",
+               .struct_cmd     = WINBINDD_PAM_CHNG_PSWD_AUTH_CRAP,
+               .struct_fn      = winbindd_dual_pam_chng_pswd_auth_crap,
+       },{
+               .name           = "PAM_CHAUTHTOK",
+               .struct_cmd     = WINBINDD_PAM_CHAUTHTOK,
+               .struct_fn      = winbindd_dual_pam_chauthtok,
+       },{
+               .name           = "CHECK_MACHACC",
+               .struct_cmd     = WINBINDD_CHECK_MACHACC,
+               .struct_fn      = winbindd_dual_check_machine_acct,
+       },{
+               .name           = "DUAL_USERINFO",
+               .struct_cmd     = WINBINDD_DUAL_USERINFO,
+               .struct_fn      = winbindd_dual_userinfo,
+       },{
+               .name           = "GETUSERDOMGROUPS",
+               .struct_cmd     = WINBINDD_GETUSERDOMGROUPS,
+               .struct_fn      = winbindd_dual_getuserdomgroups,
+       },{
+               .name           = "GETSIDALIASES",
+               .struct_cmd     = WINBINDD_DUAL_GETSIDALIASES,
+               .struct_fn      = winbindd_dual_getsidaliases,
+       },{
+               .name           = "CCACHE_NTLM_AUTH",
+               .struct_cmd     = WINBINDD_CCACHE_NTLMAUTH,
+               .struct_fn      = winbindd_dual_ccache_ntlm_auth,
+       },{
+               .name           = NULL,
+       }
+};
index 08ce7f4f55eabc724ae5f6177748566c5e646cda..778886d8e28b87767f2d0eb63082563bc324f912 100644 (file)
@@ -408,80 +408,6 @@ void sendto_domain(struct winbindd_cli_state *state,
                             recvfrom_child, state);
 }
 
-const struct winbindd_child_dispatch_table domain_dispatch_table[] = {
-       {
-               .name           = "LOOKUPSID",
-               .struct_cmd     = WINBINDD_LOOKUPSID,
-               .struct_fn      = winbindd_dual_lookupsid,
-       },{
-               .name           = "LOOKUPNAME",
-               .struct_cmd     = WINBINDD_LOOKUPNAME,
-               .struct_fn      = winbindd_dual_lookupname,
-       },{
-               .name           = "LOOKUPRIDS",
-               .struct_cmd     = WINBINDD_LOOKUPRIDS,
-               .struct_fn      = winbindd_dual_lookuprids,
-       },{
-               .name           = "LIST_TRUSTDOM",
-               .struct_cmd     = WINBINDD_LIST_TRUSTDOM,
-               .struct_fn      = winbindd_dual_list_trusted_domains,
-       },{
-               .name           = "INIT_CONNECTION",
-               .struct_cmd     = WINBINDD_INIT_CONNECTION,
-               .struct_fn      = winbindd_dual_init_connection,
-       },{
-               .name           = "GETDCNAME",
-               .struct_cmd     = WINBINDD_GETDCNAME,
-               .struct_fn      = winbindd_dual_getdcname,
-       },{
-               .name           = "SHOW_SEQUENCE",
-               .struct_cmd     = WINBINDD_SHOW_SEQUENCE,
-               .struct_fn      = winbindd_dual_show_sequence,
-       },{
-               .name           = "PAM_AUTH",
-               .struct_cmd     = WINBINDD_PAM_AUTH,
-               .struct_fn      = winbindd_dual_pam_auth,
-       },{
-               .name           = "AUTH_CRAP",
-               .struct_cmd     = WINBINDD_PAM_AUTH_CRAP,
-               .struct_fn      = winbindd_dual_pam_auth_crap,
-       },{
-               .name           = "PAM_LOGOFF",
-               .struct_cmd     = WINBINDD_PAM_LOGOFF,
-               .struct_fn      = winbindd_dual_pam_logoff,
-       },{
-               .name           = "CHNG_PSWD_AUTH_CRAP",
-               .struct_cmd     = WINBINDD_PAM_CHNG_PSWD_AUTH_CRAP,
-               .struct_fn      = winbindd_dual_pam_chng_pswd_auth_crap,
-       },{
-               .name           = "PAM_CHAUTHTOK",
-               .struct_cmd     = WINBINDD_PAM_CHAUTHTOK,
-               .struct_fn      = winbindd_dual_pam_chauthtok,
-       },{
-               .name           = "CHECK_MACHACC",
-               .struct_cmd     = WINBINDD_CHECK_MACHACC,
-               .struct_fn      = winbindd_dual_check_machine_acct,
-       },{
-               .name           = "DUAL_USERINFO",
-               .struct_cmd     = WINBINDD_DUAL_USERINFO,
-               .struct_fn      = winbindd_dual_userinfo,
-       },{
-               .name           = "GETUSERDOMGROUPS",
-               .struct_cmd     = WINBINDD_GETUSERDOMGROUPS,
-               .struct_fn      = winbindd_dual_getuserdomgroups,
-       },{
-               .name           = "GETSIDALIASES",
-               .struct_cmd     = WINBINDD_DUAL_GETSIDALIASES,
-               .struct_fn      = winbindd_dual_getsidaliases,
-       },{
-               .name           = "CCACHE_NTLM_AUTH",
-               .struct_cmd     = WINBINDD_CCACHE_NTLMAUTH,
-               .struct_fn      = winbindd_dual_ccache_ntlm_auth,
-       },{
-               .name           = NULL,
-       }
-};
-
 static void child_process_request(struct winbindd_child *child,
                                  struct winbindd_cli_state *state)
 {
@@ -513,27 +439,22 @@ static void child_process_request(struct winbindd_child *child,
        state->response.result = WINBINDD_ERROR;
 }
 
-void setup_domain_child(struct winbindd_domain *domain,
-                       struct winbindd_child *child,
-                       const struct winbindd_child_dispatch_table *table,
-                       const char *explicit_logfile)
+void setup_child(struct winbindd_child *child,
+                const struct winbindd_child_dispatch_table *table,
+                const char *logprefix,
+                const char *logname)
 {
-       if (explicit_logfile != NULL) {
-               if (asprintf(&child->logfilename, "%s/log.winbindd-%s",
-                            get_dyn_LOGFILEBASE(), explicit_logfile) < 0) {
-                       smb_panic("Internal error: asprintf failed");
-               }
-       } else if (domain != NULL) {
-               if (asprintf(&child->logfilename, "%s/log.wb-%s",
-                            get_dyn_LOGFILEBASE(), domain->name) < 0) {
+       if (logprefix && logname) {
+               if (asprintf(&child->logfilename, "%s/%s-%s",
+                            get_dyn_LOGFILEBASE(), logprefix, logname) < 0) {
                        smb_panic("Internal error: asprintf failed");
                }
        } else {
-               smb_panic("Internal error: domain == NULL && "
-                         "explicit_logfile == NULL");
+               smb_panic("Internal error: logprefix == NULL && "
+                         "logname == NULL");
        }
 
-       child->domain = domain;
+       child->domain = NULL;
        child->table = table;
 }
 
index cc5cf1e84874dacded831408edfa926e53e3d68d..6f7b5624150e01e770ec46644a7e76706ea05422 100644 (file)
@@ -44,10 +44,9 @@ static struct winbindd_child static_idmap_child;
 
 void init_idmap_child(void)
 {
-       setup_domain_child(NULL,
-                          &static_idmap_child,
-                          idmap_dispatch_table,
-                          "idmap");
+       setup_child(&static_idmap_child,
+                   idmap_dispatch_table,
+                   "log.winbindd", "idmap");
 }
 
 struct winbindd_child *idmap_child(void)
index 67bafc7c075f8aa98bd2838740fa34c8813cdb35..ee497ebf32092e667e75bbe65b2abfebd6138c49 100644 (file)
@@ -33,10 +33,9 @@ static struct winbindd_child static_locator_child;
 
 void init_locator_child(void)
 {
-       setup_domain_child(NULL,
-                          &static_locator_child,
-                          locator_dispatch_table,
-                          "locator");
+       setup_child(&static_locator_child,
+                   locator_dispatch_table,
+                   "log.winbindd", "locator");
 }
 
 struct winbindd_child *locator_child(void)
index 56ae4f27bb21f74738632ee65f366a82e68ed760..2389a4be13aa0d591482d10719ba7002a35b444d 100644 (file)
@@ -326,9 +326,7 @@ static void trustdom_recv(void *private_data, bool success)
                                                    &sid);
                        if (domain) {
                                setup_domain_child(domain,
-                                                  &domain->child,
-                                                  domain_dispatch_table,
-                                                  NULL);
+                                                  &domain->child);
                        }
                }
                p=q;
@@ -698,9 +696,7 @@ bool init_domain_list(void)
                                    &global_sid_Builtin);
        if (domain) {
                setup_domain_child(domain,
-                                  &domain->child,
-                                  domain_dispatch_table,
-                                  NULL);
+                                  &domain->child);
        }
 
        /* Local SAM */
@@ -712,9 +708,7 @@ bool init_domain_list(void)
                        domain->primary = True;
                }
                setup_domain_child(domain,
-                                  &domain->child,
-                                  domain_dispatch_table,
-                                  NULL);
+                                  &domain->child);
        }
 
        /* Add ourselves as the first entry. */
@@ -732,9 +726,7 @@ bool init_domain_list(void)
                if (domain) {
                        domain->primary = True;
                        setup_domain_child(domain,
-                                          &domain->child,
-                                          domain_dispatch_table,
-                                          NULL);
+                                          &domain->child);
 
                        /* Even in the parent winbindd we'll need to
                           talk to the DC, so try and see if we can
@@ -781,9 +773,7 @@ void check_domain_trusted( const char *name, const DOM_SID *user_sid )
        domain->online = True;  
 
        setup_domain_child(domain,
-                          &domain->child,
-                          domain_dispatch_table,
-                          NULL);
+                          &domain->child);
 
        wcache_tdc_add_domain( domain );