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;
43 status = libnetapi_getctx(&ctx);
51 r.in.account_ou = account_ou;
52 r.in.account = account;
53 r.in.password = password;
54 r.in.join_flags = join_flags;
58 if (DEBUGLEVEL >= 10) {
59 NDR_PRINT_IN_DEBUG(NetJoinDomain, &r);
62 if (LIBNETAPI_LOCAL_SERVER(server)) {
63 werr = NetJoinDomain_l(ctx, &r);
65 werr = NetJoinDomain_r(ctx, &r);
68 r.out.result = W_ERROR_V(werr);
70 if (DEBUGLEVEL >= 10) {
71 NDR_PRINT_OUT_DEBUG(NetJoinDomain, &r);
77 /****************************************************************
79 ****************************************************************/
81 NET_API_STATUS NetUnjoinDomain(const char * server_name /* [in] [unique] */,
82 const char * account /* [in] [unique] */,
83 const char * password /* [in] [unique] */,
84 uint32_t unjoin_flags /* [in] */)
86 struct NetUnjoinDomain r;
87 struct libnetapi_ctx *ctx = NULL;
88 NET_API_STATUS status;
91 status = libnetapi_getctx(&ctx);
97 r.in.server_name = server_name;
98 r.in.account = account;
99 r.in.password = password;
100 r.in.unjoin_flags = unjoin_flags;
104 if (DEBUGLEVEL >= 10) {
105 NDR_PRINT_IN_DEBUG(NetUnjoinDomain, &r);
108 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
109 werr = NetUnjoinDomain_l(ctx, &r);
111 werr = NetUnjoinDomain_r(ctx, &r);
114 r.out.result = W_ERROR_V(werr);
116 if (DEBUGLEVEL >= 10) {
117 NDR_PRINT_OUT_DEBUG(NetUnjoinDomain, &r);
123 /****************************************************************
124 NetGetJoinInformation
125 ****************************************************************/
127 NET_API_STATUS NetGetJoinInformation(const char * server_name /* [in] [unique] */,
128 const char * *name_buffer /* [out] [ref] */,
129 uint16_t *name_type /* [out] [ref] */)
131 struct NetGetJoinInformation r;
132 struct libnetapi_ctx *ctx = NULL;
133 NET_API_STATUS status;
136 status = libnetapi_getctx(&ctx);
142 r.in.server_name = server_name;
145 r.out.name_buffer = name_buffer;
146 r.out.name_type = name_type;
148 if (DEBUGLEVEL >= 10) {
149 NDR_PRINT_IN_DEBUG(NetGetJoinInformation, &r);
152 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
153 werr = NetGetJoinInformation_l(ctx, &r);
155 werr = NetGetJoinInformation_r(ctx, &r);
158 r.out.result = W_ERROR_V(werr);
160 if (DEBUGLEVEL >= 10) {
161 NDR_PRINT_OUT_DEBUG(NetGetJoinInformation, &r);
167 /****************************************************************
169 ****************************************************************/
171 NET_API_STATUS NetGetJoinableOUs(const char * server_name /* [in] [unique] */,
172 const char * domain /* [in] [ref] */,
173 const char * account /* [in] [unique] */,
174 const char * password /* [in] [unique] */,
175 uint32_t *ou_count /* [out] [ref] */,
176 const char * **ous /* [out] [ref] */)
178 struct NetGetJoinableOUs r;
179 struct libnetapi_ctx *ctx = NULL;
180 NET_API_STATUS status;
183 status = libnetapi_getctx(&ctx);
189 r.in.server_name = server_name;
190 r.in.domain = domain;
191 r.in.account = account;
192 r.in.password = password;
195 r.out.ou_count = ou_count;
198 if (DEBUGLEVEL >= 10) {
199 NDR_PRINT_IN_DEBUG(NetGetJoinableOUs, &r);
202 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
203 werr = NetGetJoinableOUs_l(ctx, &r);
205 werr = NetGetJoinableOUs_r(ctx, &r);
208 r.out.result = W_ERROR_V(werr);
210 if (DEBUGLEVEL >= 10) {
211 NDR_PRINT_OUT_DEBUG(NetGetJoinableOUs, &r);
217 /****************************************************************
219 ****************************************************************/
221 NET_API_STATUS NetServerGetInfo(const char * server_name /* [in] [unique] */,
222 uint32_t level /* [in] */,
223 uint8_t **buffer /* [out] [ref] */)
225 struct NetServerGetInfo r;
226 struct libnetapi_ctx *ctx = NULL;
227 NET_API_STATUS status;
230 status = libnetapi_getctx(&ctx);
236 r.in.server_name = server_name;
240 r.out.buffer = buffer;
242 if (DEBUGLEVEL >= 10) {
243 NDR_PRINT_IN_DEBUG(NetServerGetInfo, &r);
246 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
247 werr = NetServerGetInfo_l(ctx, &r);
249 werr = NetServerGetInfo_r(ctx, &r);
252 r.out.result = W_ERROR_V(werr);
254 if (DEBUGLEVEL >= 10) {
255 NDR_PRINT_OUT_DEBUG(NetServerGetInfo, &r);
261 /****************************************************************
263 ****************************************************************/
265 NET_API_STATUS NetServerSetInfo(const char * server_name /* [in] [unique] */,
266 uint32_t level /* [in] */,
267 uint8_t *buffer /* [in] [ref] */,
268 uint32_t *parm_error /* [out] [ref] */)
270 struct NetServerSetInfo r;
271 struct libnetapi_ctx *ctx = NULL;
272 NET_API_STATUS status;
275 status = libnetapi_getctx(&ctx);
281 r.in.server_name = server_name;
283 r.in.buffer = buffer;
286 r.out.parm_error = parm_error;
288 if (DEBUGLEVEL >= 10) {
289 NDR_PRINT_IN_DEBUG(NetServerSetInfo, &r);
292 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
293 werr = NetServerSetInfo_l(ctx, &r);
295 werr = NetServerSetInfo_r(ctx, &r);
298 r.out.result = W_ERROR_V(werr);
300 if (DEBUGLEVEL >= 10) {
301 NDR_PRINT_OUT_DEBUG(NetServerSetInfo, &r);
307 /****************************************************************
309 ****************************************************************/
311 NET_API_STATUS NetGetDCName(const char * server_name /* [in] [unique] */,
312 const char * domain_name /* [in] [unique] */,
313 uint8_t **buffer /* [out] [ref] */)
315 struct NetGetDCName r;
316 struct libnetapi_ctx *ctx = NULL;
317 NET_API_STATUS status;
320 status = libnetapi_getctx(&ctx);
326 r.in.server_name = server_name;
327 r.in.domain_name = domain_name;
330 r.out.buffer = buffer;
332 if (DEBUGLEVEL >= 10) {
333 NDR_PRINT_IN_DEBUG(NetGetDCName, &r);
336 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
337 werr = NetGetDCName_l(ctx, &r);
339 werr = NetGetDCName_r(ctx, &r);
342 r.out.result = W_ERROR_V(werr);
344 if (DEBUGLEVEL >= 10) {
345 NDR_PRINT_OUT_DEBUG(NetGetDCName, &r);
351 /****************************************************************
353 ****************************************************************/
355 NET_API_STATUS NetGetAnyDCName(const char * server_name /* [in] [unique] */,
356 const char * domain_name /* [in] [unique] */,
357 uint8_t **buffer /* [out] [ref] */)
359 struct NetGetAnyDCName r;
360 struct libnetapi_ctx *ctx = NULL;
361 NET_API_STATUS status;
364 status = libnetapi_getctx(&ctx);
370 r.in.server_name = server_name;
371 r.in.domain_name = domain_name;
374 r.out.buffer = buffer;
376 if (DEBUGLEVEL >= 10) {
377 NDR_PRINT_IN_DEBUG(NetGetAnyDCName, &r);
380 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
381 werr = NetGetAnyDCName_l(ctx, &r);
383 werr = NetGetAnyDCName_r(ctx, &r);
386 r.out.result = W_ERROR_V(werr);
388 if (DEBUGLEVEL >= 10) {
389 NDR_PRINT_OUT_DEBUG(NetGetAnyDCName, &r);
395 /****************************************************************
397 ****************************************************************/
399 NET_API_STATUS DsGetDcName(const char * server_name /* [in] [unique] */,
400 const char * domain_name /* [in] [ref] */,
401 struct GUID *domain_guid /* [in] [unique] */,
402 const char * site_name /* [in] [unique] */,
403 uint32_t flags /* [in] */,
404 struct DOMAIN_CONTROLLER_INFO **dc_info /* [out] [ref] */)
406 struct DsGetDcName r;
407 struct libnetapi_ctx *ctx = NULL;
408 NET_API_STATUS status;
411 status = libnetapi_getctx(&ctx);
417 r.in.server_name = server_name;
418 r.in.domain_name = domain_name;
419 r.in.domain_guid = domain_guid;
420 r.in.site_name = site_name;
424 r.out.dc_info = dc_info;
426 if (DEBUGLEVEL >= 10) {
427 NDR_PRINT_IN_DEBUG(DsGetDcName, &r);
430 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
431 werr = DsGetDcName_l(ctx, &r);
433 werr = DsGetDcName_r(ctx, &r);
436 r.out.result = W_ERROR_V(werr);
438 if (DEBUGLEVEL >= 10) {
439 NDR_PRINT_OUT_DEBUG(DsGetDcName, &r);
445 /****************************************************************
447 ****************************************************************/
449 NET_API_STATUS NetUserAdd(const char * server_name /* [in] [unique] */,
450 uint32_t level /* [in] */,
451 uint8_t *buffer /* [in] [ref] */,
452 uint32_t *parm_error /* [out] [ref] */)
455 struct libnetapi_ctx *ctx = NULL;
456 NET_API_STATUS status;
459 status = libnetapi_getctx(&ctx);
465 r.in.server_name = server_name;
467 r.in.buffer = buffer;
470 r.out.parm_error = parm_error;
472 if (DEBUGLEVEL >= 10) {
473 NDR_PRINT_IN_DEBUG(NetUserAdd, &r);
476 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
477 werr = NetUserAdd_l(ctx, &r);
479 werr = NetUserAdd_r(ctx, &r);
482 r.out.result = W_ERROR_V(werr);
484 if (DEBUGLEVEL >= 10) {
485 NDR_PRINT_OUT_DEBUG(NetUserAdd, &r);
491 /****************************************************************
493 ****************************************************************/
495 NET_API_STATUS NetUserDel(const char * server_name /* [in] [unique] */,
496 const char * user_name /* [in] [ref] */)
499 struct libnetapi_ctx *ctx = NULL;
500 NET_API_STATUS status;
503 status = libnetapi_getctx(&ctx);
509 r.in.server_name = server_name;
510 r.in.user_name = user_name;
514 if (DEBUGLEVEL >= 10) {
515 NDR_PRINT_IN_DEBUG(NetUserDel, &r);
518 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
519 werr = NetUserDel_l(ctx, &r);
521 werr = NetUserDel_r(ctx, &r);
524 r.out.result = W_ERROR_V(werr);
526 if (DEBUGLEVEL >= 10) {
527 NDR_PRINT_OUT_DEBUG(NetUserDel, &r);
533 /****************************************************************
535 ****************************************************************/
537 NET_API_STATUS NetUserEnum(const char * server_name /* [in] [unique] */,
538 uint32_t level /* [in] */,
539 uint32_t filter /* [in] */,
540 uint8_t **buffer /* [out] [ref] */,
541 uint32_t prefmaxlen /* [in] */,
542 uint32_t *entries_read /* [out] [ref] */,
543 uint32_t *total_entries /* [out] [ref] */,
544 uint32_t *resume_handle /* [in,out] [ref] */)
546 struct NetUserEnum r;
547 struct libnetapi_ctx *ctx = NULL;
548 NET_API_STATUS status;
551 status = libnetapi_getctx(&ctx);
557 r.in.server_name = server_name;
559 r.in.filter = filter;
560 r.in.prefmaxlen = prefmaxlen;
561 r.in.resume_handle = resume_handle;
564 r.out.buffer = buffer;
565 r.out.entries_read = entries_read;
566 r.out.total_entries = total_entries;
567 r.out.resume_handle = resume_handle;
569 if (DEBUGLEVEL >= 10) {
570 NDR_PRINT_IN_DEBUG(NetUserEnum, &r);
573 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
574 werr = NetUserEnum_l(ctx, &r);
576 werr = NetUserEnum_r(ctx, &r);
579 r.out.result = W_ERROR_V(werr);
581 if (DEBUGLEVEL >= 10) {
582 NDR_PRINT_OUT_DEBUG(NetUserEnum, &r);
588 /****************************************************************
589 NetUserChangePassword
590 ****************************************************************/
592 NET_API_STATUS NetUserChangePassword(const char * domain_name /* [in] */,
593 const char * user_name /* [in] */,
594 const char * old_password /* [in] */,
595 const char * new_password /* [in] */)
597 struct NetUserChangePassword r;
598 struct libnetapi_ctx *ctx = NULL;
599 NET_API_STATUS status;
602 status = libnetapi_getctx(&ctx);
608 r.in.domain_name = domain_name;
609 r.in.user_name = user_name;
610 r.in.old_password = old_password;
611 r.in.new_password = new_password;
615 if (DEBUGLEVEL >= 10) {
616 NDR_PRINT_IN_DEBUG(NetUserChangePassword, &r);
619 if (LIBNETAPI_LOCAL_SERVER(domain_name)) {
620 werr = NetUserChangePassword_l(ctx, &r);
622 werr = NetUserChangePassword_r(ctx, &r);
625 r.out.result = W_ERROR_V(werr);
627 if (DEBUGLEVEL >= 10) {
628 NDR_PRINT_OUT_DEBUG(NetUserChangePassword, &r);
634 /****************************************************************
636 ****************************************************************/
638 NET_API_STATUS NetUserGetInfo(const char * server_name /* [in] */,
639 const char * user_name /* [in] */,
640 uint32_t level /* [in] */,
641 uint8_t **buffer /* [out] [ref] */)
643 struct NetUserGetInfo r;
644 struct libnetapi_ctx *ctx = NULL;
645 NET_API_STATUS status;
648 status = libnetapi_getctx(&ctx);
654 r.in.server_name = server_name;
655 r.in.user_name = user_name;
659 r.out.buffer = buffer;
661 if (DEBUGLEVEL >= 10) {
662 NDR_PRINT_IN_DEBUG(NetUserGetInfo, &r);
665 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
666 werr = NetUserGetInfo_l(ctx, &r);
668 werr = NetUserGetInfo_r(ctx, &r);
671 r.out.result = W_ERROR_V(werr);
673 if (DEBUGLEVEL >= 10) {
674 NDR_PRINT_OUT_DEBUG(NetUserGetInfo, &r);
680 /****************************************************************
682 ****************************************************************/
684 NET_API_STATUS NetUserSetInfo(const char * server_name /* [in] */,
685 const char * user_name /* [in] */,
686 uint32_t level /* [in] */,
687 uint8_t *buffer /* [in] [ref] */,
688 uint32_t *parm_err /* [out] [ref] */)
690 struct NetUserSetInfo r;
691 struct libnetapi_ctx *ctx = NULL;
692 NET_API_STATUS status;
695 status = libnetapi_getctx(&ctx);
701 r.in.server_name = server_name;
702 r.in.user_name = user_name;
704 r.in.buffer = buffer;
707 r.out.parm_err = parm_err;
709 if (DEBUGLEVEL >= 10) {
710 NDR_PRINT_IN_DEBUG(NetUserSetInfo, &r);
713 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
714 werr = NetUserSetInfo_l(ctx, &r);
716 werr = NetUserSetInfo_r(ctx, &r);
719 r.out.result = W_ERROR_V(werr);
721 if (DEBUGLEVEL >= 10) {
722 NDR_PRINT_OUT_DEBUG(NetUserSetInfo, &r);
728 /****************************************************************
730 ****************************************************************/
732 NET_API_STATUS NetUserModalsGet(const char * server_name /* [in] */,
733 uint32_t level /* [in] */,
734 uint8_t **buffer /* [out] [ref] */)
736 struct NetUserModalsGet r;
737 struct libnetapi_ctx *ctx = NULL;
738 NET_API_STATUS status;
741 status = libnetapi_getctx(&ctx);
747 r.in.server_name = server_name;
751 r.out.buffer = buffer;
753 if (DEBUGLEVEL >= 10) {
754 NDR_PRINT_IN_DEBUG(NetUserModalsGet, &r);
757 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
758 werr = NetUserModalsGet_l(ctx, &r);
760 werr = NetUserModalsGet_r(ctx, &r);
763 r.out.result = W_ERROR_V(werr);
765 if (DEBUGLEVEL >= 10) {
766 NDR_PRINT_OUT_DEBUG(NetUserModalsGet, &r);
772 /****************************************************************
774 ****************************************************************/
776 NET_API_STATUS NetUserModalsSet(const char * server_name /* [in] */,
777 uint32_t level /* [in] */,
778 uint8_t *buffer /* [in] [ref] */,
779 uint32_t *parm_err /* [out] [ref] */)
781 struct NetUserModalsSet r;
782 struct libnetapi_ctx *ctx = NULL;
783 NET_API_STATUS status;
786 status = libnetapi_getctx(&ctx);
792 r.in.server_name = server_name;
794 r.in.buffer = buffer;
797 r.out.parm_err = parm_err;
799 if (DEBUGLEVEL >= 10) {
800 NDR_PRINT_IN_DEBUG(NetUserModalsSet, &r);
803 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
804 werr = NetUserModalsSet_l(ctx, &r);
806 werr = NetUserModalsSet_r(ctx, &r);
809 r.out.result = W_ERROR_V(werr);
811 if (DEBUGLEVEL >= 10) {
812 NDR_PRINT_OUT_DEBUG(NetUserModalsSet, &r);
818 /****************************************************************
819 NetQueryDisplayInformation
820 ****************************************************************/
822 NET_API_STATUS NetQueryDisplayInformation(const char * server_name /* [in] [unique] */,
823 uint32_t level /* [in] */,
824 uint32_t idx /* [in] */,
825 uint32_t entries_requested /* [in] */,
826 uint32_t prefmaxlen /* [in] */,
827 uint32_t *entries_read /* [out] [ref] */,
828 void **buffer /* [out] [noprint,ref] */)
830 struct NetQueryDisplayInformation r;
831 struct libnetapi_ctx *ctx = NULL;
832 NET_API_STATUS status;
835 status = libnetapi_getctx(&ctx);
841 r.in.server_name = server_name;
844 r.in.entries_requested = entries_requested;
845 r.in.prefmaxlen = prefmaxlen;
848 r.out.entries_read = entries_read;
849 r.out.buffer = buffer;
851 if (DEBUGLEVEL >= 10) {
852 NDR_PRINT_IN_DEBUG(NetQueryDisplayInformation, &r);
855 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
856 werr = NetQueryDisplayInformation_l(ctx, &r);
858 werr = NetQueryDisplayInformation_r(ctx, &r);
861 r.out.result = W_ERROR_V(werr);
863 if (DEBUGLEVEL >= 10) {
864 NDR_PRINT_OUT_DEBUG(NetQueryDisplayInformation, &r);
870 /****************************************************************
872 ****************************************************************/
874 NET_API_STATUS NetGroupAdd(const char * server_name /* [in] */,
875 uint32_t level /* [in] */,
876 uint8_t *buffer /* [in] [ref] */,
877 uint32_t *parm_err /* [out] [ref] */)
879 struct NetGroupAdd r;
880 struct libnetapi_ctx *ctx = NULL;
881 NET_API_STATUS status;
884 status = libnetapi_getctx(&ctx);
890 r.in.server_name = server_name;
892 r.in.buffer = buffer;
895 r.out.parm_err = parm_err;
897 if (DEBUGLEVEL >= 10) {
898 NDR_PRINT_IN_DEBUG(NetGroupAdd, &r);
901 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
902 werr = NetGroupAdd_l(ctx, &r);
904 werr = NetGroupAdd_r(ctx, &r);
907 r.out.result = W_ERROR_V(werr);
909 if (DEBUGLEVEL >= 10) {
910 NDR_PRINT_OUT_DEBUG(NetGroupAdd, &r);
916 /****************************************************************
918 ****************************************************************/
920 NET_API_STATUS NetGroupDel(const char * server_name /* [in] */,
921 const char * group_name /* [in] */)
923 struct NetGroupDel r;
924 struct libnetapi_ctx *ctx = NULL;
925 NET_API_STATUS status;
928 status = libnetapi_getctx(&ctx);
934 r.in.server_name = server_name;
935 r.in.group_name = group_name;
939 if (DEBUGLEVEL >= 10) {
940 NDR_PRINT_IN_DEBUG(NetGroupDel, &r);
943 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
944 werr = NetGroupDel_l(ctx, &r);
946 werr = NetGroupDel_r(ctx, &r);
949 r.out.result = W_ERROR_V(werr);
951 if (DEBUGLEVEL >= 10) {
952 NDR_PRINT_OUT_DEBUG(NetGroupDel, &r);
958 /****************************************************************
960 ****************************************************************/
962 NET_API_STATUS NetGroupEnum(const char * server_name /* [in] */,
963 uint32_t level /* [in] */,
964 uint8_t **buffer /* [out] [ref] */,
965 uint32_t prefmaxlen /* [in] */,
966 uint32_t *entries_read /* [out] [ref] */,
967 uint32_t *total_entries /* [out] [ref] */,
968 uint32_t *resume_handle /* [in,out] [ref] */)
970 struct NetGroupEnum r;
971 struct libnetapi_ctx *ctx = NULL;
972 NET_API_STATUS status;
975 status = libnetapi_getctx(&ctx);
981 r.in.server_name = server_name;
983 r.in.prefmaxlen = prefmaxlen;
984 r.in.resume_handle = resume_handle;
987 r.out.buffer = buffer;
988 r.out.entries_read = entries_read;
989 r.out.total_entries = total_entries;
990 r.out.resume_handle = resume_handle;
992 if (DEBUGLEVEL >= 10) {
993 NDR_PRINT_IN_DEBUG(NetGroupEnum, &r);
996 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
997 werr = NetGroupEnum_l(ctx, &r);
999 werr = NetGroupEnum_r(ctx, &r);
1002 r.out.result = W_ERROR_V(werr);
1004 if (DEBUGLEVEL >= 10) {
1005 NDR_PRINT_OUT_DEBUG(NetGroupEnum, &r);
1008 return r.out.result;
1011 /****************************************************************
1013 ****************************************************************/
1015 NET_API_STATUS NetGroupSetInfo(const char * server_name /* [in] */,
1016 const char * group_name /* [in] */,
1017 uint32_t level /* [in] */,
1018 uint8_t *buffer /* [in] [ref] */,
1019 uint32_t *parm_err /* [out] [ref] */)
1021 struct NetGroupSetInfo r;
1022 struct libnetapi_ctx *ctx = NULL;
1023 NET_API_STATUS status;
1026 status = libnetapi_getctx(&ctx);
1032 r.in.server_name = server_name;
1033 r.in.group_name = group_name;
1035 r.in.buffer = buffer;
1037 /* Out parameters */
1038 r.out.parm_err = parm_err;
1040 if (DEBUGLEVEL >= 10) {
1041 NDR_PRINT_IN_DEBUG(NetGroupSetInfo, &r);
1044 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1045 werr = NetGroupSetInfo_l(ctx, &r);
1047 werr = NetGroupSetInfo_r(ctx, &r);
1050 r.out.result = W_ERROR_V(werr);
1052 if (DEBUGLEVEL >= 10) {
1053 NDR_PRINT_OUT_DEBUG(NetGroupSetInfo, &r);
1056 return r.out.result;
1059 /****************************************************************
1061 ****************************************************************/
1063 NET_API_STATUS NetGroupGetInfo(const char * server_name /* [in] */,
1064 const char * group_name /* [in] */,
1065 uint32_t level /* [in] */,
1066 uint8_t **buffer /* [out] [ref] */)
1068 struct NetGroupGetInfo r;
1069 struct libnetapi_ctx *ctx = NULL;
1070 NET_API_STATUS status;
1073 status = libnetapi_getctx(&ctx);
1079 r.in.server_name = server_name;
1080 r.in.group_name = group_name;
1083 /* Out parameters */
1084 r.out.buffer = buffer;
1086 if (DEBUGLEVEL >= 10) {
1087 NDR_PRINT_IN_DEBUG(NetGroupGetInfo, &r);
1090 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1091 werr = NetGroupGetInfo_l(ctx, &r);
1093 werr = NetGroupGetInfo_r(ctx, &r);
1096 r.out.result = W_ERROR_V(werr);
1098 if (DEBUGLEVEL >= 10) {
1099 NDR_PRINT_OUT_DEBUG(NetGroupGetInfo, &r);
1102 return r.out.result;
1105 /****************************************************************
1107 ****************************************************************/
1109 NET_API_STATUS NetGroupAddUser(const char * server_name /* [in] */,
1110 const char * group_name /* [in] */,
1111 const char * user_name /* [in] */)
1113 struct NetGroupAddUser r;
1114 struct libnetapi_ctx *ctx = NULL;
1115 NET_API_STATUS status;
1118 status = libnetapi_getctx(&ctx);
1124 r.in.server_name = server_name;
1125 r.in.group_name = group_name;
1126 r.in.user_name = user_name;
1128 /* Out parameters */
1130 if (DEBUGLEVEL >= 10) {
1131 NDR_PRINT_IN_DEBUG(NetGroupAddUser, &r);
1134 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1135 werr = NetGroupAddUser_l(ctx, &r);
1137 werr = NetGroupAddUser_r(ctx, &r);
1140 r.out.result = W_ERROR_V(werr);
1142 if (DEBUGLEVEL >= 10) {
1143 NDR_PRINT_OUT_DEBUG(NetGroupAddUser, &r);
1146 return r.out.result;
1149 /****************************************************************
1151 ****************************************************************/
1153 NET_API_STATUS NetGroupDelUser(const char * server_name /* [in] */,
1154 const char * group_name /* [in] */,
1155 const char * user_name /* [in] */)
1157 struct NetGroupDelUser r;
1158 struct libnetapi_ctx *ctx = NULL;
1159 NET_API_STATUS status;
1162 status = libnetapi_getctx(&ctx);
1168 r.in.server_name = server_name;
1169 r.in.group_name = group_name;
1170 r.in.user_name = user_name;
1172 /* Out parameters */
1174 if (DEBUGLEVEL >= 10) {
1175 NDR_PRINT_IN_DEBUG(NetGroupDelUser, &r);
1178 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1179 werr = NetGroupDelUser_l(ctx, &r);
1181 werr = NetGroupDelUser_r(ctx, &r);
1184 r.out.result = W_ERROR_V(werr);
1186 if (DEBUGLEVEL >= 10) {
1187 NDR_PRINT_OUT_DEBUG(NetGroupDelUser, &r);
1190 return r.out.result;
1193 /****************************************************************
1195 ****************************************************************/
1197 NET_API_STATUS NetGroupGetUsers(const char * server_name /* [in] */,
1198 const char * group_name /* [in] */,
1199 uint32_t level /* [in] */,
1200 uint8_t **buffer /* [out] [ref] */,
1201 uint32_t prefmaxlen /* [in] */,
1202 uint32_t *entries_read /* [out] [ref] */,
1203 uint32_t *total_entries /* [out] [ref] */,
1204 uint32_t *resume_handle /* [in,out] [ref] */)
1206 struct NetGroupGetUsers r;
1207 struct libnetapi_ctx *ctx = NULL;
1208 NET_API_STATUS status;
1211 status = libnetapi_getctx(&ctx);
1217 r.in.server_name = server_name;
1218 r.in.group_name = group_name;
1220 r.in.prefmaxlen = prefmaxlen;
1221 r.in.resume_handle = resume_handle;
1223 /* Out parameters */
1224 r.out.buffer = buffer;
1225 r.out.entries_read = entries_read;
1226 r.out.total_entries = total_entries;
1227 r.out.resume_handle = resume_handle;
1229 if (DEBUGLEVEL >= 10) {
1230 NDR_PRINT_IN_DEBUG(NetGroupGetUsers, &r);
1233 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1234 werr = NetGroupGetUsers_l(ctx, &r);
1236 werr = NetGroupGetUsers_r(ctx, &r);
1239 r.out.result = W_ERROR_V(werr);
1241 if (DEBUGLEVEL >= 10) {
1242 NDR_PRINT_OUT_DEBUG(NetGroupGetUsers, &r);
1245 return r.out.result;
1248 /****************************************************************
1250 ****************************************************************/
1252 NET_API_STATUS NetLocalGroupAdd(const char * server_name /* [in] */,
1253 uint32_t level /* [in] */,
1254 uint8_t *buffer /* [in] [ref] */,
1255 uint32_t *parm_err /* [out] [ref] */)
1257 struct NetLocalGroupAdd r;
1258 struct libnetapi_ctx *ctx = NULL;
1259 NET_API_STATUS status;
1262 status = libnetapi_getctx(&ctx);
1268 r.in.server_name = server_name;
1270 r.in.buffer = buffer;
1272 /* Out parameters */
1273 r.out.parm_err = parm_err;
1275 if (DEBUGLEVEL >= 10) {
1276 NDR_PRINT_IN_DEBUG(NetLocalGroupAdd, &r);
1279 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1280 werr = NetLocalGroupAdd_l(ctx, &r);
1282 werr = NetLocalGroupAdd_r(ctx, &r);
1285 r.out.result = W_ERROR_V(werr);
1287 if (DEBUGLEVEL >= 10) {
1288 NDR_PRINT_OUT_DEBUG(NetLocalGroupAdd, &r);
1291 return r.out.result;
1294 /****************************************************************
1296 ****************************************************************/
1298 NET_API_STATUS NetLocalGroupDel(const char * server_name /* [in] */,
1299 const char * group_name /* [in] */)
1301 struct NetLocalGroupDel r;
1302 struct libnetapi_ctx *ctx = NULL;
1303 NET_API_STATUS status;
1306 status = libnetapi_getctx(&ctx);
1312 r.in.server_name = server_name;
1313 r.in.group_name = group_name;
1315 /* Out parameters */
1317 if (DEBUGLEVEL >= 10) {
1318 NDR_PRINT_IN_DEBUG(NetLocalGroupDel, &r);
1321 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1322 werr = NetLocalGroupDel_l(ctx, &r);
1324 werr = NetLocalGroupDel_r(ctx, &r);
1327 r.out.result = W_ERROR_V(werr);
1329 if (DEBUGLEVEL >= 10) {
1330 NDR_PRINT_OUT_DEBUG(NetLocalGroupDel, &r);
1333 return r.out.result;
1336 /****************************************************************
1337 NetLocalGroupGetInfo
1338 ****************************************************************/
1340 NET_API_STATUS NetLocalGroupGetInfo(const char * server_name /* [in] */,
1341 const char * group_name /* [in] */,
1342 uint32_t level /* [in] */,
1343 uint8_t **buffer /* [out] [ref] */)
1345 struct NetLocalGroupGetInfo r;
1346 struct libnetapi_ctx *ctx = NULL;
1347 NET_API_STATUS status;
1350 status = libnetapi_getctx(&ctx);
1356 r.in.server_name = server_name;
1357 r.in.group_name = group_name;
1360 /* Out parameters */
1361 r.out.buffer = buffer;
1363 if (DEBUGLEVEL >= 10) {
1364 NDR_PRINT_IN_DEBUG(NetLocalGroupGetInfo, &r);
1367 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1368 werr = NetLocalGroupGetInfo_l(ctx, &r);
1370 werr = NetLocalGroupGetInfo_r(ctx, &r);
1373 r.out.result = W_ERROR_V(werr);
1375 if (DEBUGLEVEL >= 10) {
1376 NDR_PRINT_OUT_DEBUG(NetLocalGroupGetInfo, &r);
1379 return r.out.result;
1382 /****************************************************************
1383 NetLocalGroupSetInfo
1384 ****************************************************************/
1386 NET_API_STATUS NetLocalGroupSetInfo(const char * server_name /* [in] */,
1387 const char * group_name /* [in] */,
1388 uint32_t level /* [in] */,
1389 uint8_t *buffer /* [in] [ref] */,
1390 uint32_t *parm_err /* [out] [ref] */)
1392 struct NetLocalGroupSetInfo r;
1393 struct libnetapi_ctx *ctx = NULL;
1394 NET_API_STATUS status;
1397 status = libnetapi_getctx(&ctx);
1403 r.in.server_name = server_name;
1404 r.in.group_name = group_name;
1406 r.in.buffer = buffer;
1408 /* Out parameters */
1409 r.out.parm_err = parm_err;
1411 if (DEBUGLEVEL >= 10) {
1412 NDR_PRINT_IN_DEBUG(NetLocalGroupSetInfo, &r);
1415 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1416 werr = NetLocalGroupSetInfo_l(ctx, &r);
1418 werr = NetLocalGroupSetInfo_r(ctx, &r);
1421 r.out.result = W_ERROR_V(werr);
1423 if (DEBUGLEVEL >= 10) {
1424 NDR_PRINT_OUT_DEBUG(NetLocalGroupSetInfo, &r);
1427 return r.out.result;
1430 /****************************************************************
1432 ****************************************************************/
1434 NET_API_STATUS NetLocalGroupEnum(const char * server_name /* [in] */,
1435 uint32_t level /* [in] */,
1436 uint8_t **buffer /* [out] [ref] */,
1437 uint32_t prefmaxlen /* [in] */,
1438 uint32_t *entries_read /* [out] [ref] */,
1439 uint32_t *total_entries /* [out] [ref] */,
1440 uint32_t *resume_handle /* [in,out] [ref] */)
1442 struct NetLocalGroupEnum r;
1443 struct libnetapi_ctx *ctx = NULL;
1444 NET_API_STATUS status;
1447 status = libnetapi_getctx(&ctx);
1453 r.in.server_name = server_name;
1455 r.in.prefmaxlen = prefmaxlen;
1456 r.in.resume_handle = resume_handle;
1458 /* Out parameters */
1459 r.out.buffer = buffer;
1460 r.out.entries_read = entries_read;
1461 r.out.total_entries = total_entries;
1462 r.out.resume_handle = resume_handle;
1464 if (DEBUGLEVEL >= 10) {
1465 NDR_PRINT_IN_DEBUG(NetLocalGroupEnum, &r);
1468 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1469 werr = NetLocalGroupEnum_l(ctx, &r);
1471 werr = NetLocalGroupEnum_r(ctx, &r);
1474 r.out.result = W_ERROR_V(werr);
1476 if (DEBUGLEVEL >= 10) {
1477 NDR_PRINT_OUT_DEBUG(NetLocalGroupEnum, &r);
1480 return r.out.result;
1483 /****************************************************************
1484 NetLocalGroupAddMembers
1485 ****************************************************************/
1487 NET_API_STATUS NetLocalGroupAddMembers(const char * server_name /* [in] */,
1488 const char * group_name /* [in] */,
1489 uint32_t level /* [in] */,
1490 uint8_t *buffer /* [in] [ref] */,
1491 uint32_t total_entries /* [in] */)
1493 struct NetLocalGroupAddMembers r;
1494 struct libnetapi_ctx *ctx = NULL;
1495 NET_API_STATUS status;
1498 status = libnetapi_getctx(&ctx);
1504 r.in.server_name = server_name;
1505 r.in.group_name = group_name;
1507 r.in.buffer = buffer;
1508 r.in.total_entries = total_entries;
1510 /* Out parameters */
1512 if (DEBUGLEVEL >= 10) {
1513 NDR_PRINT_IN_DEBUG(NetLocalGroupAddMembers, &r);
1516 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1517 werr = NetLocalGroupAddMembers_l(ctx, &r);
1519 werr = NetLocalGroupAddMembers_r(ctx, &r);
1522 r.out.result = W_ERROR_V(werr);
1524 if (DEBUGLEVEL >= 10) {
1525 NDR_PRINT_OUT_DEBUG(NetLocalGroupAddMembers, &r);
1528 return r.out.result;
1531 /****************************************************************
1532 NetLocalGroupDelMembers
1533 ****************************************************************/
1535 NET_API_STATUS NetLocalGroupDelMembers(const char * server_name /* [in] */,
1536 const char * group_name /* [in] */,
1537 uint32_t level /* [in] */,
1538 uint8_t *buffer /* [in] [ref] */,
1539 uint32_t total_entries /* [in] */)
1541 struct NetLocalGroupDelMembers r;
1542 struct libnetapi_ctx *ctx = NULL;
1543 NET_API_STATUS status;
1546 status = libnetapi_getctx(&ctx);
1552 r.in.server_name = server_name;
1553 r.in.group_name = group_name;
1555 r.in.buffer = buffer;
1556 r.in.total_entries = total_entries;
1558 /* Out parameters */
1560 if (DEBUGLEVEL >= 10) {
1561 NDR_PRINT_IN_DEBUG(NetLocalGroupDelMembers, &r);
1564 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1565 werr = NetLocalGroupDelMembers_l(ctx, &r);
1567 werr = NetLocalGroupDelMembers_r(ctx, &r);
1570 r.out.result = W_ERROR_V(werr);
1572 if (DEBUGLEVEL >= 10) {
1573 NDR_PRINT_OUT_DEBUG(NetLocalGroupDelMembers, &r);
1576 return r.out.result;
1579 /****************************************************************
1580 NetLocalGroupGetMembers
1581 ****************************************************************/
1583 NET_API_STATUS NetLocalGroupGetMembers(const char * server_name /* [in] */,
1584 const char * local_group_name /* [in] */,
1585 uint32_t level /* [in] */,
1586 uint8_t **buffer /* [out] [ref] */,
1587 uint32_t prefmaxlen /* [in] */,
1588 uint32_t *entries_read /* [out] [ref] */,
1589 uint32_t *total_entries /* [out] [ref] */,
1590 uint32_t *resume_handle /* [in,out] [ref] */)
1592 struct NetLocalGroupGetMembers r;
1593 struct libnetapi_ctx *ctx = NULL;
1594 NET_API_STATUS status;
1597 status = libnetapi_getctx(&ctx);
1603 r.in.server_name = server_name;
1604 r.in.local_group_name = local_group_name;
1606 r.in.prefmaxlen = prefmaxlen;
1607 r.in.resume_handle = resume_handle;
1609 /* Out parameters */
1610 r.out.buffer = buffer;
1611 r.out.entries_read = entries_read;
1612 r.out.total_entries = total_entries;
1613 r.out.resume_handle = resume_handle;
1615 if (DEBUGLEVEL >= 10) {
1616 NDR_PRINT_IN_DEBUG(NetLocalGroupGetMembers, &r);
1619 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1620 werr = NetLocalGroupGetMembers_l(ctx, &r);
1622 werr = NetLocalGroupGetMembers_r(ctx, &r);
1625 r.out.result = W_ERROR_V(werr);
1627 if (DEBUGLEVEL >= 10) {
1628 NDR_PRINT_OUT_DEBUG(NetLocalGroupGetMembers, &r);
1631 return r.out.result;
1634 /****************************************************************
1635 NetLocalGroupSetMembers
1636 ****************************************************************/
1638 NET_API_STATUS NetLocalGroupSetMembers(const char * server_name /* [in] */,
1639 const char * group_name /* [in] */,
1640 uint32_t level /* [in] */,
1641 uint8_t *buffer /* [in] [ref] */,
1642 uint32_t total_entries /* [in] */)
1644 struct NetLocalGroupSetMembers r;
1645 struct libnetapi_ctx *ctx = NULL;
1646 NET_API_STATUS status;
1649 status = libnetapi_getctx(&ctx);
1655 r.in.server_name = server_name;
1656 r.in.group_name = group_name;
1658 r.in.buffer = buffer;
1659 r.in.total_entries = total_entries;
1661 /* Out parameters */
1663 if (DEBUGLEVEL >= 10) {
1664 NDR_PRINT_IN_DEBUG(NetLocalGroupSetMembers, &r);
1667 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1668 werr = NetLocalGroupSetMembers_l(ctx, &r);
1670 werr = NetLocalGroupSetMembers_r(ctx, &r);
1673 r.out.result = W_ERROR_V(werr);
1675 if (DEBUGLEVEL >= 10) {
1676 NDR_PRINT_OUT_DEBUG(NetLocalGroupSetMembers, &r);
1679 return r.out.result;
1682 /****************************************************************
1684 ****************************************************************/
1686 NET_API_STATUS NetRemoteTOD(const char * server_name /* [in] */,
1687 uint8_t **buffer /* [out] [ref] */)
1689 struct NetRemoteTOD r;
1690 struct libnetapi_ctx *ctx = NULL;
1691 NET_API_STATUS status;
1694 status = libnetapi_getctx(&ctx);
1700 r.in.server_name = server_name;
1702 /* Out parameters */
1703 r.out.buffer = buffer;
1705 if (DEBUGLEVEL >= 10) {
1706 NDR_PRINT_IN_DEBUG(NetRemoteTOD, &r);
1709 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1710 werr = NetRemoteTOD_l(ctx, &r);
1712 werr = NetRemoteTOD_r(ctx, &r);
1715 r.out.result = W_ERROR_V(werr);
1717 if (DEBUGLEVEL >= 10) {
1718 NDR_PRINT_OUT_DEBUG(NetRemoteTOD, &r);
1721 return r.out.result;