2 * Unix SMB/CIFS implementation.
3 * server auto-generated by pidl. DO NOT MODIFY!
7 #include "../librpc/gen_ndr/srv_samr.h"
9 static bool api_samr_Connect(pipes_struct
*p
)
11 const struct ndr_interface_call
*call
;
12 struct ndr_pull
*pull
;
13 struct ndr_push
*push
;
14 enum ndr_err_code ndr_err
;
16 struct samr_Connect
*r
;
18 call
= &ndr_table_samr
.calls
[NDR_SAMR_CONNECT
];
20 r
= talloc(talloc_tos(), struct samr_Connect
);
25 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
30 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
36 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
37 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
38 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
43 if (DEBUGLEVEL
>= 10) {
44 NDR_PRINT_IN_DEBUG(samr_Connect
, r
);
48 r
->out
.connect_handle
= talloc_zero(r
, struct policy_handle
);
49 if (r
->out
.connect_handle
== NULL
) {
54 r
->out
.result
= _samr_Connect(p
, r
);
56 if (p
->rng_fault_state
) {
58 /* Return true here, srv_pipe_hnd.c will take care */
62 if (DEBUGLEVEL
>= 10) {
63 NDR_PRINT_OUT_DEBUG(samr_Connect
, r
);
66 push
= ndr_push_init_ctx(r
, NULL
);
72 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
73 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
78 blob
= ndr_push_blob(push
);
79 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
89 static bool api_samr_Close(pipes_struct
*p
)
91 const struct ndr_interface_call
*call
;
92 struct ndr_pull
*pull
;
93 struct ndr_push
*push
;
94 enum ndr_err_code ndr_err
;
98 call
= &ndr_table_samr
.calls
[NDR_SAMR_CLOSE
];
100 r
= talloc(talloc_tos(), struct samr_Close
);
105 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
110 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
116 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
117 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
118 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
123 if (DEBUGLEVEL
>= 10) {
124 NDR_PRINT_IN_DEBUG(samr_Close
, r
);
128 r
->out
.handle
= r
->in
.handle
;
129 r
->out
.result
= _samr_Close(p
, r
);
131 if (p
->rng_fault_state
) {
133 /* Return true here, srv_pipe_hnd.c will take care */
137 if (DEBUGLEVEL
>= 10) {
138 NDR_PRINT_OUT_DEBUG(samr_Close
, r
);
141 push
= ndr_push_init_ctx(r
, NULL
);
147 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
148 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
153 blob
= ndr_push_blob(push
);
154 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
164 static bool api_samr_SetSecurity(pipes_struct
*p
)
166 const struct ndr_interface_call
*call
;
167 struct ndr_pull
*pull
;
168 struct ndr_push
*push
;
169 enum ndr_err_code ndr_err
;
171 struct samr_SetSecurity
*r
;
173 call
= &ndr_table_samr
.calls
[NDR_SAMR_SETSECURITY
];
175 r
= talloc(talloc_tos(), struct samr_SetSecurity
);
180 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
185 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
191 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
192 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
193 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
198 if (DEBUGLEVEL
>= 10) {
199 NDR_PRINT_IN_DEBUG(samr_SetSecurity
, r
);
202 r
->out
.result
= _samr_SetSecurity(p
, r
);
204 if (p
->rng_fault_state
) {
206 /* Return true here, srv_pipe_hnd.c will take care */
210 if (DEBUGLEVEL
>= 10) {
211 NDR_PRINT_OUT_DEBUG(samr_SetSecurity
, r
);
214 push
= ndr_push_init_ctx(r
, NULL
);
220 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
221 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
226 blob
= ndr_push_blob(push
);
227 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
237 static bool api_samr_QuerySecurity(pipes_struct
*p
)
239 const struct ndr_interface_call
*call
;
240 struct ndr_pull
*pull
;
241 struct ndr_push
*push
;
242 enum ndr_err_code ndr_err
;
244 struct samr_QuerySecurity
*r
;
246 call
= &ndr_table_samr
.calls
[NDR_SAMR_QUERYSECURITY
];
248 r
= talloc(talloc_tos(), struct samr_QuerySecurity
);
253 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
258 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
264 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
265 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
266 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
271 if (DEBUGLEVEL
>= 10) {
272 NDR_PRINT_IN_DEBUG(samr_QuerySecurity
, r
);
276 r
->out
.sdbuf
= talloc_zero(r
, struct sec_desc_buf
*);
277 if (r
->out
.sdbuf
== NULL
) {
282 r
->out
.result
= _samr_QuerySecurity(p
, r
);
284 if (p
->rng_fault_state
) {
286 /* Return true here, srv_pipe_hnd.c will take care */
290 if (DEBUGLEVEL
>= 10) {
291 NDR_PRINT_OUT_DEBUG(samr_QuerySecurity
, r
);
294 push
= ndr_push_init_ctx(r
, NULL
);
300 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
301 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
306 blob
= ndr_push_blob(push
);
307 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
317 static bool api_samr_Shutdown(pipes_struct
*p
)
319 const struct ndr_interface_call
*call
;
320 struct ndr_pull
*pull
;
321 struct ndr_push
*push
;
322 enum ndr_err_code ndr_err
;
324 struct samr_Shutdown
*r
;
326 call
= &ndr_table_samr
.calls
[NDR_SAMR_SHUTDOWN
];
328 r
= talloc(talloc_tos(), struct samr_Shutdown
);
333 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
338 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
344 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
345 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
346 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
351 if (DEBUGLEVEL
>= 10) {
352 NDR_PRINT_IN_DEBUG(samr_Shutdown
, r
);
355 r
->out
.result
= _samr_Shutdown(p
, r
);
357 if (p
->rng_fault_state
) {
359 /* Return true here, srv_pipe_hnd.c will take care */
363 if (DEBUGLEVEL
>= 10) {
364 NDR_PRINT_OUT_DEBUG(samr_Shutdown
, r
);
367 push
= ndr_push_init_ctx(r
, NULL
);
373 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
374 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
379 blob
= ndr_push_blob(push
);
380 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
390 static bool api_samr_LookupDomain(pipes_struct
*p
)
392 const struct ndr_interface_call
*call
;
393 struct ndr_pull
*pull
;
394 struct ndr_push
*push
;
395 enum ndr_err_code ndr_err
;
397 struct samr_LookupDomain
*r
;
399 call
= &ndr_table_samr
.calls
[NDR_SAMR_LOOKUPDOMAIN
];
401 r
= talloc(talloc_tos(), struct samr_LookupDomain
);
406 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
411 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
417 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
418 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
419 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
424 if (DEBUGLEVEL
>= 10) {
425 NDR_PRINT_IN_DEBUG(samr_LookupDomain
, r
);
429 r
->out
.sid
= talloc_zero(r
, struct dom_sid2
*);
430 if (r
->out
.sid
== NULL
) {
435 r
->out
.result
= _samr_LookupDomain(p
, r
);
437 if (p
->rng_fault_state
) {
439 /* Return true here, srv_pipe_hnd.c will take care */
443 if (DEBUGLEVEL
>= 10) {
444 NDR_PRINT_OUT_DEBUG(samr_LookupDomain
, r
);
447 push
= ndr_push_init_ctx(r
, NULL
);
453 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
454 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
459 blob
= ndr_push_blob(push
);
460 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
470 static bool api_samr_EnumDomains(pipes_struct
*p
)
472 const struct ndr_interface_call
*call
;
473 struct ndr_pull
*pull
;
474 struct ndr_push
*push
;
475 enum ndr_err_code ndr_err
;
477 struct samr_EnumDomains
*r
;
479 call
= &ndr_table_samr
.calls
[NDR_SAMR_ENUMDOMAINS
];
481 r
= talloc(talloc_tos(), struct samr_EnumDomains
);
486 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
491 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
497 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
498 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
499 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
504 if (DEBUGLEVEL
>= 10) {
505 NDR_PRINT_IN_DEBUG(samr_EnumDomains
, r
);
509 r
->out
.resume_handle
= r
->in
.resume_handle
;
510 r
->out
.sam
= talloc_zero(r
, struct samr_SamArray
*);
511 if (r
->out
.sam
== NULL
) {
516 r
->out
.num_entries
= talloc_zero(r
, uint32_t);
517 if (r
->out
.num_entries
== NULL
) {
522 r
->out
.result
= _samr_EnumDomains(p
, r
);
524 if (p
->rng_fault_state
) {
526 /* Return true here, srv_pipe_hnd.c will take care */
530 if (DEBUGLEVEL
>= 10) {
531 NDR_PRINT_OUT_DEBUG(samr_EnumDomains
, r
);
534 push
= ndr_push_init_ctx(r
, NULL
);
540 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
541 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
546 blob
= ndr_push_blob(push
);
547 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
557 static bool api_samr_OpenDomain(pipes_struct
*p
)
559 const struct ndr_interface_call
*call
;
560 struct ndr_pull
*pull
;
561 struct ndr_push
*push
;
562 enum ndr_err_code ndr_err
;
564 struct samr_OpenDomain
*r
;
566 call
= &ndr_table_samr
.calls
[NDR_SAMR_OPENDOMAIN
];
568 r
= talloc(talloc_tos(), struct samr_OpenDomain
);
573 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
578 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
584 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
585 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
586 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
591 if (DEBUGLEVEL
>= 10) {
592 NDR_PRINT_IN_DEBUG(samr_OpenDomain
, r
);
596 r
->out
.domain_handle
= talloc_zero(r
, struct policy_handle
);
597 if (r
->out
.domain_handle
== NULL
) {
602 r
->out
.result
= _samr_OpenDomain(p
, r
);
604 if (p
->rng_fault_state
) {
606 /* Return true here, srv_pipe_hnd.c will take care */
610 if (DEBUGLEVEL
>= 10) {
611 NDR_PRINT_OUT_DEBUG(samr_OpenDomain
, r
);
614 push
= ndr_push_init_ctx(r
, NULL
);
620 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
621 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
626 blob
= ndr_push_blob(push
);
627 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
637 static bool api_samr_QueryDomainInfo(pipes_struct
*p
)
639 const struct ndr_interface_call
*call
;
640 struct ndr_pull
*pull
;
641 struct ndr_push
*push
;
642 enum ndr_err_code ndr_err
;
644 struct samr_QueryDomainInfo
*r
;
646 call
= &ndr_table_samr
.calls
[NDR_SAMR_QUERYDOMAININFO
];
648 r
= talloc(talloc_tos(), struct samr_QueryDomainInfo
);
653 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
658 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
664 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
665 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
666 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
671 if (DEBUGLEVEL
>= 10) {
672 NDR_PRINT_IN_DEBUG(samr_QueryDomainInfo
, r
);
676 r
->out
.info
= talloc_zero(r
, union samr_DomainInfo
*);
677 if (r
->out
.info
== NULL
) {
682 r
->out
.result
= _samr_QueryDomainInfo(p
, r
);
684 if (p
->rng_fault_state
) {
686 /* Return true here, srv_pipe_hnd.c will take care */
690 if (DEBUGLEVEL
>= 10) {
691 NDR_PRINT_OUT_DEBUG(samr_QueryDomainInfo
, r
);
694 push
= ndr_push_init_ctx(r
, NULL
);
700 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
701 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
706 blob
= ndr_push_blob(push
);
707 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
717 static bool api_samr_SetDomainInfo(pipes_struct
*p
)
719 const struct ndr_interface_call
*call
;
720 struct ndr_pull
*pull
;
721 struct ndr_push
*push
;
722 enum ndr_err_code ndr_err
;
724 struct samr_SetDomainInfo
*r
;
726 call
= &ndr_table_samr
.calls
[NDR_SAMR_SETDOMAININFO
];
728 r
= talloc(talloc_tos(), struct samr_SetDomainInfo
);
733 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
738 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
744 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
745 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
746 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
751 if (DEBUGLEVEL
>= 10) {
752 NDR_PRINT_IN_DEBUG(samr_SetDomainInfo
, r
);
755 r
->out
.result
= _samr_SetDomainInfo(p
, r
);
757 if (p
->rng_fault_state
) {
759 /* Return true here, srv_pipe_hnd.c will take care */
763 if (DEBUGLEVEL
>= 10) {
764 NDR_PRINT_OUT_DEBUG(samr_SetDomainInfo
, r
);
767 push
= ndr_push_init_ctx(r
, NULL
);
773 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
774 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
779 blob
= ndr_push_blob(push
);
780 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
790 static bool api_samr_CreateDomainGroup(pipes_struct
*p
)
792 const struct ndr_interface_call
*call
;
793 struct ndr_pull
*pull
;
794 struct ndr_push
*push
;
795 enum ndr_err_code ndr_err
;
797 struct samr_CreateDomainGroup
*r
;
799 call
= &ndr_table_samr
.calls
[NDR_SAMR_CREATEDOMAINGROUP
];
801 r
= talloc(talloc_tos(), struct samr_CreateDomainGroup
);
806 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
811 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
817 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
818 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
819 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
824 if (DEBUGLEVEL
>= 10) {
825 NDR_PRINT_IN_DEBUG(samr_CreateDomainGroup
, r
);
829 r
->out
.group_handle
= talloc_zero(r
, struct policy_handle
);
830 if (r
->out
.group_handle
== NULL
) {
835 r
->out
.rid
= talloc_zero(r
, uint32_t);
836 if (r
->out
.rid
== NULL
) {
841 r
->out
.result
= _samr_CreateDomainGroup(p
, r
);
843 if (p
->rng_fault_state
) {
845 /* Return true here, srv_pipe_hnd.c will take care */
849 if (DEBUGLEVEL
>= 10) {
850 NDR_PRINT_OUT_DEBUG(samr_CreateDomainGroup
, r
);
853 push
= ndr_push_init_ctx(r
, NULL
);
859 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
860 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
865 blob
= ndr_push_blob(push
);
866 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
876 static bool api_samr_EnumDomainGroups(pipes_struct
*p
)
878 const struct ndr_interface_call
*call
;
879 struct ndr_pull
*pull
;
880 struct ndr_push
*push
;
881 enum ndr_err_code ndr_err
;
883 struct samr_EnumDomainGroups
*r
;
885 call
= &ndr_table_samr
.calls
[NDR_SAMR_ENUMDOMAINGROUPS
];
887 r
= talloc(talloc_tos(), struct samr_EnumDomainGroups
);
892 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
897 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
903 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
904 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
905 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
910 if (DEBUGLEVEL
>= 10) {
911 NDR_PRINT_IN_DEBUG(samr_EnumDomainGroups
, r
);
915 r
->out
.resume_handle
= r
->in
.resume_handle
;
916 r
->out
.sam
= talloc_zero(r
, struct samr_SamArray
*);
917 if (r
->out
.sam
== NULL
) {
922 r
->out
.num_entries
= talloc_zero(r
, uint32_t);
923 if (r
->out
.num_entries
== NULL
) {
928 r
->out
.result
= _samr_EnumDomainGroups(p
, r
);
930 if (p
->rng_fault_state
) {
932 /* Return true here, srv_pipe_hnd.c will take care */
936 if (DEBUGLEVEL
>= 10) {
937 NDR_PRINT_OUT_DEBUG(samr_EnumDomainGroups
, r
);
940 push
= ndr_push_init_ctx(r
, NULL
);
946 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
947 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
952 blob
= ndr_push_blob(push
);
953 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
963 static bool api_samr_CreateUser(pipes_struct
*p
)
965 const struct ndr_interface_call
*call
;
966 struct ndr_pull
*pull
;
967 struct ndr_push
*push
;
968 enum ndr_err_code ndr_err
;
970 struct samr_CreateUser
*r
;
972 call
= &ndr_table_samr
.calls
[NDR_SAMR_CREATEUSER
];
974 r
= talloc(talloc_tos(), struct samr_CreateUser
);
979 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
984 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
990 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
991 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
992 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
997 if (DEBUGLEVEL
>= 10) {
998 NDR_PRINT_IN_DEBUG(samr_CreateUser
, r
);
1001 ZERO_STRUCT(r
->out
);
1002 r
->out
.user_handle
= talloc_zero(r
, struct policy_handle
);
1003 if (r
->out
.user_handle
== NULL
) {
1008 r
->out
.rid
= talloc_zero(r
, uint32_t);
1009 if (r
->out
.rid
== NULL
) {
1014 r
->out
.result
= _samr_CreateUser(p
, r
);
1016 if (p
->rng_fault_state
) {
1018 /* Return true here, srv_pipe_hnd.c will take care */
1022 if (DEBUGLEVEL
>= 10) {
1023 NDR_PRINT_OUT_DEBUG(samr_CreateUser
, r
);
1026 push
= ndr_push_init_ctx(r
, NULL
);
1032 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
1033 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1038 blob
= ndr_push_blob(push
);
1039 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
1049 static bool api_samr_EnumDomainUsers(pipes_struct
*p
)
1051 const struct ndr_interface_call
*call
;
1052 struct ndr_pull
*pull
;
1053 struct ndr_push
*push
;
1054 enum ndr_err_code ndr_err
;
1056 struct samr_EnumDomainUsers
*r
;
1058 call
= &ndr_table_samr
.calls
[NDR_SAMR_ENUMDOMAINUSERS
];
1060 r
= talloc(talloc_tos(), struct samr_EnumDomainUsers
);
1065 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
1070 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
1076 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
1077 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
1078 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1083 if (DEBUGLEVEL
>= 10) {
1084 NDR_PRINT_IN_DEBUG(samr_EnumDomainUsers
, r
);
1087 ZERO_STRUCT(r
->out
);
1088 r
->out
.resume_handle
= r
->in
.resume_handle
;
1089 r
->out
.sam
= talloc_zero(r
, struct samr_SamArray
*);
1090 if (r
->out
.sam
== NULL
) {
1095 r
->out
.num_entries
= talloc_zero(r
, uint32_t);
1096 if (r
->out
.num_entries
== NULL
) {
1101 r
->out
.result
= _samr_EnumDomainUsers(p
, r
);
1103 if (p
->rng_fault_state
) {
1105 /* Return true here, srv_pipe_hnd.c will take care */
1109 if (DEBUGLEVEL
>= 10) {
1110 NDR_PRINT_OUT_DEBUG(samr_EnumDomainUsers
, r
);
1113 push
= ndr_push_init_ctx(r
, NULL
);
1119 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
1120 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1125 blob
= ndr_push_blob(push
);
1126 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
1136 static bool api_samr_CreateDomAlias(pipes_struct
*p
)
1138 const struct ndr_interface_call
*call
;
1139 struct ndr_pull
*pull
;
1140 struct ndr_push
*push
;
1141 enum ndr_err_code ndr_err
;
1143 struct samr_CreateDomAlias
*r
;
1145 call
= &ndr_table_samr
.calls
[NDR_SAMR_CREATEDOMALIAS
];
1147 r
= talloc(talloc_tos(), struct samr_CreateDomAlias
);
1152 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
1157 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
1163 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
1164 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
1165 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1170 if (DEBUGLEVEL
>= 10) {
1171 NDR_PRINT_IN_DEBUG(samr_CreateDomAlias
, r
);
1174 ZERO_STRUCT(r
->out
);
1175 r
->out
.alias_handle
= talloc_zero(r
, struct policy_handle
);
1176 if (r
->out
.alias_handle
== NULL
) {
1181 r
->out
.rid
= talloc_zero(r
, uint32_t);
1182 if (r
->out
.rid
== NULL
) {
1187 r
->out
.result
= _samr_CreateDomAlias(p
, r
);
1189 if (p
->rng_fault_state
) {
1191 /* Return true here, srv_pipe_hnd.c will take care */
1195 if (DEBUGLEVEL
>= 10) {
1196 NDR_PRINT_OUT_DEBUG(samr_CreateDomAlias
, r
);
1199 push
= ndr_push_init_ctx(r
, NULL
);
1205 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
1206 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1211 blob
= ndr_push_blob(push
);
1212 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
1222 static bool api_samr_EnumDomainAliases(pipes_struct
*p
)
1224 const struct ndr_interface_call
*call
;
1225 struct ndr_pull
*pull
;
1226 struct ndr_push
*push
;
1227 enum ndr_err_code ndr_err
;
1229 struct samr_EnumDomainAliases
*r
;
1231 call
= &ndr_table_samr
.calls
[NDR_SAMR_ENUMDOMAINALIASES
];
1233 r
= talloc(talloc_tos(), struct samr_EnumDomainAliases
);
1238 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
1243 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
1249 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
1250 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
1251 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1256 if (DEBUGLEVEL
>= 10) {
1257 NDR_PRINT_IN_DEBUG(samr_EnumDomainAliases
, r
);
1260 ZERO_STRUCT(r
->out
);
1261 r
->out
.resume_handle
= r
->in
.resume_handle
;
1262 r
->out
.sam
= talloc_zero(r
, struct samr_SamArray
*);
1263 if (r
->out
.sam
== NULL
) {
1268 r
->out
.num_entries
= talloc_zero(r
, uint32_t);
1269 if (r
->out
.num_entries
== NULL
) {
1274 r
->out
.result
= _samr_EnumDomainAliases(p
, r
);
1276 if (p
->rng_fault_state
) {
1278 /* Return true here, srv_pipe_hnd.c will take care */
1282 if (DEBUGLEVEL
>= 10) {
1283 NDR_PRINT_OUT_DEBUG(samr_EnumDomainAliases
, r
);
1286 push
= ndr_push_init_ctx(r
, NULL
);
1292 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
1293 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1298 blob
= ndr_push_blob(push
);
1299 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
1309 static bool api_samr_GetAliasMembership(pipes_struct
*p
)
1311 const struct ndr_interface_call
*call
;
1312 struct ndr_pull
*pull
;
1313 struct ndr_push
*push
;
1314 enum ndr_err_code ndr_err
;
1316 struct samr_GetAliasMembership
*r
;
1318 call
= &ndr_table_samr
.calls
[NDR_SAMR_GETALIASMEMBERSHIP
];
1320 r
= talloc(talloc_tos(), struct samr_GetAliasMembership
);
1325 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
1330 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
1336 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
1337 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
1338 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1343 if (DEBUGLEVEL
>= 10) {
1344 NDR_PRINT_IN_DEBUG(samr_GetAliasMembership
, r
);
1347 ZERO_STRUCT(r
->out
);
1348 r
->out
.rids
= talloc_zero(r
, struct samr_Ids
);
1349 if (r
->out
.rids
== NULL
) {
1354 r
->out
.result
= _samr_GetAliasMembership(p
, r
);
1356 if (p
->rng_fault_state
) {
1358 /* Return true here, srv_pipe_hnd.c will take care */
1362 if (DEBUGLEVEL
>= 10) {
1363 NDR_PRINT_OUT_DEBUG(samr_GetAliasMembership
, r
);
1366 push
= ndr_push_init_ctx(r
, NULL
);
1372 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
1373 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1378 blob
= ndr_push_blob(push
);
1379 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
1389 static bool api_samr_LookupNames(pipes_struct
*p
)
1391 const struct ndr_interface_call
*call
;
1392 struct ndr_pull
*pull
;
1393 struct ndr_push
*push
;
1394 enum ndr_err_code ndr_err
;
1396 struct samr_LookupNames
*r
;
1398 call
= &ndr_table_samr
.calls
[NDR_SAMR_LOOKUPNAMES
];
1400 r
= talloc(talloc_tos(), struct samr_LookupNames
);
1405 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
1410 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
1416 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
1417 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
1418 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1423 if (DEBUGLEVEL
>= 10) {
1424 NDR_PRINT_IN_DEBUG(samr_LookupNames
, r
);
1427 ZERO_STRUCT(r
->out
);
1428 r
->out
.rids
= talloc_zero(r
, struct samr_Ids
);
1429 if (r
->out
.rids
== NULL
) {
1434 r
->out
.types
= talloc_zero(r
, struct samr_Ids
);
1435 if (r
->out
.types
== NULL
) {
1440 r
->out
.result
= _samr_LookupNames(p
, r
);
1442 if (p
->rng_fault_state
) {
1444 /* Return true here, srv_pipe_hnd.c will take care */
1448 if (DEBUGLEVEL
>= 10) {
1449 NDR_PRINT_OUT_DEBUG(samr_LookupNames
, r
);
1452 push
= ndr_push_init_ctx(r
, NULL
);
1458 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
1459 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1464 blob
= ndr_push_blob(push
);
1465 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
1475 static bool api_samr_LookupRids(pipes_struct
*p
)
1477 const struct ndr_interface_call
*call
;
1478 struct ndr_pull
*pull
;
1479 struct ndr_push
*push
;
1480 enum ndr_err_code ndr_err
;
1482 struct samr_LookupRids
*r
;
1484 call
= &ndr_table_samr
.calls
[NDR_SAMR_LOOKUPRIDS
];
1486 r
= talloc(talloc_tos(), struct samr_LookupRids
);
1491 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
1496 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
1502 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
1503 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
1504 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1509 if (DEBUGLEVEL
>= 10) {
1510 NDR_PRINT_IN_DEBUG(samr_LookupRids
, r
);
1513 ZERO_STRUCT(r
->out
);
1514 r
->out
.names
= talloc_zero(r
, struct lsa_Strings
);
1515 if (r
->out
.names
== NULL
) {
1520 r
->out
.types
= talloc_zero(r
, struct samr_Ids
);
1521 if (r
->out
.types
== NULL
) {
1526 r
->out
.result
= _samr_LookupRids(p
, r
);
1528 if (p
->rng_fault_state
) {
1530 /* Return true here, srv_pipe_hnd.c will take care */
1534 if (DEBUGLEVEL
>= 10) {
1535 NDR_PRINT_OUT_DEBUG(samr_LookupRids
, r
);
1538 push
= ndr_push_init_ctx(r
, NULL
);
1544 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
1545 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1550 blob
= ndr_push_blob(push
);
1551 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
1561 static bool api_samr_OpenGroup(pipes_struct
*p
)
1563 const struct ndr_interface_call
*call
;
1564 struct ndr_pull
*pull
;
1565 struct ndr_push
*push
;
1566 enum ndr_err_code ndr_err
;
1568 struct samr_OpenGroup
*r
;
1570 call
= &ndr_table_samr
.calls
[NDR_SAMR_OPENGROUP
];
1572 r
= talloc(talloc_tos(), struct samr_OpenGroup
);
1577 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
1582 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
1588 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
1589 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
1590 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1595 if (DEBUGLEVEL
>= 10) {
1596 NDR_PRINT_IN_DEBUG(samr_OpenGroup
, r
);
1599 ZERO_STRUCT(r
->out
);
1600 r
->out
.group_handle
= talloc_zero(r
, struct policy_handle
);
1601 if (r
->out
.group_handle
== NULL
) {
1606 r
->out
.result
= _samr_OpenGroup(p
, r
);
1608 if (p
->rng_fault_state
) {
1610 /* Return true here, srv_pipe_hnd.c will take care */
1614 if (DEBUGLEVEL
>= 10) {
1615 NDR_PRINT_OUT_DEBUG(samr_OpenGroup
, r
);
1618 push
= ndr_push_init_ctx(r
, NULL
);
1624 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
1625 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1630 blob
= ndr_push_blob(push
);
1631 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
1641 static bool api_samr_QueryGroupInfo(pipes_struct
*p
)
1643 const struct ndr_interface_call
*call
;
1644 struct ndr_pull
*pull
;
1645 struct ndr_push
*push
;
1646 enum ndr_err_code ndr_err
;
1648 struct samr_QueryGroupInfo
*r
;
1650 call
= &ndr_table_samr
.calls
[NDR_SAMR_QUERYGROUPINFO
];
1652 r
= talloc(talloc_tos(), struct samr_QueryGroupInfo
);
1657 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
1662 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
1668 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
1669 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
1670 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1675 if (DEBUGLEVEL
>= 10) {
1676 NDR_PRINT_IN_DEBUG(samr_QueryGroupInfo
, r
);
1679 ZERO_STRUCT(r
->out
);
1680 r
->out
.info
= talloc_zero(r
, union samr_GroupInfo
*);
1681 if (r
->out
.info
== NULL
) {
1686 r
->out
.result
= _samr_QueryGroupInfo(p
, r
);
1688 if (p
->rng_fault_state
) {
1690 /* Return true here, srv_pipe_hnd.c will take care */
1694 if (DEBUGLEVEL
>= 10) {
1695 NDR_PRINT_OUT_DEBUG(samr_QueryGroupInfo
, r
);
1698 push
= ndr_push_init_ctx(r
, NULL
);
1704 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
1705 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1710 blob
= ndr_push_blob(push
);
1711 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
1721 static bool api_samr_SetGroupInfo(pipes_struct
*p
)
1723 const struct ndr_interface_call
*call
;
1724 struct ndr_pull
*pull
;
1725 struct ndr_push
*push
;
1726 enum ndr_err_code ndr_err
;
1728 struct samr_SetGroupInfo
*r
;
1730 call
= &ndr_table_samr
.calls
[NDR_SAMR_SETGROUPINFO
];
1732 r
= talloc(talloc_tos(), struct samr_SetGroupInfo
);
1737 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
1742 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
1748 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
1749 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
1750 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1755 if (DEBUGLEVEL
>= 10) {
1756 NDR_PRINT_IN_DEBUG(samr_SetGroupInfo
, r
);
1759 r
->out
.result
= _samr_SetGroupInfo(p
, r
);
1761 if (p
->rng_fault_state
) {
1763 /* Return true here, srv_pipe_hnd.c will take care */
1767 if (DEBUGLEVEL
>= 10) {
1768 NDR_PRINT_OUT_DEBUG(samr_SetGroupInfo
, r
);
1771 push
= ndr_push_init_ctx(r
, NULL
);
1777 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
1778 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1783 blob
= ndr_push_blob(push
);
1784 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
1794 static bool api_samr_AddGroupMember(pipes_struct
*p
)
1796 const struct ndr_interface_call
*call
;
1797 struct ndr_pull
*pull
;
1798 struct ndr_push
*push
;
1799 enum ndr_err_code ndr_err
;
1801 struct samr_AddGroupMember
*r
;
1803 call
= &ndr_table_samr
.calls
[NDR_SAMR_ADDGROUPMEMBER
];
1805 r
= talloc(talloc_tos(), struct samr_AddGroupMember
);
1810 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
1815 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
1821 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
1822 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
1823 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1828 if (DEBUGLEVEL
>= 10) {
1829 NDR_PRINT_IN_DEBUG(samr_AddGroupMember
, r
);
1832 r
->out
.result
= _samr_AddGroupMember(p
, r
);
1834 if (p
->rng_fault_state
) {
1836 /* Return true here, srv_pipe_hnd.c will take care */
1840 if (DEBUGLEVEL
>= 10) {
1841 NDR_PRINT_OUT_DEBUG(samr_AddGroupMember
, r
);
1844 push
= ndr_push_init_ctx(r
, NULL
);
1850 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
1851 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1856 blob
= ndr_push_blob(push
);
1857 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
1867 static bool api_samr_DeleteDomainGroup(pipes_struct
*p
)
1869 const struct ndr_interface_call
*call
;
1870 struct ndr_pull
*pull
;
1871 struct ndr_push
*push
;
1872 enum ndr_err_code ndr_err
;
1874 struct samr_DeleteDomainGroup
*r
;
1876 call
= &ndr_table_samr
.calls
[NDR_SAMR_DELETEDOMAINGROUP
];
1878 r
= talloc(talloc_tos(), struct samr_DeleteDomainGroup
);
1883 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
1888 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
1894 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
1895 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
1896 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1901 if (DEBUGLEVEL
>= 10) {
1902 NDR_PRINT_IN_DEBUG(samr_DeleteDomainGroup
, r
);
1905 ZERO_STRUCT(r
->out
);
1906 r
->out
.group_handle
= r
->in
.group_handle
;
1907 r
->out
.result
= _samr_DeleteDomainGroup(p
, r
);
1909 if (p
->rng_fault_state
) {
1911 /* Return true here, srv_pipe_hnd.c will take care */
1915 if (DEBUGLEVEL
>= 10) {
1916 NDR_PRINT_OUT_DEBUG(samr_DeleteDomainGroup
, r
);
1919 push
= ndr_push_init_ctx(r
, NULL
);
1925 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
1926 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1931 blob
= ndr_push_blob(push
);
1932 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
1942 static bool api_samr_DeleteGroupMember(pipes_struct
*p
)
1944 const struct ndr_interface_call
*call
;
1945 struct ndr_pull
*pull
;
1946 struct ndr_push
*push
;
1947 enum ndr_err_code ndr_err
;
1949 struct samr_DeleteGroupMember
*r
;
1951 call
= &ndr_table_samr
.calls
[NDR_SAMR_DELETEGROUPMEMBER
];
1953 r
= talloc(talloc_tos(), struct samr_DeleteGroupMember
);
1958 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
1963 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
1969 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
1970 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
1971 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
1976 if (DEBUGLEVEL
>= 10) {
1977 NDR_PRINT_IN_DEBUG(samr_DeleteGroupMember
, r
);
1980 r
->out
.result
= _samr_DeleteGroupMember(p
, r
);
1982 if (p
->rng_fault_state
) {
1984 /* Return true here, srv_pipe_hnd.c will take care */
1988 if (DEBUGLEVEL
>= 10) {
1989 NDR_PRINT_OUT_DEBUG(samr_DeleteGroupMember
, r
);
1992 push
= ndr_push_init_ctx(r
, NULL
);
1998 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
1999 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2004 blob
= ndr_push_blob(push
);
2005 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
2015 static bool api_samr_QueryGroupMember(pipes_struct
*p
)
2017 const struct ndr_interface_call
*call
;
2018 struct ndr_pull
*pull
;
2019 struct ndr_push
*push
;
2020 enum ndr_err_code ndr_err
;
2022 struct samr_QueryGroupMember
*r
;
2024 call
= &ndr_table_samr
.calls
[NDR_SAMR_QUERYGROUPMEMBER
];
2026 r
= talloc(talloc_tos(), struct samr_QueryGroupMember
);
2031 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
2036 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
2042 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
2043 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
2044 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2049 if (DEBUGLEVEL
>= 10) {
2050 NDR_PRINT_IN_DEBUG(samr_QueryGroupMember
, r
);
2053 ZERO_STRUCT(r
->out
);
2054 r
->out
.rids
= talloc_zero(r
, struct samr_RidTypeArray
*);
2055 if (r
->out
.rids
== NULL
) {
2060 r
->out
.result
= _samr_QueryGroupMember(p
, r
);
2062 if (p
->rng_fault_state
) {
2064 /* Return true here, srv_pipe_hnd.c will take care */
2068 if (DEBUGLEVEL
>= 10) {
2069 NDR_PRINT_OUT_DEBUG(samr_QueryGroupMember
, r
);
2072 push
= ndr_push_init_ctx(r
, NULL
);
2078 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
2079 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2084 blob
= ndr_push_blob(push
);
2085 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
2095 static bool api_samr_SetMemberAttributesOfGroup(pipes_struct
*p
)
2097 const struct ndr_interface_call
*call
;
2098 struct ndr_pull
*pull
;
2099 struct ndr_push
*push
;
2100 enum ndr_err_code ndr_err
;
2102 struct samr_SetMemberAttributesOfGroup
*r
;
2104 call
= &ndr_table_samr
.calls
[NDR_SAMR_SETMEMBERATTRIBUTESOFGROUP
];
2106 r
= talloc(talloc_tos(), struct samr_SetMemberAttributesOfGroup
);
2111 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
2116 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
2122 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
2123 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
2124 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2129 if (DEBUGLEVEL
>= 10) {
2130 NDR_PRINT_IN_DEBUG(samr_SetMemberAttributesOfGroup
, r
);
2133 r
->out
.result
= _samr_SetMemberAttributesOfGroup(p
, r
);
2135 if (p
->rng_fault_state
) {
2137 /* Return true here, srv_pipe_hnd.c will take care */
2141 if (DEBUGLEVEL
>= 10) {
2142 NDR_PRINT_OUT_DEBUG(samr_SetMemberAttributesOfGroup
, r
);
2145 push
= ndr_push_init_ctx(r
, NULL
);
2151 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
2152 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2157 blob
= ndr_push_blob(push
);
2158 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
2168 static bool api_samr_OpenAlias(pipes_struct
*p
)
2170 const struct ndr_interface_call
*call
;
2171 struct ndr_pull
*pull
;
2172 struct ndr_push
*push
;
2173 enum ndr_err_code ndr_err
;
2175 struct samr_OpenAlias
*r
;
2177 call
= &ndr_table_samr
.calls
[NDR_SAMR_OPENALIAS
];
2179 r
= talloc(talloc_tos(), struct samr_OpenAlias
);
2184 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
2189 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
2195 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
2196 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
2197 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2202 if (DEBUGLEVEL
>= 10) {
2203 NDR_PRINT_IN_DEBUG(samr_OpenAlias
, r
);
2206 ZERO_STRUCT(r
->out
);
2207 r
->out
.alias_handle
= talloc_zero(r
, struct policy_handle
);
2208 if (r
->out
.alias_handle
== NULL
) {
2213 r
->out
.result
= _samr_OpenAlias(p
, r
);
2215 if (p
->rng_fault_state
) {
2217 /* Return true here, srv_pipe_hnd.c will take care */
2221 if (DEBUGLEVEL
>= 10) {
2222 NDR_PRINT_OUT_DEBUG(samr_OpenAlias
, r
);
2225 push
= ndr_push_init_ctx(r
, NULL
);
2231 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
2232 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2237 blob
= ndr_push_blob(push
);
2238 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
2248 static bool api_samr_QueryAliasInfo(pipes_struct
*p
)
2250 const struct ndr_interface_call
*call
;
2251 struct ndr_pull
*pull
;
2252 struct ndr_push
*push
;
2253 enum ndr_err_code ndr_err
;
2255 struct samr_QueryAliasInfo
*r
;
2257 call
= &ndr_table_samr
.calls
[NDR_SAMR_QUERYALIASINFO
];
2259 r
= talloc(talloc_tos(), struct samr_QueryAliasInfo
);
2264 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
2269 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
2275 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
2276 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
2277 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2282 if (DEBUGLEVEL
>= 10) {
2283 NDR_PRINT_IN_DEBUG(samr_QueryAliasInfo
, r
);
2286 ZERO_STRUCT(r
->out
);
2287 r
->out
.info
= talloc_zero(r
, union samr_AliasInfo
*);
2288 if (r
->out
.info
== NULL
) {
2293 r
->out
.result
= _samr_QueryAliasInfo(p
, r
);
2295 if (p
->rng_fault_state
) {
2297 /* Return true here, srv_pipe_hnd.c will take care */
2301 if (DEBUGLEVEL
>= 10) {
2302 NDR_PRINT_OUT_DEBUG(samr_QueryAliasInfo
, r
);
2305 push
= ndr_push_init_ctx(r
, NULL
);
2311 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
2312 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2317 blob
= ndr_push_blob(push
);
2318 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
2328 static bool api_samr_SetAliasInfo(pipes_struct
*p
)
2330 const struct ndr_interface_call
*call
;
2331 struct ndr_pull
*pull
;
2332 struct ndr_push
*push
;
2333 enum ndr_err_code ndr_err
;
2335 struct samr_SetAliasInfo
*r
;
2337 call
= &ndr_table_samr
.calls
[NDR_SAMR_SETALIASINFO
];
2339 r
= talloc(talloc_tos(), struct samr_SetAliasInfo
);
2344 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
2349 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
2355 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
2356 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
2357 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2362 if (DEBUGLEVEL
>= 10) {
2363 NDR_PRINT_IN_DEBUG(samr_SetAliasInfo
, r
);
2366 r
->out
.result
= _samr_SetAliasInfo(p
, r
);
2368 if (p
->rng_fault_state
) {
2370 /* Return true here, srv_pipe_hnd.c will take care */
2374 if (DEBUGLEVEL
>= 10) {
2375 NDR_PRINT_OUT_DEBUG(samr_SetAliasInfo
, r
);
2378 push
= ndr_push_init_ctx(r
, NULL
);
2384 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
2385 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2390 blob
= ndr_push_blob(push
);
2391 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
2401 static bool api_samr_DeleteDomAlias(pipes_struct
*p
)
2403 const struct ndr_interface_call
*call
;
2404 struct ndr_pull
*pull
;
2405 struct ndr_push
*push
;
2406 enum ndr_err_code ndr_err
;
2408 struct samr_DeleteDomAlias
*r
;
2410 call
= &ndr_table_samr
.calls
[NDR_SAMR_DELETEDOMALIAS
];
2412 r
= talloc(talloc_tos(), struct samr_DeleteDomAlias
);
2417 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
2422 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
2428 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
2429 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
2430 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2435 if (DEBUGLEVEL
>= 10) {
2436 NDR_PRINT_IN_DEBUG(samr_DeleteDomAlias
, r
);
2439 ZERO_STRUCT(r
->out
);
2440 r
->out
.alias_handle
= r
->in
.alias_handle
;
2441 r
->out
.result
= _samr_DeleteDomAlias(p
, r
);
2443 if (p
->rng_fault_state
) {
2445 /* Return true here, srv_pipe_hnd.c will take care */
2449 if (DEBUGLEVEL
>= 10) {
2450 NDR_PRINT_OUT_DEBUG(samr_DeleteDomAlias
, r
);
2453 push
= ndr_push_init_ctx(r
, NULL
);
2459 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
2460 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2465 blob
= ndr_push_blob(push
);
2466 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
2476 static bool api_samr_AddAliasMember(pipes_struct
*p
)
2478 const struct ndr_interface_call
*call
;
2479 struct ndr_pull
*pull
;
2480 struct ndr_push
*push
;
2481 enum ndr_err_code ndr_err
;
2483 struct samr_AddAliasMember
*r
;
2485 call
= &ndr_table_samr
.calls
[NDR_SAMR_ADDALIASMEMBER
];
2487 r
= talloc(talloc_tos(), struct samr_AddAliasMember
);
2492 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
2497 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
2503 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
2504 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
2505 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2510 if (DEBUGLEVEL
>= 10) {
2511 NDR_PRINT_IN_DEBUG(samr_AddAliasMember
, r
);
2514 r
->out
.result
= _samr_AddAliasMember(p
, r
);
2516 if (p
->rng_fault_state
) {
2518 /* Return true here, srv_pipe_hnd.c will take care */
2522 if (DEBUGLEVEL
>= 10) {
2523 NDR_PRINT_OUT_DEBUG(samr_AddAliasMember
, r
);
2526 push
= ndr_push_init_ctx(r
, NULL
);
2532 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
2533 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2538 blob
= ndr_push_blob(push
);
2539 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
2549 static bool api_samr_DeleteAliasMember(pipes_struct
*p
)
2551 const struct ndr_interface_call
*call
;
2552 struct ndr_pull
*pull
;
2553 struct ndr_push
*push
;
2554 enum ndr_err_code ndr_err
;
2556 struct samr_DeleteAliasMember
*r
;
2558 call
= &ndr_table_samr
.calls
[NDR_SAMR_DELETEALIASMEMBER
];
2560 r
= talloc(talloc_tos(), struct samr_DeleteAliasMember
);
2565 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
2570 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
2576 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
2577 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
2578 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2583 if (DEBUGLEVEL
>= 10) {
2584 NDR_PRINT_IN_DEBUG(samr_DeleteAliasMember
, r
);
2587 r
->out
.result
= _samr_DeleteAliasMember(p
, r
);
2589 if (p
->rng_fault_state
) {
2591 /* Return true here, srv_pipe_hnd.c will take care */
2595 if (DEBUGLEVEL
>= 10) {
2596 NDR_PRINT_OUT_DEBUG(samr_DeleteAliasMember
, r
);
2599 push
= ndr_push_init_ctx(r
, NULL
);
2605 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
2606 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2611 blob
= ndr_push_blob(push
);
2612 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
2622 static bool api_samr_GetMembersInAlias(pipes_struct
*p
)
2624 const struct ndr_interface_call
*call
;
2625 struct ndr_pull
*pull
;
2626 struct ndr_push
*push
;
2627 enum ndr_err_code ndr_err
;
2629 struct samr_GetMembersInAlias
*r
;
2631 call
= &ndr_table_samr
.calls
[NDR_SAMR_GETMEMBERSINALIAS
];
2633 r
= talloc(talloc_tos(), struct samr_GetMembersInAlias
);
2638 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
2643 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
2649 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
2650 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
2651 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2656 if (DEBUGLEVEL
>= 10) {
2657 NDR_PRINT_IN_DEBUG(samr_GetMembersInAlias
, r
);
2660 ZERO_STRUCT(r
->out
);
2661 r
->out
.sids
= talloc_zero(r
, struct lsa_SidArray
);
2662 if (r
->out
.sids
== NULL
) {
2667 r
->out
.result
= _samr_GetMembersInAlias(p
, r
);
2669 if (p
->rng_fault_state
) {
2671 /* Return true here, srv_pipe_hnd.c will take care */
2675 if (DEBUGLEVEL
>= 10) {
2676 NDR_PRINT_OUT_DEBUG(samr_GetMembersInAlias
, r
);
2679 push
= ndr_push_init_ctx(r
, NULL
);
2685 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
2686 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2691 blob
= ndr_push_blob(push
);
2692 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
2702 static bool api_samr_OpenUser(pipes_struct
*p
)
2704 const struct ndr_interface_call
*call
;
2705 struct ndr_pull
*pull
;
2706 struct ndr_push
*push
;
2707 enum ndr_err_code ndr_err
;
2709 struct samr_OpenUser
*r
;
2711 call
= &ndr_table_samr
.calls
[NDR_SAMR_OPENUSER
];
2713 r
= talloc(talloc_tos(), struct samr_OpenUser
);
2718 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
2723 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
2729 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
2730 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
2731 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2736 if (DEBUGLEVEL
>= 10) {
2737 NDR_PRINT_IN_DEBUG(samr_OpenUser
, r
);
2740 ZERO_STRUCT(r
->out
);
2741 r
->out
.user_handle
= talloc_zero(r
, struct policy_handle
);
2742 if (r
->out
.user_handle
== NULL
) {
2747 r
->out
.result
= _samr_OpenUser(p
, r
);
2749 if (p
->rng_fault_state
) {
2751 /* Return true here, srv_pipe_hnd.c will take care */
2755 if (DEBUGLEVEL
>= 10) {
2756 NDR_PRINT_OUT_DEBUG(samr_OpenUser
, r
);
2759 push
= ndr_push_init_ctx(r
, NULL
);
2765 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
2766 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2771 blob
= ndr_push_blob(push
);
2772 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
2782 static bool api_samr_DeleteUser(pipes_struct
*p
)
2784 const struct ndr_interface_call
*call
;
2785 struct ndr_pull
*pull
;
2786 struct ndr_push
*push
;
2787 enum ndr_err_code ndr_err
;
2789 struct samr_DeleteUser
*r
;
2791 call
= &ndr_table_samr
.calls
[NDR_SAMR_DELETEUSER
];
2793 r
= talloc(talloc_tos(), struct samr_DeleteUser
);
2798 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
2803 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
2809 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
2810 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
2811 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2816 if (DEBUGLEVEL
>= 10) {
2817 NDR_PRINT_IN_DEBUG(samr_DeleteUser
, r
);
2820 ZERO_STRUCT(r
->out
);
2821 r
->out
.user_handle
= r
->in
.user_handle
;
2822 r
->out
.result
= _samr_DeleteUser(p
, r
);
2824 if (p
->rng_fault_state
) {
2826 /* Return true here, srv_pipe_hnd.c will take care */
2830 if (DEBUGLEVEL
>= 10) {
2831 NDR_PRINT_OUT_DEBUG(samr_DeleteUser
, r
);
2834 push
= ndr_push_init_ctx(r
, NULL
);
2840 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
2841 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2846 blob
= ndr_push_blob(push
);
2847 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
2857 static bool api_samr_QueryUserInfo(pipes_struct
*p
)
2859 const struct ndr_interface_call
*call
;
2860 struct ndr_pull
*pull
;
2861 struct ndr_push
*push
;
2862 enum ndr_err_code ndr_err
;
2864 struct samr_QueryUserInfo
*r
;
2866 call
= &ndr_table_samr
.calls
[NDR_SAMR_QUERYUSERINFO
];
2868 r
= talloc(talloc_tos(), struct samr_QueryUserInfo
);
2873 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
2878 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
2884 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
2885 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
2886 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2891 if (DEBUGLEVEL
>= 10) {
2892 NDR_PRINT_IN_DEBUG(samr_QueryUserInfo
, r
);
2895 ZERO_STRUCT(r
->out
);
2896 r
->out
.info
= talloc_zero(r
, union samr_UserInfo
*);
2897 if (r
->out
.info
== NULL
) {
2902 r
->out
.result
= _samr_QueryUserInfo(p
, r
);
2904 if (p
->rng_fault_state
) {
2906 /* Return true here, srv_pipe_hnd.c will take care */
2910 if (DEBUGLEVEL
>= 10) {
2911 NDR_PRINT_OUT_DEBUG(samr_QueryUserInfo
, r
);
2914 push
= ndr_push_init_ctx(r
, NULL
);
2920 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
2921 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2926 blob
= ndr_push_blob(push
);
2927 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
2937 static bool api_samr_SetUserInfo(pipes_struct
*p
)
2939 const struct ndr_interface_call
*call
;
2940 struct ndr_pull
*pull
;
2941 struct ndr_push
*push
;
2942 enum ndr_err_code ndr_err
;
2944 struct samr_SetUserInfo
*r
;
2946 call
= &ndr_table_samr
.calls
[NDR_SAMR_SETUSERINFO
];
2948 r
= talloc(talloc_tos(), struct samr_SetUserInfo
);
2953 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
2958 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
2964 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
2965 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
2966 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2971 if (DEBUGLEVEL
>= 10) {
2972 NDR_PRINT_IN_DEBUG(samr_SetUserInfo
, r
);
2975 r
->out
.result
= _samr_SetUserInfo(p
, r
);
2977 if (p
->rng_fault_state
) {
2979 /* Return true here, srv_pipe_hnd.c will take care */
2983 if (DEBUGLEVEL
>= 10) {
2984 NDR_PRINT_OUT_DEBUG(samr_SetUserInfo
, r
);
2987 push
= ndr_push_init_ctx(r
, NULL
);
2993 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
2994 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
2999 blob
= ndr_push_blob(push
);
3000 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
3010 static bool api_samr_ChangePasswordUser(pipes_struct
*p
)
3012 const struct ndr_interface_call
*call
;
3013 struct ndr_pull
*pull
;
3014 struct ndr_push
*push
;
3015 enum ndr_err_code ndr_err
;
3017 struct samr_ChangePasswordUser
*r
;
3019 call
= &ndr_table_samr
.calls
[NDR_SAMR_CHANGEPASSWORDUSER
];
3021 r
= talloc(talloc_tos(), struct samr_ChangePasswordUser
);
3026 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
3031 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
3037 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
3038 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
3039 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3044 if (DEBUGLEVEL
>= 10) {
3045 NDR_PRINT_IN_DEBUG(samr_ChangePasswordUser
, r
);
3048 r
->out
.result
= _samr_ChangePasswordUser(p
, r
);
3050 if (p
->rng_fault_state
) {
3052 /* Return true here, srv_pipe_hnd.c will take care */
3056 if (DEBUGLEVEL
>= 10) {
3057 NDR_PRINT_OUT_DEBUG(samr_ChangePasswordUser
, r
);
3060 push
= ndr_push_init_ctx(r
, NULL
);
3066 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
3067 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3072 blob
= ndr_push_blob(push
);
3073 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
3083 static bool api_samr_GetGroupsForUser(pipes_struct
*p
)
3085 const struct ndr_interface_call
*call
;
3086 struct ndr_pull
*pull
;
3087 struct ndr_push
*push
;
3088 enum ndr_err_code ndr_err
;
3090 struct samr_GetGroupsForUser
*r
;
3092 call
= &ndr_table_samr
.calls
[NDR_SAMR_GETGROUPSFORUSER
];
3094 r
= talloc(talloc_tos(), struct samr_GetGroupsForUser
);
3099 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
3104 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
3110 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
3111 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
3112 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3117 if (DEBUGLEVEL
>= 10) {
3118 NDR_PRINT_IN_DEBUG(samr_GetGroupsForUser
, r
);
3121 ZERO_STRUCT(r
->out
);
3122 r
->out
.rids
= talloc_zero(r
, struct samr_RidWithAttributeArray
*);
3123 if (r
->out
.rids
== NULL
) {
3128 r
->out
.result
= _samr_GetGroupsForUser(p
, r
);
3130 if (p
->rng_fault_state
) {
3132 /* Return true here, srv_pipe_hnd.c will take care */
3136 if (DEBUGLEVEL
>= 10) {
3137 NDR_PRINT_OUT_DEBUG(samr_GetGroupsForUser
, r
);
3140 push
= ndr_push_init_ctx(r
, NULL
);
3146 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
3147 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3152 blob
= ndr_push_blob(push
);
3153 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
3163 static bool api_samr_QueryDisplayInfo(pipes_struct
*p
)
3165 const struct ndr_interface_call
*call
;
3166 struct ndr_pull
*pull
;
3167 struct ndr_push
*push
;
3168 enum ndr_err_code ndr_err
;
3170 struct samr_QueryDisplayInfo
*r
;
3172 call
= &ndr_table_samr
.calls
[NDR_SAMR_QUERYDISPLAYINFO
];
3174 r
= talloc(talloc_tos(), struct samr_QueryDisplayInfo
);
3179 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
3184 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
3190 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
3191 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
3192 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3197 if (DEBUGLEVEL
>= 10) {
3198 NDR_PRINT_IN_DEBUG(samr_QueryDisplayInfo
, r
);
3201 ZERO_STRUCT(r
->out
);
3202 r
->out
.total_size
= talloc_zero(r
, uint32_t);
3203 if (r
->out
.total_size
== NULL
) {
3208 r
->out
.returned_size
= talloc_zero(r
, uint32_t);
3209 if (r
->out
.returned_size
== NULL
) {
3214 r
->out
.info
= talloc_zero(r
, union samr_DispInfo
);
3215 if (r
->out
.info
== NULL
) {
3220 r
->out
.result
= _samr_QueryDisplayInfo(p
, r
);
3222 if (p
->rng_fault_state
) {
3224 /* Return true here, srv_pipe_hnd.c will take care */
3228 if (DEBUGLEVEL
>= 10) {
3229 NDR_PRINT_OUT_DEBUG(samr_QueryDisplayInfo
, r
);
3232 push
= ndr_push_init_ctx(r
, NULL
);
3238 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
3239 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3244 blob
= ndr_push_blob(push
);
3245 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
3255 static bool api_samr_GetDisplayEnumerationIndex(pipes_struct
*p
)
3257 const struct ndr_interface_call
*call
;
3258 struct ndr_pull
*pull
;
3259 struct ndr_push
*push
;
3260 enum ndr_err_code ndr_err
;
3262 struct samr_GetDisplayEnumerationIndex
*r
;
3264 call
= &ndr_table_samr
.calls
[NDR_SAMR_GETDISPLAYENUMERATIONINDEX
];
3266 r
= talloc(talloc_tos(), struct samr_GetDisplayEnumerationIndex
);
3271 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
3276 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
3282 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
3283 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
3284 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3289 if (DEBUGLEVEL
>= 10) {
3290 NDR_PRINT_IN_DEBUG(samr_GetDisplayEnumerationIndex
, r
);
3293 ZERO_STRUCT(r
->out
);
3294 r
->out
.idx
= talloc_zero(r
, uint32_t);
3295 if (r
->out
.idx
== NULL
) {
3300 r
->out
.result
= _samr_GetDisplayEnumerationIndex(p
, r
);
3302 if (p
->rng_fault_state
) {
3304 /* Return true here, srv_pipe_hnd.c will take care */
3308 if (DEBUGLEVEL
>= 10) {
3309 NDR_PRINT_OUT_DEBUG(samr_GetDisplayEnumerationIndex
, r
);
3312 push
= ndr_push_init_ctx(r
, NULL
);
3318 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
3319 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3324 blob
= ndr_push_blob(push
);
3325 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
3335 static bool api_samr_TestPrivateFunctionsDomain(pipes_struct
*p
)
3337 const struct ndr_interface_call
*call
;
3338 struct ndr_pull
*pull
;
3339 struct ndr_push
*push
;
3340 enum ndr_err_code ndr_err
;
3342 struct samr_TestPrivateFunctionsDomain
*r
;
3344 call
= &ndr_table_samr
.calls
[NDR_SAMR_TESTPRIVATEFUNCTIONSDOMAIN
];
3346 r
= talloc(talloc_tos(), struct samr_TestPrivateFunctionsDomain
);
3351 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
3356 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
3362 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
3363 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
3364 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3369 if (DEBUGLEVEL
>= 10) {
3370 NDR_PRINT_IN_DEBUG(samr_TestPrivateFunctionsDomain
, r
);
3373 r
->out
.result
= _samr_TestPrivateFunctionsDomain(p
, r
);
3375 if (p
->rng_fault_state
) {
3377 /* Return true here, srv_pipe_hnd.c will take care */
3381 if (DEBUGLEVEL
>= 10) {
3382 NDR_PRINT_OUT_DEBUG(samr_TestPrivateFunctionsDomain
, r
);
3385 push
= ndr_push_init_ctx(r
, NULL
);
3391 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
3392 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3397 blob
= ndr_push_blob(push
);
3398 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
3408 static bool api_samr_TestPrivateFunctionsUser(pipes_struct
*p
)
3410 const struct ndr_interface_call
*call
;
3411 struct ndr_pull
*pull
;
3412 struct ndr_push
*push
;
3413 enum ndr_err_code ndr_err
;
3415 struct samr_TestPrivateFunctionsUser
*r
;
3417 call
= &ndr_table_samr
.calls
[NDR_SAMR_TESTPRIVATEFUNCTIONSUSER
];
3419 r
= talloc(talloc_tos(), struct samr_TestPrivateFunctionsUser
);
3424 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
3429 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
3435 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
3436 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
3437 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3442 if (DEBUGLEVEL
>= 10) {
3443 NDR_PRINT_IN_DEBUG(samr_TestPrivateFunctionsUser
, r
);
3446 r
->out
.result
= _samr_TestPrivateFunctionsUser(p
, r
);
3448 if (p
->rng_fault_state
) {
3450 /* Return true here, srv_pipe_hnd.c will take care */
3454 if (DEBUGLEVEL
>= 10) {
3455 NDR_PRINT_OUT_DEBUG(samr_TestPrivateFunctionsUser
, r
);
3458 push
= ndr_push_init_ctx(r
, NULL
);
3464 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
3465 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3470 blob
= ndr_push_blob(push
);
3471 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
3481 static bool api_samr_GetUserPwInfo(pipes_struct
*p
)
3483 const struct ndr_interface_call
*call
;
3484 struct ndr_pull
*pull
;
3485 struct ndr_push
*push
;
3486 enum ndr_err_code ndr_err
;
3488 struct samr_GetUserPwInfo
*r
;
3490 call
= &ndr_table_samr
.calls
[NDR_SAMR_GETUSERPWINFO
];
3492 r
= talloc(talloc_tos(), struct samr_GetUserPwInfo
);
3497 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
3502 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
3508 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
3509 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
3510 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3515 if (DEBUGLEVEL
>= 10) {
3516 NDR_PRINT_IN_DEBUG(samr_GetUserPwInfo
, r
);
3519 ZERO_STRUCT(r
->out
);
3520 r
->out
.info
= talloc_zero(r
, struct samr_PwInfo
);
3521 if (r
->out
.info
== NULL
) {
3526 r
->out
.result
= _samr_GetUserPwInfo(p
, r
);
3528 if (p
->rng_fault_state
) {
3530 /* Return true here, srv_pipe_hnd.c will take care */
3534 if (DEBUGLEVEL
>= 10) {
3535 NDR_PRINT_OUT_DEBUG(samr_GetUserPwInfo
, r
);
3538 push
= ndr_push_init_ctx(r
, NULL
);
3544 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
3545 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3550 blob
= ndr_push_blob(push
);
3551 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
3561 static bool api_samr_RemoveMemberFromForeignDomain(pipes_struct
*p
)
3563 const struct ndr_interface_call
*call
;
3564 struct ndr_pull
*pull
;
3565 struct ndr_push
*push
;
3566 enum ndr_err_code ndr_err
;
3568 struct samr_RemoveMemberFromForeignDomain
*r
;
3570 call
= &ndr_table_samr
.calls
[NDR_SAMR_REMOVEMEMBERFROMFOREIGNDOMAIN
];
3572 r
= talloc(talloc_tos(), struct samr_RemoveMemberFromForeignDomain
);
3577 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
3582 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
3588 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
3589 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
3590 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3595 if (DEBUGLEVEL
>= 10) {
3596 NDR_PRINT_IN_DEBUG(samr_RemoveMemberFromForeignDomain
, r
);
3599 r
->out
.result
= _samr_RemoveMemberFromForeignDomain(p
, r
);
3601 if (p
->rng_fault_state
) {
3603 /* Return true here, srv_pipe_hnd.c will take care */
3607 if (DEBUGLEVEL
>= 10) {
3608 NDR_PRINT_OUT_DEBUG(samr_RemoveMemberFromForeignDomain
, r
);
3611 push
= ndr_push_init_ctx(r
, NULL
);
3617 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
3618 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3623 blob
= ndr_push_blob(push
);
3624 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
3634 static bool api_samr_QueryDomainInfo2(pipes_struct
*p
)
3636 const struct ndr_interface_call
*call
;
3637 struct ndr_pull
*pull
;
3638 struct ndr_push
*push
;
3639 enum ndr_err_code ndr_err
;
3641 struct samr_QueryDomainInfo2
*r
;
3643 call
= &ndr_table_samr
.calls
[NDR_SAMR_QUERYDOMAININFO2
];
3645 r
= talloc(talloc_tos(), struct samr_QueryDomainInfo2
);
3650 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
3655 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
3661 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
3662 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
3663 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3668 if (DEBUGLEVEL
>= 10) {
3669 NDR_PRINT_IN_DEBUG(samr_QueryDomainInfo2
, r
);
3672 ZERO_STRUCT(r
->out
);
3673 r
->out
.info
= talloc_zero(r
, union samr_DomainInfo
*);
3674 if (r
->out
.info
== NULL
) {
3679 r
->out
.result
= _samr_QueryDomainInfo2(p
, r
);
3681 if (p
->rng_fault_state
) {
3683 /* Return true here, srv_pipe_hnd.c will take care */
3687 if (DEBUGLEVEL
>= 10) {
3688 NDR_PRINT_OUT_DEBUG(samr_QueryDomainInfo2
, r
);
3691 push
= ndr_push_init_ctx(r
, NULL
);
3697 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
3698 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3703 blob
= ndr_push_blob(push
);
3704 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
3714 static bool api_samr_QueryUserInfo2(pipes_struct
*p
)
3716 const struct ndr_interface_call
*call
;
3717 struct ndr_pull
*pull
;
3718 struct ndr_push
*push
;
3719 enum ndr_err_code ndr_err
;
3721 struct samr_QueryUserInfo2
*r
;
3723 call
= &ndr_table_samr
.calls
[NDR_SAMR_QUERYUSERINFO2
];
3725 r
= talloc(talloc_tos(), struct samr_QueryUserInfo2
);
3730 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
3735 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
3741 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
3742 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
3743 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3748 if (DEBUGLEVEL
>= 10) {
3749 NDR_PRINT_IN_DEBUG(samr_QueryUserInfo2
, r
);
3752 ZERO_STRUCT(r
->out
);
3753 r
->out
.info
= talloc_zero(r
, union samr_UserInfo
*);
3754 if (r
->out
.info
== NULL
) {
3759 r
->out
.result
= _samr_QueryUserInfo2(p
, r
);
3761 if (p
->rng_fault_state
) {
3763 /* Return true here, srv_pipe_hnd.c will take care */
3767 if (DEBUGLEVEL
>= 10) {
3768 NDR_PRINT_OUT_DEBUG(samr_QueryUserInfo2
, r
);
3771 push
= ndr_push_init_ctx(r
, NULL
);
3777 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
3778 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3783 blob
= ndr_push_blob(push
);
3784 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
3794 static bool api_samr_QueryDisplayInfo2(pipes_struct
*p
)
3796 const struct ndr_interface_call
*call
;
3797 struct ndr_pull
*pull
;
3798 struct ndr_push
*push
;
3799 enum ndr_err_code ndr_err
;
3801 struct samr_QueryDisplayInfo2
*r
;
3803 call
= &ndr_table_samr
.calls
[NDR_SAMR_QUERYDISPLAYINFO2
];
3805 r
= talloc(talloc_tos(), struct samr_QueryDisplayInfo2
);
3810 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
3815 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
3821 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
3822 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
3823 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3828 if (DEBUGLEVEL
>= 10) {
3829 NDR_PRINT_IN_DEBUG(samr_QueryDisplayInfo2
, r
);
3832 ZERO_STRUCT(r
->out
);
3833 r
->out
.total_size
= talloc_zero(r
, uint32_t);
3834 if (r
->out
.total_size
== NULL
) {
3839 r
->out
.returned_size
= talloc_zero(r
, uint32_t);
3840 if (r
->out
.returned_size
== NULL
) {
3845 r
->out
.info
= talloc_zero(r
, union samr_DispInfo
);
3846 if (r
->out
.info
== NULL
) {
3851 r
->out
.result
= _samr_QueryDisplayInfo2(p
, r
);
3853 if (p
->rng_fault_state
) {
3855 /* Return true here, srv_pipe_hnd.c will take care */
3859 if (DEBUGLEVEL
>= 10) {
3860 NDR_PRINT_OUT_DEBUG(samr_QueryDisplayInfo2
, r
);
3863 push
= ndr_push_init_ctx(r
, NULL
);
3869 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
3870 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3875 blob
= ndr_push_blob(push
);
3876 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
3886 static bool api_samr_GetDisplayEnumerationIndex2(pipes_struct
*p
)
3888 const struct ndr_interface_call
*call
;
3889 struct ndr_pull
*pull
;
3890 struct ndr_push
*push
;
3891 enum ndr_err_code ndr_err
;
3893 struct samr_GetDisplayEnumerationIndex2
*r
;
3895 call
= &ndr_table_samr
.calls
[NDR_SAMR_GETDISPLAYENUMERATIONINDEX2
];
3897 r
= talloc(talloc_tos(), struct samr_GetDisplayEnumerationIndex2
);
3902 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
3907 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
3913 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
3914 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
3915 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3920 if (DEBUGLEVEL
>= 10) {
3921 NDR_PRINT_IN_DEBUG(samr_GetDisplayEnumerationIndex2
, r
);
3924 ZERO_STRUCT(r
->out
);
3925 r
->out
.idx
= talloc_zero(r
, uint32_t);
3926 if (r
->out
.idx
== NULL
) {
3931 r
->out
.result
= _samr_GetDisplayEnumerationIndex2(p
, r
);
3933 if (p
->rng_fault_state
) {
3935 /* Return true here, srv_pipe_hnd.c will take care */
3939 if (DEBUGLEVEL
>= 10) {
3940 NDR_PRINT_OUT_DEBUG(samr_GetDisplayEnumerationIndex2
, r
);
3943 push
= ndr_push_init_ctx(r
, NULL
);
3949 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
3950 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
3955 blob
= ndr_push_blob(push
);
3956 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
3966 static bool api_samr_CreateUser2(pipes_struct
*p
)
3968 const struct ndr_interface_call
*call
;
3969 struct ndr_pull
*pull
;
3970 struct ndr_push
*push
;
3971 enum ndr_err_code ndr_err
;
3973 struct samr_CreateUser2
*r
;
3975 call
= &ndr_table_samr
.calls
[NDR_SAMR_CREATEUSER2
];
3977 r
= talloc(talloc_tos(), struct samr_CreateUser2
);
3982 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
3987 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
3993 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
3994 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
3995 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4000 if (DEBUGLEVEL
>= 10) {
4001 NDR_PRINT_IN_DEBUG(samr_CreateUser2
, r
);
4004 ZERO_STRUCT(r
->out
);
4005 r
->out
.user_handle
= talloc_zero(r
, struct policy_handle
);
4006 if (r
->out
.user_handle
== NULL
) {
4011 r
->out
.access_granted
= talloc_zero(r
, uint32_t);
4012 if (r
->out
.access_granted
== NULL
) {
4017 r
->out
.rid
= talloc_zero(r
, uint32_t);
4018 if (r
->out
.rid
== NULL
) {
4023 r
->out
.result
= _samr_CreateUser2(p
, r
);
4025 if (p
->rng_fault_state
) {
4027 /* Return true here, srv_pipe_hnd.c will take care */
4031 if (DEBUGLEVEL
>= 10) {
4032 NDR_PRINT_OUT_DEBUG(samr_CreateUser2
, r
);
4035 push
= ndr_push_init_ctx(r
, NULL
);
4041 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
4042 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4047 blob
= ndr_push_blob(push
);
4048 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
4058 static bool api_samr_QueryDisplayInfo3(pipes_struct
*p
)
4060 const struct ndr_interface_call
*call
;
4061 struct ndr_pull
*pull
;
4062 struct ndr_push
*push
;
4063 enum ndr_err_code ndr_err
;
4065 struct samr_QueryDisplayInfo3
*r
;
4067 call
= &ndr_table_samr
.calls
[NDR_SAMR_QUERYDISPLAYINFO3
];
4069 r
= talloc(talloc_tos(), struct samr_QueryDisplayInfo3
);
4074 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
4079 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
4085 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
4086 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
4087 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4092 if (DEBUGLEVEL
>= 10) {
4093 NDR_PRINT_IN_DEBUG(samr_QueryDisplayInfo3
, r
);
4096 ZERO_STRUCT(r
->out
);
4097 r
->out
.total_size
= talloc_zero(r
, uint32_t);
4098 if (r
->out
.total_size
== NULL
) {
4103 r
->out
.returned_size
= talloc_zero(r
, uint32_t);
4104 if (r
->out
.returned_size
== NULL
) {
4109 r
->out
.info
= talloc_zero(r
, union samr_DispInfo
);
4110 if (r
->out
.info
== NULL
) {
4115 r
->out
.result
= _samr_QueryDisplayInfo3(p
, r
);
4117 if (p
->rng_fault_state
) {
4119 /* Return true here, srv_pipe_hnd.c will take care */
4123 if (DEBUGLEVEL
>= 10) {
4124 NDR_PRINT_OUT_DEBUG(samr_QueryDisplayInfo3
, r
);
4127 push
= ndr_push_init_ctx(r
, NULL
);
4133 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
4134 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4139 blob
= ndr_push_blob(push
);
4140 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
4150 static bool api_samr_AddMultipleMembersToAlias(pipes_struct
*p
)
4152 const struct ndr_interface_call
*call
;
4153 struct ndr_pull
*pull
;
4154 struct ndr_push
*push
;
4155 enum ndr_err_code ndr_err
;
4157 struct samr_AddMultipleMembersToAlias
*r
;
4159 call
= &ndr_table_samr
.calls
[NDR_SAMR_ADDMULTIPLEMEMBERSTOALIAS
];
4161 r
= talloc(talloc_tos(), struct samr_AddMultipleMembersToAlias
);
4166 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
4171 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
4177 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
4178 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
4179 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4184 if (DEBUGLEVEL
>= 10) {
4185 NDR_PRINT_IN_DEBUG(samr_AddMultipleMembersToAlias
, r
);
4188 r
->out
.result
= _samr_AddMultipleMembersToAlias(p
, r
);
4190 if (p
->rng_fault_state
) {
4192 /* Return true here, srv_pipe_hnd.c will take care */
4196 if (DEBUGLEVEL
>= 10) {
4197 NDR_PRINT_OUT_DEBUG(samr_AddMultipleMembersToAlias
, r
);
4200 push
= ndr_push_init_ctx(r
, NULL
);
4206 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
4207 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4212 blob
= ndr_push_blob(push
);
4213 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
4223 static bool api_samr_RemoveMultipleMembersFromAlias(pipes_struct
*p
)
4225 const struct ndr_interface_call
*call
;
4226 struct ndr_pull
*pull
;
4227 struct ndr_push
*push
;
4228 enum ndr_err_code ndr_err
;
4230 struct samr_RemoveMultipleMembersFromAlias
*r
;
4232 call
= &ndr_table_samr
.calls
[NDR_SAMR_REMOVEMULTIPLEMEMBERSFROMALIAS
];
4234 r
= talloc(talloc_tos(), struct samr_RemoveMultipleMembersFromAlias
);
4239 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
4244 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
4250 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
4251 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
4252 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4257 if (DEBUGLEVEL
>= 10) {
4258 NDR_PRINT_IN_DEBUG(samr_RemoveMultipleMembersFromAlias
, r
);
4261 r
->out
.result
= _samr_RemoveMultipleMembersFromAlias(p
, r
);
4263 if (p
->rng_fault_state
) {
4265 /* Return true here, srv_pipe_hnd.c will take care */
4269 if (DEBUGLEVEL
>= 10) {
4270 NDR_PRINT_OUT_DEBUG(samr_RemoveMultipleMembersFromAlias
, r
);
4273 push
= ndr_push_init_ctx(r
, NULL
);
4279 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
4280 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4285 blob
= ndr_push_blob(push
);
4286 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
4296 static bool api_samr_OemChangePasswordUser2(pipes_struct
*p
)
4298 const struct ndr_interface_call
*call
;
4299 struct ndr_pull
*pull
;
4300 struct ndr_push
*push
;
4301 enum ndr_err_code ndr_err
;
4303 struct samr_OemChangePasswordUser2
*r
;
4305 call
= &ndr_table_samr
.calls
[NDR_SAMR_OEMCHANGEPASSWORDUSER2
];
4307 r
= talloc(talloc_tos(), struct samr_OemChangePasswordUser2
);
4312 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
4317 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
4323 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
4324 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
4325 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4330 if (DEBUGLEVEL
>= 10) {
4331 NDR_PRINT_IN_DEBUG(samr_OemChangePasswordUser2
, r
);
4334 r
->out
.result
= _samr_OemChangePasswordUser2(p
, r
);
4336 if (p
->rng_fault_state
) {
4338 /* Return true here, srv_pipe_hnd.c will take care */
4342 if (DEBUGLEVEL
>= 10) {
4343 NDR_PRINT_OUT_DEBUG(samr_OemChangePasswordUser2
, r
);
4346 push
= ndr_push_init_ctx(r
, NULL
);
4352 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
4353 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4358 blob
= ndr_push_blob(push
);
4359 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
4369 static bool api_samr_ChangePasswordUser2(pipes_struct
*p
)
4371 const struct ndr_interface_call
*call
;
4372 struct ndr_pull
*pull
;
4373 struct ndr_push
*push
;
4374 enum ndr_err_code ndr_err
;
4376 struct samr_ChangePasswordUser2
*r
;
4378 call
= &ndr_table_samr
.calls
[NDR_SAMR_CHANGEPASSWORDUSER2
];
4380 r
= talloc(talloc_tos(), struct samr_ChangePasswordUser2
);
4385 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
4390 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
4396 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
4397 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
4398 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4403 if (DEBUGLEVEL
>= 10) {
4404 NDR_PRINT_IN_DEBUG(samr_ChangePasswordUser2
, r
);
4407 r
->out
.result
= _samr_ChangePasswordUser2(p
, r
);
4409 if (p
->rng_fault_state
) {
4411 /* Return true here, srv_pipe_hnd.c will take care */
4415 if (DEBUGLEVEL
>= 10) {
4416 NDR_PRINT_OUT_DEBUG(samr_ChangePasswordUser2
, r
);
4419 push
= ndr_push_init_ctx(r
, NULL
);
4425 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
4426 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4431 blob
= ndr_push_blob(push
);
4432 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
4442 static bool api_samr_GetDomPwInfo(pipes_struct
*p
)
4444 const struct ndr_interface_call
*call
;
4445 struct ndr_pull
*pull
;
4446 struct ndr_push
*push
;
4447 enum ndr_err_code ndr_err
;
4449 struct samr_GetDomPwInfo
*r
;
4451 call
= &ndr_table_samr
.calls
[NDR_SAMR_GETDOMPWINFO
];
4453 r
= talloc(talloc_tos(), struct samr_GetDomPwInfo
);
4458 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
4463 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
4469 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
4470 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
4471 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4476 if (DEBUGLEVEL
>= 10) {
4477 NDR_PRINT_IN_DEBUG(samr_GetDomPwInfo
, r
);
4480 ZERO_STRUCT(r
->out
);
4481 r
->out
.info
= talloc_zero(r
, struct samr_PwInfo
);
4482 if (r
->out
.info
== NULL
) {
4487 r
->out
.result
= _samr_GetDomPwInfo(p
, r
);
4489 if (p
->rng_fault_state
) {
4491 /* Return true here, srv_pipe_hnd.c will take care */
4495 if (DEBUGLEVEL
>= 10) {
4496 NDR_PRINT_OUT_DEBUG(samr_GetDomPwInfo
, r
);
4499 push
= ndr_push_init_ctx(r
, NULL
);
4505 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
4506 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4511 blob
= ndr_push_blob(push
);
4512 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
4522 static bool api_samr_Connect2(pipes_struct
*p
)
4524 const struct ndr_interface_call
*call
;
4525 struct ndr_pull
*pull
;
4526 struct ndr_push
*push
;
4527 enum ndr_err_code ndr_err
;
4529 struct samr_Connect2
*r
;
4531 call
= &ndr_table_samr
.calls
[NDR_SAMR_CONNECT2
];
4533 r
= talloc(talloc_tos(), struct samr_Connect2
);
4538 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
4543 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
4549 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
4550 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
4551 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4556 if (DEBUGLEVEL
>= 10) {
4557 NDR_PRINT_IN_DEBUG(samr_Connect2
, r
);
4560 ZERO_STRUCT(r
->out
);
4561 r
->out
.connect_handle
= talloc_zero(r
, struct policy_handle
);
4562 if (r
->out
.connect_handle
== NULL
) {
4567 r
->out
.result
= _samr_Connect2(p
, r
);
4569 if (p
->rng_fault_state
) {
4571 /* Return true here, srv_pipe_hnd.c will take care */
4575 if (DEBUGLEVEL
>= 10) {
4576 NDR_PRINT_OUT_DEBUG(samr_Connect2
, r
);
4579 push
= ndr_push_init_ctx(r
, NULL
);
4585 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
4586 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4591 blob
= ndr_push_blob(push
);
4592 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
4602 static bool api_samr_SetUserInfo2(pipes_struct
*p
)
4604 const struct ndr_interface_call
*call
;
4605 struct ndr_pull
*pull
;
4606 struct ndr_push
*push
;
4607 enum ndr_err_code ndr_err
;
4609 struct samr_SetUserInfo2
*r
;
4611 call
= &ndr_table_samr
.calls
[NDR_SAMR_SETUSERINFO2
];
4613 r
= talloc(talloc_tos(), struct samr_SetUserInfo2
);
4618 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
4623 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
4629 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
4630 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
4631 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4636 if (DEBUGLEVEL
>= 10) {
4637 NDR_PRINT_IN_DEBUG(samr_SetUserInfo2
, r
);
4640 r
->out
.result
= _samr_SetUserInfo2(p
, r
);
4642 if (p
->rng_fault_state
) {
4644 /* Return true here, srv_pipe_hnd.c will take care */
4648 if (DEBUGLEVEL
>= 10) {
4649 NDR_PRINT_OUT_DEBUG(samr_SetUserInfo2
, r
);
4652 push
= ndr_push_init_ctx(r
, NULL
);
4658 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
4659 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4664 blob
= ndr_push_blob(push
);
4665 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
4675 static bool api_samr_SetBootKeyInformation(pipes_struct
*p
)
4677 const struct ndr_interface_call
*call
;
4678 struct ndr_pull
*pull
;
4679 struct ndr_push
*push
;
4680 enum ndr_err_code ndr_err
;
4682 struct samr_SetBootKeyInformation
*r
;
4684 call
= &ndr_table_samr
.calls
[NDR_SAMR_SETBOOTKEYINFORMATION
];
4686 r
= talloc(talloc_tos(), struct samr_SetBootKeyInformation
);
4691 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
4696 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
4702 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
4703 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
4704 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4709 if (DEBUGLEVEL
>= 10) {
4710 NDR_PRINT_IN_DEBUG(samr_SetBootKeyInformation
, r
);
4713 r
->out
.result
= _samr_SetBootKeyInformation(p
, r
);
4715 if (p
->rng_fault_state
) {
4717 /* Return true here, srv_pipe_hnd.c will take care */
4721 if (DEBUGLEVEL
>= 10) {
4722 NDR_PRINT_OUT_DEBUG(samr_SetBootKeyInformation
, r
);
4725 push
= ndr_push_init_ctx(r
, NULL
);
4731 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
4732 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4737 blob
= ndr_push_blob(push
);
4738 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
4748 static bool api_samr_GetBootKeyInformation(pipes_struct
*p
)
4750 const struct ndr_interface_call
*call
;
4751 struct ndr_pull
*pull
;
4752 struct ndr_push
*push
;
4753 enum ndr_err_code ndr_err
;
4755 struct samr_GetBootKeyInformation
*r
;
4757 call
= &ndr_table_samr
.calls
[NDR_SAMR_GETBOOTKEYINFORMATION
];
4759 r
= talloc(talloc_tos(), struct samr_GetBootKeyInformation
);
4764 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
4769 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
4775 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
4776 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
4777 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4782 if (DEBUGLEVEL
>= 10) {
4783 NDR_PRINT_IN_DEBUG(samr_GetBootKeyInformation
, r
);
4786 ZERO_STRUCT(r
->out
);
4787 r
->out
.unknown
= talloc_zero(r
, uint32_t);
4788 if (r
->out
.unknown
== NULL
) {
4793 r
->out
.result
= _samr_GetBootKeyInformation(p
, r
);
4795 if (p
->rng_fault_state
) {
4797 /* Return true here, srv_pipe_hnd.c will take care */
4801 if (DEBUGLEVEL
>= 10) {
4802 NDR_PRINT_OUT_DEBUG(samr_GetBootKeyInformation
, r
);
4805 push
= ndr_push_init_ctx(r
, NULL
);
4811 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
4812 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4817 blob
= ndr_push_blob(push
);
4818 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
4828 static bool api_samr_Connect3(pipes_struct
*p
)
4830 const struct ndr_interface_call
*call
;
4831 struct ndr_pull
*pull
;
4832 struct ndr_push
*push
;
4833 enum ndr_err_code ndr_err
;
4835 struct samr_Connect3
*r
;
4837 call
= &ndr_table_samr
.calls
[NDR_SAMR_CONNECT3
];
4839 r
= talloc(talloc_tos(), struct samr_Connect3
);
4844 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
4849 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
4855 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
4856 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
4857 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4862 if (DEBUGLEVEL
>= 10) {
4863 NDR_PRINT_IN_DEBUG(samr_Connect3
, r
);
4866 ZERO_STRUCT(r
->out
);
4867 r
->out
.connect_handle
= talloc_zero(r
, struct policy_handle
);
4868 if (r
->out
.connect_handle
== NULL
) {
4873 r
->out
.result
= _samr_Connect3(p
, r
);
4875 if (p
->rng_fault_state
) {
4877 /* Return true here, srv_pipe_hnd.c will take care */
4881 if (DEBUGLEVEL
>= 10) {
4882 NDR_PRINT_OUT_DEBUG(samr_Connect3
, r
);
4885 push
= ndr_push_init_ctx(r
, NULL
);
4891 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
4892 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4897 blob
= ndr_push_blob(push
);
4898 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
4908 static bool api_samr_Connect4(pipes_struct
*p
)
4910 const struct ndr_interface_call
*call
;
4911 struct ndr_pull
*pull
;
4912 struct ndr_push
*push
;
4913 enum ndr_err_code ndr_err
;
4915 struct samr_Connect4
*r
;
4917 call
= &ndr_table_samr
.calls
[NDR_SAMR_CONNECT4
];
4919 r
= talloc(talloc_tos(), struct samr_Connect4
);
4924 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
4929 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
4935 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
4936 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
4937 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4942 if (DEBUGLEVEL
>= 10) {
4943 NDR_PRINT_IN_DEBUG(samr_Connect4
, r
);
4946 ZERO_STRUCT(r
->out
);
4947 r
->out
.connect_handle
= talloc_zero(r
, struct policy_handle
);
4948 if (r
->out
.connect_handle
== NULL
) {
4953 r
->out
.result
= _samr_Connect4(p
, r
);
4955 if (p
->rng_fault_state
) {
4957 /* Return true here, srv_pipe_hnd.c will take care */
4961 if (DEBUGLEVEL
>= 10) {
4962 NDR_PRINT_OUT_DEBUG(samr_Connect4
, r
);
4965 push
= ndr_push_init_ctx(r
, NULL
);
4971 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
4972 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
4977 blob
= ndr_push_blob(push
);
4978 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
4988 static bool api_samr_ChangePasswordUser3(pipes_struct
*p
)
4990 const struct ndr_interface_call
*call
;
4991 struct ndr_pull
*pull
;
4992 struct ndr_push
*push
;
4993 enum ndr_err_code ndr_err
;
4995 struct samr_ChangePasswordUser3
*r
;
4997 call
= &ndr_table_samr
.calls
[NDR_SAMR_CHANGEPASSWORDUSER3
];
4999 r
= talloc(talloc_tos(), struct samr_ChangePasswordUser3
);
5004 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
5009 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
5015 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
5016 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
5017 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
5022 if (DEBUGLEVEL
>= 10) {
5023 NDR_PRINT_IN_DEBUG(samr_ChangePasswordUser3
, r
);
5026 ZERO_STRUCT(r
->out
);
5027 r
->out
.dominfo
= talloc_zero(r
, struct samr_DomInfo1
*);
5028 if (r
->out
.dominfo
== NULL
) {
5033 r
->out
.reject
= talloc_zero(r
, struct userPwdChangeFailureInformation
*);
5034 if (r
->out
.reject
== NULL
) {
5039 r
->out
.result
= _samr_ChangePasswordUser3(p
, r
);
5041 if (p
->rng_fault_state
) {
5043 /* Return true here, srv_pipe_hnd.c will take care */
5047 if (DEBUGLEVEL
>= 10) {
5048 NDR_PRINT_OUT_DEBUG(samr_ChangePasswordUser3
, r
);
5051 push
= ndr_push_init_ctx(r
, NULL
);
5057 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
5058 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
5063 blob
= ndr_push_blob(push
);
5064 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
5074 static bool api_samr_Connect5(pipes_struct
*p
)
5076 const struct ndr_interface_call
*call
;
5077 struct ndr_pull
*pull
;
5078 struct ndr_push
*push
;
5079 enum ndr_err_code ndr_err
;
5081 struct samr_Connect5
*r
;
5083 call
= &ndr_table_samr
.calls
[NDR_SAMR_CONNECT5
];
5085 r
= talloc(talloc_tos(), struct samr_Connect5
);
5090 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
5095 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
5101 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
5102 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
5103 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
5108 if (DEBUGLEVEL
>= 10) {
5109 NDR_PRINT_IN_DEBUG(samr_Connect5
, r
);
5112 ZERO_STRUCT(r
->out
);
5113 r
->out
.level_out
= talloc_zero(r
, uint32_t);
5114 if (r
->out
.level_out
== NULL
) {
5119 r
->out
.info_out
= talloc_zero(r
, union samr_ConnectInfo
);
5120 if (r
->out
.info_out
== NULL
) {
5125 r
->out
.connect_handle
= talloc_zero(r
, struct policy_handle
);
5126 if (r
->out
.connect_handle
== NULL
) {
5131 r
->out
.result
= _samr_Connect5(p
, r
);
5133 if (p
->rng_fault_state
) {
5135 /* Return true here, srv_pipe_hnd.c will take care */
5139 if (DEBUGLEVEL
>= 10) {
5140 NDR_PRINT_OUT_DEBUG(samr_Connect5
, r
);
5143 push
= ndr_push_init_ctx(r
, NULL
);
5149 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
5150 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
5155 blob
= ndr_push_blob(push
);
5156 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
5166 static bool api_samr_RidToSid(pipes_struct
*p
)
5168 const struct ndr_interface_call
*call
;
5169 struct ndr_pull
*pull
;
5170 struct ndr_push
*push
;
5171 enum ndr_err_code ndr_err
;
5173 struct samr_RidToSid
*r
;
5175 call
= &ndr_table_samr
.calls
[NDR_SAMR_RIDTOSID
];
5177 r
= talloc(talloc_tos(), struct samr_RidToSid
);
5182 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
5187 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
5193 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
5194 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
5195 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
5200 if (DEBUGLEVEL
>= 10) {
5201 NDR_PRINT_IN_DEBUG(samr_RidToSid
, r
);
5204 ZERO_STRUCT(r
->out
);
5205 r
->out
.sid
= talloc_zero(r
, struct dom_sid2
*);
5206 if (r
->out
.sid
== NULL
) {
5211 r
->out
.result
= _samr_RidToSid(p
, r
);
5213 if (p
->rng_fault_state
) {
5215 /* Return true here, srv_pipe_hnd.c will take care */
5219 if (DEBUGLEVEL
>= 10) {
5220 NDR_PRINT_OUT_DEBUG(samr_RidToSid
, r
);
5223 push
= ndr_push_init_ctx(r
, NULL
);
5229 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
5230 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
5235 blob
= ndr_push_blob(push
);
5236 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
5246 static bool api_samr_SetDsrmPassword(pipes_struct
*p
)
5248 const struct ndr_interface_call
*call
;
5249 struct ndr_pull
*pull
;
5250 struct ndr_push
*push
;
5251 enum ndr_err_code ndr_err
;
5253 struct samr_SetDsrmPassword
*r
;
5255 call
= &ndr_table_samr
.calls
[NDR_SAMR_SETDSRMPASSWORD
];
5257 r
= talloc(talloc_tos(), struct samr_SetDsrmPassword
);
5262 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
5267 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
5273 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
5274 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
5275 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
5280 if (DEBUGLEVEL
>= 10) {
5281 NDR_PRINT_IN_DEBUG(samr_SetDsrmPassword
, r
);
5284 r
->out
.result
= _samr_SetDsrmPassword(p
, r
);
5286 if (p
->rng_fault_state
) {
5288 /* Return true here, srv_pipe_hnd.c will take care */
5292 if (DEBUGLEVEL
>= 10) {
5293 NDR_PRINT_OUT_DEBUG(samr_SetDsrmPassword
, r
);
5296 push
= ndr_push_init_ctx(r
, NULL
);
5302 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
5303 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
5308 blob
= ndr_push_blob(push
);
5309 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
5319 static bool api_samr_ValidatePassword(pipes_struct
*p
)
5321 const struct ndr_interface_call
*call
;
5322 struct ndr_pull
*pull
;
5323 struct ndr_push
*push
;
5324 enum ndr_err_code ndr_err
;
5326 struct samr_ValidatePassword
*r
;
5328 call
= &ndr_table_samr
.calls
[NDR_SAMR_VALIDATEPASSWORD
];
5330 r
= talloc(talloc_tos(), struct samr_ValidatePassword
);
5335 if (!prs_data_blob(&p
->in_data
.data
, &blob
, r
)) {
5340 pull
= ndr_pull_init_blob(&blob
, r
, NULL
);
5346 pull
->flags
|= LIBNDR_FLAG_REF_ALLOC
;
5347 ndr_err
= call
->ndr_pull(pull
, NDR_IN
, r
);
5348 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
5353 if (DEBUGLEVEL
>= 10) {
5354 NDR_PRINT_IN_DEBUG(samr_ValidatePassword
, r
);
5357 ZERO_STRUCT(r
->out
);
5358 r
->out
.rep
= talloc_zero(r
, union samr_ValidatePasswordRep
*);
5359 if (r
->out
.rep
== NULL
) {
5364 r
->out
.result
= _samr_ValidatePassword(p
, r
);
5366 if (p
->rng_fault_state
) {
5368 /* Return true here, srv_pipe_hnd.c will take care */
5372 if (DEBUGLEVEL
>= 10) {
5373 NDR_PRINT_OUT_DEBUG(samr_ValidatePassword
, r
);
5376 push
= ndr_push_init_ctx(r
, NULL
);
5382 ndr_err
= call
->ndr_push(push
, NDR_OUT
, r
);
5383 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
5388 blob
= ndr_push_blob(push
);
5389 if (!prs_copy_data_in(&p
->out_data
.rdata
, (const char *)blob
.data
, (uint32_t)blob
.length
)) {
5401 static struct api_struct api_samr_cmds
[] =
5403 {"SAMR_CONNECT", NDR_SAMR_CONNECT
, api_samr_Connect
},
5404 {"SAMR_CLOSE", NDR_SAMR_CLOSE
, api_samr_Close
},
5405 {"SAMR_SETSECURITY", NDR_SAMR_SETSECURITY
, api_samr_SetSecurity
},
5406 {"SAMR_QUERYSECURITY", NDR_SAMR_QUERYSECURITY
, api_samr_QuerySecurity
},
5407 {"SAMR_SHUTDOWN", NDR_SAMR_SHUTDOWN
, api_samr_Shutdown
},
5408 {"SAMR_LOOKUPDOMAIN", NDR_SAMR_LOOKUPDOMAIN
, api_samr_LookupDomain
},
5409 {"SAMR_ENUMDOMAINS", NDR_SAMR_ENUMDOMAINS
, api_samr_EnumDomains
},
5410 {"SAMR_OPENDOMAIN", NDR_SAMR_OPENDOMAIN
, api_samr_OpenDomain
},
5411 {"SAMR_QUERYDOMAININFO", NDR_SAMR_QUERYDOMAININFO
, api_samr_QueryDomainInfo
},
5412 {"SAMR_SETDOMAININFO", NDR_SAMR_SETDOMAININFO
, api_samr_SetDomainInfo
},
5413 {"SAMR_CREATEDOMAINGROUP", NDR_SAMR_CREATEDOMAINGROUP
, api_samr_CreateDomainGroup
},
5414 {"SAMR_ENUMDOMAINGROUPS", NDR_SAMR_ENUMDOMAINGROUPS
, api_samr_EnumDomainGroups
},
5415 {"SAMR_CREATEUSER", NDR_SAMR_CREATEUSER
, api_samr_CreateUser
},
5416 {"SAMR_ENUMDOMAINUSERS", NDR_SAMR_ENUMDOMAINUSERS
, api_samr_EnumDomainUsers
},
5417 {"SAMR_CREATEDOMALIAS", NDR_SAMR_CREATEDOMALIAS
, api_samr_CreateDomAlias
},
5418 {"SAMR_ENUMDOMAINALIASES", NDR_SAMR_ENUMDOMAINALIASES
, api_samr_EnumDomainAliases
},
5419 {"SAMR_GETALIASMEMBERSHIP", NDR_SAMR_GETALIASMEMBERSHIP
, api_samr_GetAliasMembership
},
5420 {"SAMR_LOOKUPNAMES", NDR_SAMR_LOOKUPNAMES
, api_samr_LookupNames
},
5421 {"SAMR_LOOKUPRIDS", NDR_SAMR_LOOKUPRIDS
, api_samr_LookupRids
},
5422 {"SAMR_OPENGROUP", NDR_SAMR_OPENGROUP
, api_samr_OpenGroup
},
5423 {"SAMR_QUERYGROUPINFO", NDR_SAMR_QUERYGROUPINFO
, api_samr_QueryGroupInfo
},
5424 {"SAMR_SETGROUPINFO", NDR_SAMR_SETGROUPINFO
, api_samr_SetGroupInfo
},
5425 {"SAMR_ADDGROUPMEMBER", NDR_SAMR_ADDGROUPMEMBER
, api_samr_AddGroupMember
},
5426 {"SAMR_DELETEDOMAINGROUP", NDR_SAMR_DELETEDOMAINGROUP
, api_samr_DeleteDomainGroup
},
5427 {"SAMR_DELETEGROUPMEMBER", NDR_SAMR_DELETEGROUPMEMBER
, api_samr_DeleteGroupMember
},
5428 {"SAMR_QUERYGROUPMEMBER", NDR_SAMR_QUERYGROUPMEMBER
, api_samr_QueryGroupMember
},
5429 {"SAMR_SETMEMBERATTRIBUTESOFGROUP", NDR_SAMR_SETMEMBERATTRIBUTESOFGROUP
, api_samr_SetMemberAttributesOfGroup
},
5430 {"SAMR_OPENALIAS", NDR_SAMR_OPENALIAS
, api_samr_OpenAlias
},
5431 {"SAMR_QUERYALIASINFO", NDR_SAMR_QUERYALIASINFO
, api_samr_QueryAliasInfo
},
5432 {"SAMR_SETALIASINFO", NDR_SAMR_SETALIASINFO
, api_samr_SetAliasInfo
},
5433 {"SAMR_DELETEDOMALIAS", NDR_SAMR_DELETEDOMALIAS
, api_samr_DeleteDomAlias
},
5434 {"SAMR_ADDALIASMEMBER", NDR_SAMR_ADDALIASMEMBER
, api_samr_AddAliasMember
},
5435 {"SAMR_DELETEALIASMEMBER", NDR_SAMR_DELETEALIASMEMBER
, api_samr_DeleteAliasMember
},
5436 {"SAMR_GETMEMBERSINALIAS", NDR_SAMR_GETMEMBERSINALIAS
, api_samr_GetMembersInAlias
},
5437 {"SAMR_OPENUSER", NDR_SAMR_OPENUSER
, api_samr_OpenUser
},
5438 {"SAMR_DELETEUSER", NDR_SAMR_DELETEUSER
, api_samr_DeleteUser
},
5439 {"SAMR_QUERYUSERINFO", NDR_SAMR_QUERYUSERINFO
, api_samr_QueryUserInfo
},
5440 {"SAMR_SETUSERINFO", NDR_SAMR_SETUSERINFO
, api_samr_SetUserInfo
},
5441 {"SAMR_CHANGEPASSWORDUSER", NDR_SAMR_CHANGEPASSWORDUSER
, api_samr_ChangePasswordUser
},
5442 {"SAMR_GETGROUPSFORUSER", NDR_SAMR_GETGROUPSFORUSER
, api_samr_GetGroupsForUser
},
5443 {"SAMR_QUERYDISPLAYINFO", NDR_SAMR_QUERYDISPLAYINFO
, api_samr_QueryDisplayInfo
},
5444 {"SAMR_GETDISPLAYENUMERATIONINDEX", NDR_SAMR_GETDISPLAYENUMERATIONINDEX
, api_samr_GetDisplayEnumerationIndex
},
5445 {"SAMR_TESTPRIVATEFUNCTIONSDOMAIN", NDR_SAMR_TESTPRIVATEFUNCTIONSDOMAIN
, api_samr_TestPrivateFunctionsDomain
},
5446 {"SAMR_TESTPRIVATEFUNCTIONSUSER", NDR_SAMR_TESTPRIVATEFUNCTIONSUSER
, api_samr_TestPrivateFunctionsUser
},
5447 {"SAMR_GETUSERPWINFO", NDR_SAMR_GETUSERPWINFO
, api_samr_GetUserPwInfo
},
5448 {"SAMR_REMOVEMEMBERFROMFOREIGNDOMAIN", NDR_SAMR_REMOVEMEMBERFROMFOREIGNDOMAIN
, api_samr_RemoveMemberFromForeignDomain
},
5449 {"SAMR_QUERYDOMAININFO2", NDR_SAMR_QUERYDOMAININFO2
, api_samr_QueryDomainInfo2
},
5450 {"SAMR_QUERYUSERINFO2", NDR_SAMR_QUERYUSERINFO2
, api_samr_QueryUserInfo2
},
5451 {"SAMR_QUERYDISPLAYINFO2", NDR_SAMR_QUERYDISPLAYINFO2
, api_samr_QueryDisplayInfo2
},
5452 {"SAMR_GETDISPLAYENUMERATIONINDEX2", NDR_SAMR_GETDISPLAYENUMERATIONINDEX2
, api_samr_GetDisplayEnumerationIndex2
},
5453 {"SAMR_CREATEUSER2", NDR_SAMR_CREATEUSER2
, api_samr_CreateUser2
},
5454 {"SAMR_QUERYDISPLAYINFO3", NDR_SAMR_QUERYDISPLAYINFO3
, api_samr_QueryDisplayInfo3
},
5455 {"SAMR_ADDMULTIPLEMEMBERSTOALIAS", NDR_SAMR_ADDMULTIPLEMEMBERSTOALIAS
, api_samr_AddMultipleMembersToAlias
},
5456 {"SAMR_REMOVEMULTIPLEMEMBERSFROMALIAS", NDR_SAMR_REMOVEMULTIPLEMEMBERSFROMALIAS
, api_samr_RemoveMultipleMembersFromAlias
},
5457 {"SAMR_OEMCHANGEPASSWORDUSER2", NDR_SAMR_OEMCHANGEPASSWORDUSER2
, api_samr_OemChangePasswordUser2
},
5458 {"SAMR_CHANGEPASSWORDUSER2", NDR_SAMR_CHANGEPASSWORDUSER2
, api_samr_ChangePasswordUser2
},
5459 {"SAMR_GETDOMPWINFO", NDR_SAMR_GETDOMPWINFO
, api_samr_GetDomPwInfo
},
5460 {"SAMR_CONNECT2", NDR_SAMR_CONNECT2
, api_samr_Connect2
},
5461 {"SAMR_SETUSERINFO2", NDR_SAMR_SETUSERINFO2
, api_samr_SetUserInfo2
},
5462 {"SAMR_SETBOOTKEYINFORMATION", NDR_SAMR_SETBOOTKEYINFORMATION
, api_samr_SetBootKeyInformation
},
5463 {"SAMR_GETBOOTKEYINFORMATION", NDR_SAMR_GETBOOTKEYINFORMATION
, api_samr_GetBootKeyInformation
},
5464 {"SAMR_CONNECT3", NDR_SAMR_CONNECT3
, api_samr_Connect3
},
5465 {"SAMR_CONNECT4", NDR_SAMR_CONNECT4
, api_samr_Connect4
},
5466 {"SAMR_CHANGEPASSWORDUSER3", NDR_SAMR_CHANGEPASSWORDUSER3
, api_samr_ChangePasswordUser3
},
5467 {"SAMR_CONNECT5", NDR_SAMR_CONNECT5
, api_samr_Connect5
},
5468 {"SAMR_RIDTOSID", NDR_SAMR_RIDTOSID
, api_samr_RidToSid
},
5469 {"SAMR_SETDSRMPASSWORD", NDR_SAMR_SETDSRMPASSWORD
, api_samr_SetDsrmPassword
},
5470 {"SAMR_VALIDATEPASSWORD", NDR_SAMR_VALIDATEPASSWORD
, api_samr_ValidatePassword
},
5473 void samr_get_pipe_fns(struct api_struct
**fns
, int *n_fns
)
5475 *fns
= api_samr_cmds
;
5476 *n_fns
= sizeof(api_samr_cmds
) / sizeof(struct api_struct
);
5479 NTSTATUS
rpc_samr_dispatch(struct rpc_pipe_client
*cli
, TALLOC_CTX
*mem_ctx
, const struct ndr_interface_table
*table
, uint32_t opnum
, void *_r
)
5481 if (cli
->pipes_struct
== NULL
) {
5482 return NT_STATUS_INVALID_PARAMETER
;
5487 case NDR_SAMR_CONNECT
: {
5488 struct samr_Connect
*r
= (struct samr_Connect
*)_r
;
5489 ZERO_STRUCT(r
->out
);
5490 r
->out
.connect_handle
= talloc_zero(mem_ctx
, struct policy_handle
);
5491 if (r
->out
.connect_handle
== NULL
) {
5492 return NT_STATUS_NO_MEMORY
;
5495 r
->out
.result
= _samr_Connect(cli
->pipes_struct
, r
);
5496 return NT_STATUS_OK
;
5499 case NDR_SAMR_CLOSE
: {
5500 struct samr_Close
*r
= (struct samr_Close
*)_r
;
5501 ZERO_STRUCT(r
->out
);
5502 r
->out
.handle
= r
->in
.handle
;
5503 r
->out
.result
= _samr_Close(cli
->pipes_struct
, r
);
5504 return NT_STATUS_OK
;
5507 case NDR_SAMR_SETSECURITY
: {
5508 struct samr_SetSecurity
*r
= (struct samr_SetSecurity
*)_r
;
5509 r
->out
.result
= _samr_SetSecurity(cli
->pipes_struct
, r
);
5510 return NT_STATUS_OK
;
5513 case NDR_SAMR_QUERYSECURITY
: {
5514 struct samr_QuerySecurity
*r
= (struct samr_QuerySecurity
*)_r
;
5515 ZERO_STRUCT(r
->out
);
5516 r
->out
.sdbuf
= talloc_zero(mem_ctx
, struct sec_desc_buf
*);
5517 if (r
->out
.sdbuf
== NULL
) {
5518 return NT_STATUS_NO_MEMORY
;
5521 r
->out
.result
= _samr_QuerySecurity(cli
->pipes_struct
, r
);
5522 return NT_STATUS_OK
;
5525 case NDR_SAMR_SHUTDOWN
: {
5526 struct samr_Shutdown
*r
= (struct samr_Shutdown
*)_r
;
5527 r
->out
.result
= _samr_Shutdown(cli
->pipes_struct
, r
);
5528 return NT_STATUS_OK
;
5531 case NDR_SAMR_LOOKUPDOMAIN
: {
5532 struct samr_LookupDomain
*r
= (struct samr_LookupDomain
*)_r
;
5533 ZERO_STRUCT(r
->out
);
5534 r
->out
.sid
= talloc_zero(mem_ctx
, struct dom_sid2
*);
5535 if (r
->out
.sid
== NULL
) {
5536 return NT_STATUS_NO_MEMORY
;
5539 r
->out
.result
= _samr_LookupDomain(cli
->pipes_struct
, r
);
5540 return NT_STATUS_OK
;
5543 case NDR_SAMR_ENUMDOMAINS
: {
5544 struct samr_EnumDomains
*r
= (struct samr_EnumDomains
*)_r
;
5545 ZERO_STRUCT(r
->out
);
5546 r
->out
.resume_handle
= r
->in
.resume_handle
;
5547 r
->out
.sam
= talloc_zero(mem_ctx
, struct samr_SamArray
*);
5548 if (r
->out
.sam
== NULL
) {
5549 return NT_STATUS_NO_MEMORY
;
5552 r
->out
.num_entries
= talloc_zero(mem_ctx
, uint32_t);
5553 if (r
->out
.num_entries
== NULL
) {
5554 return NT_STATUS_NO_MEMORY
;
5557 r
->out
.result
= _samr_EnumDomains(cli
->pipes_struct
, r
);
5558 return NT_STATUS_OK
;
5561 case NDR_SAMR_OPENDOMAIN
: {
5562 struct samr_OpenDomain
*r
= (struct samr_OpenDomain
*)_r
;
5563 ZERO_STRUCT(r
->out
);
5564 r
->out
.domain_handle
= talloc_zero(mem_ctx
, struct policy_handle
);
5565 if (r
->out
.domain_handle
== NULL
) {
5566 return NT_STATUS_NO_MEMORY
;
5569 r
->out
.result
= _samr_OpenDomain(cli
->pipes_struct
, r
);
5570 return NT_STATUS_OK
;
5573 case NDR_SAMR_QUERYDOMAININFO
: {
5574 struct samr_QueryDomainInfo
*r
= (struct samr_QueryDomainInfo
*)_r
;
5575 ZERO_STRUCT(r
->out
);
5576 r
->out
.info
= talloc_zero(mem_ctx
, union samr_DomainInfo
*);
5577 if (r
->out
.info
== NULL
) {
5578 return NT_STATUS_NO_MEMORY
;
5581 r
->out
.result
= _samr_QueryDomainInfo(cli
->pipes_struct
, r
);
5582 return NT_STATUS_OK
;
5585 case NDR_SAMR_SETDOMAININFO
: {
5586 struct samr_SetDomainInfo
*r
= (struct samr_SetDomainInfo
*)_r
;
5587 r
->out
.result
= _samr_SetDomainInfo(cli
->pipes_struct
, r
);
5588 return NT_STATUS_OK
;
5591 case NDR_SAMR_CREATEDOMAINGROUP
: {
5592 struct samr_CreateDomainGroup
*r
= (struct samr_CreateDomainGroup
*)_r
;
5593 ZERO_STRUCT(r
->out
);
5594 r
->out
.group_handle
= talloc_zero(mem_ctx
, struct policy_handle
);
5595 if (r
->out
.group_handle
== NULL
) {
5596 return NT_STATUS_NO_MEMORY
;
5599 r
->out
.rid
= talloc_zero(mem_ctx
, uint32_t);
5600 if (r
->out
.rid
== NULL
) {
5601 return NT_STATUS_NO_MEMORY
;
5604 r
->out
.result
= _samr_CreateDomainGroup(cli
->pipes_struct
, r
);
5605 return NT_STATUS_OK
;
5608 case NDR_SAMR_ENUMDOMAINGROUPS
: {
5609 struct samr_EnumDomainGroups
*r
= (struct samr_EnumDomainGroups
*)_r
;
5610 ZERO_STRUCT(r
->out
);
5611 r
->out
.resume_handle
= r
->in
.resume_handle
;
5612 r
->out
.sam
= talloc_zero(mem_ctx
, struct samr_SamArray
*);
5613 if (r
->out
.sam
== NULL
) {
5614 return NT_STATUS_NO_MEMORY
;
5617 r
->out
.num_entries
= talloc_zero(mem_ctx
, uint32_t);
5618 if (r
->out
.num_entries
== NULL
) {
5619 return NT_STATUS_NO_MEMORY
;
5622 r
->out
.result
= _samr_EnumDomainGroups(cli
->pipes_struct
, r
);
5623 return NT_STATUS_OK
;
5626 case NDR_SAMR_CREATEUSER
: {
5627 struct samr_CreateUser
*r
= (struct samr_CreateUser
*)_r
;
5628 ZERO_STRUCT(r
->out
);
5629 r
->out
.user_handle
= talloc_zero(mem_ctx
, struct policy_handle
);
5630 if (r
->out
.user_handle
== NULL
) {
5631 return NT_STATUS_NO_MEMORY
;
5634 r
->out
.rid
= talloc_zero(mem_ctx
, uint32_t);
5635 if (r
->out
.rid
== NULL
) {
5636 return NT_STATUS_NO_MEMORY
;
5639 r
->out
.result
= _samr_CreateUser(cli
->pipes_struct
, r
);
5640 return NT_STATUS_OK
;
5643 case NDR_SAMR_ENUMDOMAINUSERS
: {
5644 struct samr_EnumDomainUsers
*r
= (struct samr_EnumDomainUsers
*)_r
;
5645 ZERO_STRUCT(r
->out
);
5646 r
->out
.resume_handle
= r
->in
.resume_handle
;
5647 r
->out
.sam
= talloc_zero(mem_ctx
, struct samr_SamArray
*);
5648 if (r
->out
.sam
== NULL
) {
5649 return NT_STATUS_NO_MEMORY
;
5652 r
->out
.num_entries
= talloc_zero(mem_ctx
, uint32_t);
5653 if (r
->out
.num_entries
== NULL
) {
5654 return NT_STATUS_NO_MEMORY
;
5657 r
->out
.result
= _samr_EnumDomainUsers(cli
->pipes_struct
, r
);
5658 return NT_STATUS_OK
;
5661 case NDR_SAMR_CREATEDOMALIAS
: {
5662 struct samr_CreateDomAlias
*r
= (struct samr_CreateDomAlias
*)_r
;
5663 ZERO_STRUCT(r
->out
);
5664 r
->out
.alias_handle
= talloc_zero(mem_ctx
, struct policy_handle
);
5665 if (r
->out
.alias_handle
== NULL
) {
5666 return NT_STATUS_NO_MEMORY
;
5669 r
->out
.rid
= talloc_zero(mem_ctx
, uint32_t);
5670 if (r
->out
.rid
== NULL
) {
5671 return NT_STATUS_NO_MEMORY
;
5674 r
->out
.result
= _samr_CreateDomAlias(cli
->pipes_struct
, r
);
5675 return NT_STATUS_OK
;
5678 case NDR_SAMR_ENUMDOMAINALIASES
: {
5679 struct samr_EnumDomainAliases
*r
= (struct samr_EnumDomainAliases
*)_r
;
5680 ZERO_STRUCT(r
->out
);
5681 r
->out
.resume_handle
= r
->in
.resume_handle
;
5682 r
->out
.sam
= talloc_zero(mem_ctx
, struct samr_SamArray
*);
5683 if (r
->out
.sam
== NULL
) {
5684 return NT_STATUS_NO_MEMORY
;
5687 r
->out
.num_entries
= talloc_zero(mem_ctx
, uint32_t);
5688 if (r
->out
.num_entries
== NULL
) {
5689 return NT_STATUS_NO_MEMORY
;
5692 r
->out
.result
= _samr_EnumDomainAliases(cli
->pipes_struct
, r
);
5693 return NT_STATUS_OK
;
5696 case NDR_SAMR_GETALIASMEMBERSHIP
: {
5697 struct samr_GetAliasMembership
*r
= (struct samr_GetAliasMembership
*)_r
;
5698 ZERO_STRUCT(r
->out
);
5699 r
->out
.rids
= talloc_zero(mem_ctx
, struct samr_Ids
);
5700 if (r
->out
.rids
== NULL
) {
5701 return NT_STATUS_NO_MEMORY
;
5704 r
->out
.result
= _samr_GetAliasMembership(cli
->pipes_struct
, r
);
5705 return NT_STATUS_OK
;
5708 case NDR_SAMR_LOOKUPNAMES
: {
5709 struct samr_LookupNames
*r
= (struct samr_LookupNames
*)_r
;
5710 ZERO_STRUCT(r
->out
);
5711 r
->out
.rids
= talloc_zero(mem_ctx
, struct samr_Ids
);
5712 if (r
->out
.rids
== NULL
) {
5713 return NT_STATUS_NO_MEMORY
;
5716 r
->out
.types
= talloc_zero(mem_ctx
, struct samr_Ids
);
5717 if (r
->out
.types
== NULL
) {
5718 return NT_STATUS_NO_MEMORY
;
5721 r
->out
.result
= _samr_LookupNames(cli
->pipes_struct
, r
);
5722 return NT_STATUS_OK
;
5725 case NDR_SAMR_LOOKUPRIDS
: {
5726 struct samr_LookupRids
*r
= (struct samr_LookupRids
*)_r
;
5727 ZERO_STRUCT(r
->out
);
5728 r
->out
.names
= talloc_zero(mem_ctx
, struct lsa_Strings
);
5729 if (r
->out
.names
== NULL
) {
5730 return NT_STATUS_NO_MEMORY
;
5733 r
->out
.types
= talloc_zero(mem_ctx
, struct samr_Ids
);
5734 if (r
->out
.types
== NULL
) {
5735 return NT_STATUS_NO_MEMORY
;
5738 r
->out
.result
= _samr_LookupRids(cli
->pipes_struct
, r
);
5739 return NT_STATUS_OK
;
5742 case NDR_SAMR_OPENGROUP
: {
5743 struct samr_OpenGroup
*r
= (struct samr_OpenGroup
*)_r
;
5744 ZERO_STRUCT(r
->out
);
5745 r
->out
.group_handle
= talloc_zero(mem_ctx
, struct policy_handle
);
5746 if (r
->out
.group_handle
== NULL
) {
5747 return NT_STATUS_NO_MEMORY
;
5750 r
->out
.result
= _samr_OpenGroup(cli
->pipes_struct
, r
);
5751 return NT_STATUS_OK
;
5754 case NDR_SAMR_QUERYGROUPINFO
: {
5755 struct samr_QueryGroupInfo
*r
= (struct samr_QueryGroupInfo
*)_r
;
5756 ZERO_STRUCT(r
->out
);
5757 r
->out
.info
= talloc_zero(mem_ctx
, union samr_GroupInfo
*);
5758 if (r
->out
.info
== NULL
) {
5759 return NT_STATUS_NO_MEMORY
;
5762 r
->out
.result
= _samr_QueryGroupInfo(cli
->pipes_struct
, r
);
5763 return NT_STATUS_OK
;
5766 case NDR_SAMR_SETGROUPINFO
: {
5767 struct samr_SetGroupInfo
*r
= (struct samr_SetGroupInfo
*)_r
;
5768 r
->out
.result
= _samr_SetGroupInfo(cli
->pipes_struct
, r
);
5769 return NT_STATUS_OK
;
5772 case NDR_SAMR_ADDGROUPMEMBER
: {
5773 struct samr_AddGroupMember
*r
= (struct samr_AddGroupMember
*)_r
;
5774 r
->out
.result
= _samr_AddGroupMember(cli
->pipes_struct
, r
);
5775 return NT_STATUS_OK
;
5778 case NDR_SAMR_DELETEDOMAINGROUP
: {
5779 struct samr_DeleteDomainGroup
*r
= (struct samr_DeleteDomainGroup
*)_r
;
5780 ZERO_STRUCT(r
->out
);
5781 r
->out
.group_handle
= r
->in
.group_handle
;
5782 r
->out
.result
= _samr_DeleteDomainGroup(cli
->pipes_struct
, r
);
5783 return NT_STATUS_OK
;
5786 case NDR_SAMR_DELETEGROUPMEMBER
: {
5787 struct samr_DeleteGroupMember
*r
= (struct samr_DeleteGroupMember
*)_r
;
5788 r
->out
.result
= _samr_DeleteGroupMember(cli
->pipes_struct
, r
);
5789 return NT_STATUS_OK
;
5792 case NDR_SAMR_QUERYGROUPMEMBER
: {
5793 struct samr_QueryGroupMember
*r
= (struct samr_QueryGroupMember
*)_r
;
5794 ZERO_STRUCT(r
->out
);
5795 r
->out
.rids
= talloc_zero(mem_ctx
, struct samr_RidTypeArray
*);
5796 if (r
->out
.rids
== NULL
) {
5797 return NT_STATUS_NO_MEMORY
;
5800 r
->out
.result
= _samr_QueryGroupMember(cli
->pipes_struct
, r
);
5801 return NT_STATUS_OK
;
5804 case NDR_SAMR_SETMEMBERATTRIBUTESOFGROUP
: {
5805 struct samr_SetMemberAttributesOfGroup
*r
= (struct samr_SetMemberAttributesOfGroup
*)_r
;
5806 r
->out
.result
= _samr_SetMemberAttributesOfGroup(cli
->pipes_struct
, r
);
5807 return NT_STATUS_OK
;
5810 case NDR_SAMR_OPENALIAS
: {
5811 struct samr_OpenAlias
*r
= (struct samr_OpenAlias
*)_r
;
5812 ZERO_STRUCT(r
->out
);
5813 r
->out
.alias_handle
= talloc_zero(mem_ctx
, struct policy_handle
);
5814 if (r
->out
.alias_handle
== NULL
) {
5815 return NT_STATUS_NO_MEMORY
;
5818 r
->out
.result
= _samr_OpenAlias(cli
->pipes_struct
, r
);
5819 return NT_STATUS_OK
;
5822 case NDR_SAMR_QUERYALIASINFO
: {
5823 struct samr_QueryAliasInfo
*r
= (struct samr_QueryAliasInfo
*)_r
;
5824 ZERO_STRUCT(r
->out
);
5825 r
->out
.info
= talloc_zero(mem_ctx
, union samr_AliasInfo
*);
5826 if (r
->out
.info
== NULL
) {
5827 return NT_STATUS_NO_MEMORY
;
5830 r
->out
.result
= _samr_QueryAliasInfo(cli
->pipes_struct
, r
);
5831 return NT_STATUS_OK
;
5834 case NDR_SAMR_SETALIASINFO
: {
5835 struct samr_SetAliasInfo
*r
= (struct samr_SetAliasInfo
*)_r
;
5836 r
->out
.result
= _samr_SetAliasInfo(cli
->pipes_struct
, r
);
5837 return NT_STATUS_OK
;
5840 case NDR_SAMR_DELETEDOMALIAS
: {
5841 struct samr_DeleteDomAlias
*r
= (struct samr_DeleteDomAlias
*)_r
;
5842 ZERO_STRUCT(r
->out
);
5843 r
->out
.alias_handle
= r
->in
.alias_handle
;
5844 r
->out
.result
= _samr_DeleteDomAlias(cli
->pipes_struct
, r
);
5845 return NT_STATUS_OK
;
5848 case NDR_SAMR_ADDALIASMEMBER
: {
5849 struct samr_AddAliasMember
*r
= (struct samr_AddAliasMember
*)_r
;
5850 r
->out
.result
= _samr_AddAliasMember(cli
->pipes_struct
, r
);
5851 return NT_STATUS_OK
;
5854 case NDR_SAMR_DELETEALIASMEMBER
: {
5855 struct samr_DeleteAliasMember
*r
= (struct samr_DeleteAliasMember
*)_r
;
5856 r
->out
.result
= _samr_DeleteAliasMember(cli
->pipes_struct
, r
);
5857 return NT_STATUS_OK
;
5860 case NDR_SAMR_GETMEMBERSINALIAS
: {
5861 struct samr_GetMembersInAlias
*r
= (struct samr_GetMembersInAlias
*)_r
;
5862 ZERO_STRUCT(r
->out
);
5863 r
->out
.sids
= talloc_zero(mem_ctx
, struct lsa_SidArray
);
5864 if (r
->out
.sids
== NULL
) {
5865 return NT_STATUS_NO_MEMORY
;
5868 r
->out
.result
= _samr_GetMembersInAlias(cli
->pipes_struct
, r
);
5869 return NT_STATUS_OK
;
5872 case NDR_SAMR_OPENUSER
: {
5873 struct samr_OpenUser
*r
= (struct samr_OpenUser
*)_r
;
5874 ZERO_STRUCT(r
->out
);
5875 r
->out
.user_handle
= talloc_zero(mem_ctx
, struct policy_handle
);
5876 if (r
->out
.user_handle
== NULL
) {
5877 return NT_STATUS_NO_MEMORY
;
5880 r
->out
.result
= _samr_OpenUser(cli
->pipes_struct
, r
);
5881 return NT_STATUS_OK
;
5884 case NDR_SAMR_DELETEUSER
: {
5885 struct samr_DeleteUser
*r
= (struct samr_DeleteUser
*)_r
;
5886 ZERO_STRUCT(r
->out
);
5887 r
->out
.user_handle
= r
->in
.user_handle
;
5888 r
->out
.result
= _samr_DeleteUser(cli
->pipes_struct
, r
);
5889 return NT_STATUS_OK
;
5892 case NDR_SAMR_QUERYUSERINFO
: {
5893 struct samr_QueryUserInfo
*r
= (struct samr_QueryUserInfo
*)_r
;
5894 ZERO_STRUCT(r
->out
);
5895 r
->out
.info
= talloc_zero(mem_ctx
, union samr_UserInfo
*);
5896 if (r
->out
.info
== NULL
) {
5897 return NT_STATUS_NO_MEMORY
;
5900 r
->out
.result
= _samr_QueryUserInfo(cli
->pipes_struct
, r
);
5901 return NT_STATUS_OK
;
5904 case NDR_SAMR_SETUSERINFO
: {
5905 struct samr_SetUserInfo
*r
= (struct samr_SetUserInfo
*)_r
;
5906 r
->out
.result
= _samr_SetUserInfo(cli
->pipes_struct
, r
);
5907 return NT_STATUS_OK
;
5910 case NDR_SAMR_CHANGEPASSWORDUSER
: {
5911 struct samr_ChangePasswordUser
*r
= (struct samr_ChangePasswordUser
*)_r
;
5912 r
->out
.result
= _samr_ChangePasswordUser(cli
->pipes_struct
, r
);
5913 return NT_STATUS_OK
;
5916 case NDR_SAMR_GETGROUPSFORUSER
: {
5917 struct samr_GetGroupsForUser
*r
= (struct samr_GetGroupsForUser
*)_r
;
5918 ZERO_STRUCT(r
->out
);
5919 r
->out
.rids
= talloc_zero(mem_ctx
, struct samr_RidWithAttributeArray
*);
5920 if (r
->out
.rids
== NULL
) {
5921 return NT_STATUS_NO_MEMORY
;
5924 r
->out
.result
= _samr_GetGroupsForUser(cli
->pipes_struct
, r
);
5925 return NT_STATUS_OK
;
5928 case NDR_SAMR_QUERYDISPLAYINFO
: {
5929 struct samr_QueryDisplayInfo
*r
= (struct samr_QueryDisplayInfo
*)_r
;
5930 ZERO_STRUCT(r
->out
);
5931 r
->out
.total_size
= talloc_zero(mem_ctx
, uint32_t);
5932 if (r
->out
.total_size
== NULL
) {
5933 return NT_STATUS_NO_MEMORY
;
5936 r
->out
.returned_size
= talloc_zero(mem_ctx
, uint32_t);
5937 if (r
->out
.returned_size
== NULL
) {
5938 return NT_STATUS_NO_MEMORY
;
5941 r
->out
.info
= talloc_zero(mem_ctx
, union samr_DispInfo
);
5942 if (r
->out
.info
== NULL
) {
5943 return NT_STATUS_NO_MEMORY
;
5946 r
->out
.result
= _samr_QueryDisplayInfo(cli
->pipes_struct
, r
);
5947 return NT_STATUS_OK
;
5950 case NDR_SAMR_GETDISPLAYENUMERATIONINDEX
: {
5951 struct samr_GetDisplayEnumerationIndex
*r
= (struct samr_GetDisplayEnumerationIndex
*)_r
;
5952 ZERO_STRUCT(r
->out
);
5953 r
->out
.idx
= talloc_zero(mem_ctx
, uint32_t);
5954 if (r
->out
.idx
== NULL
) {
5955 return NT_STATUS_NO_MEMORY
;
5958 r
->out
.result
= _samr_GetDisplayEnumerationIndex(cli
->pipes_struct
, r
);
5959 return NT_STATUS_OK
;
5962 case NDR_SAMR_TESTPRIVATEFUNCTIONSDOMAIN
: {
5963 struct samr_TestPrivateFunctionsDomain
*r
= (struct samr_TestPrivateFunctionsDomain
*)_r
;
5964 r
->out
.result
= _samr_TestPrivateFunctionsDomain(cli
->pipes_struct
, r
);
5965 return NT_STATUS_OK
;
5968 case NDR_SAMR_TESTPRIVATEFUNCTIONSUSER
: {
5969 struct samr_TestPrivateFunctionsUser
*r
= (struct samr_TestPrivateFunctionsUser
*)_r
;
5970 r
->out
.result
= _samr_TestPrivateFunctionsUser(cli
->pipes_struct
, r
);
5971 return NT_STATUS_OK
;
5974 case NDR_SAMR_GETUSERPWINFO
: {
5975 struct samr_GetUserPwInfo
*r
= (struct samr_GetUserPwInfo
*)_r
;
5976 ZERO_STRUCT(r
->out
);
5977 r
->out
.info
= talloc_zero(mem_ctx
, struct samr_PwInfo
);
5978 if (r
->out
.info
== NULL
) {
5979 return NT_STATUS_NO_MEMORY
;
5982 r
->out
.result
= _samr_GetUserPwInfo(cli
->pipes_struct
, r
);
5983 return NT_STATUS_OK
;
5986 case NDR_SAMR_REMOVEMEMBERFROMFOREIGNDOMAIN
: {
5987 struct samr_RemoveMemberFromForeignDomain
*r
= (struct samr_RemoveMemberFromForeignDomain
*)_r
;
5988 r
->out
.result
= _samr_RemoveMemberFromForeignDomain(cli
->pipes_struct
, r
);
5989 return NT_STATUS_OK
;
5992 case NDR_SAMR_QUERYDOMAININFO2
: {
5993 struct samr_QueryDomainInfo2
*r
= (struct samr_QueryDomainInfo2
*)_r
;
5994 ZERO_STRUCT(r
->out
);
5995 r
->out
.info
= talloc_zero(mem_ctx
, union samr_DomainInfo
*);
5996 if (r
->out
.info
== NULL
) {
5997 return NT_STATUS_NO_MEMORY
;
6000 r
->out
.result
= _samr_QueryDomainInfo2(cli
->pipes_struct
, r
);
6001 return NT_STATUS_OK
;
6004 case NDR_SAMR_QUERYUSERINFO2
: {
6005 struct samr_QueryUserInfo2
*r
= (struct samr_QueryUserInfo2
*)_r
;
6006 ZERO_STRUCT(r
->out
);
6007 r
->out
.info
= talloc_zero(mem_ctx
, union samr_UserInfo
*);
6008 if (r
->out
.info
== NULL
) {
6009 return NT_STATUS_NO_MEMORY
;
6012 r
->out
.result
= _samr_QueryUserInfo2(cli
->pipes_struct
, r
);
6013 return NT_STATUS_OK
;
6016 case NDR_SAMR_QUERYDISPLAYINFO2
: {
6017 struct samr_QueryDisplayInfo2
*r
= (struct samr_QueryDisplayInfo2
*)_r
;
6018 ZERO_STRUCT(r
->out
);
6019 r
->out
.total_size
= talloc_zero(mem_ctx
, uint32_t);
6020 if (r
->out
.total_size
== NULL
) {
6021 return NT_STATUS_NO_MEMORY
;
6024 r
->out
.returned_size
= talloc_zero(mem_ctx
, uint32_t);
6025 if (r
->out
.returned_size
== NULL
) {
6026 return NT_STATUS_NO_MEMORY
;
6029 r
->out
.info
= talloc_zero(mem_ctx
, union samr_DispInfo
);
6030 if (r
->out
.info
== NULL
) {
6031 return NT_STATUS_NO_MEMORY
;
6034 r
->out
.result
= _samr_QueryDisplayInfo2(cli
->pipes_struct
, r
);
6035 return NT_STATUS_OK
;
6038 case NDR_SAMR_GETDISPLAYENUMERATIONINDEX2
: {
6039 struct samr_GetDisplayEnumerationIndex2
*r
= (struct samr_GetDisplayEnumerationIndex2
*)_r
;
6040 ZERO_STRUCT(r
->out
);
6041 r
->out
.idx
= talloc_zero(mem_ctx
, uint32_t);
6042 if (r
->out
.idx
== NULL
) {
6043 return NT_STATUS_NO_MEMORY
;
6046 r
->out
.result
= _samr_GetDisplayEnumerationIndex2(cli
->pipes_struct
, r
);
6047 return NT_STATUS_OK
;
6050 case NDR_SAMR_CREATEUSER2
: {
6051 struct samr_CreateUser2
*r
= (struct samr_CreateUser2
*)_r
;
6052 ZERO_STRUCT(r
->out
);
6053 r
->out
.user_handle
= talloc_zero(mem_ctx
, struct policy_handle
);
6054 if (r
->out
.user_handle
== NULL
) {
6055 return NT_STATUS_NO_MEMORY
;
6058 r
->out
.access_granted
= talloc_zero(mem_ctx
, uint32_t);
6059 if (r
->out
.access_granted
== NULL
) {
6060 return NT_STATUS_NO_MEMORY
;
6063 r
->out
.rid
= talloc_zero(mem_ctx
, uint32_t);
6064 if (r
->out
.rid
== NULL
) {
6065 return NT_STATUS_NO_MEMORY
;
6068 r
->out
.result
= _samr_CreateUser2(cli
->pipes_struct
, r
);
6069 return NT_STATUS_OK
;
6072 case NDR_SAMR_QUERYDISPLAYINFO3
: {
6073 struct samr_QueryDisplayInfo3
*r
= (struct samr_QueryDisplayInfo3
*)_r
;
6074 ZERO_STRUCT(r
->out
);
6075 r
->out
.total_size
= talloc_zero(mem_ctx
, uint32_t);
6076 if (r
->out
.total_size
== NULL
) {
6077 return NT_STATUS_NO_MEMORY
;
6080 r
->out
.returned_size
= talloc_zero(mem_ctx
, uint32_t);
6081 if (r
->out
.returned_size
== NULL
) {
6082 return NT_STATUS_NO_MEMORY
;
6085 r
->out
.info
= talloc_zero(mem_ctx
, union samr_DispInfo
);
6086 if (r
->out
.info
== NULL
) {
6087 return NT_STATUS_NO_MEMORY
;
6090 r
->out
.result
= _samr_QueryDisplayInfo3(cli
->pipes_struct
, r
);
6091 return NT_STATUS_OK
;
6094 case NDR_SAMR_ADDMULTIPLEMEMBERSTOALIAS
: {
6095 struct samr_AddMultipleMembersToAlias
*r
= (struct samr_AddMultipleMembersToAlias
*)_r
;
6096 r
->out
.result
= _samr_AddMultipleMembersToAlias(cli
->pipes_struct
, r
);
6097 return NT_STATUS_OK
;
6100 case NDR_SAMR_REMOVEMULTIPLEMEMBERSFROMALIAS
: {
6101 struct samr_RemoveMultipleMembersFromAlias
*r
= (struct samr_RemoveMultipleMembersFromAlias
*)_r
;
6102 r
->out
.result
= _samr_RemoveMultipleMembersFromAlias(cli
->pipes_struct
, r
);
6103 return NT_STATUS_OK
;
6106 case NDR_SAMR_OEMCHANGEPASSWORDUSER2
: {
6107 struct samr_OemChangePasswordUser2
*r
= (struct samr_OemChangePasswordUser2
*)_r
;
6108 r
->out
.result
= _samr_OemChangePasswordUser2(cli
->pipes_struct
, r
);
6109 return NT_STATUS_OK
;
6112 case NDR_SAMR_CHANGEPASSWORDUSER2
: {
6113 struct samr_ChangePasswordUser2
*r
= (struct samr_ChangePasswordUser2
*)_r
;
6114 r
->out
.result
= _samr_ChangePasswordUser2(cli
->pipes_struct
, r
);
6115 return NT_STATUS_OK
;
6118 case NDR_SAMR_GETDOMPWINFO
: {
6119 struct samr_GetDomPwInfo
*r
= (struct samr_GetDomPwInfo
*)_r
;
6120 ZERO_STRUCT(r
->out
);
6121 r
->out
.info
= talloc_zero(mem_ctx
, struct samr_PwInfo
);
6122 if (r
->out
.info
== NULL
) {
6123 return NT_STATUS_NO_MEMORY
;
6126 r
->out
.result
= _samr_GetDomPwInfo(cli
->pipes_struct
, r
);
6127 return NT_STATUS_OK
;
6130 case NDR_SAMR_CONNECT2
: {
6131 struct samr_Connect2
*r
= (struct samr_Connect2
*)_r
;
6132 ZERO_STRUCT(r
->out
);
6133 r
->out
.connect_handle
= talloc_zero(mem_ctx
, struct policy_handle
);
6134 if (r
->out
.connect_handle
== NULL
) {
6135 return NT_STATUS_NO_MEMORY
;
6138 r
->out
.result
= _samr_Connect2(cli
->pipes_struct
, r
);
6139 return NT_STATUS_OK
;
6142 case NDR_SAMR_SETUSERINFO2
: {
6143 struct samr_SetUserInfo2
*r
= (struct samr_SetUserInfo2
*)_r
;
6144 r
->out
.result
= _samr_SetUserInfo2(cli
->pipes_struct
, r
);
6145 return NT_STATUS_OK
;
6148 case NDR_SAMR_SETBOOTKEYINFORMATION
: {
6149 struct samr_SetBootKeyInformation
*r
= (struct samr_SetBootKeyInformation
*)_r
;
6150 r
->out
.result
= _samr_SetBootKeyInformation(cli
->pipes_struct
, r
);
6151 return NT_STATUS_OK
;
6154 case NDR_SAMR_GETBOOTKEYINFORMATION
: {
6155 struct samr_GetBootKeyInformation
*r
= (struct samr_GetBootKeyInformation
*)_r
;
6156 ZERO_STRUCT(r
->out
);
6157 r
->out
.unknown
= talloc_zero(mem_ctx
, uint32_t);
6158 if (r
->out
.unknown
== NULL
) {
6159 return NT_STATUS_NO_MEMORY
;
6162 r
->out
.result
= _samr_GetBootKeyInformation(cli
->pipes_struct
, r
);
6163 return NT_STATUS_OK
;
6166 case NDR_SAMR_CONNECT3
: {
6167 struct samr_Connect3
*r
= (struct samr_Connect3
*)_r
;
6168 ZERO_STRUCT(r
->out
);
6169 r
->out
.connect_handle
= talloc_zero(mem_ctx
, struct policy_handle
);
6170 if (r
->out
.connect_handle
== NULL
) {
6171 return NT_STATUS_NO_MEMORY
;
6174 r
->out
.result
= _samr_Connect3(cli
->pipes_struct
, r
);
6175 return NT_STATUS_OK
;
6178 case NDR_SAMR_CONNECT4
: {
6179 struct samr_Connect4
*r
= (struct samr_Connect4
*)_r
;
6180 ZERO_STRUCT(r
->out
);
6181 r
->out
.connect_handle
= talloc_zero(mem_ctx
, struct policy_handle
);
6182 if (r
->out
.connect_handle
== NULL
) {
6183 return NT_STATUS_NO_MEMORY
;
6186 r
->out
.result
= _samr_Connect4(cli
->pipes_struct
, r
);
6187 return NT_STATUS_OK
;
6190 case NDR_SAMR_CHANGEPASSWORDUSER3
: {
6191 struct samr_ChangePasswordUser3
*r
= (struct samr_ChangePasswordUser3
*)_r
;
6192 ZERO_STRUCT(r
->out
);
6193 r
->out
.dominfo
= talloc_zero(mem_ctx
, struct samr_DomInfo1
*);
6194 if (r
->out
.dominfo
== NULL
) {
6195 return NT_STATUS_NO_MEMORY
;
6198 r
->out
.reject
= talloc_zero(mem_ctx
, struct userPwdChangeFailureInformation
*);
6199 if (r
->out
.reject
== NULL
) {
6200 return NT_STATUS_NO_MEMORY
;
6203 r
->out
.result
= _samr_ChangePasswordUser3(cli
->pipes_struct
, r
);
6204 return NT_STATUS_OK
;
6207 case NDR_SAMR_CONNECT5
: {
6208 struct samr_Connect5
*r
= (struct samr_Connect5
*)_r
;
6209 ZERO_STRUCT(r
->out
);
6210 r
->out
.level_out
= talloc_zero(mem_ctx
, uint32_t);
6211 if (r
->out
.level_out
== NULL
) {
6212 return NT_STATUS_NO_MEMORY
;
6215 r
->out
.info_out
= talloc_zero(mem_ctx
, union samr_ConnectInfo
);
6216 if (r
->out
.info_out
== NULL
) {
6217 return NT_STATUS_NO_MEMORY
;
6220 r
->out
.connect_handle
= talloc_zero(mem_ctx
, struct policy_handle
);
6221 if (r
->out
.connect_handle
== NULL
) {
6222 return NT_STATUS_NO_MEMORY
;
6225 r
->out
.result
= _samr_Connect5(cli
->pipes_struct
, r
);
6226 return NT_STATUS_OK
;
6229 case NDR_SAMR_RIDTOSID
: {
6230 struct samr_RidToSid
*r
= (struct samr_RidToSid
*)_r
;
6231 ZERO_STRUCT(r
->out
);
6232 r
->out
.sid
= talloc_zero(mem_ctx
, struct dom_sid2
*);
6233 if (r
->out
.sid
== NULL
) {
6234 return NT_STATUS_NO_MEMORY
;
6237 r
->out
.result
= _samr_RidToSid(cli
->pipes_struct
, r
);
6238 return NT_STATUS_OK
;
6241 case NDR_SAMR_SETDSRMPASSWORD
: {
6242 struct samr_SetDsrmPassword
*r
= (struct samr_SetDsrmPassword
*)_r
;
6243 r
->out
.result
= _samr_SetDsrmPassword(cli
->pipes_struct
, r
);
6244 return NT_STATUS_OK
;
6247 case NDR_SAMR_VALIDATEPASSWORD
: {
6248 struct samr_ValidatePassword
*r
= (struct samr_ValidatePassword
*)_r
;
6249 ZERO_STRUCT(r
->out
);
6250 r
->out
.rep
= talloc_zero(mem_ctx
, union samr_ValidatePasswordRep
*);
6251 if (r
->out
.rep
== NULL
) {
6252 return NT_STATUS_NO_MEMORY
;
6255 r
->out
.result
= _samr_ValidatePassword(cli
->pipes_struct
, r
);
6256 return NT_STATUS_OK
;
6260 return NT_STATUS_NOT_IMPLEMENTED
;
6264 NTSTATUS
rpc_samr_init(void)
6266 return rpc_srv_register(SMB_RPC_INTERFACE_VERSION
, "samr", "samr", &ndr_table_samr
, api_samr_cmds
, sizeof(api_samr_cmds
) / sizeof(struct api_struct
));