2 * Unix SMB/CIFS implementation.
4 * Copyright (C) Guenther Deschner 2007-2008
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 3 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, see <http://www.gnu.org/licenses/>.
21 #include "librpc/gen_ndr/libnetapi.h"
22 #include "lib/netapi/netapi.h"
23 #include "lib/netapi/netapi_private.h"
24 #include "lib/netapi/libnetapi.h"
25 #include "librpc/gen_ndr/ndr_libnetapi.h"
27 /****************************************************************
29 ****************************************************************/
31 NET_API_STATUS NetJoinDomain(const char * server /* [in] [unique] */,
32 const char * domain /* [in] [ref] */,
33 const char * account_ou /* [in] [unique] */,
34 const char * account /* [in] [unique] */,
35 const char * password /* [in] [unique] */,
36 uint32_t join_flags /* [in] */)
38 struct NetJoinDomain r;
39 struct libnetapi_ctx *ctx = NULL;
40 NET_API_STATUS status;
42 TALLOC_CTX *frame = talloc_stackframe();
44 status = libnetapi_getctx(&ctx);
53 r.in.account_ou = account_ou;
54 r.in.account = account;
55 r.in.password = password;
56 r.in.join_flags = join_flags;
60 if (DEBUGLEVEL >= 10) {
61 NDR_PRINT_IN_DEBUG(NetJoinDomain, &r);
64 if (LIBNETAPI_LOCAL_SERVER(server)) {
65 werr = NetJoinDomain_l(ctx, &r);
67 werr = NetJoinDomain_r(ctx, &r);
70 r.out.result = W_ERROR_V(werr);
72 if (DEBUGLEVEL >= 10) {
73 NDR_PRINT_OUT_DEBUG(NetJoinDomain, &r);
77 return (NET_API_STATUS)r.out.result;
80 /****************************************************************
82 ****************************************************************/
84 NET_API_STATUS NetUnjoinDomain(const char * server_name /* [in] [unique] */,
85 const char * account /* [in] [unique] */,
86 const char * password /* [in] [unique] */,
87 uint32_t unjoin_flags /* [in] */)
89 struct NetUnjoinDomain r;
90 struct libnetapi_ctx *ctx = NULL;
91 NET_API_STATUS status;
93 TALLOC_CTX *frame = talloc_stackframe();
95 status = libnetapi_getctx(&ctx);
102 r.in.server_name = server_name;
103 r.in.account = account;
104 r.in.password = password;
105 r.in.unjoin_flags = unjoin_flags;
109 if (DEBUGLEVEL >= 10) {
110 NDR_PRINT_IN_DEBUG(NetUnjoinDomain, &r);
113 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
114 werr = NetUnjoinDomain_l(ctx, &r);
116 werr = NetUnjoinDomain_r(ctx, &r);
119 r.out.result = W_ERROR_V(werr);
121 if (DEBUGLEVEL >= 10) {
122 NDR_PRINT_OUT_DEBUG(NetUnjoinDomain, &r);
126 return (NET_API_STATUS)r.out.result;
129 /****************************************************************
130 NetGetJoinInformation
131 ****************************************************************/
133 NET_API_STATUS NetGetJoinInformation(const char * server_name /* [in] [unique] */,
134 const char * *name_buffer /* [out] [ref] */,
135 uint16_t *name_type /* [out] [ref] */)
137 struct NetGetJoinInformation r;
138 struct libnetapi_ctx *ctx = NULL;
139 NET_API_STATUS status;
141 TALLOC_CTX *frame = talloc_stackframe();
143 status = libnetapi_getctx(&ctx);
150 r.in.server_name = server_name;
153 r.out.name_buffer = name_buffer;
154 r.out.name_type = name_type;
156 if (DEBUGLEVEL >= 10) {
157 NDR_PRINT_IN_DEBUG(NetGetJoinInformation, &r);
160 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
161 werr = NetGetJoinInformation_l(ctx, &r);
163 werr = NetGetJoinInformation_r(ctx, &r);
166 r.out.result = W_ERROR_V(werr);
168 if (DEBUGLEVEL >= 10) {
169 NDR_PRINT_OUT_DEBUG(NetGetJoinInformation, &r);
173 return (NET_API_STATUS)r.out.result;
176 /****************************************************************
178 ****************************************************************/
180 NET_API_STATUS NetGetJoinableOUs(const char * server_name /* [in] [unique] */,
181 const char * domain /* [in] [ref] */,
182 const char * account /* [in] [unique] */,
183 const char * password /* [in] [unique] */,
184 uint32_t *ou_count /* [out] [ref] */,
185 const char * **ous /* [out] [ref] */)
187 struct NetGetJoinableOUs r;
188 struct libnetapi_ctx *ctx = NULL;
189 NET_API_STATUS status;
191 TALLOC_CTX *frame = talloc_stackframe();
193 status = libnetapi_getctx(&ctx);
200 r.in.server_name = server_name;
201 r.in.domain = domain;
202 r.in.account = account;
203 r.in.password = password;
206 r.out.ou_count = ou_count;
209 if (DEBUGLEVEL >= 10) {
210 NDR_PRINT_IN_DEBUG(NetGetJoinableOUs, &r);
213 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
214 werr = NetGetJoinableOUs_l(ctx, &r);
216 werr = NetGetJoinableOUs_r(ctx, &r);
219 r.out.result = W_ERROR_V(werr);
221 if (DEBUGLEVEL >= 10) {
222 NDR_PRINT_OUT_DEBUG(NetGetJoinableOUs, &r);
226 return (NET_API_STATUS)r.out.result;
229 /****************************************************************
230 NetRenameMachineInDomain
231 ****************************************************************/
233 NET_API_STATUS NetRenameMachineInDomain(const char * server_name /* [in] */,
234 const char * new_machine_name /* [in] */,
235 const char * account /* [in] */,
236 const char * password /* [in] */,
237 uint32_t rename_options /* [in] */)
239 struct NetRenameMachineInDomain r;
240 struct libnetapi_ctx *ctx = NULL;
241 NET_API_STATUS status;
243 TALLOC_CTX *frame = talloc_stackframe();
245 status = libnetapi_getctx(&ctx);
252 r.in.server_name = server_name;
253 r.in.new_machine_name = new_machine_name;
254 r.in.account = account;
255 r.in.password = password;
256 r.in.rename_options = rename_options;
260 if (DEBUGLEVEL >= 10) {
261 NDR_PRINT_IN_DEBUG(NetRenameMachineInDomain, &r);
264 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
265 werr = NetRenameMachineInDomain_l(ctx, &r);
267 werr = NetRenameMachineInDomain_r(ctx, &r);
270 r.out.result = W_ERROR_V(werr);
272 if (DEBUGLEVEL >= 10) {
273 NDR_PRINT_OUT_DEBUG(NetRenameMachineInDomain, &r);
277 return (NET_API_STATUS)r.out.result;
280 /****************************************************************
282 ****************************************************************/
284 NET_API_STATUS NetServerGetInfo(const char * server_name /* [in] [unique] */,
285 uint32_t level /* [in] */,
286 uint8_t **buffer /* [out] [ref] */)
288 struct NetServerGetInfo r;
289 struct libnetapi_ctx *ctx = NULL;
290 NET_API_STATUS status;
292 TALLOC_CTX *frame = talloc_stackframe();
294 status = libnetapi_getctx(&ctx);
301 r.in.server_name = server_name;
305 r.out.buffer = buffer;
307 if (DEBUGLEVEL >= 10) {
308 NDR_PRINT_IN_DEBUG(NetServerGetInfo, &r);
311 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
312 werr = NetServerGetInfo_l(ctx, &r);
314 werr = NetServerGetInfo_r(ctx, &r);
317 r.out.result = W_ERROR_V(werr);
319 if (DEBUGLEVEL >= 10) {
320 NDR_PRINT_OUT_DEBUG(NetServerGetInfo, &r);
324 return (NET_API_STATUS)r.out.result;
327 /****************************************************************
329 ****************************************************************/
331 NET_API_STATUS NetServerSetInfo(const char * server_name /* [in] [unique] */,
332 uint32_t level /* [in] */,
333 uint8_t *buffer /* [in] [ref] */,
334 uint32_t *parm_error /* [out] [ref] */)
336 struct NetServerSetInfo r;
337 struct libnetapi_ctx *ctx = NULL;
338 NET_API_STATUS status;
340 TALLOC_CTX *frame = talloc_stackframe();
342 status = libnetapi_getctx(&ctx);
349 r.in.server_name = server_name;
351 r.in.buffer = buffer;
354 r.out.parm_error = parm_error;
356 if (DEBUGLEVEL >= 10) {
357 NDR_PRINT_IN_DEBUG(NetServerSetInfo, &r);
360 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
361 werr = NetServerSetInfo_l(ctx, &r);
363 werr = NetServerSetInfo_r(ctx, &r);
366 r.out.result = W_ERROR_V(werr);
368 if (DEBUGLEVEL >= 10) {
369 NDR_PRINT_OUT_DEBUG(NetServerSetInfo, &r);
373 return (NET_API_STATUS)r.out.result;
376 /****************************************************************
378 ****************************************************************/
380 NET_API_STATUS NetWkstaGetInfo(const char * wksta_name /* [in] [unique] */,
381 uint32_t level /* [in] */,
382 uint8_t **buffer /* [out] [ref] */)
384 struct NetWkstaGetInfo r;
385 struct libnetapi_ctx *ctx = NULL;
386 NET_API_STATUS status;
388 TALLOC_CTX *frame = talloc_stackframe();
390 status = libnetapi_getctx(&ctx);
397 r.in.server_name = wksta_name;
401 r.out.buffer = buffer;
403 if (DEBUGLEVEL >= 10) {
404 NDR_PRINT_IN_DEBUG(NetWkstaGetInfo, &r);
407 if (LIBNETAPI_LOCAL_SERVER(wksta_name)) {
408 werr = NetWkstaGetInfo_l(ctx, &r);
410 werr = NetWkstaGetInfo_r(ctx, &r);
413 r.out.result = W_ERROR_V(werr);
415 if (DEBUGLEVEL >= 10) {
416 NDR_PRINT_OUT_DEBUG(NetWkstaGetInfo, &r);
420 return (NET_API_STATUS)r.out.result;
423 /****************************************************************
425 ****************************************************************/
427 NET_API_STATUS NetGetDCName(const char * server_name /* [in] [unique] */,
428 const char * domain_name /* [in] [unique] */,
429 uint8_t **buffer /* [out] [ref] */)
431 struct NetGetDCName r;
432 struct libnetapi_ctx *ctx = NULL;
433 NET_API_STATUS status;
435 TALLOC_CTX *frame = talloc_stackframe();
437 status = libnetapi_getctx(&ctx);
444 r.in.server_name = server_name;
445 r.in.domain_name = domain_name;
448 r.out.buffer = buffer;
450 if (DEBUGLEVEL >= 10) {
451 NDR_PRINT_IN_DEBUG(NetGetDCName, &r);
454 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
455 werr = NetGetDCName_l(ctx, &r);
457 werr = NetGetDCName_r(ctx, &r);
460 r.out.result = W_ERROR_V(werr);
462 if (DEBUGLEVEL >= 10) {
463 NDR_PRINT_OUT_DEBUG(NetGetDCName, &r);
467 return (NET_API_STATUS)r.out.result;
470 /****************************************************************
472 ****************************************************************/
474 NET_API_STATUS NetGetAnyDCName(const char * server_name /* [in] [unique] */,
475 const char * domain_name /* [in] [unique] */,
476 uint8_t **buffer /* [out] [ref] */)
478 struct NetGetAnyDCName r;
479 struct libnetapi_ctx *ctx = NULL;
480 NET_API_STATUS status;
482 TALLOC_CTX *frame = talloc_stackframe();
484 status = libnetapi_getctx(&ctx);
491 r.in.server_name = server_name;
492 r.in.domain_name = domain_name;
495 r.out.buffer = buffer;
497 if (DEBUGLEVEL >= 10) {
498 NDR_PRINT_IN_DEBUG(NetGetAnyDCName, &r);
501 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
502 werr = NetGetAnyDCName_l(ctx, &r);
504 werr = NetGetAnyDCName_r(ctx, &r);
507 r.out.result = W_ERROR_V(werr);
509 if (DEBUGLEVEL >= 10) {
510 NDR_PRINT_OUT_DEBUG(NetGetAnyDCName, &r);
514 return (NET_API_STATUS)r.out.result;
517 /****************************************************************
519 ****************************************************************/
521 NET_API_STATUS DsGetDcName(const char * server_name /* [in] [unique] */,
522 const char * domain_name /* [in] [ref] */,
523 struct GUID *domain_guid /* [in] [unique] */,
524 const char * site_name /* [in] [unique] */,
525 uint32_t flags /* [in] */,
526 struct DOMAIN_CONTROLLER_INFO **dc_info /* [out] [ref] */)
528 struct DsGetDcName r;
529 struct libnetapi_ctx *ctx = NULL;
530 NET_API_STATUS status;
532 TALLOC_CTX *frame = talloc_stackframe();
534 status = libnetapi_getctx(&ctx);
541 r.in.server_name = server_name;
542 r.in.domain_name = domain_name;
543 r.in.domain_guid = domain_guid;
544 r.in.site_name = site_name;
548 r.out.dc_info = dc_info;
550 if (DEBUGLEVEL >= 10) {
551 NDR_PRINT_IN_DEBUG(DsGetDcName, &r);
554 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
555 werr = DsGetDcName_l(ctx, &r);
557 werr = DsGetDcName_r(ctx, &r);
560 r.out.result = W_ERROR_V(werr);
562 if (DEBUGLEVEL >= 10) {
563 NDR_PRINT_OUT_DEBUG(DsGetDcName, &r);
567 return (NET_API_STATUS)r.out.result;
570 /****************************************************************
572 ****************************************************************/
574 NET_API_STATUS NetUserAdd(const char * server_name /* [in] [unique] */,
575 uint32_t level /* [in] */,
576 uint8_t *buffer /* [in] [ref] */,
577 uint32_t *parm_error /* [out] [ref] */)
580 struct libnetapi_ctx *ctx = NULL;
581 NET_API_STATUS status;
583 TALLOC_CTX *frame = talloc_stackframe();
585 status = libnetapi_getctx(&ctx);
592 r.in.server_name = server_name;
594 r.in.buffer = buffer;
597 r.out.parm_error = parm_error;
599 if (DEBUGLEVEL >= 10) {
600 NDR_PRINT_IN_DEBUG(NetUserAdd, &r);
603 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
604 werr = NetUserAdd_l(ctx, &r);
606 werr = NetUserAdd_r(ctx, &r);
609 r.out.result = W_ERROR_V(werr);
611 if (DEBUGLEVEL >= 10) {
612 NDR_PRINT_OUT_DEBUG(NetUserAdd, &r);
616 return (NET_API_STATUS)r.out.result;
619 /****************************************************************
621 ****************************************************************/
623 NET_API_STATUS NetUserDel(const char * server_name /* [in] [unique] */,
624 const char * user_name /* [in] [ref] */)
627 struct libnetapi_ctx *ctx = NULL;
628 NET_API_STATUS status;
630 TALLOC_CTX *frame = talloc_stackframe();
632 status = libnetapi_getctx(&ctx);
639 r.in.server_name = server_name;
640 r.in.user_name = user_name;
644 if (DEBUGLEVEL >= 10) {
645 NDR_PRINT_IN_DEBUG(NetUserDel, &r);
648 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
649 werr = NetUserDel_l(ctx, &r);
651 werr = NetUserDel_r(ctx, &r);
654 r.out.result = W_ERROR_V(werr);
656 if (DEBUGLEVEL >= 10) {
657 NDR_PRINT_OUT_DEBUG(NetUserDel, &r);
661 return (NET_API_STATUS)r.out.result;
664 /****************************************************************
666 ****************************************************************/
668 NET_API_STATUS NetUserEnum(const char * server_name /* [in] [unique] */,
669 uint32_t level /* [in] */,
670 uint32_t filter /* [in] */,
671 uint8_t **buffer /* [out] [ref] */,
672 uint32_t prefmaxlen /* [in] */,
673 uint32_t *entries_read /* [out] [ref] */,
674 uint32_t *total_entries /* [out] [ref] */,
675 uint32_t *resume_handle /* [in,out] [ref] */)
677 struct NetUserEnum r;
678 struct libnetapi_ctx *ctx = NULL;
679 NET_API_STATUS status;
681 TALLOC_CTX *frame = talloc_stackframe();
683 status = libnetapi_getctx(&ctx);
690 r.in.server_name = server_name;
692 r.in.filter = filter;
693 r.in.prefmaxlen = prefmaxlen;
694 r.in.resume_handle = resume_handle;
697 r.out.buffer = buffer;
698 r.out.entries_read = entries_read;
699 r.out.total_entries = total_entries;
700 r.out.resume_handle = resume_handle;
702 if (DEBUGLEVEL >= 10) {
703 NDR_PRINT_IN_DEBUG(NetUserEnum, &r);
706 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
707 werr = NetUserEnum_l(ctx, &r);
709 werr = NetUserEnum_r(ctx, &r);
712 r.out.result = W_ERROR_V(werr);
714 if (DEBUGLEVEL >= 10) {
715 NDR_PRINT_OUT_DEBUG(NetUserEnum, &r);
719 return (NET_API_STATUS)r.out.result;
722 /****************************************************************
723 NetUserChangePassword
724 ****************************************************************/
726 NET_API_STATUS NetUserChangePassword(const char * domain_name /* [in] */,
727 const char * user_name /* [in] */,
728 const char * old_password /* [in] */,
729 const char * new_password /* [in] */)
731 struct NetUserChangePassword r;
732 struct libnetapi_ctx *ctx = NULL;
733 NET_API_STATUS status;
735 TALLOC_CTX *frame = talloc_stackframe();
737 status = libnetapi_getctx(&ctx);
744 r.in.domain_name = domain_name;
745 r.in.user_name = user_name;
746 r.in.old_password = old_password;
747 r.in.new_password = new_password;
751 if (DEBUGLEVEL >= 10) {
752 NDR_PRINT_IN_DEBUG(NetUserChangePassword, &r);
755 if (LIBNETAPI_LOCAL_SERVER(domain_name)) {
756 werr = NetUserChangePassword_l(ctx, &r);
758 werr = NetUserChangePassword_r(ctx, &r);
761 r.out.result = W_ERROR_V(werr);
763 if (DEBUGLEVEL >= 10) {
764 NDR_PRINT_OUT_DEBUG(NetUserChangePassword, &r);
768 return (NET_API_STATUS)r.out.result;
771 /****************************************************************
773 ****************************************************************/
775 NET_API_STATUS NetUserGetInfo(const char * server_name /* [in] */,
776 const char * user_name /* [in] */,
777 uint32_t level /* [in] */,
778 uint8_t **buffer /* [out] [ref] */)
780 struct NetUserGetInfo r;
781 struct libnetapi_ctx *ctx = NULL;
782 NET_API_STATUS status;
784 TALLOC_CTX *frame = talloc_stackframe();
786 status = libnetapi_getctx(&ctx);
793 r.in.server_name = server_name;
794 r.in.user_name = user_name;
798 r.out.buffer = buffer;
800 if (DEBUGLEVEL >= 10) {
801 NDR_PRINT_IN_DEBUG(NetUserGetInfo, &r);
804 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
805 werr = NetUserGetInfo_l(ctx, &r);
807 werr = NetUserGetInfo_r(ctx, &r);
810 r.out.result = W_ERROR_V(werr);
812 if (DEBUGLEVEL >= 10) {
813 NDR_PRINT_OUT_DEBUG(NetUserGetInfo, &r);
817 return (NET_API_STATUS)r.out.result;
820 /****************************************************************
822 ****************************************************************/
824 NET_API_STATUS NetUserSetInfo(const char * server_name /* [in] */,
825 const char * user_name /* [in] */,
826 uint32_t level /* [in] */,
827 uint8_t *buffer /* [in] [ref] */,
828 uint32_t *parm_err /* [out] [ref] */)
830 struct NetUserSetInfo r;
831 struct libnetapi_ctx *ctx = NULL;
832 NET_API_STATUS status;
834 TALLOC_CTX *frame = talloc_stackframe();
836 status = libnetapi_getctx(&ctx);
843 r.in.server_name = server_name;
844 r.in.user_name = user_name;
846 r.in.buffer = buffer;
849 r.out.parm_err = parm_err;
851 if (DEBUGLEVEL >= 10) {
852 NDR_PRINT_IN_DEBUG(NetUserSetInfo, &r);
855 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
856 werr = NetUserSetInfo_l(ctx, &r);
858 werr = NetUserSetInfo_r(ctx, &r);
861 r.out.result = W_ERROR_V(werr);
863 if (DEBUGLEVEL >= 10) {
864 NDR_PRINT_OUT_DEBUG(NetUserSetInfo, &r);
868 return (NET_API_STATUS)r.out.result;
871 /****************************************************************
873 ****************************************************************/
875 NET_API_STATUS NetUserGetGroups(const char * server_name /* [in] */,
876 const char * user_name /* [in] */,
877 uint32_t level /* [in] */,
878 uint8_t **buffer /* [out] [ref] */,
879 uint32_t prefmaxlen /* [in] */,
880 uint32_t *entries_read /* [out] [ref] */,
881 uint32_t *total_entries /* [out] [ref] */)
883 struct NetUserGetGroups r;
884 struct libnetapi_ctx *ctx = NULL;
885 NET_API_STATUS status;
887 TALLOC_CTX *frame = talloc_stackframe();
889 status = libnetapi_getctx(&ctx);
896 r.in.server_name = server_name;
897 r.in.user_name = user_name;
899 r.in.prefmaxlen = prefmaxlen;
902 r.out.buffer = buffer;
903 r.out.entries_read = entries_read;
904 r.out.total_entries = total_entries;
906 if (DEBUGLEVEL >= 10) {
907 NDR_PRINT_IN_DEBUG(NetUserGetGroups, &r);
910 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
911 werr = NetUserGetGroups_l(ctx, &r);
913 werr = NetUserGetGroups_r(ctx, &r);
916 r.out.result = W_ERROR_V(werr);
918 if (DEBUGLEVEL >= 10) {
919 NDR_PRINT_OUT_DEBUG(NetUserGetGroups, &r);
923 return (NET_API_STATUS)r.out.result;
926 /****************************************************************
928 ****************************************************************/
930 NET_API_STATUS NetUserSetGroups(const char * server_name /* [in] */,
931 const char * user_name /* [in] */,
932 uint32_t level /* [in] */,
933 uint8_t *buffer /* [in] [ref] */,
934 uint32_t num_entries /* [in] */)
936 struct NetUserSetGroups r;
937 struct libnetapi_ctx *ctx = NULL;
938 NET_API_STATUS status;
940 TALLOC_CTX *frame = talloc_stackframe();
942 status = libnetapi_getctx(&ctx);
949 r.in.server_name = server_name;
950 r.in.user_name = user_name;
952 r.in.buffer = buffer;
953 r.in.num_entries = num_entries;
957 if (DEBUGLEVEL >= 10) {
958 NDR_PRINT_IN_DEBUG(NetUserSetGroups, &r);
961 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
962 werr = NetUserSetGroups_l(ctx, &r);
964 werr = NetUserSetGroups_r(ctx, &r);
967 r.out.result = W_ERROR_V(werr);
969 if (DEBUGLEVEL >= 10) {
970 NDR_PRINT_OUT_DEBUG(NetUserSetGroups, &r);
974 return (NET_API_STATUS)r.out.result;
977 /****************************************************************
978 NetUserGetLocalGroups
979 ****************************************************************/
981 NET_API_STATUS NetUserGetLocalGroups(const char * server_name /* [in] */,
982 const char * user_name /* [in] */,
983 uint32_t level /* [in] */,
984 uint32_t flags /* [in] */,
985 uint8_t **buffer /* [out] [ref] */,
986 uint32_t prefmaxlen /* [in] */,
987 uint32_t *entries_read /* [out] [ref] */,
988 uint32_t *total_entries /* [out] [ref] */)
990 struct NetUserGetLocalGroups r;
991 struct libnetapi_ctx *ctx = NULL;
992 NET_API_STATUS status;
994 TALLOC_CTX *frame = talloc_stackframe();
996 status = libnetapi_getctx(&ctx);
1003 r.in.server_name = server_name;
1004 r.in.user_name = user_name;
1007 r.in.prefmaxlen = prefmaxlen;
1009 /* Out parameters */
1010 r.out.buffer = buffer;
1011 r.out.entries_read = entries_read;
1012 r.out.total_entries = total_entries;
1014 if (DEBUGLEVEL >= 10) {
1015 NDR_PRINT_IN_DEBUG(NetUserGetLocalGroups, &r);
1018 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1019 werr = NetUserGetLocalGroups_l(ctx, &r);
1021 werr = NetUserGetLocalGroups_r(ctx, &r);
1024 r.out.result = W_ERROR_V(werr);
1026 if (DEBUGLEVEL >= 10) {
1027 NDR_PRINT_OUT_DEBUG(NetUserGetLocalGroups, &r);
1031 return (NET_API_STATUS)r.out.result;
1034 /****************************************************************
1036 ****************************************************************/
1038 NET_API_STATUS NetUserModalsGet(const char * server_name /* [in] */,
1039 uint32_t level /* [in] */,
1040 uint8_t **buffer /* [out] [ref] */)
1042 struct NetUserModalsGet r;
1043 struct libnetapi_ctx *ctx = NULL;
1044 NET_API_STATUS status;
1046 TALLOC_CTX *frame = talloc_stackframe();
1048 status = libnetapi_getctx(&ctx);
1055 r.in.server_name = server_name;
1058 /* Out parameters */
1059 r.out.buffer = buffer;
1061 if (DEBUGLEVEL >= 10) {
1062 NDR_PRINT_IN_DEBUG(NetUserModalsGet, &r);
1065 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1066 werr = NetUserModalsGet_l(ctx, &r);
1068 werr = NetUserModalsGet_r(ctx, &r);
1071 r.out.result = W_ERROR_V(werr);
1073 if (DEBUGLEVEL >= 10) {
1074 NDR_PRINT_OUT_DEBUG(NetUserModalsGet, &r);
1078 return (NET_API_STATUS)r.out.result;
1081 /****************************************************************
1083 ****************************************************************/
1085 NET_API_STATUS NetUserModalsSet(const char * server_name /* [in] */,
1086 uint32_t level /* [in] */,
1087 uint8_t *buffer /* [in] [ref] */,
1088 uint32_t *parm_err /* [out] [ref] */)
1090 struct NetUserModalsSet r;
1091 struct libnetapi_ctx *ctx = NULL;
1092 NET_API_STATUS status;
1094 TALLOC_CTX *frame = talloc_stackframe();
1096 status = libnetapi_getctx(&ctx);
1103 r.in.server_name = server_name;
1105 r.in.buffer = buffer;
1107 /* Out parameters */
1108 r.out.parm_err = parm_err;
1110 if (DEBUGLEVEL >= 10) {
1111 NDR_PRINT_IN_DEBUG(NetUserModalsSet, &r);
1114 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1115 werr = NetUserModalsSet_l(ctx, &r);
1117 werr = NetUserModalsSet_r(ctx, &r);
1120 r.out.result = W_ERROR_V(werr);
1122 if (DEBUGLEVEL >= 10) {
1123 NDR_PRINT_OUT_DEBUG(NetUserModalsSet, &r);
1127 return (NET_API_STATUS)r.out.result;
1130 /****************************************************************
1131 NetQueryDisplayInformation
1132 ****************************************************************/
1134 NET_API_STATUS NetQueryDisplayInformation(const char * server_name /* [in] [unique] */,
1135 uint32_t level /* [in] */,
1136 uint32_t idx /* [in] */,
1137 uint32_t entries_requested /* [in] */,
1138 uint32_t prefmaxlen /* [in] */,
1139 uint32_t *entries_read /* [out] [ref] */,
1140 void **buffer /* [out] [noprint,ref] */)
1142 struct NetQueryDisplayInformation r;
1143 struct libnetapi_ctx *ctx = NULL;
1144 NET_API_STATUS status;
1146 TALLOC_CTX *frame = talloc_stackframe();
1148 status = libnetapi_getctx(&ctx);
1155 r.in.server_name = server_name;
1158 r.in.entries_requested = entries_requested;
1159 r.in.prefmaxlen = prefmaxlen;
1161 /* Out parameters */
1162 r.out.entries_read = entries_read;
1163 r.out.buffer = buffer;
1165 if (DEBUGLEVEL >= 10) {
1166 NDR_PRINT_IN_DEBUG(NetQueryDisplayInformation, &r);
1169 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1170 werr = NetQueryDisplayInformation_l(ctx, &r);
1172 werr = NetQueryDisplayInformation_r(ctx, &r);
1175 r.out.result = W_ERROR_V(werr);
1177 if (DEBUGLEVEL >= 10) {
1178 NDR_PRINT_OUT_DEBUG(NetQueryDisplayInformation, &r);
1182 return (NET_API_STATUS)r.out.result;
1185 /****************************************************************
1187 ****************************************************************/
1189 NET_API_STATUS NetGroupAdd(const char * server_name /* [in] */,
1190 uint32_t level /* [in] */,
1191 uint8_t *buffer /* [in] [ref] */,
1192 uint32_t *parm_err /* [out] [ref] */)
1194 struct NetGroupAdd r;
1195 struct libnetapi_ctx *ctx = NULL;
1196 NET_API_STATUS status;
1198 TALLOC_CTX *frame = talloc_stackframe();
1200 status = libnetapi_getctx(&ctx);
1207 r.in.server_name = server_name;
1209 r.in.buffer = buffer;
1211 /* Out parameters */
1212 r.out.parm_err = parm_err;
1214 if (DEBUGLEVEL >= 10) {
1215 NDR_PRINT_IN_DEBUG(NetGroupAdd, &r);
1218 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1219 werr = NetGroupAdd_l(ctx, &r);
1221 werr = NetGroupAdd_r(ctx, &r);
1224 r.out.result = W_ERROR_V(werr);
1226 if (DEBUGLEVEL >= 10) {
1227 NDR_PRINT_OUT_DEBUG(NetGroupAdd, &r);
1231 return (NET_API_STATUS)r.out.result;
1234 /****************************************************************
1236 ****************************************************************/
1238 NET_API_STATUS NetGroupDel(const char * server_name /* [in] */,
1239 const char * group_name /* [in] */)
1241 struct NetGroupDel r;
1242 struct libnetapi_ctx *ctx = NULL;
1243 NET_API_STATUS status;
1245 TALLOC_CTX *frame = talloc_stackframe();
1247 status = libnetapi_getctx(&ctx);
1254 r.in.server_name = server_name;
1255 r.in.group_name = group_name;
1257 /* Out parameters */
1259 if (DEBUGLEVEL >= 10) {
1260 NDR_PRINT_IN_DEBUG(NetGroupDel, &r);
1263 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1264 werr = NetGroupDel_l(ctx, &r);
1266 werr = NetGroupDel_r(ctx, &r);
1269 r.out.result = W_ERROR_V(werr);
1271 if (DEBUGLEVEL >= 10) {
1272 NDR_PRINT_OUT_DEBUG(NetGroupDel, &r);
1276 return (NET_API_STATUS)r.out.result;
1279 /****************************************************************
1281 ****************************************************************/
1283 NET_API_STATUS NetGroupEnum(const char * server_name /* [in] */,
1284 uint32_t level /* [in] */,
1285 uint8_t **buffer /* [out] [ref] */,
1286 uint32_t prefmaxlen /* [in] */,
1287 uint32_t *entries_read /* [out] [ref] */,
1288 uint32_t *total_entries /* [out] [ref] */,
1289 uint32_t *resume_handle /* [in,out] [ref] */)
1291 struct NetGroupEnum r;
1292 struct libnetapi_ctx *ctx = NULL;
1293 NET_API_STATUS status;
1295 TALLOC_CTX *frame = talloc_stackframe();
1297 status = libnetapi_getctx(&ctx);
1304 r.in.server_name = server_name;
1306 r.in.prefmaxlen = prefmaxlen;
1307 r.in.resume_handle = resume_handle;
1309 /* Out parameters */
1310 r.out.buffer = buffer;
1311 r.out.entries_read = entries_read;
1312 r.out.total_entries = total_entries;
1313 r.out.resume_handle = resume_handle;
1315 if (DEBUGLEVEL >= 10) {
1316 NDR_PRINT_IN_DEBUG(NetGroupEnum, &r);
1319 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1320 werr = NetGroupEnum_l(ctx, &r);
1322 werr = NetGroupEnum_r(ctx, &r);
1325 r.out.result = W_ERROR_V(werr);
1327 if (DEBUGLEVEL >= 10) {
1328 NDR_PRINT_OUT_DEBUG(NetGroupEnum, &r);
1332 return (NET_API_STATUS)r.out.result;
1335 /****************************************************************
1337 ****************************************************************/
1339 NET_API_STATUS NetGroupSetInfo(const char * server_name /* [in] */,
1340 const char * group_name /* [in] */,
1341 uint32_t level /* [in] */,
1342 uint8_t *buffer /* [in] [ref] */,
1343 uint32_t *parm_err /* [out] [ref] */)
1345 struct NetGroupSetInfo r;
1346 struct libnetapi_ctx *ctx = NULL;
1347 NET_API_STATUS status;
1349 TALLOC_CTX *frame = talloc_stackframe();
1351 status = libnetapi_getctx(&ctx);
1358 r.in.server_name = server_name;
1359 r.in.group_name = group_name;
1361 r.in.buffer = buffer;
1363 /* Out parameters */
1364 r.out.parm_err = parm_err;
1366 if (DEBUGLEVEL >= 10) {
1367 NDR_PRINT_IN_DEBUG(NetGroupSetInfo, &r);
1370 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1371 werr = NetGroupSetInfo_l(ctx, &r);
1373 werr = NetGroupSetInfo_r(ctx, &r);
1376 r.out.result = W_ERROR_V(werr);
1378 if (DEBUGLEVEL >= 10) {
1379 NDR_PRINT_OUT_DEBUG(NetGroupSetInfo, &r);
1383 return (NET_API_STATUS)r.out.result;
1386 /****************************************************************
1388 ****************************************************************/
1390 NET_API_STATUS NetGroupGetInfo(const char * server_name /* [in] */,
1391 const char * group_name /* [in] */,
1392 uint32_t level /* [in] */,
1393 uint8_t **buffer /* [out] [ref] */)
1395 struct NetGroupGetInfo r;
1396 struct libnetapi_ctx *ctx = NULL;
1397 NET_API_STATUS status;
1399 TALLOC_CTX *frame = talloc_stackframe();
1401 status = libnetapi_getctx(&ctx);
1408 r.in.server_name = server_name;
1409 r.in.group_name = group_name;
1412 /* Out parameters */
1413 r.out.buffer = buffer;
1415 if (DEBUGLEVEL >= 10) {
1416 NDR_PRINT_IN_DEBUG(NetGroupGetInfo, &r);
1419 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1420 werr = NetGroupGetInfo_l(ctx, &r);
1422 werr = NetGroupGetInfo_r(ctx, &r);
1425 r.out.result = W_ERROR_V(werr);
1427 if (DEBUGLEVEL >= 10) {
1428 NDR_PRINT_OUT_DEBUG(NetGroupGetInfo, &r);
1432 return (NET_API_STATUS)r.out.result;
1435 /****************************************************************
1437 ****************************************************************/
1439 NET_API_STATUS NetGroupAddUser(const char * server_name /* [in] */,
1440 const char * group_name /* [in] */,
1441 const char * user_name /* [in] */)
1443 struct NetGroupAddUser r;
1444 struct libnetapi_ctx *ctx = NULL;
1445 NET_API_STATUS status;
1447 TALLOC_CTX *frame = talloc_stackframe();
1449 status = libnetapi_getctx(&ctx);
1456 r.in.server_name = server_name;
1457 r.in.group_name = group_name;
1458 r.in.user_name = user_name;
1460 /* Out parameters */
1462 if (DEBUGLEVEL >= 10) {
1463 NDR_PRINT_IN_DEBUG(NetGroupAddUser, &r);
1466 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1467 werr = NetGroupAddUser_l(ctx, &r);
1469 werr = NetGroupAddUser_r(ctx, &r);
1472 r.out.result = W_ERROR_V(werr);
1474 if (DEBUGLEVEL >= 10) {
1475 NDR_PRINT_OUT_DEBUG(NetGroupAddUser, &r);
1479 return (NET_API_STATUS)r.out.result;
1482 /****************************************************************
1484 ****************************************************************/
1486 NET_API_STATUS NetGroupDelUser(const char * server_name /* [in] */,
1487 const char * group_name /* [in] */,
1488 const char * user_name /* [in] */)
1490 struct NetGroupDelUser r;
1491 struct libnetapi_ctx *ctx = NULL;
1492 NET_API_STATUS status;
1494 TALLOC_CTX *frame = talloc_stackframe();
1496 status = libnetapi_getctx(&ctx);
1503 r.in.server_name = server_name;
1504 r.in.group_name = group_name;
1505 r.in.user_name = user_name;
1507 /* Out parameters */
1509 if (DEBUGLEVEL >= 10) {
1510 NDR_PRINT_IN_DEBUG(NetGroupDelUser, &r);
1513 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1514 werr = NetGroupDelUser_l(ctx, &r);
1516 werr = NetGroupDelUser_r(ctx, &r);
1519 r.out.result = W_ERROR_V(werr);
1521 if (DEBUGLEVEL >= 10) {
1522 NDR_PRINT_OUT_DEBUG(NetGroupDelUser, &r);
1526 return (NET_API_STATUS)r.out.result;
1529 /****************************************************************
1531 ****************************************************************/
1533 NET_API_STATUS NetGroupGetUsers(const char * server_name /* [in] */,
1534 const char * group_name /* [in] */,
1535 uint32_t level /* [in] */,
1536 uint8_t **buffer /* [out] [ref] */,
1537 uint32_t prefmaxlen /* [in] */,
1538 uint32_t *entries_read /* [out] [ref] */,
1539 uint32_t *total_entries /* [out] [ref] */,
1540 uint32_t *resume_handle /* [in,out] [ref] */)
1542 struct NetGroupGetUsers r;
1543 struct libnetapi_ctx *ctx = NULL;
1544 NET_API_STATUS status;
1546 TALLOC_CTX *frame = talloc_stackframe();
1548 status = libnetapi_getctx(&ctx);
1555 r.in.server_name = server_name;
1556 r.in.group_name = group_name;
1558 r.in.prefmaxlen = prefmaxlen;
1559 r.in.resume_handle = resume_handle;
1561 /* Out parameters */
1562 r.out.buffer = buffer;
1563 r.out.entries_read = entries_read;
1564 r.out.total_entries = total_entries;
1565 r.out.resume_handle = resume_handle;
1567 if (DEBUGLEVEL >= 10) {
1568 NDR_PRINT_IN_DEBUG(NetGroupGetUsers, &r);
1571 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1572 werr = NetGroupGetUsers_l(ctx, &r);
1574 werr = NetGroupGetUsers_r(ctx, &r);
1577 r.out.result = W_ERROR_V(werr);
1579 if (DEBUGLEVEL >= 10) {
1580 NDR_PRINT_OUT_DEBUG(NetGroupGetUsers, &r);
1584 return (NET_API_STATUS)r.out.result;
1587 /****************************************************************
1589 ****************************************************************/
1591 NET_API_STATUS NetGroupSetUsers(const char * server_name /* [in] */,
1592 const char * group_name /* [in] */,
1593 uint32_t level /* [in] */,
1594 uint8_t *buffer /* [in] [ref] */,
1595 uint32_t num_entries /* [in] */)
1597 struct NetGroupSetUsers r;
1598 struct libnetapi_ctx *ctx = NULL;
1599 NET_API_STATUS status;
1601 TALLOC_CTX *frame = talloc_stackframe();
1603 status = libnetapi_getctx(&ctx);
1610 r.in.server_name = server_name;
1611 r.in.group_name = group_name;
1613 r.in.buffer = buffer;
1614 r.in.num_entries = num_entries;
1616 /* Out parameters */
1618 if (DEBUGLEVEL >= 10) {
1619 NDR_PRINT_IN_DEBUG(NetGroupSetUsers, &r);
1622 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1623 werr = NetGroupSetUsers_l(ctx, &r);
1625 werr = NetGroupSetUsers_r(ctx, &r);
1628 r.out.result = W_ERROR_V(werr);
1630 if (DEBUGLEVEL >= 10) {
1631 NDR_PRINT_OUT_DEBUG(NetGroupSetUsers, &r);
1635 return (NET_API_STATUS)r.out.result;
1638 /****************************************************************
1640 ****************************************************************/
1642 NET_API_STATUS NetLocalGroupAdd(const char * server_name /* [in] */,
1643 uint32_t level /* [in] */,
1644 uint8_t *buffer /* [in] [ref] */,
1645 uint32_t *parm_err /* [out] [ref] */)
1647 struct NetLocalGroupAdd r;
1648 struct libnetapi_ctx *ctx = NULL;
1649 NET_API_STATUS status;
1651 TALLOC_CTX *frame = talloc_stackframe();
1653 status = libnetapi_getctx(&ctx);
1660 r.in.server_name = server_name;
1662 r.in.buffer = buffer;
1664 /* Out parameters */
1665 r.out.parm_err = parm_err;
1667 if (DEBUGLEVEL >= 10) {
1668 NDR_PRINT_IN_DEBUG(NetLocalGroupAdd, &r);
1671 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1672 werr = NetLocalGroupAdd_l(ctx, &r);
1674 werr = NetLocalGroupAdd_r(ctx, &r);
1677 r.out.result = W_ERROR_V(werr);
1679 if (DEBUGLEVEL >= 10) {
1680 NDR_PRINT_OUT_DEBUG(NetLocalGroupAdd, &r);
1684 return (NET_API_STATUS)r.out.result;
1687 /****************************************************************
1689 ****************************************************************/
1691 NET_API_STATUS NetLocalGroupDel(const char * server_name /* [in] */,
1692 const char * group_name /* [in] */)
1694 struct NetLocalGroupDel r;
1695 struct libnetapi_ctx *ctx = NULL;
1696 NET_API_STATUS status;
1698 TALLOC_CTX *frame = talloc_stackframe();
1700 status = libnetapi_getctx(&ctx);
1707 r.in.server_name = server_name;
1708 r.in.group_name = group_name;
1710 /* Out parameters */
1712 if (DEBUGLEVEL >= 10) {
1713 NDR_PRINT_IN_DEBUG(NetLocalGroupDel, &r);
1716 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1717 werr = NetLocalGroupDel_l(ctx, &r);
1719 werr = NetLocalGroupDel_r(ctx, &r);
1722 r.out.result = W_ERROR_V(werr);
1724 if (DEBUGLEVEL >= 10) {
1725 NDR_PRINT_OUT_DEBUG(NetLocalGroupDel, &r);
1729 return (NET_API_STATUS)r.out.result;
1732 /****************************************************************
1733 NetLocalGroupGetInfo
1734 ****************************************************************/
1736 NET_API_STATUS NetLocalGroupGetInfo(const char * server_name /* [in] */,
1737 const char * group_name /* [in] */,
1738 uint32_t level /* [in] */,
1739 uint8_t **buffer /* [out] [ref] */)
1741 struct NetLocalGroupGetInfo r;
1742 struct libnetapi_ctx *ctx = NULL;
1743 NET_API_STATUS status;
1745 TALLOC_CTX *frame = talloc_stackframe();
1747 status = libnetapi_getctx(&ctx);
1754 r.in.server_name = server_name;
1755 r.in.group_name = group_name;
1758 /* Out parameters */
1759 r.out.buffer = buffer;
1761 if (DEBUGLEVEL >= 10) {
1762 NDR_PRINT_IN_DEBUG(NetLocalGroupGetInfo, &r);
1765 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1766 werr = NetLocalGroupGetInfo_l(ctx, &r);
1768 werr = NetLocalGroupGetInfo_r(ctx, &r);
1771 r.out.result = W_ERROR_V(werr);
1773 if (DEBUGLEVEL >= 10) {
1774 NDR_PRINT_OUT_DEBUG(NetLocalGroupGetInfo, &r);
1778 return (NET_API_STATUS)r.out.result;
1781 /****************************************************************
1782 NetLocalGroupSetInfo
1783 ****************************************************************/
1785 NET_API_STATUS NetLocalGroupSetInfo(const char * server_name /* [in] */,
1786 const char * group_name /* [in] */,
1787 uint32_t level /* [in] */,
1788 uint8_t *buffer /* [in] [ref] */,
1789 uint32_t *parm_err /* [out] [ref] */)
1791 struct NetLocalGroupSetInfo r;
1792 struct libnetapi_ctx *ctx = NULL;
1793 NET_API_STATUS status;
1795 TALLOC_CTX *frame = talloc_stackframe();
1797 status = libnetapi_getctx(&ctx);
1804 r.in.server_name = server_name;
1805 r.in.group_name = group_name;
1807 r.in.buffer = buffer;
1809 /* Out parameters */
1810 r.out.parm_err = parm_err;
1812 if (DEBUGLEVEL >= 10) {
1813 NDR_PRINT_IN_DEBUG(NetLocalGroupSetInfo, &r);
1816 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1817 werr = NetLocalGroupSetInfo_l(ctx, &r);
1819 werr = NetLocalGroupSetInfo_r(ctx, &r);
1822 r.out.result = W_ERROR_V(werr);
1824 if (DEBUGLEVEL >= 10) {
1825 NDR_PRINT_OUT_DEBUG(NetLocalGroupSetInfo, &r);
1829 return (NET_API_STATUS)r.out.result;
1832 /****************************************************************
1834 ****************************************************************/
1836 NET_API_STATUS NetLocalGroupEnum(const char * server_name /* [in] */,
1837 uint32_t level /* [in] */,
1838 uint8_t **buffer /* [out] [ref] */,
1839 uint32_t prefmaxlen /* [in] */,
1840 uint32_t *entries_read /* [out] [ref] */,
1841 uint32_t *total_entries /* [out] [ref] */,
1842 uint32_t *resume_handle /* [in,out] [ref] */)
1844 struct NetLocalGroupEnum r;
1845 struct libnetapi_ctx *ctx = NULL;
1846 NET_API_STATUS status;
1848 TALLOC_CTX *frame = talloc_stackframe();
1850 status = libnetapi_getctx(&ctx);
1857 r.in.server_name = server_name;
1859 r.in.prefmaxlen = prefmaxlen;
1860 r.in.resume_handle = resume_handle;
1862 /* Out parameters */
1863 r.out.buffer = buffer;
1864 r.out.entries_read = entries_read;
1865 r.out.total_entries = total_entries;
1866 r.out.resume_handle = resume_handle;
1868 if (DEBUGLEVEL >= 10) {
1869 NDR_PRINT_IN_DEBUG(NetLocalGroupEnum, &r);
1872 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1873 werr = NetLocalGroupEnum_l(ctx, &r);
1875 werr = NetLocalGroupEnum_r(ctx, &r);
1878 r.out.result = W_ERROR_V(werr);
1880 if (DEBUGLEVEL >= 10) {
1881 NDR_PRINT_OUT_DEBUG(NetLocalGroupEnum, &r);
1885 return (NET_API_STATUS)r.out.result;
1888 /****************************************************************
1889 NetLocalGroupAddMembers
1890 ****************************************************************/
1892 NET_API_STATUS NetLocalGroupAddMembers(const char * server_name /* [in] */,
1893 const char * group_name /* [in] */,
1894 uint32_t level /* [in] */,
1895 uint8_t *buffer /* [in] [ref] */,
1896 uint32_t total_entries /* [in] */)
1898 struct NetLocalGroupAddMembers r;
1899 struct libnetapi_ctx *ctx = NULL;
1900 NET_API_STATUS status;
1902 TALLOC_CTX *frame = talloc_stackframe();
1904 status = libnetapi_getctx(&ctx);
1911 r.in.server_name = server_name;
1912 r.in.group_name = group_name;
1914 r.in.buffer = buffer;
1915 r.in.total_entries = total_entries;
1917 /* Out parameters */
1919 if (DEBUGLEVEL >= 10) {
1920 NDR_PRINT_IN_DEBUG(NetLocalGroupAddMembers, &r);
1923 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1924 werr = NetLocalGroupAddMembers_l(ctx, &r);
1926 werr = NetLocalGroupAddMembers_r(ctx, &r);
1929 r.out.result = W_ERROR_V(werr);
1931 if (DEBUGLEVEL >= 10) {
1932 NDR_PRINT_OUT_DEBUG(NetLocalGroupAddMembers, &r);
1936 return (NET_API_STATUS)r.out.result;
1939 /****************************************************************
1940 NetLocalGroupDelMembers
1941 ****************************************************************/
1943 NET_API_STATUS NetLocalGroupDelMembers(const char * server_name /* [in] */,
1944 const char * group_name /* [in] */,
1945 uint32_t level /* [in] */,
1946 uint8_t *buffer /* [in] [ref] */,
1947 uint32_t total_entries /* [in] */)
1949 struct NetLocalGroupDelMembers r;
1950 struct libnetapi_ctx *ctx = NULL;
1951 NET_API_STATUS status;
1953 TALLOC_CTX *frame = talloc_stackframe();
1955 status = libnetapi_getctx(&ctx);
1962 r.in.server_name = server_name;
1963 r.in.group_name = group_name;
1965 r.in.buffer = buffer;
1966 r.in.total_entries = total_entries;
1968 /* Out parameters */
1970 if (DEBUGLEVEL >= 10) {
1971 NDR_PRINT_IN_DEBUG(NetLocalGroupDelMembers, &r);
1974 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1975 werr = NetLocalGroupDelMembers_l(ctx, &r);
1977 werr = NetLocalGroupDelMembers_r(ctx, &r);
1980 r.out.result = W_ERROR_V(werr);
1982 if (DEBUGLEVEL >= 10) {
1983 NDR_PRINT_OUT_DEBUG(NetLocalGroupDelMembers, &r);
1987 return (NET_API_STATUS)r.out.result;
1990 /****************************************************************
1991 NetLocalGroupGetMembers
1992 ****************************************************************/
1994 NET_API_STATUS NetLocalGroupGetMembers(const char * server_name /* [in] */,
1995 const char * local_group_name /* [in] */,
1996 uint32_t level /* [in] */,
1997 uint8_t **buffer /* [out] [ref] */,
1998 uint32_t prefmaxlen /* [in] */,
1999 uint32_t *entries_read /* [out] [ref] */,
2000 uint32_t *total_entries /* [out] [ref] */,
2001 uint32_t *resume_handle /* [in,out] [ref] */)
2003 struct NetLocalGroupGetMembers r;
2004 struct libnetapi_ctx *ctx = NULL;
2005 NET_API_STATUS status;
2007 TALLOC_CTX *frame = talloc_stackframe();
2009 status = libnetapi_getctx(&ctx);
2016 r.in.server_name = server_name;
2017 r.in.local_group_name = local_group_name;
2019 r.in.prefmaxlen = prefmaxlen;
2020 r.in.resume_handle = resume_handle;
2022 /* Out parameters */
2023 r.out.buffer = buffer;
2024 r.out.entries_read = entries_read;
2025 r.out.total_entries = total_entries;
2026 r.out.resume_handle = resume_handle;
2028 if (DEBUGLEVEL >= 10) {
2029 NDR_PRINT_IN_DEBUG(NetLocalGroupGetMembers, &r);
2032 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2033 werr = NetLocalGroupGetMembers_l(ctx, &r);
2035 werr = NetLocalGroupGetMembers_r(ctx, &r);
2038 r.out.result = W_ERROR_V(werr);
2040 if (DEBUGLEVEL >= 10) {
2041 NDR_PRINT_OUT_DEBUG(NetLocalGroupGetMembers, &r);
2045 return (NET_API_STATUS)r.out.result;
2048 /****************************************************************
2049 NetLocalGroupSetMembers
2050 ****************************************************************/
2052 NET_API_STATUS NetLocalGroupSetMembers(const char * server_name /* [in] */,
2053 const char * group_name /* [in] */,
2054 uint32_t level /* [in] */,
2055 uint8_t *buffer /* [in] [ref] */,
2056 uint32_t total_entries /* [in] */)
2058 struct NetLocalGroupSetMembers r;
2059 struct libnetapi_ctx *ctx = NULL;
2060 NET_API_STATUS status;
2062 TALLOC_CTX *frame = talloc_stackframe();
2064 status = libnetapi_getctx(&ctx);
2071 r.in.server_name = server_name;
2072 r.in.group_name = group_name;
2074 r.in.buffer = buffer;
2075 r.in.total_entries = total_entries;
2077 /* Out parameters */
2079 if (DEBUGLEVEL >= 10) {
2080 NDR_PRINT_IN_DEBUG(NetLocalGroupSetMembers, &r);
2083 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2084 werr = NetLocalGroupSetMembers_l(ctx, &r);
2086 werr = NetLocalGroupSetMembers_r(ctx, &r);
2089 r.out.result = W_ERROR_V(werr);
2091 if (DEBUGLEVEL >= 10) {
2092 NDR_PRINT_OUT_DEBUG(NetLocalGroupSetMembers, &r);
2096 return (NET_API_STATUS)r.out.result;
2099 /****************************************************************
2101 ****************************************************************/
2103 NET_API_STATUS NetRemoteTOD(const char * server_name /* [in] */,
2104 uint8_t **buffer /* [out] [ref] */)
2106 struct NetRemoteTOD r;
2107 struct libnetapi_ctx *ctx = NULL;
2108 NET_API_STATUS status;
2110 TALLOC_CTX *frame = talloc_stackframe();
2112 status = libnetapi_getctx(&ctx);
2119 r.in.server_name = server_name;
2121 /* Out parameters */
2122 r.out.buffer = buffer;
2124 if (DEBUGLEVEL >= 10) {
2125 NDR_PRINT_IN_DEBUG(NetRemoteTOD, &r);
2128 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2129 werr = NetRemoteTOD_l(ctx, &r);
2131 werr = NetRemoteTOD_r(ctx, &r);
2134 r.out.result = W_ERROR_V(werr);
2136 if (DEBUGLEVEL >= 10) {
2137 NDR_PRINT_OUT_DEBUG(NetRemoteTOD, &r);
2141 return (NET_API_STATUS)r.out.result;
2144 /****************************************************************
2146 ****************************************************************/
2148 NET_API_STATUS NetShareAdd(const char * server_name /* [in] */,
2149 uint32_t level /* [in] */,
2150 uint8_t *buffer /* [in] [ref] */,
2151 uint32_t *parm_err /* [out] [ref] */)
2153 struct NetShareAdd r;
2154 struct libnetapi_ctx *ctx = NULL;
2155 NET_API_STATUS status;
2157 TALLOC_CTX *frame = talloc_stackframe();
2159 status = libnetapi_getctx(&ctx);
2166 r.in.server_name = server_name;
2168 r.in.buffer = buffer;
2170 /* Out parameters */
2171 r.out.parm_err = parm_err;
2173 if (DEBUGLEVEL >= 10) {
2174 NDR_PRINT_IN_DEBUG(NetShareAdd, &r);
2177 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2178 werr = NetShareAdd_l(ctx, &r);
2180 werr = NetShareAdd_r(ctx, &r);
2183 r.out.result = W_ERROR_V(werr);
2185 if (DEBUGLEVEL >= 10) {
2186 NDR_PRINT_OUT_DEBUG(NetShareAdd, &r);
2190 return (NET_API_STATUS)r.out.result;
2193 /****************************************************************
2195 ****************************************************************/
2197 NET_API_STATUS NetShareDel(const char * server_name /* [in] */,
2198 const char * net_name /* [in] */,
2199 uint32_t reserved /* [in] */)
2201 struct NetShareDel r;
2202 struct libnetapi_ctx *ctx = NULL;
2203 NET_API_STATUS status;
2205 TALLOC_CTX *frame = talloc_stackframe();
2207 status = libnetapi_getctx(&ctx);
2214 r.in.server_name = server_name;
2215 r.in.net_name = net_name;
2216 r.in.reserved = reserved;
2218 /* Out parameters */
2220 if (DEBUGLEVEL >= 10) {
2221 NDR_PRINT_IN_DEBUG(NetShareDel, &r);
2224 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2225 werr = NetShareDel_l(ctx, &r);
2227 werr = NetShareDel_r(ctx, &r);
2230 r.out.result = W_ERROR_V(werr);
2232 if (DEBUGLEVEL >= 10) {
2233 NDR_PRINT_OUT_DEBUG(NetShareDel, &r);
2237 return (NET_API_STATUS)r.out.result;
2240 /****************************************************************
2242 ****************************************************************/
2244 NET_API_STATUS NetShareEnum(const char * server_name /* [in] */,
2245 uint32_t level /* [in] */,
2246 uint8_t **buffer /* [out] [ref] */,
2247 uint32_t prefmaxlen /* [in] */,
2248 uint32_t *entries_read /* [out] [ref] */,
2249 uint32_t *total_entries /* [out] [ref] */,
2250 uint32_t *resume_handle /* [in,out] [ref] */)
2252 struct NetShareEnum r;
2253 struct libnetapi_ctx *ctx = NULL;
2254 NET_API_STATUS status;
2256 TALLOC_CTX *frame = talloc_stackframe();
2258 status = libnetapi_getctx(&ctx);
2265 r.in.server_name = server_name;
2267 r.in.prefmaxlen = prefmaxlen;
2268 r.in.resume_handle = resume_handle;
2270 /* Out parameters */
2271 r.out.buffer = buffer;
2272 r.out.entries_read = entries_read;
2273 r.out.total_entries = total_entries;
2274 r.out.resume_handle = resume_handle;
2276 if (DEBUGLEVEL >= 10) {
2277 NDR_PRINT_IN_DEBUG(NetShareEnum, &r);
2280 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2281 werr = NetShareEnum_l(ctx, &r);
2283 werr = NetShareEnum_r(ctx, &r);
2286 r.out.result = W_ERROR_V(werr);
2288 if (DEBUGLEVEL >= 10) {
2289 NDR_PRINT_OUT_DEBUG(NetShareEnum, &r);
2293 return (NET_API_STATUS)r.out.result;
2296 /****************************************************************
2298 ****************************************************************/
2300 NET_API_STATUS NetShareGetInfo(const char * server_name /* [in] */,
2301 const char * net_name /* [in] */,
2302 uint32_t level /* [in] */,
2303 uint8_t **buffer /* [out] [ref] */)
2305 struct NetShareGetInfo r;
2306 struct libnetapi_ctx *ctx = NULL;
2307 NET_API_STATUS status;
2309 TALLOC_CTX *frame = talloc_stackframe();
2311 status = libnetapi_getctx(&ctx);
2318 r.in.server_name = server_name;
2319 r.in.net_name = net_name;
2322 /* Out parameters */
2323 r.out.buffer = buffer;
2325 if (DEBUGLEVEL >= 10) {
2326 NDR_PRINT_IN_DEBUG(NetShareGetInfo, &r);
2329 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2330 werr = NetShareGetInfo_l(ctx, &r);
2332 werr = NetShareGetInfo_r(ctx, &r);
2335 r.out.result = W_ERROR_V(werr);
2337 if (DEBUGLEVEL >= 10) {
2338 NDR_PRINT_OUT_DEBUG(NetShareGetInfo, &r);
2342 return (NET_API_STATUS)r.out.result;
2345 /****************************************************************
2347 ****************************************************************/
2349 NET_API_STATUS NetShareSetInfo(const char * server_name /* [in] */,
2350 const char * net_name /* [in] */,
2351 uint32_t level /* [in] */,
2352 uint8_t *buffer /* [in] [ref] */,
2353 uint32_t *parm_err /* [out] [ref] */)
2355 struct NetShareSetInfo r;
2356 struct libnetapi_ctx *ctx = NULL;
2357 NET_API_STATUS status;
2359 TALLOC_CTX *frame = talloc_stackframe();
2361 status = libnetapi_getctx(&ctx);
2368 r.in.server_name = server_name;
2369 r.in.net_name = net_name;
2371 r.in.buffer = buffer;
2373 /* Out parameters */
2374 r.out.parm_err = parm_err;
2376 if (DEBUGLEVEL >= 10) {
2377 NDR_PRINT_IN_DEBUG(NetShareSetInfo, &r);
2380 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2381 werr = NetShareSetInfo_l(ctx, &r);
2383 werr = NetShareSetInfo_r(ctx, &r);
2386 r.out.result = W_ERROR_V(werr);
2388 if (DEBUGLEVEL >= 10) {
2389 NDR_PRINT_OUT_DEBUG(NetShareSetInfo, &r);
2393 return (NET_API_STATUS)r.out.result;
2396 /****************************************************************
2398 ****************************************************************/
2400 NET_API_STATUS NetFileClose(const char * server_name /* [in] */,
2401 uint32_t fileid /* [in] */)
2403 struct NetFileClose r;
2404 struct libnetapi_ctx *ctx = NULL;
2405 NET_API_STATUS status;
2407 TALLOC_CTX *frame = talloc_stackframe();
2409 status = libnetapi_getctx(&ctx);
2416 r.in.server_name = server_name;
2417 r.in.fileid = fileid;
2419 /* Out parameters */
2421 if (DEBUGLEVEL >= 10) {
2422 NDR_PRINT_IN_DEBUG(NetFileClose, &r);
2425 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2426 werr = NetFileClose_l(ctx, &r);
2428 werr = NetFileClose_r(ctx, &r);
2431 r.out.result = W_ERROR_V(werr);
2433 if (DEBUGLEVEL >= 10) {
2434 NDR_PRINT_OUT_DEBUG(NetFileClose, &r);
2438 return (NET_API_STATUS)r.out.result;
2441 /****************************************************************
2443 ****************************************************************/
2445 NET_API_STATUS NetFileGetInfo(const char * server_name /* [in] */,
2446 uint32_t fileid /* [in] */,
2447 uint32_t level /* [in] */,
2448 uint8_t **buffer /* [out] [ref] */)
2450 struct NetFileGetInfo r;
2451 struct libnetapi_ctx *ctx = NULL;
2452 NET_API_STATUS status;
2454 TALLOC_CTX *frame = talloc_stackframe();
2456 status = libnetapi_getctx(&ctx);
2463 r.in.server_name = server_name;
2464 r.in.fileid = fileid;
2467 /* Out parameters */
2468 r.out.buffer = buffer;
2470 if (DEBUGLEVEL >= 10) {
2471 NDR_PRINT_IN_DEBUG(NetFileGetInfo, &r);
2474 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2475 werr = NetFileGetInfo_l(ctx, &r);
2477 werr = NetFileGetInfo_r(ctx, &r);
2480 r.out.result = W_ERROR_V(werr);
2482 if (DEBUGLEVEL >= 10) {
2483 NDR_PRINT_OUT_DEBUG(NetFileGetInfo, &r);
2487 return (NET_API_STATUS)r.out.result;
2490 /****************************************************************
2492 ****************************************************************/
2494 NET_API_STATUS NetFileEnum(const char * server_name /* [in] */,
2495 const char * base_path /* [in] */,
2496 const char * user_name /* [in] */,
2497 uint32_t level /* [in] */,
2498 uint8_t **buffer /* [out] [ref] */,
2499 uint32_t prefmaxlen /* [in] */,
2500 uint32_t *entries_read /* [out] [ref] */,
2501 uint32_t *total_entries /* [out] [ref] */,
2502 uint32_t *resume_handle /* [in,out] [ref] */)
2504 struct NetFileEnum r;
2505 struct libnetapi_ctx *ctx = NULL;
2506 NET_API_STATUS status;
2508 TALLOC_CTX *frame = talloc_stackframe();
2510 status = libnetapi_getctx(&ctx);
2517 r.in.server_name = server_name;
2518 r.in.base_path = base_path;
2519 r.in.user_name = user_name;
2521 r.in.prefmaxlen = prefmaxlen;
2522 r.in.resume_handle = resume_handle;
2524 /* Out parameters */
2525 r.out.buffer = buffer;
2526 r.out.entries_read = entries_read;
2527 r.out.total_entries = total_entries;
2528 r.out.resume_handle = resume_handle;
2530 if (DEBUGLEVEL >= 10) {
2531 NDR_PRINT_IN_DEBUG(NetFileEnum, &r);
2534 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2535 werr = NetFileEnum_l(ctx, &r);
2537 werr = NetFileEnum_r(ctx, &r);
2540 r.out.result = W_ERROR_V(werr);
2542 if (DEBUGLEVEL >= 10) {
2543 NDR_PRINT_OUT_DEBUG(NetFileEnum, &r);
2547 return (NET_API_STATUS)r.out.result;
2550 /****************************************************************
2552 ****************************************************************/
2554 NET_API_STATUS NetShutdownInit(const char * server_name /* [in] */,
2555 const char * message /* [in] */,
2556 uint32_t timeout /* [in] */,
2557 uint8_t force_apps /* [in] */,
2558 uint8_t do_reboot /* [in] */)
2560 struct NetShutdownInit r;
2561 struct libnetapi_ctx *ctx = NULL;
2562 NET_API_STATUS status;
2564 TALLOC_CTX *frame = talloc_stackframe();
2566 status = libnetapi_getctx(&ctx);
2573 r.in.server_name = server_name;
2574 r.in.message = message;
2575 r.in.timeout = timeout;
2576 r.in.force_apps = force_apps;
2577 r.in.do_reboot = do_reboot;
2579 /* Out parameters */
2581 if (DEBUGLEVEL >= 10) {
2582 NDR_PRINT_IN_DEBUG(NetShutdownInit, &r);
2585 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2586 werr = NetShutdownInit_l(ctx, &r);
2588 werr = NetShutdownInit_r(ctx, &r);
2591 r.out.result = W_ERROR_V(werr);
2593 if (DEBUGLEVEL >= 10) {
2594 NDR_PRINT_OUT_DEBUG(NetShutdownInit, &r);
2598 return (NET_API_STATUS)r.out.result;
2601 /****************************************************************
2603 ****************************************************************/
2605 NET_API_STATUS NetShutdownAbort(const char * server_name /* [in] */)
2607 struct NetShutdownAbort r;
2608 struct libnetapi_ctx *ctx = NULL;
2609 NET_API_STATUS status;
2611 TALLOC_CTX *frame = talloc_stackframe();
2613 status = libnetapi_getctx(&ctx);
2620 r.in.server_name = server_name;
2622 /* Out parameters */
2624 if (DEBUGLEVEL >= 10) {
2625 NDR_PRINT_IN_DEBUG(NetShutdownAbort, &r);
2628 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2629 werr = NetShutdownAbort_l(ctx, &r);
2631 werr = NetShutdownAbort_r(ctx, &r);
2634 r.out.result = W_ERROR_V(werr);
2636 if (DEBUGLEVEL >= 10) {
2637 NDR_PRINT_OUT_DEBUG(NetShutdownAbort, &r);
2641 return (NET_API_STATUS)r.out.result;
2644 /****************************************************************
2646 ****************************************************************/
2648 NET_API_STATUS I_NetLogonControl(const char * server_name /* [in] */,
2649 uint32_t function_code /* [in] */,
2650 uint32_t query_level /* [in] */,
2651 uint8_t **buffer /* [out] [ref] */)
2653 struct I_NetLogonControl r;
2654 struct libnetapi_ctx *ctx = NULL;
2655 NET_API_STATUS status;
2657 TALLOC_CTX *frame = talloc_stackframe();
2659 status = libnetapi_getctx(&ctx);
2666 r.in.server_name = server_name;
2667 r.in.function_code = function_code;
2668 r.in.query_level = query_level;
2670 /* Out parameters */
2671 r.out.buffer = buffer;
2673 if (DEBUGLEVEL >= 10) {
2674 NDR_PRINT_IN_DEBUG(I_NetLogonControl, &r);
2677 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2678 werr = I_NetLogonControl_l(ctx, &r);
2680 werr = I_NetLogonControl_r(ctx, &r);
2683 r.out.result = W_ERROR_V(werr);
2685 if (DEBUGLEVEL >= 10) {
2686 NDR_PRINT_OUT_DEBUG(I_NetLogonControl, &r);
2690 return (NET_API_STATUS)r.out.result;
2693 /****************************************************************
2695 ****************************************************************/
2697 NET_API_STATUS I_NetLogonControl2(const char * server_name /* [in] */,
2698 uint32_t function_code /* [in] */,
2699 uint32_t query_level /* [in] */,
2700 uint8_t *data /* [in] [ref] */,
2701 uint8_t **buffer /* [out] [ref] */)
2703 struct I_NetLogonControl2 r;
2704 struct libnetapi_ctx *ctx = NULL;
2705 NET_API_STATUS status;
2707 TALLOC_CTX *frame = talloc_stackframe();
2709 status = libnetapi_getctx(&ctx);
2716 r.in.server_name = server_name;
2717 r.in.function_code = function_code;
2718 r.in.query_level = query_level;
2721 /* Out parameters */
2722 r.out.buffer = buffer;
2724 if (DEBUGLEVEL >= 10) {
2725 NDR_PRINT_IN_DEBUG(I_NetLogonControl2, &r);
2728 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2729 werr = I_NetLogonControl2_l(ctx, &r);
2731 werr = I_NetLogonControl2_r(ctx, &r);
2734 r.out.result = W_ERROR_V(werr);
2736 if (DEBUGLEVEL >= 10) {
2737 NDR_PRINT_OUT_DEBUG(I_NetLogonControl2, &r);
2741 return (NET_API_STATUS)r.out.result;