1
/* server functions auto-generated by pidl */
2
#include "librpc/gen_ndr/ndr_dsbackup.h"
4
/* ad_backup - dcerpc server boilerplate generated by pidl */
7
static NTSTATUS ad_backup__op_bind(struct dcesrv_call_state *dce_call, const struct dcesrv_interface *iface, uint32_t if_version)
9
#ifdef DCESRV_INTERFACE_AD_BACKUP_BIND
10
return DCESRV_INTERFACE_AD_BACKUP_BIND(dce_call,iface);
16
static void ad_backup__op_unbind(struct dcesrv_connection_context *context, const struct dcesrv_interface *iface)
18
#ifdef DCESRV_INTERFACE_AD_BACKUP_UNBIND
19
DCESRV_INTERFACE_AD_BACKUP_UNBIND(context, iface);
25
static NTSTATUS ad_backup__op_ndr_pull(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct ndr_pull *pull, void **r)
27
enum ndr_err_code ndr_err;
28
uint16_t opnum = dce_call->pkt.u.request.opnum;
30
dce_call->fault_code = 0;
32
if (opnum >= ndr_table_ad_backup.num_calls) {
33
dce_call->fault_code = DCERPC_FAULT_OP_RNG_ERROR;
34
return NT_STATUS_NET_WRITE_FAULT;
37
*r = talloc_named(mem_ctx,
38
ndr_table_ad_backup.calls[opnum].struct_size,
40
ndr_table_ad_backup.calls[opnum].name);
41
NT_STATUS_HAVE_NO_MEMORY(*r);
43
/* unravel the NDR for the packet */
44
ndr_err = ndr_table_ad_backup.calls[opnum].ndr_pull(pull, NDR_IN, *r);
45
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
46
dcerpc_log_packet(dce_call->conn->packet_log_dir,
47
&ndr_table_ad_backup, opnum, NDR_IN,
48
&dce_call->pkt.u.request.stub_and_verifier);
49
dce_call->fault_code = DCERPC_FAULT_NDR;
50
return NT_STATUS_NET_WRITE_FAULT;
56
static NTSTATUS ad_backup__op_dispatch(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, void *r)
58
uint16_t opnum = dce_call->pkt.u.request.opnum;
62
struct HrRBackupPrepare *r2 = (struct HrRBackupPrepare *)r;
63
if (DEBUGLEVEL >= 10) {
64
NDR_PRINT_FUNCTION_DEBUG(HrRBackupPrepare, NDR_IN, r2);
66
dcesrv_HrRBackupPrepare(dce_call, mem_ctx, r2);
67
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
68
DEBUG(5,("function HrRBackupPrepare will reply async\n"));
73
struct HrRBackupEnd *r2 = (struct HrRBackupEnd *)r;
74
if (DEBUGLEVEL >= 10) {
75
NDR_PRINT_FUNCTION_DEBUG(HrRBackupEnd, NDR_IN, r2);
77
dcesrv_HrRBackupEnd(dce_call, mem_ctx, r2);
78
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
79
DEBUG(5,("function HrRBackupEnd will reply async\n"));
84
struct HrRBackupGetAttachmentInformation *r2 = (struct HrRBackupGetAttachmentInformation *)r;
85
if (DEBUGLEVEL >= 10) {
86
NDR_PRINT_FUNCTION_DEBUG(HrRBackupGetAttachmentInformation, NDR_IN, r2);
88
dcesrv_HrRBackupGetAttachmentInformation(dce_call, mem_ctx, r2);
89
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
90
DEBUG(5,("function HrRBackupGetAttachmentInformation will reply async\n"));
95
struct HrRBackupOpenFile *r2 = (struct HrRBackupOpenFile *)r;
96
if (DEBUGLEVEL >= 10) {
97
NDR_PRINT_FUNCTION_DEBUG(HrRBackupOpenFile, NDR_IN, r2);
99
dcesrv_HrRBackupOpenFile(dce_call, mem_ctx, r2);
100
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
101
DEBUG(5,("function HrRBackupOpenFile will reply async\n"));
106
struct HrRBackupRead *r2 = (struct HrRBackupRead *)r;
107
if (DEBUGLEVEL >= 10) {
108
NDR_PRINT_FUNCTION_DEBUG(HrRBackupRead, NDR_IN, r2);
110
dcesrv_HrRBackupRead(dce_call, mem_ctx, r2);
111
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
112
DEBUG(5,("function HrRBackupRead will reply async\n"));
117
struct HrRBackupClose *r2 = (struct HrRBackupClose *)r;
118
if (DEBUGLEVEL >= 10) {
119
NDR_PRINT_FUNCTION_DEBUG(HrRBackupClose, NDR_IN, r2);
121
dcesrv_HrRBackupClose(dce_call, mem_ctx, r2);
122
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
123
DEBUG(5,("function HrRBackupClose will reply async\n"));
128
struct HrRBackupGetBackupLogs *r2 = (struct HrRBackupGetBackupLogs *)r;
129
if (DEBUGLEVEL >= 10) {
130
NDR_PRINT_FUNCTION_DEBUG(HrRBackupGetBackupLogs, NDR_IN, r2);
132
dcesrv_HrRBackupGetBackupLogs(dce_call, mem_ctx, r2);
133
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
134
DEBUG(5,("function HrRBackupGetBackupLogs will reply async\n"));
139
struct HrRBackupTruncateLogs *r2 = (struct HrRBackupTruncateLogs *)r;
140
if (DEBUGLEVEL >= 10) {
141
NDR_PRINT_FUNCTION_DEBUG(HrRBackupTruncateLogs, NDR_IN, r2);
143
dcesrv_HrRBackupTruncateLogs(dce_call, mem_ctx, r2);
144
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
145
DEBUG(5,("function HrRBackupTruncateLogs will reply async\n"));
150
struct HrRBackupPing *r2 = (struct HrRBackupPing *)r;
151
if (DEBUGLEVEL >= 10) {
152
NDR_PRINT_FUNCTION_DEBUG(HrRBackupPing, NDR_IN, r2);
154
dcesrv_HrRBackupPing(dce_call, mem_ctx, r2);
155
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
156
DEBUG(5,("function HrRBackupPing will reply async\n"));
162
dce_call->fault_code = DCERPC_FAULT_OP_RNG_ERROR;
166
if (dce_call->fault_code != 0) {
167
dcerpc_log_packet(dce_call->conn->packet_log_dir,
168
&ndr_table_ad_backup, opnum, NDR_IN,
169
&dce_call->pkt.u.request.stub_and_verifier);
170
return NT_STATUS_NET_WRITE_FAULT;
176
static NTSTATUS ad_backup__op_reply(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, void *r)
178
uint16_t opnum = dce_call->pkt.u.request.opnum;
182
struct HrRBackupPrepare *r2 = (struct HrRBackupPrepare *)r;
183
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
184
DEBUG(5,("function HrRBackupPrepare replied async\n"));
186
if (DEBUGLEVEL >= 10 && dce_call->fault_code == 0) {
187
NDR_PRINT_FUNCTION_DEBUG(HrRBackupPrepare, NDR_OUT | NDR_SET_VALUES, r2);
189
if (dce_call->fault_code != 0) {
190
DEBUG(2,("dcerpc_fault %s in HrRBackupPrepare\n", dcerpc_errstr(mem_ctx, dce_call->fault_code)));
195
struct HrRBackupEnd *r2 = (struct HrRBackupEnd *)r;
196
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
197
DEBUG(5,("function HrRBackupEnd replied async\n"));
199
if (DEBUGLEVEL >= 10 && dce_call->fault_code == 0) {
200
NDR_PRINT_FUNCTION_DEBUG(HrRBackupEnd, NDR_OUT | NDR_SET_VALUES, r2);
202
if (dce_call->fault_code != 0) {
203
DEBUG(2,("dcerpc_fault %s in HrRBackupEnd\n", dcerpc_errstr(mem_ctx, dce_call->fault_code)));
208
struct HrRBackupGetAttachmentInformation *r2 = (struct HrRBackupGetAttachmentInformation *)r;
209
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
210
DEBUG(5,("function HrRBackupGetAttachmentInformation replied async\n"));
212
if (DEBUGLEVEL >= 10 && dce_call->fault_code == 0) {
213
NDR_PRINT_FUNCTION_DEBUG(HrRBackupGetAttachmentInformation, NDR_OUT | NDR_SET_VALUES, r2);
215
if (dce_call->fault_code != 0) {
216
DEBUG(2,("dcerpc_fault %s in HrRBackupGetAttachmentInformation\n", dcerpc_errstr(mem_ctx, dce_call->fault_code)));
221
struct HrRBackupOpenFile *r2 = (struct HrRBackupOpenFile *)r;
222
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
223
DEBUG(5,("function HrRBackupOpenFile replied async\n"));
225
if (DEBUGLEVEL >= 10 && dce_call->fault_code == 0) {
226
NDR_PRINT_FUNCTION_DEBUG(HrRBackupOpenFile, NDR_OUT | NDR_SET_VALUES, r2);
228
if (dce_call->fault_code != 0) {
229
DEBUG(2,("dcerpc_fault %s in HrRBackupOpenFile\n", dcerpc_errstr(mem_ctx, dce_call->fault_code)));
234
struct HrRBackupRead *r2 = (struct HrRBackupRead *)r;
235
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
236
DEBUG(5,("function HrRBackupRead replied async\n"));
238
if (DEBUGLEVEL >= 10 && dce_call->fault_code == 0) {
239
NDR_PRINT_FUNCTION_DEBUG(HrRBackupRead, NDR_OUT | NDR_SET_VALUES, r2);
241
if (dce_call->fault_code != 0) {
242
DEBUG(2,("dcerpc_fault %s in HrRBackupRead\n", dcerpc_errstr(mem_ctx, dce_call->fault_code)));
247
struct HrRBackupClose *r2 = (struct HrRBackupClose *)r;
248
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
249
DEBUG(5,("function HrRBackupClose replied async\n"));
251
if (DEBUGLEVEL >= 10 && dce_call->fault_code == 0) {
252
NDR_PRINT_FUNCTION_DEBUG(HrRBackupClose, NDR_OUT | NDR_SET_VALUES, r2);
254
if (dce_call->fault_code != 0) {
255
DEBUG(2,("dcerpc_fault %s in HrRBackupClose\n", dcerpc_errstr(mem_ctx, dce_call->fault_code)));
260
struct HrRBackupGetBackupLogs *r2 = (struct HrRBackupGetBackupLogs *)r;
261
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
262
DEBUG(5,("function HrRBackupGetBackupLogs replied async\n"));
264
if (DEBUGLEVEL >= 10 && dce_call->fault_code == 0) {
265
NDR_PRINT_FUNCTION_DEBUG(HrRBackupGetBackupLogs, NDR_OUT | NDR_SET_VALUES, r2);
267
if (dce_call->fault_code != 0) {
268
DEBUG(2,("dcerpc_fault %s in HrRBackupGetBackupLogs\n", dcerpc_errstr(mem_ctx, dce_call->fault_code)));
273
struct HrRBackupTruncateLogs *r2 = (struct HrRBackupTruncateLogs *)r;
274
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
275
DEBUG(5,("function HrRBackupTruncateLogs replied async\n"));
277
if (DEBUGLEVEL >= 10 && dce_call->fault_code == 0) {
278
NDR_PRINT_FUNCTION_DEBUG(HrRBackupTruncateLogs, NDR_OUT | NDR_SET_VALUES, r2);
280
if (dce_call->fault_code != 0) {
281
DEBUG(2,("dcerpc_fault %s in HrRBackupTruncateLogs\n", dcerpc_errstr(mem_ctx, dce_call->fault_code)));
286
struct HrRBackupPing *r2 = (struct HrRBackupPing *)r;
287
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
288
DEBUG(5,("function HrRBackupPing replied async\n"));
290
if (DEBUGLEVEL >= 10 && dce_call->fault_code == 0) {
291
NDR_PRINT_FUNCTION_DEBUG(HrRBackupPing, NDR_OUT | NDR_SET_VALUES, r2);
293
if (dce_call->fault_code != 0) {
294
DEBUG(2,("dcerpc_fault %s in HrRBackupPing\n", dcerpc_errstr(mem_ctx, dce_call->fault_code)));
300
dce_call->fault_code = DCERPC_FAULT_OP_RNG_ERROR;
304
if (dce_call->fault_code != 0) {
305
dcerpc_log_packet(dce_call->conn->packet_log_dir,
306
&ndr_table_ad_backup, opnum, NDR_IN,
307
&dce_call->pkt.u.request.stub_and_verifier);
308
return NT_STATUS_NET_WRITE_FAULT;
314
static NTSTATUS ad_backup__op_ndr_push(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct ndr_push *push, const void *r)
316
enum ndr_err_code ndr_err;
317
uint16_t opnum = dce_call->pkt.u.request.opnum;
319
ndr_err = ndr_table_ad_backup.calls[opnum].ndr_push(push, NDR_OUT, r);
320
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
321
dce_call->fault_code = DCERPC_FAULT_NDR;
322
return NT_STATUS_NET_WRITE_FAULT;
328
const struct dcesrv_interface dcesrv_ad_backup_interface = {
330
.syntax_id = {{0xecec0d70,0xa603,0x11d0,{0x96,0xb1},{0x00,0xa0,0xc9,0x1e,0xce,0x30}},1.0},
331
.bind = ad_backup__op_bind,
332
.unbind = ad_backup__op_unbind,
333
.ndr_pull = ad_backup__op_ndr_pull,
334
.dispatch = ad_backup__op_dispatch,
335
.reply = ad_backup__op_reply,
336
.ndr_push = ad_backup__op_ndr_push
340
static NTSTATUS ad_backup__op_init_server(struct dcesrv_context *dce_ctx, const struct dcesrv_endpoint_server *ep_server)
344
for (i=0;i<ndr_table_ad_backup.endpoints->count;i++) {
346
const char *name = ndr_table_ad_backup.endpoints->names[i];
348
ret = dcesrv_interface_register(dce_ctx, name, &dcesrv_ad_backup_interface, NULL);
349
if (!NT_STATUS_IS_OK(ret)) {
350
DEBUG(1,("ad_backup_op_init_server: failed to register endpoint '%s'\n",name));
358
static bool ad_backup__op_interface_by_uuid(struct dcesrv_interface *iface, const struct GUID *uuid, uint32_t if_version)
360
if (dcesrv_ad_backup_interface.syntax_id.if_version == if_version &&
361
GUID_equal(&dcesrv_ad_backup_interface.syntax_id.uuid, uuid)) {
362
memcpy(iface,&dcesrv_ad_backup_interface, sizeof(*iface));
369
static bool ad_backup__op_interface_by_name(struct dcesrv_interface *iface, const char *name)
371
if (strcmp(dcesrv_ad_backup_interface.name, name)==0) {
372
memcpy(iface, &dcesrv_ad_backup_interface, sizeof(*iface));
379
NTSTATUS dcerpc_server_ad_backup_init(void)
382
struct dcesrv_endpoint_server ep_server;
384
/* fill in our name */
385
ep_server.name = "ad_backup";
387
/* fill in all the operations */
388
ep_server.init_server = ad_backup__op_init_server;
390
ep_server.interface_by_uuid = ad_backup__op_interface_by_uuid;
391
ep_server.interface_by_name = ad_backup__op_interface_by_name;
393
/* register ourselves with the DCERPC subsystem. */
394
ret = dcerpc_register_ep_server(&ep_server);
396
if (!NT_STATUS_IS_OK(ret)) {
397
DEBUG(0,("Failed to register 'ad_backup' endpoint server!\n"));
404
/* ad_restore - dcerpc server boilerplate generated by pidl */
407
static NTSTATUS ad_restore__op_bind(struct dcesrv_call_state *dce_call, const struct dcesrv_interface *iface, uint32_t if_version)
409
#ifdef DCESRV_INTERFACE_AD_RESTORE_BIND
410
return DCESRV_INTERFACE_AD_RESTORE_BIND(dce_call,iface);
416
static void ad_restore__op_unbind(struct dcesrv_connection_context *context, const struct dcesrv_interface *iface)
418
#ifdef DCESRV_INTERFACE_AD_RESTORE_UNBIND
419
DCESRV_INTERFACE_AD_RESTORE_UNBIND(context, iface);
425
static NTSTATUS ad_restore__op_ndr_pull(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct ndr_pull *pull, void **r)
427
enum ndr_err_code ndr_err;
428
uint16_t opnum = dce_call->pkt.u.request.opnum;
430
dce_call->fault_code = 0;
432
if (opnum >= ndr_table_ad_restore.num_calls) {
433
dce_call->fault_code = DCERPC_FAULT_OP_RNG_ERROR;
434
return NT_STATUS_NET_WRITE_FAULT;
437
*r = talloc_named(mem_ctx,
438
ndr_table_ad_restore.calls[opnum].struct_size,
440
ndr_table_ad_restore.calls[opnum].name);
441
NT_STATUS_HAVE_NO_MEMORY(*r);
443
/* unravel the NDR for the packet */
444
ndr_err = ndr_table_ad_restore.calls[opnum].ndr_pull(pull, NDR_IN, *r);
445
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
446
dcerpc_log_packet(dce_call->conn->packet_log_dir,
447
&ndr_table_ad_restore, opnum, NDR_IN,
448
&dce_call->pkt.u.request.stub_and_verifier);
449
dce_call->fault_code = DCERPC_FAULT_NDR;
450
return NT_STATUS_NET_WRITE_FAULT;
456
static NTSTATUS ad_restore__op_dispatch(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, void *r)
458
uint16_t opnum = dce_call->pkt.u.request.opnum;
462
struct HrRIsNTDSOnline *r2 = (struct HrRIsNTDSOnline *)r;
463
if (DEBUGLEVEL >= 10) {
464
NDR_PRINT_FUNCTION_DEBUG(HrRIsNTDSOnline, NDR_IN, r2);
466
dcesrv_HrRIsNTDSOnline(dce_call, mem_ctx, r2);
467
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
468
DEBUG(5,("function HrRIsNTDSOnline will reply async\n"));
473
struct HrRRestorePrepare *r2 = (struct HrRRestorePrepare *)r;
474
if (DEBUGLEVEL >= 10) {
475
NDR_PRINT_FUNCTION_DEBUG(HrRRestorePrepare, NDR_IN, r2);
477
dcesrv_HrRRestorePrepare(dce_call, mem_ctx, r2);
478
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
479
DEBUG(5,("function HrRRestorePrepare will reply async\n"));
484
struct HrRRestoreRegister *r2 = (struct HrRRestoreRegister *)r;
485
if (DEBUGLEVEL >= 10) {
486
NDR_PRINT_FUNCTION_DEBUG(HrRRestoreRegister, NDR_IN, r2);
488
dcesrv_HrRRestoreRegister(dce_call, mem_ctx, r2);
489
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
490
DEBUG(5,("function HrRRestoreRegister will reply async\n"));
495
struct HrRRestoreRegisterComplete *r2 = (struct HrRRestoreRegisterComplete *)r;
496
if (DEBUGLEVEL >= 10) {
497
NDR_PRINT_FUNCTION_DEBUG(HrRRestoreRegisterComplete, NDR_IN, r2);
499
dcesrv_HrRRestoreRegisterComplete(dce_call, mem_ctx, r2);
500
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
501
DEBUG(5,("function HrRRestoreRegisterComplete will reply async\n"));
506
struct HrRRestoreGetDatabaseLocations *r2 = (struct HrRRestoreGetDatabaseLocations *)r;
507
if (DEBUGLEVEL >= 10) {
508
NDR_PRINT_FUNCTION_DEBUG(HrRRestoreGetDatabaseLocations, NDR_IN, r2);
510
dcesrv_HrRRestoreGetDatabaseLocations(dce_call, mem_ctx, r2);
511
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
512
DEBUG(5,("function HrRRestoreGetDatabaseLocations will reply async\n"));
517
struct HrRRestoreEnd *r2 = (struct HrRRestoreEnd *)r;
518
if (DEBUGLEVEL >= 10) {
519
NDR_PRINT_FUNCTION_DEBUG(HrRRestoreEnd, NDR_IN, r2);
521
dcesrv_HrRRestoreEnd(dce_call, mem_ctx, r2);
522
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
523
DEBUG(5,("function HrRRestoreEnd will reply async\n"));
528
struct HrRRestoreSetCurrentLogNumber *r2 = (struct HrRRestoreSetCurrentLogNumber *)r;
529
if (DEBUGLEVEL >= 10) {
530
NDR_PRINT_FUNCTION_DEBUG(HrRRestoreSetCurrentLogNumber, NDR_IN, r2);
532
dcesrv_HrRRestoreSetCurrentLogNumber(dce_call, mem_ctx, r2);
533
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
534
DEBUG(5,("function HrRRestoreSetCurrentLogNumber will reply async\n"));
539
struct HrRRestoreCheckLogsForBackup *r2 = (struct HrRRestoreCheckLogsForBackup *)r;
540
if (DEBUGLEVEL >= 10) {
541
NDR_PRINT_FUNCTION_DEBUG(HrRRestoreCheckLogsForBackup, NDR_IN, r2);
543
dcesrv_HrRRestoreCheckLogsForBackup(dce_call, mem_ctx, r2);
544
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
545
DEBUG(5,("function HrRRestoreCheckLogsForBackup will reply async\n"));
551
dce_call->fault_code = DCERPC_FAULT_OP_RNG_ERROR;
555
if (dce_call->fault_code != 0) {
556
dcerpc_log_packet(dce_call->conn->packet_log_dir,
557
&ndr_table_ad_restore, opnum, NDR_IN,
558
&dce_call->pkt.u.request.stub_and_verifier);
559
return NT_STATUS_NET_WRITE_FAULT;
565
static NTSTATUS ad_restore__op_reply(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, void *r)
567
uint16_t opnum = dce_call->pkt.u.request.opnum;
571
struct HrRIsNTDSOnline *r2 = (struct HrRIsNTDSOnline *)r;
572
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
573
DEBUG(5,("function HrRIsNTDSOnline replied async\n"));
575
if (DEBUGLEVEL >= 10 && dce_call->fault_code == 0) {
576
NDR_PRINT_FUNCTION_DEBUG(HrRIsNTDSOnline, NDR_OUT | NDR_SET_VALUES, r2);
578
if (dce_call->fault_code != 0) {
579
DEBUG(2,("dcerpc_fault %s in HrRIsNTDSOnline\n", dcerpc_errstr(mem_ctx, dce_call->fault_code)));
584
struct HrRRestorePrepare *r2 = (struct HrRRestorePrepare *)r;
585
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
586
DEBUG(5,("function HrRRestorePrepare replied async\n"));
588
if (DEBUGLEVEL >= 10 && dce_call->fault_code == 0) {
589
NDR_PRINT_FUNCTION_DEBUG(HrRRestorePrepare, NDR_OUT | NDR_SET_VALUES, r2);
591
if (dce_call->fault_code != 0) {
592
DEBUG(2,("dcerpc_fault %s in HrRRestorePrepare\n", dcerpc_errstr(mem_ctx, dce_call->fault_code)));
597
struct HrRRestoreRegister *r2 = (struct HrRRestoreRegister *)r;
598
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
599
DEBUG(5,("function HrRRestoreRegister replied async\n"));
601
if (DEBUGLEVEL >= 10 && dce_call->fault_code == 0) {
602
NDR_PRINT_FUNCTION_DEBUG(HrRRestoreRegister, NDR_OUT | NDR_SET_VALUES, r2);
604
if (dce_call->fault_code != 0) {
605
DEBUG(2,("dcerpc_fault %s in HrRRestoreRegister\n", dcerpc_errstr(mem_ctx, dce_call->fault_code)));
610
struct HrRRestoreRegisterComplete *r2 = (struct HrRRestoreRegisterComplete *)r;
611
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
612
DEBUG(5,("function HrRRestoreRegisterComplete replied async\n"));
614
if (DEBUGLEVEL >= 10 && dce_call->fault_code == 0) {
615
NDR_PRINT_FUNCTION_DEBUG(HrRRestoreRegisterComplete, NDR_OUT | NDR_SET_VALUES, r2);
617
if (dce_call->fault_code != 0) {
618
DEBUG(2,("dcerpc_fault %s in HrRRestoreRegisterComplete\n", dcerpc_errstr(mem_ctx, dce_call->fault_code)));
623
struct HrRRestoreGetDatabaseLocations *r2 = (struct HrRRestoreGetDatabaseLocations *)r;
624
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
625
DEBUG(5,("function HrRRestoreGetDatabaseLocations replied async\n"));
627
if (DEBUGLEVEL >= 10 && dce_call->fault_code == 0) {
628
NDR_PRINT_FUNCTION_DEBUG(HrRRestoreGetDatabaseLocations, NDR_OUT | NDR_SET_VALUES, r2);
630
if (dce_call->fault_code != 0) {
631
DEBUG(2,("dcerpc_fault %s in HrRRestoreGetDatabaseLocations\n", dcerpc_errstr(mem_ctx, dce_call->fault_code)));
636
struct HrRRestoreEnd *r2 = (struct HrRRestoreEnd *)r;
637
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
638
DEBUG(5,("function HrRRestoreEnd replied async\n"));
640
if (DEBUGLEVEL >= 10 && dce_call->fault_code == 0) {
641
NDR_PRINT_FUNCTION_DEBUG(HrRRestoreEnd, NDR_OUT | NDR_SET_VALUES, r2);
643
if (dce_call->fault_code != 0) {
644
DEBUG(2,("dcerpc_fault %s in HrRRestoreEnd\n", dcerpc_errstr(mem_ctx, dce_call->fault_code)));
649
struct HrRRestoreSetCurrentLogNumber *r2 = (struct HrRRestoreSetCurrentLogNumber *)r;
650
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
651
DEBUG(5,("function HrRRestoreSetCurrentLogNumber replied async\n"));
653
if (DEBUGLEVEL >= 10 && dce_call->fault_code == 0) {
654
NDR_PRINT_FUNCTION_DEBUG(HrRRestoreSetCurrentLogNumber, NDR_OUT | NDR_SET_VALUES, r2);
656
if (dce_call->fault_code != 0) {
657
DEBUG(2,("dcerpc_fault %s in HrRRestoreSetCurrentLogNumber\n", dcerpc_errstr(mem_ctx, dce_call->fault_code)));
662
struct HrRRestoreCheckLogsForBackup *r2 = (struct HrRRestoreCheckLogsForBackup *)r;
663
if (dce_call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC) {
664
DEBUG(5,("function HrRRestoreCheckLogsForBackup replied async\n"));
666
if (DEBUGLEVEL >= 10 && dce_call->fault_code == 0) {
667
NDR_PRINT_FUNCTION_DEBUG(HrRRestoreCheckLogsForBackup, NDR_OUT | NDR_SET_VALUES, r2);
669
if (dce_call->fault_code != 0) {
670
DEBUG(2,("dcerpc_fault %s in HrRRestoreCheckLogsForBackup\n", dcerpc_errstr(mem_ctx, dce_call->fault_code)));
676
dce_call->fault_code = DCERPC_FAULT_OP_RNG_ERROR;
680
if (dce_call->fault_code != 0) {
681
dcerpc_log_packet(dce_call->conn->packet_log_dir,
682
&ndr_table_ad_restore, opnum, NDR_IN,
683
&dce_call->pkt.u.request.stub_and_verifier);
684
return NT_STATUS_NET_WRITE_FAULT;
690
static NTSTATUS ad_restore__op_ndr_push(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct ndr_push *push, const void *r)
692
enum ndr_err_code ndr_err;
693
uint16_t opnum = dce_call->pkt.u.request.opnum;
695
ndr_err = ndr_table_ad_restore.calls[opnum].ndr_push(push, NDR_OUT, r);
696
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
697
dce_call->fault_code = DCERPC_FAULT_NDR;
698
return NT_STATUS_NET_WRITE_FAULT;
704
const struct dcesrv_interface dcesrv_ad_restore_interface = {
705
.name = "ad_restore",
706
.syntax_id = {{0x16e0cf3a,0xa604,0x11d0,{0x96,0xb1},{0x00,0xa0,0xc9,0x1e,0xce,0x30}},1.0},
707
.bind = ad_restore__op_bind,
708
.unbind = ad_restore__op_unbind,
709
.ndr_pull = ad_restore__op_ndr_pull,
710
.dispatch = ad_restore__op_dispatch,
711
.reply = ad_restore__op_reply,
712
.ndr_push = ad_restore__op_ndr_push
716
static NTSTATUS ad_restore__op_init_server(struct dcesrv_context *dce_ctx, const struct dcesrv_endpoint_server *ep_server)
720
for (i=0;i<ndr_table_ad_restore.endpoints->count;i++) {
722
const char *name = ndr_table_ad_restore.endpoints->names[i];
724
ret = dcesrv_interface_register(dce_ctx, name, &dcesrv_ad_restore_interface, NULL);
725
if (!NT_STATUS_IS_OK(ret)) {
726
DEBUG(1,("ad_restore_op_init_server: failed to register endpoint '%s'\n",name));
734
static bool ad_restore__op_interface_by_uuid(struct dcesrv_interface *iface, const struct GUID *uuid, uint32_t if_version)
736
if (dcesrv_ad_restore_interface.syntax_id.if_version == if_version &&
737
GUID_equal(&dcesrv_ad_restore_interface.syntax_id.uuid, uuid)) {
738
memcpy(iface,&dcesrv_ad_restore_interface, sizeof(*iface));
745
static bool ad_restore__op_interface_by_name(struct dcesrv_interface *iface, const char *name)
747
if (strcmp(dcesrv_ad_restore_interface.name, name)==0) {
748
memcpy(iface, &dcesrv_ad_restore_interface, sizeof(*iface));
755
NTSTATUS dcerpc_server_ad_restore_init(void)
758
struct dcesrv_endpoint_server ep_server;
760
/* fill in our name */
761
ep_server.name = "ad_restore";
763
/* fill in all the operations */
764
ep_server.init_server = ad_restore__op_init_server;
766
ep_server.interface_by_uuid = ad_restore__op_interface_by_uuid;
767
ep_server.interface_by_name = ad_restore__op_interface_by_name;
769
/* register ourselves with the DCERPC subsystem. */
770
ret = dcerpc_register_ep_server(&ep_server);
772
if (!NT_STATUS_IS_OK(ret)) {
773
DEBUG(0,("Failed to register 'ad_restore' endpoint server!\n"));