[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-unstable-647-g075d315

Stefan Metzmacher metze at samba.org
Fri Dec 14 08:01:44 GMT 2007


The branch, v3-2-test has been updated
       via  075d315e0f72d506b70040da10940e4af131b4e2 (commit)
      from  cccb80b7b7980fbe1298ce266375e51bacb4a425 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit 075d315e0f72d506b70040da10940e4af131b4e2
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Dec 13 12:27:57 2007 +0100

    winbindd: move domain child specific stuff into its own file
    
    metze

-----------------------------------------------------------------------

Summary of changes:
 source/Makefile.in                 |    1 +
 source/winbindd/winbindd.h         |    2 -
 source/winbindd/winbindd_domain.c  |  111 ++++++++++++++++++++++++++++++++++++
 source/winbindd/winbindd_dual.c    |   99 +++-----------------------------
 source/winbindd/winbindd_idmap.c   |    7 +-
 source/winbindd/winbindd_locator.c |    7 +-
 source/winbindd/winbindd_util.c    |   20 ++-----
 7 files changed, 133 insertions(+), 114 deletions(-)
 create mode 100644 source/winbindd/winbindd_domain.c


Changeset truncated at 500 lines:

diff --git a/source/Makefile.in b/source/Makefile.in
index 5a8d7e1..c70ad6c 100644
--- a/source/Makefile.in
+++ b/source/Makefile.in
@@ -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
diff --git a/source/winbindd/winbindd.h b/source/winbindd/winbindd.h
index d76e9b5..6bf6e6c 100644
--- a/source/winbindd/winbindd.h
+++ b/source/winbindd/winbindd.h
@@ -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/source/winbindd/winbindd_domain.c b/source/winbindd/winbindd_domain.c
new file mode 100644
index 0000000..1b758cd
--- /dev/null
+++ b/source/winbindd/winbindd_domain.c
@@ -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,
+	}
+};
diff --git a/source/winbindd/winbindd_dual.c b/source/winbindd/winbindd_dual.c
index 08ce7f4..778886d 100644
--- a/source/winbindd/winbindd_dual.c
+++ b/source/winbindd/winbindd_dual.c
@@ -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;
 }
 
diff --git a/source/winbindd/winbindd_idmap.c b/source/winbindd/winbindd_idmap.c
index cc5cf1e..6f7b562 100644
--- a/source/winbindd/winbindd_idmap.c
+++ b/source/winbindd/winbindd_idmap.c
@@ -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)
diff --git a/source/winbindd/winbindd_locator.c b/source/winbindd/winbindd_locator.c
index 67bafc7..ee497eb 100644
--- a/source/winbindd/winbindd_locator.c
+++ b/source/winbindd/winbindd_locator.c
@@ -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)
diff --git a/source/winbindd/winbindd_util.c b/source/winbindd/winbindd_util.c
index 56ae4f2..2389a4b 100644
--- a/source/winbindd/winbindd_util.c
+++ b/source/winbindd/winbindd_util.c
@@ -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 );
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list