git add -f bin/default/librpc/gen_ndr/*.[ch] bin/default/source*/librpc/gen_ndr/...
[metze/samba/wip.git] / bin.gen_ndr / default / librpc / gen_ndr / ndr_security_c.c
1 /* client functions auto-generated by pidl */
2
3 #include "includes.h"
4 #include <tevent.h>
5 #include "lib/util/tevent_ntstatus.h"
6 #include "bin/default/librpc/gen_ndr/ndr_security.h"
7 #include "bin/default/librpc/gen_ndr/ndr_security_c.h"
8
9 /* security - client functions generated by pidl */
10
11 struct dcerpc_decode_security_descriptor_r_state {
12         TALLOC_CTX *out_mem_ctx;
13 };
14
15 static void dcerpc_decode_security_descriptor_r_done(struct tevent_req *subreq);
16
17 struct tevent_req *dcerpc_decode_security_descriptor_r_send(TALLOC_CTX *mem_ctx,
18         struct tevent_context *ev,
19         struct dcerpc_binding_handle *h,
20         struct decode_security_descriptor *r)
21 {
22         struct tevent_req *req;
23         struct dcerpc_decode_security_descriptor_r_state *state;
24         struct tevent_req *subreq;
25
26         req = tevent_req_create(mem_ctx, &state,
27                                 struct dcerpc_decode_security_descriptor_r_state);
28         if (req == NULL) {
29                 return NULL;
30         }
31
32         state->out_mem_ctx = NULL;
33
34         subreq = dcerpc_binding_handle_call_send(state, ev, h,
35                         NULL, &ndr_table_security,
36                         NDR_DECODE_SECURITY_DESCRIPTOR, state, r);
37         if (tevent_req_nomem(subreq, req)) {
38                 return tevent_req_post(req, ev);
39         }
40         tevent_req_set_callback(subreq, dcerpc_decode_security_descriptor_r_done, req);
41
42         return req;
43 }
44
45 static void dcerpc_decode_security_descriptor_r_done(struct tevent_req *subreq)
46 {
47         struct tevent_req *req =
48                 tevent_req_callback_data(subreq,
49                 struct tevent_req);
50         NTSTATUS status;
51
52         status = dcerpc_binding_handle_call_recv(subreq);
53         TALLOC_FREE(subreq);
54         if (tevent_req_nterror(req, status)) {
55                 return;
56         }
57
58         tevent_req_done(req);
59 }
60
61 NTSTATUS dcerpc_decode_security_descriptor_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
62 {
63         struct dcerpc_decode_security_descriptor_r_state *state =
64                 tevent_req_data(req,
65                 struct dcerpc_decode_security_descriptor_r_state);
66         NTSTATUS status;
67
68         if (tevent_req_is_nterror(req, &status)) {
69                 tevent_req_received(req);
70                 return status;
71         }
72
73         talloc_steal(mem_ctx, state->out_mem_ctx);
74
75         tevent_req_received(req);
76         return NT_STATUS_OK;
77 }
78
79 NTSTATUS dcerpc_decode_security_descriptor_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct decode_security_descriptor *r)
80 {
81         NTSTATUS status;
82
83         status = dcerpc_binding_handle_call(h,
84                         NULL, &ndr_table_security,
85                         NDR_DECODE_SECURITY_DESCRIPTOR, mem_ctx, r);
86
87         return status;
88 }
89
90 struct dcerpc_decode_security_descriptor_state {
91         struct decode_security_descriptor orig;
92         struct decode_security_descriptor tmp;
93         TALLOC_CTX *out_mem_ctx;
94 };
95
96 static void dcerpc_decode_security_descriptor_done(struct tevent_req *subreq);
97
98 struct tevent_req *dcerpc_decode_security_descriptor_send(TALLOC_CTX *mem_ctx,
99                                                           struct tevent_context *ev,
100                                                           struct dcerpc_binding_handle *h,
101                                                           struct security_descriptor _sd /* [in]  */)
102 {
103         struct tevent_req *req;
104         struct dcerpc_decode_security_descriptor_state *state;
105         struct tevent_req *subreq;
106
107         req = tevent_req_create(mem_ctx, &state,
108                                 struct dcerpc_decode_security_descriptor_state);
109         if (req == NULL) {
110                 return NULL;
111         }
112         state->out_mem_ctx = NULL;
113
114         /* In parameters */
115         state->orig.in.sd = _sd;
116
117         /* Out parameters */
118
119         /* make a temporary copy, that we pass to the dispatch function */
120         state->tmp = state->orig;
121
122         subreq = dcerpc_decode_security_descriptor_r_send(state, ev, h, &state->tmp);
123         if (tevent_req_nomem(subreq, req)) {
124                 return tevent_req_post(req, ev);
125         }
126         tevent_req_set_callback(subreq, dcerpc_decode_security_descriptor_done, req);
127         return req;
128 }
129
130 static void dcerpc_decode_security_descriptor_done(struct tevent_req *subreq)
131 {
132         struct tevent_req *req = tevent_req_callback_data(
133                 subreq, struct tevent_req);
134         struct dcerpc_decode_security_descriptor_state *state = tevent_req_data(
135                 req, struct dcerpc_decode_security_descriptor_state);
136         NTSTATUS status;
137         TALLOC_CTX *mem_ctx;
138
139         if (state->out_mem_ctx) {
140                 mem_ctx = state->out_mem_ctx;
141         } else {
142                 mem_ctx = state;
143         }
144
145         status = dcerpc_decode_security_descriptor_r_recv(subreq, mem_ctx);
146         TALLOC_FREE(subreq);
147         if (tevent_req_nterror(req, status)) {
148                 return;
149         }
150
151         /* Copy out parameters */
152
153         /* Reset temporary structure */
154         ZERO_STRUCT(state->tmp);
155
156         tevent_req_done(req);
157 }
158
159 NTSTATUS dcerpc_decode_security_descriptor_recv(struct tevent_req *req,
160                                                 TALLOC_CTX *mem_ctx)
161 {
162         struct dcerpc_decode_security_descriptor_state *state = tevent_req_data(
163                 req, struct dcerpc_decode_security_descriptor_state);
164         NTSTATUS status;
165
166         if (tevent_req_is_nterror(req, &status)) {
167                 tevent_req_received(req);
168                 return status;
169         }
170
171         /* Steal possible out parameters to the callers context */
172         talloc_steal(mem_ctx, state->out_mem_ctx);
173
174         tevent_req_received(req);
175         return NT_STATUS_OK;
176 }
177
178 NTSTATUS dcerpc_decode_security_descriptor(struct dcerpc_binding_handle *h,
179                                            TALLOC_CTX *mem_ctx,
180                                            struct security_descriptor _sd /* [in]  */)
181 {
182         struct decode_security_descriptor r;
183         NTSTATUS status;
184
185         /* In parameters */
186         r.in.sd = _sd;
187
188         status = dcerpc_decode_security_descriptor_r(h, mem_ctx, &r);
189         if (!NT_STATUS_IS_OK(status)) {
190                 return status;
191         }
192
193         /* Return variables */
194
195         /* Return result */
196
197         return NT_STATUS_OK;
198 }
199
200 struct dcerpc_decode_sec_desc_buf_r_state {
201         TALLOC_CTX *out_mem_ctx;
202 };
203
204 static void dcerpc_decode_sec_desc_buf_r_done(struct tevent_req *subreq);
205
206 struct tevent_req *dcerpc_decode_sec_desc_buf_r_send(TALLOC_CTX *mem_ctx,
207         struct tevent_context *ev,
208         struct dcerpc_binding_handle *h,
209         struct decode_sec_desc_buf *r)
210 {
211         struct tevent_req *req;
212         struct dcerpc_decode_sec_desc_buf_r_state *state;
213         struct tevent_req *subreq;
214
215         req = tevent_req_create(mem_ctx, &state,
216                                 struct dcerpc_decode_sec_desc_buf_r_state);
217         if (req == NULL) {
218                 return NULL;
219         }
220
221         state->out_mem_ctx = NULL;
222
223         subreq = dcerpc_binding_handle_call_send(state, ev, h,
224                         NULL, &ndr_table_security,
225                         NDR_DECODE_SEC_DESC_BUF, state, r);
226         if (tevent_req_nomem(subreq, req)) {
227                 return tevent_req_post(req, ev);
228         }
229         tevent_req_set_callback(subreq, dcerpc_decode_sec_desc_buf_r_done, req);
230
231         return req;
232 }
233
234 static void dcerpc_decode_sec_desc_buf_r_done(struct tevent_req *subreq)
235 {
236         struct tevent_req *req =
237                 tevent_req_callback_data(subreq,
238                 struct tevent_req);
239         NTSTATUS status;
240
241         status = dcerpc_binding_handle_call_recv(subreq);
242         TALLOC_FREE(subreq);
243         if (tevent_req_nterror(req, status)) {
244                 return;
245         }
246
247         tevent_req_done(req);
248 }
249
250 NTSTATUS dcerpc_decode_sec_desc_buf_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
251 {
252         struct dcerpc_decode_sec_desc_buf_r_state *state =
253                 tevent_req_data(req,
254                 struct dcerpc_decode_sec_desc_buf_r_state);
255         NTSTATUS status;
256
257         if (tevent_req_is_nterror(req, &status)) {
258                 tevent_req_received(req);
259                 return status;
260         }
261
262         talloc_steal(mem_ctx, state->out_mem_ctx);
263
264         tevent_req_received(req);
265         return NT_STATUS_OK;
266 }
267
268 NTSTATUS dcerpc_decode_sec_desc_buf_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct decode_sec_desc_buf *r)
269 {
270         NTSTATUS status;
271
272         status = dcerpc_binding_handle_call(h,
273                         NULL, &ndr_table_security,
274                         NDR_DECODE_SEC_DESC_BUF, mem_ctx, r);
275
276         return status;
277 }
278
279 struct dcerpc_decode_sec_desc_buf_state {
280         struct decode_sec_desc_buf orig;
281         struct decode_sec_desc_buf tmp;
282         TALLOC_CTX *out_mem_ctx;
283 };
284
285 static void dcerpc_decode_sec_desc_buf_done(struct tevent_req *subreq);
286
287 struct tevent_req *dcerpc_decode_sec_desc_buf_send(TALLOC_CTX *mem_ctx,
288                                                    struct tevent_context *ev,
289                                                    struct dcerpc_binding_handle *h,
290                                                    struct sec_desc_buf _sd_buf /* [in]  */)
291 {
292         struct tevent_req *req;
293         struct dcerpc_decode_sec_desc_buf_state *state;
294         struct tevent_req *subreq;
295
296         req = tevent_req_create(mem_ctx, &state,
297                                 struct dcerpc_decode_sec_desc_buf_state);
298         if (req == NULL) {
299                 return NULL;
300         }
301         state->out_mem_ctx = NULL;
302
303         /* In parameters */
304         state->orig.in.sd_buf = _sd_buf;
305
306         /* Out parameters */
307
308         /* make a temporary copy, that we pass to the dispatch function */
309         state->tmp = state->orig;
310
311         subreq = dcerpc_decode_sec_desc_buf_r_send(state, ev, h, &state->tmp);
312         if (tevent_req_nomem(subreq, req)) {
313                 return tevent_req_post(req, ev);
314         }
315         tevent_req_set_callback(subreq, dcerpc_decode_sec_desc_buf_done, req);
316         return req;
317 }
318
319 static void dcerpc_decode_sec_desc_buf_done(struct tevent_req *subreq)
320 {
321         struct tevent_req *req = tevent_req_callback_data(
322                 subreq, struct tevent_req);
323         struct dcerpc_decode_sec_desc_buf_state *state = tevent_req_data(
324                 req, struct dcerpc_decode_sec_desc_buf_state);
325         NTSTATUS status;
326         TALLOC_CTX *mem_ctx;
327
328         if (state->out_mem_ctx) {
329                 mem_ctx = state->out_mem_ctx;
330         } else {
331                 mem_ctx = state;
332         }
333
334         status = dcerpc_decode_sec_desc_buf_r_recv(subreq, mem_ctx);
335         TALLOC_FREE(subreq);
336         if (tevent_req_nterror(req, status)) {
337                 return;
338         }
339
340         /* Copy out parameters */
341
342         /* Reset temporary structure */
343         ZERO_STRUCT(state->tmp);
344
345         tevent_req_done(req);
346 }
347
348 NTSTATUS dcerpc_decode_sec_desc_buf_recv(struct tevent_req *req,
349                                          TALLOC_CTX *mem_ctx)
350 {
351         struct dcerpc_decode_sec_desc_buf_state *state = tevent_req_data(
352                 req, struct dcerpc_decode_sec_desc_buf_state);
353         NTSTATUS status;
354
355         if (tevent_req_is_nterror(req, &status)) {
356                 tevent_req_received(req);
357                 return status;
358         }
359
360         /* Steal possible out parameters to the callers context */
361         talloc_steal(mem_ctx, state->out_mem_ctx);
362
363         tevent_req_received(req);
364         return NT_STATUS_OK;
365 }
366
367 NTSTATUS dcerpc_decode_sec_desc_buf(struct dcerpc_binding_handle *h,
368                                     TALLOC_CTX *mem_ctx,
369                                     struct sec_desc_buf _sd_buf /* [in]  */)
370 {
371         struct decode_sec_desc_buf r;
372         NTSTATUS status;
373
374         /* In parameters */
375         r.in.sd_buf = _sd_buf;
376
377         status = dcerpc_decode_sec_desc_buf_r(h, mem_ctx, &r);
378         if (!NT_STATUS_IS_OK(status)) {
379                 return status;
380         }
381
382         /* Return variables */
383
384         /* Return result */
385
386         return NT_STATUS_OK;
387 }
388
389 struct dcerpc_decode_security_token_r_state {
390         TALLOC_CTX *out_mem_ctx;
391 };
392
393 static void dcerpc_decode_security_token_r_done(struct tevent_req *subreq);
394
395 struct tevent_req *dcerpc_decode_security_token_r_send(TALLOC_CTX *mem_ctx,
396         struct tevent_context *ev,
397         struct dcerpc_binding_handle *h,
398         struct decode_security_token *r)
399 {
400         struct tevent_req *req;
401         struct dcerpc_decode_security_token_r_state *state;
402         struct tevent_req *subreq;
403
404         req = tevent_req_create(mem_ctx, &state,
405                                 struct dcerpc_decode_security_token_r_state);
406         if (req == NULL) {
407                 return NULL;
408         }
409
410         state->out_mem_ctx = NULL;
411
412         subreq = dcerpc_binding_handle_call_send(state, ev, h,
413                         NULL, &ndr_table_security,
414                         NDR_DECODE_SECURITY_TOKEN, state, r);
415         if (tevent_req_nomem(subreq, req)) {
416                 return tevent_req_post(req, ev);
417         }
418         tevent_req_set_callback(subreq, dcerpc_decode_security_token_r_done, req);
419
420         return req;
421 }
422
423 static void dcerpc_decode_security_token_r_done(struct tevent_req *subreq)
424 {
425         struct tevent_req *req =
426                 tevent_req_callback_data(subreq,
427                 struct tevent_req);
428         NTSTATUS status;
429
430         status = dcerpc_binding_handle_call_recv(subreq);
431         TALLOC_FREE(subreq);
432         if (tevent_req_nterror(req, status)) {
433                 return;
434         }
435
436         tevent_req_done(req);
437 }
438
439 NTSTATUS dcerpc_decode_security_token_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
440 {
441         struct dcerpc_decode_security_token_r_state *state =
442                 tevent_req_data(req,
443                 struct dcerpc_decode_security_token_r_state);
444         NTSTATUS status;
445
446         if (tevent_req_is_nterror(req, &status)) {
447                 tevent_req_received(req);
448                 return status;
449         }
450
451         talloc_steal(mem_ctx, state->out_mem_ctx);
452
453         tevent_req_received(req);
454         return NT_STATUS_OK;
455 }
456
457 NTSTATUS dcerpc_decode_security_token_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct decode_security_token *r)
458 {
459         NTSTATUS status;
460
461         status = dcerpc_binding_handle_call(h,
462                         NULL, &ndr_table_security,
463                         NDR_DECODE_SECURITY_TOKEN, mem_ctx, r);
464
465         return status;
466 }
467
468 struct dcerpc_decode_security_token_state {
469         struct decode_security_token orig;
470         struct decode_security_token tmp;
471         TALLOC_CTX *out_mem_ctx;
472 };
473
474 static void dcerpc_decode_security_token_done(struct tevent_req *subreq);
475
476 struct tevent_req *dcerpc_decode_security_token_send(TALLOC_CTX *mem_ctx,
477                                                      struct tevent_context *ev,
478                                                      struct dcerpc_binding_handle *h,
479                                                      struct security_token _token /* [in]  */)
480 {
481         struct tevent_req *req;
482         struct dcerpc_decode_security_token_state *state;
483         struct tevent_req *subreq;
484
485         req = tevent_req_create(mem_ctx, &state,
486                                 struct dcerpc_decode_security_token_state);
487         if (req == NULL) {
488                 return NULL;
489         }
490         state->out_mem_ctx = NULL;
491
492         /* In parameters */
493         state->orig.in.token = _token;
494
495         /* Out parameters */
496
497         /* make a temporary copy, that we pass to the dispatch function */
498         state->tmp = state->orig;
499
500         subreq = dcerpc_decode_security_token_r_send(state, ev, h, &state->tmp);
501         if (tevent_req_nomem(subreq, req)) {
502                 return tevent_req_post(req, ev);
503         }
504         tevent_req_set_callback(subreq, dcerpc_decode_security_token_done, req);
505         return req;
506 }
507
508 static void dcerpc_decode_security_token_done(struct tevent_req *subreq)
509 {
510         struct tevent_req *req = tevent_req_callback_data(
511                 subreq, struct tevent_req);
512         struct dcerpc_decode_security_token_state *state = tevent_req_data(
513                 req, struct dcerpc_decode_security_token_state);
514         NTSTATUS status;
515         TALLOC_CTX *mem_ctx;
516
517         if (state->out_mem_ctx) {
518                 mem_ctx = state->out_mem_ctx;
519         } else {
520                 mem_ctx = state;
521         }
522
523         status = dcerpc_decode_security_token_r_recv(subreq, mem_ctx);
524         TALLOC_FREE(subreq);
525         if (tevent_req_nterror(req, status)) {
526                 return;
527         }
528
529         /* Copy out parameters */
530
531         /* Reset temporary structure */
532         ZERO_STRUCT(state->tmp);
533
534         tevent_req_done(req);
535 }
536
537 NTSTATUS dcerpc_decode_security_token_recv(struct tevent_req *req,
538                                            TALLOC_CTX *mem_ctx)
539 {
540         struct dcerpc_decode_security_token_state *state = tevent_req_data(
541                 req, struct dcerpc_decode_security_token_state);
542         NTSTATUS status;
543
544         if (tevent_req_is_nterror(req, &status)) {
545                 tevent_req_received(req);
546                 return status;
547         }
548
549         /* Steal possible out parameters to the callers context */
550         talloc_steal(mem_ctx, state->out_mem_ctx);
551
552         tevent_req_received(req);
553         return NT_STATUS_OK;
554 }
555
556 NTSTATUS dcerpc_decode_security_token(struct dcerpc_binding_handle *h,
557                                       TALLOC_CTX *mem_ctx,
558                                       struct security_token _token /* [in]  */)
559 {
560         struct decode_security_token r;
561         NTSTATUS status;
562
563         /* In parameters */
564         r.in.token = _token;
565
566         status = dcerpc_decode_security_token_r(h, mem_ctx, &r);
567         if (!NT_STATUS_IS_OK(status)) {
568                 return status;
569         }
570
571         /* Return variables */
572
573         /* Return result */
574
575         return NT_STATUS_OK;
576 }
577
578 struct dcerpc_decode_security_unix_token_r_state {
579         TALLOC_CTX *out_mem_ctx;
580 };
581
582 static void dcerpc_decode_security_unix_token_r_done(struct tevent_req *subreq);
583
584 struct tevent_req *dcerpc_decode_security_unix_token_r_send(TALLOC_CTX *mem_ctx,
585         struct tevent_context *ev,
586         struct dcerpc_binding_handle *h,
587         struct decode_security_unix_token *r)
588 {
589         struct tevent_req *req;
590         struct dcerpc_decode_security_unix_token_r_state *state;
591         struct tevent_req *subreq;
592
593         req = tevent_req_create(mem_ctx, &state,
594                                 struct dcerpc_decode_security_unix_token_r_state);
595         if (req == NULL) {
596                 return NULL;
597         }
598
599         state->out_mem_ctx = NULL;
600
601         subreq = dcerpc_binding_handle_call_send(state, ev, h,
602                         NULL, &ndr_table_security,
603                         NDR_DECODE_SECURITY_UNIX_TOKEN, state, r);
604         if (tevent_req_nomem(subreq, req)) {
605                 return tevent_req_post(req, ev);
606         }
607         tevent_req_set_callback(subreq, dcerpc_decode_security_unix_token_r_done, req);
608
609         return req;
610 }
611
612 static void dcerpc_decode_security_unix_token_r_done(struct tevent_req *subreq)
613 {
614         struct tevent_req *req =
615                 tevent_req_callback_data(subreq,
616                 struct tevent_req);
617         NTSTATUS status;
618
619         status = dcerpc_binding_handle_call_recv(subreq);
620         TALLOC_FREE(subreq);
621         if (tevent_req_nterror(req, status)) {
622                 return;
623         }
624
625         tevent_req_done(req);
626 }
627
628 NTSTATUS dcerpc_decode_security_unix_token_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
629 {
630         struct dcerpc_decode_security_unix_token_r_state *state =
631                 tevent_req_data(req,
632                 struct dcerpc_decode_security_unix_token_r_state);
633         NTSTATUS status;
634
635         if (tevent_req_is_nterror(req, &status)) {
636                 tevent_req_received(req);
637                 return status;
638         }
639
640         talloc_steal(mem_ctx, state->out_mem_ctx);
641
642         tevent_req_received(req);
643         return NT_STATUS_OK;
644 }
645
646 NTSTATUS dcerpc_decode_security_unix_token_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct decode_security_unix_token *r)
647 {
648         NTSTATUS status;
649
650         status = dcerpc_binding_handle_call(h,
651                         NULL, &ndr_table_security,
652                         NDR_DECODE_SECURITY_UNIX_TOKEN, mem_ctx, r);
653
654         return status;
655 }
656
657 struct dcerpc_decode_security_unix_token_state {
658         struct decode_security_unix_token orig;
659         struct decode_security_unix_token tmp;
660         TALLOC_CTX *out_mem_ctx;
661 };
662
663 static void dcerpc_decode_security_unix_token_done(struct tevent_req *subreq);
664
665 struct tevent_req *dcerpc_decode_security_unix_token_send(TALLOC_CTX *mem_ctx,
666                                                           struct tevent_context *ev,
667                                                           struct dcerpc_binding_handle *h,
668                                                           struct security_unix_token _unix_token /* [in]  */)
669 {
670         struct tevent_req *req;
671         struct dcerpc_decode_security_unix_token_state *state;
672         struct tevent_req *subreq;
673
674         req = tevent_req_create(mem_ctx, &state,
675                                 struct dcerpc_decode_security_unix_token_state);
676         if (req == NULL) {
677                 return NULL;
678         }
679         state->out_mem_ctx = NULL;
680
681         /* In parameters */
682         state->orig.in.unix_token = _unix_token;
683
684         /* Out parameters */
685
686         /* make a temporary copy, that we pass to the dispatch function */
687         state->tmp = state->orig;
688
689         subreq = dcerpc_decode_security_unix_token_r_send(state, ev, h, &state->tmp);
690         if (tevent_req_nomem(subreq, req)) {
691                 return tevent_req_post(req, ev);
692         }
693         tevent_req_set_callback(subreq, dcerpc_decode_security_unix_token_done, req);
694         return req;
695 }
696
697 static void dcerpc_decode_security_unix_token_done(struct tevent_req *subreq)
698 {
699         struct tevent_req *req = tevent_req_callback_data(
700                 subreq, struct tevent_req);
701         struct dcerpc_decode_security_unix_token_state *state = tevent_req_data(
702                 req, struct dcerpc_decode_security_unix_token_state);
703         NTSTATUS status;
704         TALLOC_CTX *mem_ctx;
705
706         if (state->out_mem_ctx) {
707                 mem_ctx = state->out_mem_ctx;
708         } else {
709                 mem_ctx = state;
710         }
711
712         status = dcerpc_decode_security_unix_token_r_recv(subreq, mem_ctx);
713         TALLOC_FREE(subreq);
714         if (tevent_req_nterror(req, status)) {
715                 return;
716         }
717
718         /* Copy out parameters */
719
720         /* Reset temporary structure */
721         ZERO_STRUCT(state->tmp);
722
723         tevent_req_done(req);
724 }
725
726 NTSTATUS dcerpc_decode_security_unix_token_recv(struct tevent_req *req,
727                                                 TALLOC_CTX *mem_ctx)
728 {
729         struct dcerpc_decode_security_unix_token_state *state = tevent_req_data(
730                 req, struct dcerpc_decode_security_unix_token_state);
731         NTSTATUS status;
732
733         if (tevent_req_is_nterror(req, &status)) {
734                 tevent_req_received(req);
735                 return status;
736         }
737
738         /* Steal possible out parameters to the callers context */
739         talloc_steal(mem_ctx, state->out_mem_ctx);
740
741         tevent_req_received(req);
742         return NT_STATUS_OK;
743 }
744
745 NTSTATUS dcerpc_decode_security_unix_token(struct dcerpc_binding_handle *h,
746                                            TALLOC_CTX *mem_ctx,
747                                            struct security_unix_token _unix_token /* [in]  */)
748 {
749         struct decode_security_unix_token r;
750         NTSTATUS status;
751
752         /* In parameters */
753         r.in.unix_token = _unix_token;
754
755         status = dcerpc_decode_security_unix_token_r(h, mem_ctx, &r);
756         if (!NT_STATUS_IS_OK(status)) {
757                 return status;
758         }
759
760         /* Return variables */
761
762         /* Return result */
763
764         return NT_STATUS_OK;
765 }
766