1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-22 13:34:15 +03:00

Revert "winbind4: Remove unused winbind_get_idmap irpc operation"

This reverts commit 41ff0f4454.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
This commit is contained in:
Volker Lendecke 2014-02-18 09:12:28 +00:00
parent bf1e65ceb8
commit 699f86cc27
2 changed files with 94 additions and 2 deletions

View File

@ -4,10 +4,10 @@
#include "idl_types.h"
import "netlogon.idl";
import "netlogon.idl", "lsa.idl", "security.idl", "idmap.idl";
[
uuid("b875118e-47a3-4210-b5f7-c240cce656b2"),
uuid("245f3e6b-3c5d-6e21-3a2d-2a3d645b7221"),
version(1.0),
pointer_default(unique)
]
@ -16,6 +16,15 @@ interface winbind
typedef [switch_type(uint16)] union netr_LogonLevel netr_LogonLevel;
typedef [switch_type(uint16)] union netr_Validation netr_Validation;
/* a call to get runtime informations */
void winbind_information(/* TODO */);
/*
* a call to trigger some internal events,
* for use in torture tests...
*/
NTSTATUS winbind_remote_control(/* TODO */);
/*
* do a netr_LogonSamLogon() against the right DC
*/
@ -27,6 +36,17 @@ interface winbind
[out] uint8 authoritative
);
typedef [v1_enum] enum {
WINBIND_IDMAP_LEVEL_SIDS_TO_XIDS = 1,
WINBIND_IDMAP_LEVEL_XIDS_TO_SIDS = 2
} winbind_get_idmap_level;
NTSTATUS winbind_get_idmap(
[in] winbind_get_idmap_level level,
[in] uint32 count,
[in,out] [size_is(count)] id_map ids[]
);
NTSTATUS winbind_DsrUpdateReadOnlyServerDnsRecords(
[in,unique] [string,charset(UTF16)] uint16 *site_name,
[in] uint32 dns_ttl,

View File

@ -125,6 +125,74 @@ static void wb_irpc_DsrUpdateReadOnlyServerDnsRecords_callback(struct tevent_req
irpc_send_reply(s->msg, status);
}
struct wb_irpc_get_idmap_state {
struct irpc_message *msg;
struct winbind_get_idmap *req;
int level;
};
static void wb_irpc_get_idmap_callback(struct composite_context *ctx);
static NTSTATUS wb_irpc_get_idmap(struct irpc_message *msg,
struct winbind_get_idmap *req)
{
struct wbsrv_service *service = talloc_get_type(msg->private_data,
struct wbsrv_service);
struct wb_irpc_get_idmap_state *s;
struct composite_context *ctx = NULL;
DEBUG(5, ("wb_irpc_get_idmap called\n"));
s = talloc(msg, struct wb_irpc_get_idmap_state);
NT_STATUS_HAVE_NO_MEMORY(s);
s->msg = msg;
s->req = req;
s->level = req->in.level;
switch(s->level) {
case WINBIND_IDMAP_LEVEL_SIDS_TO_XIDS:
ctx = wb_sids2xids_send(msg, service, req->in.count,
req->in.ids);
break;
case WINBIND_IDMAP_LEVEL_XIDS_TO_SIDS:
ctx = wb_xids2sids_send(msg, service, req->in.count,
req->in.ids);
break;
}
NT_STATUS_HAVE_NO_MEMORY(ctx);
composite_continue(ctx, ctx, wb_irpc_get_idmap_callback, s);
msg->defer_reply = true;
return NT_STATUS_OK;
}
static void wb_irpc_get_idmap_callback(struct composite_context *ctx)
{
struct wb_irpc_get_idmap_state *s;
NTSTATUS status;
DEBUG(5, ("wb_irpc_get_idmap_callback called\n"));
s = talloc_get_type(ctx->async.private_data,
struct wb_irpc_get_idmap_state);
switch(s->level) {
case WINBIND_IDMAP_LEVEL_SIDS_TO_XIDS:
status = wb_sids2xids_recv(ctx, &s->req->out.ids, NULL);
break;
case WINBIND_IDMAP_LEVEL_XIDS_TO_SIDS:
status = wb_xids2sids_recv(ctx, &s->req->out.ids);
break;
default:
status = NT_STATUS_INTERNAL_ERROR;
break;
}
irpc_send_reply(s->msg, status);
}
NTSTATUS wbsrv_init_irpc(struct wbsrv_service *service)
{
NTSTATUS status;
@ -139,5 +207,9 @@ NTSTATUS wbsrv_init_irpc(struct wbsrv_service *service)
wb_irpc_DsrUpdateReadOnlyServerDnsRecords, service);
NT_STATUS_NOT_OK_RETURN(status);
status = IRPC_REGISTER(service->task->msg_ctx, winbind, WINBIND_GET_IDMAP,
wb_irpc_get_idmap, service);
NT_STATUS_NOT_OK_RETURN(status);
return NT_STATUS_OK;
}