From: Stefan Metzmacher Date: Fri, 7 Dec 2007 23:25:26 +0000 (+0100) Subject: wb-ndr: use winbindd_get_dc_info_async_child() to implement WINBINDD_DSGETDCNAME X-Git-Url: http://git.samba.org/?p=metze%2Fsamba%2Fwb-ndr.git;a=commitdiff_plain;h=984f20c111ecd0ee0c81aa57b7fcf8e84e712c87 wb-ndr: use winbindd_get_dc_info_async_child() to implement WINBINDD_DSGETDCNAME metze --- diff --git a/source/winbindd/winbindd_locator.c b/source/winbindd/winbindd_locator.c index f1eebab612c..340c942b184 100644 --- a/source/winbindd/winbindd_locator.c +++ b/source/winbindd/winbindd_locator.c @@ -43,15 +43,48 @@ struct winbindd_child *locator_child(void) return &static_locator_child; } +static void winbindd_dsgetdcname_recv(void *private_data, + bool success, + struct winbind_get_dc_info *r) +{ + struct winbindd_cli_state *state = + talloc_get_type_abort(private_data, struct winbindd_cli_state); + + if (!success) { + request_error(state); + return; + } + + fstrcpy(state->response.data.dc_name, r->out.dc_info->name); + + request_ok(state); +} + void winbindd_dsgetdcname(struct winbindd_cli_state *state) { + struct winbind_get_dc_info *r; + state->request.domain_name [sizeof(state->request.domain_name)-1] = '\0'; DEBUG(3, ("[%5lu]: dsgetdcname for %s\n", (unsigned long)state->pid, state->request.domain_name)); - sendto_child(state, locator_child()); + r = TALLOC_P(state->mem_ctx, struct winbind_get_dc_info); + if (!r) goto nomem; + r->in.level = TALLOC_P(r, enum winbind_dc_info_level); + if (!r->in.level) goto nomem; + + *r->in.level = WINBIND_DC_INFO_LEVEL_COMPAT_DS; + r->in.domain_name = state->request.domain_name; + r->in.params.flags = state->request.flags; + + winbindd_get_dc_info_async_child(state->mem_ctx, locator_child(), + r, winbindd_dsgetdcname_recv, state); + return; +nomem: + request_error(state); + return; } static enum winbindd_result dual_dsgetdcname(struct winbindd_domain *domain,