2
* Unix SMB/CIFS implementation.
3
* server auto-generated by pidl. DO NOT MODIFY!
8
#include "librpc/gen_ndr/srv_oxidresolver.h"
10
static bool api_ResolveOxid(struct pipes_struct *p)
12
const struct ndr_interface_call *call;
13
struct ndr_pull *pull;
14
struct ndr_push *push;
15
enum ndr_err_code ndr_err;
16
struct ResolveOxid *r;
18
call = &ndr_table_IOXIDResolver.calls[NDR_RESOLVEOXID];
20
r = talloc(talloc_tos(), struct ResolveOxid);
25
pull = ndr_pull_init_blob(&p->in_data.data, r);
31
pull->flags |= LIBNDR_FLAG_REF_ALLOC;
33
pull->flags |= LIBNDR_FLAG_BIGENDIAN;
35
ndr_err = call->ndr_pull(pull, NDR_IN, r);
36
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
41
if (DEBUGLEVEL >= 10) {
42
NDR_PRINT_FUNCTION_DEBUG(ResolveOxid, NDR_IN, r);
46
r->out.ppdsaOxidBindings = talloc_zero(r, struct DUALSTRINGARRAY *);
47
if (r->out.ppdsaOxidBindings == NULL) {
52
r->out.pipidRemUnknown = talloc_zero(r, struct GUID);
53
if (r->out.pipidRemUnknown == NULL) {
58
r->out.pAuthnHint = talloc_zero(r, uint32_t);
59
if (r->out.pAuthnHint == NULL) {
64
r->out.result = _ResolveOxid(p, r);
66
if (p->rng_fault_state) {
68
/* Return true here, srv_pipe_hnd.c will take care */
72
if (DEBUGLEVEL >= 10) {
73
NDR_PRINT_FUNCTION_DEBUG(ResolveOxid, NDR_OUT | NDR_SET_VALUES, r);
76
push = ndr_push_init_ctx(r);
83
* carry over the pointer count to the reply in case we are
84
* using full pointer. See NDR specification for full pointers
86
push->ptr_count = pull->ptr_count;
88
ndr_err = call->ndr_push(push, NDR_OUT, r);
89
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
94
p->out_data.rdata = ndr_push_blob(push);
95
talloc_steal(p->mem_ctx, p->out_data.rdata.data);
102
static bool api_SimplePing(struct pipes_struct *p)
104
const struct ndr_interface_call *call;
105
struct ndr_pull *pull;
106
struct ndr_push *push;
107
enum ndr_err_code ndr_err;
108
struct SimplePing *r;
110
call = &ndr_table_IOXIDResolver.calls[NDR_SIMPLEPING];
112
r = talloc(talloc_tos(), struct SimplePing);
117
pull = ndr_pull_init_blob(&p->in_data.data, r);
123
pull->flags |= LIBNDR_FLAG_REF_ALLOC;
125
pull->flags |= LIBNDR_FLAG_BIGENDIAN;
127
ndr_err = call->ndr_pull(pull, NDR_IN, r);
128
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
133
if (DEBUGLEVEL >= 10) {
134
NDR_PRINT_FUNCTION_DEBUG(SimplePing, NDR_IN, r);
137
r->out.result = _SimplePing(p, r);
139
if (p->rng_fault_state) {
141
/* Return true here, srv_pipe_hnd.c will take care */
145
if (DEBUGLEVEL >= 10) {
146
NDR_PRINT_FUNCTION_DEBUG(SimplePing, NDR_OUT | NDR_SET_VALUES, r);
149
push = ndr_push_init_ctx(r);
156
* carry over the pointer count to the reply in case we are
157
* using full pointer. See NDR specification for full pointers
159
push->ptr_count = pull->ptr_count;
161
ndr_err = call->ndr_push(push, NDR_OUT, r);
162
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
167
p->out_data.rdata = ndr_push_blob(push);
168
talloc_steal(p->mem_ctx, p->out_data.rdata.data);
175
static bool api_ComplexPing(struct pipes_struct *p)
177
const struct ndr_interface_call *call;
178
struct ndr_pull *pull;
179
struct ndr_push *push;
180
enum ndr_err_code ndr_err;
181
struct ComplexPing *r;
183
call = &ndr_table_IOXIDResolver.calls[NDR_COMPLEXPING];
185
r = talloc(talloc_tos(), struct ComplexPing);
190
pull = ndr_pull_init_blob(&p->in_data.data, r);
196
pull->flags |= LIBNDR_FLAG_REF_ALLOC;
198
pull->flags |= LIBNDR_FLAG_BIGENDIAN;
200
ndr_err = call->ndr_pull(pull, NDR_IN, r);
201
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
206
if (DEBUGLEVEL >= 10) {
207
NDR_PRINT_FUNCTION_DEBUG(ComplexPing, NDR_IN, r);
211
r->out.SetId = r->in.SetId;
212
r->out.PingBackoffFactor = talloc_zero(r, uint16_t);
213
if (r->out.PingBackoffFactor == NULL) {
218
r->out.result = _ComplexPing(p, r);
220
if (p->rng_fault_state) {
222
/* Return true here, srv_pipe_hnd.c will take care */
226
if (DEBUGLEVEL >= 10) {
227
NDR_PRINT_FUNCTION_DEBUG(ComplexPing, NDR_OUT | NDR_SET_VALUES, r);
230
push = ndr_push_init_ctx(r);
237
* carry over the pointer count to the reply in case we are
238
* using full pointer. See NDR specification for full pointers
240
push->ptr_count = pull->ptr_count;
242
ndr_err = call->ndr_push(push, NDR_OUT, r);
243
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
248
p->out_data.rdata = ndr_push_blob(push);
249
talloc_steal(p->mem_ctx, p->out_data.rdata.data);
256
static bool api_ServerAlive(struct pipes_struct *p)
258
const struct ndr_interface_call *call;
259
struct ndr_pull *pull;
260
struct ndr_push *push;
261
enum ndr_err_code ndr_err;
262
struct ServerAlive *r;
264
call = &ndr_table_IOXIDResolver.calls[NDR_SERVERALIVE];
266
r = talloc(talloc_tos(), struct ServerAlive);
271
pull = ndr_pull_init_blob(&p->in_data.data, r);
277
pull->flags |= LIBNDR_FLAG_REF_ALLOC;
279
pull->flags |= LIBNDR_FLAG_BIGENDIAN;
281
ndr_err = call->ndr_pull(pull, NDR_IN, r);
282
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
287
if (DEBUGLEVEL >= 10) {
288
NDR_PRINT_FUNCTION_DEBUG(ServerAlive, NDR_IN, r);
291
r->out.result = _ServerAlive(p, r);
293
if (p->rng_fault_state) {
295
/* Return true here, srv_pipe_hnd.c will take care */
299
if (DEBUGLEVEL >= 10) {
300
NDR_PRINT_FUNCTION_DEBUG(ServerAlive, NDR_OUT | NDR_SET_VALUES, r);
303
push = ndr_push_init_ctx(r);
310
* carry over the pointer count to the reply in case we are
311
* using full pointer. See NDR specification for full pointers
313
push->ptr_count = pull->ptr_count;
315
ndr_err = call->ndr_push(push, NDR_OUT, r);
316
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
321
p->out_data.rdata = ndr_push_blob(push);
322
talloc_steal(p->mem_ctx, p->out_data.rdata.data);
329
static bool api_ResolveOxid2(struct pipes_struct *p)
331
const struct ndr_interface_call *call;
332
struct ndr_pull *pull;
333
struct ndr_push *push;
334
enum ndr_err_code ndr_err;
335
struct ResolveOxid2 *r;
337
call = &ndr_table_IOXIDResolver.calls[NDR_RESOLVEOXID2];
339
r = talloc(talloc_tos(), struct ResolveOxid2);
344
pull = ndr_pull_init_blob(&p->in_data.data, r);
350
pull->flags |= LIBNDR_FLAG_REF_ALLOC;
352
pull->flags |= LIBNDR_FLAG_BIGENDIAN;
354
ndr_err = call->ndr_pull(pull, NDR_IN, r);
355
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
360
if (DEBUGLEVEL >= 10) {
361
NDR_PRINT_FUNCTION_DEBUG(ResolveOxid2, NDR_IN, r);
365
r->out.pdsaOxidBindings = talloc_zero(r, struct DUALSTRINGARRAY *);
366
if (r->out.pdsaOxidBindings == NULL) {
371
r->out.ipidRemUnknown = talloc_zero(r, struct GUID);
372
if (r->out.ipidRemUnknown == NULL) {
377
r->out.AuthnHint = talloc_zero(r, uint32_t);
378
if (r->out.AuthnHint == NULL) {
383
r->out.ComVersion = talloc_zero(r, struct COMVERSION);
384
if (r->out.ComVersion == NULL) {
389
r->out.result = _ResolveOxid2(p, r);
391
if (p->rng_fault_state) {
393
/* Return true here, srv_pipe_hnd.c will take care */
397
if (DEBUGLEVEL >= 10) {
398
NDR_PRINT_FUNCTION_DEBUG(ResolveOxid2, NDR_OUT | NDR_SET_VALUES, r);
401
push = ndr_push_init_ctx(r);
408
* carry over the pointer count to the reply in case we are
409
* using full pointer. See NDR specification for full pointers
411
push->ptr_count = pull->ptr_count;
413
ndr_err = call->ndr_push(push, NDR_OUT, r);
414
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
419
p->out_data.rdata = ndr_push_blob(push);
420
talloc_steal(p->mem_ctx, p->out_data.rdata.data);
427
static bool api_ServerAlive2(struct pipes_struct *p)
429
const struct ndr_interface_call *call;
430
struct ndr_pull *pull;
431
struct ndr_push *push;
432
enum ndr_err_code ndr_err;
433
struct ServerAlive2 *r;
435
call = &ndr_table_IOXIDResolver.calls[NDR_SERVERALIVE2];
437
r = talloc(talloc_tos(), struct ServerAlive2);
442
pull = ndr_pull_init_blob(&p->in_data.data, r);
448
pull->flags |= LIBNDR_FLAG_REF_ALLOC;
450
pull->flags |= LIBNDR_FLAG_BIGENDIAN;
452
ndr_err = call->ndr_pull(pull, NDR_IN, r);
453
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
458
if (DEBUGLEVEL >= 10) {
459
NDR_PRINT_FUNCTION_DEBUG(ServerAlive2, NDR_IN, r);
463
r->out.info = talloc_zero(r, struct COMINFO);
464
if (r->out.info == NULL) {
469
r->out.dualstring = talloc_zero(r, struct DUALSTRINGARRAY);
470
if (r->out.dualstring == NULL) {
475
r->out.unknown2 = talloc_zero(r, uint8_t);
476
if (r->out.unknown2 == NULL) {
481
r->out.unknown3 = talloc_zero(r, uint8_t);
482
if (r->out.unknown3 == NULL) {
487
r->out.unknown4 = talloc_zero(r, uint8_t);
488
if (r->out.unknown4 == NULL) {
493
r->out.result = _ServerAlive2(p, r);
495
if (p->rng_fault_state) {
497
/* Return true here, srv_pipe_hnd.c will take care */
501
if (DEBUGLEVEL >= 10) {
502
NDR_PRINT_FUNCTION_DEBUG(ServerAlive2, NDR_OUT | NDR_SET_VALUES, r);
505
push = ndr_push_init_ctx(r);
512
* carry over the pointer count to the reply in case we are
513
* using full pointer. See NDR specification for full pointers
515
push->ptr_count = pull->ptr_count;
517
ndr_err = call->ndr_push(push, NDR_OUT, r);
518
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
523
p->out_data.rdata = ndr_push_blob(push);
524
talloc_steal(p->mem_ctx, p->out_data.rdata.data);
533
static struct api_struct api_IOXIDResolver_cmds[] =
535
{"RESOLVEOXID", NDR_RESOLVEOXID, api_ResolveOxid},
536
{"SIMPLEPING", NDR_SIMPLEPING, api_SimplePing},
537
{"COMPLEXPING", NDR_COMPLEXPING, api_ComplexPing},
538
{"SERVERALIVE", NDR_SERVERALIVE, api_ServerAlive},
539
{"RESOLVEOXID2", NDR_RESOLVEOXID2, api_ResolveOxid2},
540
{"SERVERALIVE2", NDR_SERVERALIVE2, api_ServerAlive2},
543
void IOXIDResolver_get_pipe_fns(struct api_struct **fns, int *n_fns)
545
*fns = api_IOXIDResolver_cmds;
546
*n_fns = sizeof(api_IOXIDResolver_cmds) / sizeof(struct api_struct);
549
NTSTATUS rpc_IOXIDResolver_init(const struct rpc_srv_callbacks *rpc_srv_cb)
551
return rpc_srv_register(SMB_RPC_INTERFACE_VERSION, "IOXIDResolver", "IOXIDResolver", &ndr_table_IOXIDResolver, api_IOXIDResolver_cmds, sizeof(api_IOXIDResolver_cmds) / sizeof(struct api_struct), rpc_srv_cb);
554
NTSTATUS rpc_IOXIDResolver_shutdown(void)
556
return rpc_srv_unregister(&ndr_table_IOXIDResolver);