}
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;
}
}
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;
}
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
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,
request_ok(state);
}
+
return True;
}
+
+/*********************************************************************
+ ********************************************************************/
+
+BOOL winbindd_internal_child(struct winbindd_child *child)
+{
+ if (child == idmap_child() || child == locator_child()) {
+ return True;
+ }
+
+ return False;
+}