svn commit: samba r24778 - in branches: SAMBA_3_2/source/nsswitch SAMBA_3_2_0/source/nsswitch

gd at samba.org gd at samba.org
Wed Aug 29 12:43:28 GMT 2007


Author: gd
Date: 2007-08-29 12:43:23 +0000 (Wed, 29 Aug 2007)
New Revision: 24778

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=24778

Log:
Make sure krb5 locator requests go to a separate locator winbind child.

Guenther

Modified:
   branches/SAMBA_3_2/source/nsswitch/winbindd.c
   branches/SAMBA_3_2/source/nsswitch/winbindd_dual.c
   branches/SAMBA_3_2/source/nsswitch/winbindd_misc.c
   branches/SAMBA_3_2/source/nsswitch/winbindd_util.c
   branches/SAMBA_3_2_0/source/nsswitch/winbindd.c
   branches/SAMBA_3_2_0/source/nsswitch/winbindd_dual.c
   branches/SAMBA_3_2_0/source/nsswitch/winbindd_misc.c
   branches/SAMBA_3_2_0/source/nsswitch/winbindd_util.c


Changeset:
Modified: branches/SAMBA_3_2/source/nsswitch/winbindd.c
===================================================================
--- branches/SAMBA_3_2/source/nsswitch/winbindd.c	2007-08-29 12:39:58 UTC (rev 24777)
+++ branches/SAMBA_3_2/source/nsswitch/winbindd.c	2007-08-29 12:43:23 UTC (rev 24778)
@@ -1184,6 +1184,7 @@
 	}
 
 	init_idmap_child();
+	init_locator_child();
 
 	smb_nscd_flush_user_cache();
 	smb_nscd_flush_group_cache();

Modified: branches/SAMBA_3_2/source/nsswitch/winbindd_dual.c
===================================================================
--- branches/SAMBA_3_2/source/nsswitch/winbindd_dual.c	2007-08-29 12:39:58 UTC (rev 24777)
+++ branches/SAMBA_3_2/source/nsswitch/winbindd_dual.c	2007-08-29 12:43:23 UTC (rev 24778)
@@ -579,9 +579,9 @@
 	}
 
 	for (child = children; child != NULL; child = child->next) {
-		/* Don't send message to idmap child.  We've already
+		/* Don't send message to internal childs.  We've already
 		   done so above. */
-		if (!child->domain || (child == idmap_child())) {
+		if (!child->domain || winbindd_internal_child(child)) {
 			continue;
 		}
 
@@ -655,8 +655,8 @@
 	}
 
 	for (child = children; child != NULL; child = child->next) {
-		/* Don't send message to idmap child. */
-		if (!child->domain || (child == idmap_child())) {
+		/* Don't send message to internal childs. */
+		if (!child->domain || winbindd_internal_child(child)) {
 			continue;
 		}
 

Modified: branches/SAMBA_3_2/source/nsswitch/winbindd_misc.c
===================================================================
--- branches/SAMBA_3_2/source/nsswitch/winbindd_misc.c	2007-08-29 12:39:58 UTC (rev 24777)
+++ branches/SAMBA_3_2/source/nsswitch/winbindd_misc.c	2007-08-29 12:43:23 UTC (rev 24778)
@@ -270,6 +270,18 @@
 	return WINBINDD_OK;
 }
 
+static struct winbindd_child static_locator_child;
+
+void init_locator_child(void)
+{
+	setup_domain_child(NULL, &static_locator_child, "locator");
+}
+
+struct winbindd_child *locator_child(void)
+{
+	return &static_locator_child;
+}
+
 void winbindd_dsgetdcname(struct winbindd_cli_state *state)
 {
 	state->request.domain_name
@@ -278,7 +290,7 @@
 	DEBUG(3, ("[%5lu]: DsGetDcName for %s\n", (unsigned long)state->pid,
 		  state->request.domain_name));
 
-	sendto_domain(state, find_our_domain());
+	sendto_child(state, locator_child());
 }
 
 enum winbindd_result winbindd_dual_dsgetdcname(struct winbindd_domain *domain,
@@ -603,3 +615,4 @@
 
 	request_ok(state);
 }
+

Modified: branches/SAMBA_3_2/source/nsswitch/winbindd_util.c
===================================================================
--- branches/SAMBA_3_2/source/nsswitch/winbindd_util.c	2007-08-29 12:39:58 UTC (rev 24777)
+++ branches/SAMBA_3_2/source/nsswitch/winbindd_util.c	2007-08-29 12:43:23 UTC (rev 24778)
@@ -1353,3 +1353,15 @@
 	
 	return True;	
 }
+
+/*********************************************************************
+ ********************************************************************/
+
+BOOL winbindd_internal_child(struct winbindd_child *child)
+{
+	if (child == idmap_child() || child == locator_child()) {
+		return True;
+	}
+
+	return False;
+}

Modified: branches/SAMBA_3_2_0/source/nsswitch/winbindd.c
===================================================================
--- branches/SAMBA_3_2_0/source/nsswitch/winbindd.c	2007-08-29 12:39:58 UTC (rev 24777)
+++ branches/SAMBA_3_2_0/source/nsswitch/winbindd.c	2007-08-29 12:43:23 UTC (rev 24778)
@@ -1153,6 +1153,7 @@
 	}
 
 	init_idmap_child();
+	init_locator_child();
 
 	smb_nscd_flush_user_cache();
 	smb_nscd_flush_group_cache();

Modified: branches/SAMBA_3_2_0/source/nsswitch/winbindd_dual.c
===================================================================
--- branches/SAMBA_3_2_0/source/nsswitch/winbindd_dual.c	2007-08-29 12:39:58 UTC (rev 24777)
+++ branches/SAMBA_3_2_0/source/nsswitch/winbindd_dual.c	2007-08-29 12:43:23 UTC (rev 24778)
@@ -579,9 +579,9 @@
 	}
 
 	for (child = children; child != NULL; child = child->next) {
-		/* Don't send message to idmap child.  We've already
+		/* Don't send message to internal childs.  We've already
 		   done so above. */
-		if (!child->domain || (child == idmap_child())) {
+		if (!child->domain || winbindd_internal_child(child)) {
 			continue;
 		}
 
@@ -655,8 +655,8 @@
 	}
 
 	for (child = children; child != NULL; child = child->next) {
-		/* Don't send message to idmap child. */
-		if (!child->domain || (child == idmap_child())) {
+		/* Don't send message to internal childs. */
+		if (!child->domain || winbindd_internal_child(child)) {
 			continue;
 		}
 

Modified: branches/SAMBA_3_2_0/source/nsswitch/winbindd_misc.c
===================================================================
--- branches/SAMBA_3_2_0/source/nsswitch/winbindd_misc.c	2007-08-29 12:39:58 UTC (rev 24777)
+++ branches/SAMBA_3_2_0/source/nsswitch/winbindd_misc.c	2007-08-29 12:43:23 UTC (rev 24778)
@@ -270,6 +270,18 @@
 	return WINBINDD_OK;
 }
 
+static struct winbindd_child static_locator_child;
+
+void init_locator_child(void)
+{
+	setup_domain_child(NULL, &static_locator_child, "locator");
+}
+
+struct winbindd_child *locator_child(void)
+{
+	return &static_locator_child;
+}
+
 void winbindd_dsgetdcname(struct winbindd_cli_state *state)
 {
 	state->request.domain_name
@@ -278,7 +290,7 @@
 	DEBUG(3, ("[%5lu]: DsGetDcName for %s\n", (unsigned long)state->pid,
 		  state->request.domain_name));
 
-	sendto_domain(state, find_our_domain());
+	sendto_child(state, locator_child());
 }
 
 enum winbindd_result winbindd_dual_dsgetdcname(struct winbindd_domain *domain,
@@ -603,3 +615,4 @@
 
 	request_ok(state);
 }
+

Modified: branches/SAMBA_3_2_0/source/nsswitch/winbindd_util.c
===================================================================
--- branches/SAMBA_3_2_0/source/nsswitch/winbindd_util.c	2007-08-29 12:39:58 UTC (rev 24777)
+++ branches/SAMBA_3_2_0/source/nsswitch/winbindd_util.c	2007-08-29 12:43:23 UTC (rev 24778)
@@ -1401,3 +1401,15 @@
 	
 	return True;	
 }
+
+/*********************************************************************
+ ********************************************************************/
+
+BOOL winbindd_internal_child(struct winbindd_child *child)
+{
+	if (child == idmap_child() || child == locator_child()) {
+		return True;
+	}
+
+	return False;
+}



More information about the samba-cvs mailing list