From 9d62046b0e09fa7a4a660859dd8651e6d60c8dc8 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 19 Aug 2004 13:32:06 +0000 Subject: r1919: paasword change basicly works now:-) but we need to find the real pdc for the users domain and fallback to other levels metze (This used to be commit f1b9c1f3dd0fb927c065541da900ae43e0018a62) --- source4/libnet/libnet_rpc.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'source4/libnet/libnet_rpc.c') diff --git a/source4/libnet/libnet_rpc.c b/source4/libnet/libnet_rpc.c index 0ab07fa4a5..c76498d0bb 100644 --- a/source4/libnet/libnet_rpc.c +++ b/source4/libnet/libnet_rpc.c @@ -20,8 +20,40 @@ #include "includes.h" +/* connect to a dcerpc interface of a domains PDC */ +NTSTATUS libnet_rpc_connect_pdc(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, union libnet_rpc_connect *r) +{ + NTSTATUS status; + const char *binding = NULL; + const char *pdc = NULL; + + /* TODO: find real PDC! + * for now I use the lp_netbios_name() + * that's the most important for me as we don't have + * smbpasswd in samba4 (and this is good!:-) --metze + */ + pdc = lp_netbios_name(); + + binding = talloc_asprintf(mem_ctx, "ncacn_np:%s",pdc); + + status = dcerpc_pipe_connect(&r->pdc.out.dcerpc_pipe, + binding, + r->pdc.in.dcerpc_iface_uuid, + r->pdc.in.dcerpc_iface_version, + ctx->user.domain_name, + ctx->user.account_name, + ctx->user.password); + + return status; +} + /* connect to a dcerpc interface */ NTSTATUS libnet_rpc_connect(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, union libnet_rpc_connect *r) { - return NT_STATUS_NOT_IMPLEMENTED; + switch (r->pdc.level) { + case LIBNET_RPC_CONNECT_PDC: + return libnet_rpc_connect_pdc(ctx, mem_ctx, r); + } + + return NT_STATUS_INVALID_LEVEL; } -- cgit