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:
parent
bf1e65ceb8
commit
699f86cc27
@ -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,
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user