netapi: add NetGroupGetUsers skeleton.
[Samba.git] / source / lib / netapi / libnetapi.c
blobfe572383038ddbd57c93f6af913c3d34a7f08a27
1 /*
2 * Unix SMB/CIFS implementation.
3 * NetApi Support
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/>.
20 #include "includes.h"
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 /****************************************************************
28 NetJoinDomain
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;
41 WERROR werr;
43 status = libnetapi_getctx(&ctx);
44 if (status != 0) {
45 return status;
48 /* In parameters */
49 r.in.server = server;
50 r.in.domain = domain;
51 r.in.account_ou = account_ou;
52 r.in.account = account;
53 r.in.password = password;
54 r.in.join_flags = join_flags;
56 /* Out parameters */
58 if (DEBUGLEVEL >= 10) {
59 NDR_PRINT_IN_DEBUG(NetJoinDomain, &r);
62 if (LIBNETAPI_LOCAL_SERVER(server)) {
63 werr = NetJoinDomain_l(ctx, &r);
64 } else {
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);
74 return r.out.result;
77 /****************************************************************
78 NetUnjoinDomain
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;
89 WERROR werr;
91 status = libnetapi_getctx(&ctx);
92 if (status != 0) {
93 return status;
96 /* In parameters */
97 r.in.server_name = server_name;
98 r.in.account = account;
99 r.in.password = password;
100 r.in.unjoin_flags = unjoin_flags;
102 /* Out parameters */
104 if (DEBUGLEVEL >= 10) {
105 NDR_PRINT_IN_DEBUG(NetUnjoinDomain, &r);
108 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
109 werr = NetUnjoinDomain_l(ctx, &r);
110 } else {
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);
120 return r.out.result;
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;
134 WERROR werr;
136 status = libnetapi_getctx(&ctx);
137 if (status != 0) {
138 return status;
141 /* In parameters */
142 r.in.server_name = server_name;
144 /* Out parameters */
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);
154 } else {
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);
164 return r.out.result;
167 /****************************************************************
168 NetGetJoinableOUs
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;
181 WERROR werr;
183 status = libnetapi_getctx(&ctx);
184 if (status != 0) {
185 return status;
188 /* In parameters */
189 r.in.server_name = server_name;
190 r.in.domain = domain;
191 r.in.account = account;
192 r.in.password = password;
194 /* Out parameters */
195 r.out.ou_count = ou_count;
196 r.out.ous = ous;
198 if (DEBUGLEVEL >= 10) {
199 NDR_PRINT_IN_DEBUG(NetGetJoinableOUs, &r);
202 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
203 werr = NetGetJoinableOUs_l(ctx, &r);
204 } else {
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);
214 return r.out.result;
217 /****************************************************************
218 NetServerGetInfo
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;
228 WERROR werr;
230 status = libnetapi_getctx(&ctx);
231 if (status != 0) {
232 return status;
235 /* In parameters */
236 r.in.server_name = server_name;
237 r.in.level = level;
239 /* Out parameters */
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);
248 } else {
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);
258 return r.out.result;
261 /****************************************************************
262 NetServerSetInfo
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;
273 WERROR werr;
275 status = libnetapi_getctx(&ctx);
276 if (status != 0) {
277 return status;
280 /* In parameters */
281 r.in.server_name = server_name;
282 r.in.level = level;
283 r.in.buffer = buffer;
285 /* Out parameters */
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);
294 } else {
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);
304 return r.out.result;
307 /****************************************************************
308 NetGetDCName
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;
318 WERROR werr;
320 status = libnetapi_getctx(&ctx);
321 if (status != 0) {
322 return status;
325 /* In parameters */
326 r.in.server_name = server_name;
327 r.in.domain_name = domain_name;
329 /* Out parameters */
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);
338 } else {
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);
348 return r.out.result;
351 /****************************************************************
352 NetGetAnyDCName
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;
362 WERROR werr;
364 status = libnetapi_getctx(&ctx);
365 if (status != 0) {
366 return status;
369 /* In parameters */
370 r.in.server_name = server_name;
371 r.in.domain_name = domain_name;
373 /* Out parameters */
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);
382 } else {
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);
392 return r.out.result;
395 /****************************************************************
396 DsGetDcName
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;
409 WERROR werr;
411 status = libnetapi_getctx(&ctx);
412 if (status != 0) {
413 return status;
416 /* In parameters */
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;
421 r.in.flags = flags;
423 /* Out parameters */
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);
432 } else {
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);
442 return r.out.result;
445 /****************************************************************
446 NetUserAdd
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] */)
454 struct NetUserAdd r;
455 struct libnetapi_ctx *ctx = NULL;
456 NET_API_STATUS status;
457 WERROR werr;
459 status = libnetapi_getctx(&ctx);
460 if (status != 0) {
461 return status;
464 /* In parameters */
465 r.in.server_name = server_name;
466 r.in.level = level;
467 r.in.buffer = buffer;
469 /* Out parameters */
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);
478 } else {
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);
488 return r.out.result;
491 /****************************************************************
492 NetUserDel
493 ****************************************************************/
495 NET_API_STATUS NetUserDel(const char * server_name /* [in] [unique] */,
496 const char * user_name /* [in] [ref] */)
498 struct NetUserDel r;
499 struct libnetapi_ctx *ctx = NULL;
500 NET_API_STATUS status;
501 WERROR werr;
503 status = libnetapi_getctx(&ctx);
504 if (status != 0) {
505 return status;
508 /* In parameters */
509 r.in.server_name = server_name;
510 r.in.user_name = user_name;
512 /* Out parameters */
514 if (DEBUGLEVEL >= 10) {
515 NDR_PRINT_IN_DEBUG(NetUserDel, &r);
518 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
519 werr = NetUserDel_l(ctx, &r);
520 } else {
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);
530 return r.out.result;
533 /****************************************************************
534 NetUserEnum
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;
549 WERROR werr;
551 status = libnetapi_getctx(&ctx);
552 if (status != 0) {
553 return status;
556 /* In parameters */
557 r.in.server_name = server_name;
558 r.in.level = level;
559 r.in.filter = filter;
560 r.in.prefmaxlen = prefmaxlen;
561 r.in.resume_handle = resume_handle;
563 /* Out parameters */
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);
575 } else {
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);
585 return r.out.result;
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;
600 WERROR werr;
602 status = libnetapi_getctx(&ctx);
603 if (status != 0) {
604 return status;
607 /* In parameters */
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;
613 /* Out parameters */
615 if (DEBUGLEVEL >= 10) {
616 NDR_PRINT_IN_DEBUG(NetUserChangePassword, &r);
619 if (LIBNETAPI_LOCAL_SERVER(domain_name)) {
620 werr = NetUserChangePassword_l(ctx, &r);
621 } else {
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);
631 return r.out.result;
634 /****************************************************************
635 NetUserGetInfo
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;
646 WERROR werr;
648 status = libnetapi_getctx(&ctx);
649 if (status != 0) {
650 return status;
653 /* In parameters */
654 r.in.server_name = server_name;
655 r.in.user_name = user_name;
656 r.in.level = level;
658 /* Out parameters */
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);
667 } else {
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);
677 return r.out.result;
680 /****************************************************************
681 NetUserSetInfo
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;
693 WERROR werr;
695 status = libnetapi_getctx(&ctx);
696 if (status != 0) {
697 return status;
700 /* In parameters */
701 r.in.server_name = server_name;
702 r.in.user_name = user_name;
703 r.in.level = level;
704 r.in.buffer = buffer;
706 /* Out parameters */
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);
715 } else {
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);
725 return r.out.result;
728 /****************************************************************
729 NetQueryDisplayInformation
730 ****************************************************************/
732 NET_API_STATUS NetQueryDisplayInformation(const char * server_name /* [in] [unique] */,
733 uint32_t level /* [in] */,
734 uint32_t idx /* [in] */,
735 uint32_t entries_requested /* [in] */,
736 uint32_t prefmaxlen /* [in] */,
737 uint32_t *entries_read /* [out] [ref] */,
738 void **buffer /* [out] [noprint,ref] */)
740 struct NetQueryDisplayInformation r;
741 struct libnetapi_ctx *ctx = NULL;
742 NET_API_STATUS status;
743 WERROR werr;
745 status = libnetapi_getctx(&ctx);
746 if (status != 0) {
747 return status;
750 /* In parameters */
751 r.in.server_name = server_name;
752 r.in.level = level;
753 r.in.idx = idx;
754 r.in.entries_requested = entries_requested;
755 r.in.prefmaxlen = prefmaxlen;
757 /* Out parameters */
758 r.out.entries_read = entries_read;
759 r.out.buffer = buffer;
761 if (DEBUGLEVEL >= 10) {
762 NDR_PRINT_IN_DEBUG(NetQueryDisplayInformation, &r);
765 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
766 werr = NetQueryDisplayInformation_l(ctx, &r);
767 } else {
768 werr = NetQueryDisplayInformation_r(ctx, &r);
771 r.out.result = W_ERROR_V(werr);
773 if (DEBUGLEVEL >= 10) {
774 NDR_PRINT_OUT_DEBUG(NetQueryDisplayInformation, &r);
777 return r.out.result;
780 /****************************************************************
781 NetGroupAdd
782 ****************************************************************/
784 NET_API_STATUS NetGroupAdd(const char * server_name /* [in] */,
785 uint32_t level /* [in] */,
786 uint8_t *buffer /* [in] [ref] */,
787 uint32_t *parm_err /* [out] [ref] */)
789 struct NetGroupAdd r;
790 struct libnetapi_ctx *ctx = NULL;
791 NET_API_STATUS status;
792 WERROR werr;
794 status = libnetapi_getctx(&ctx);
795 if (status != 0) {
796 return status;
799 /* In parameters */
800 r.in.server_name = server_name;
801 r.in.level = level;
802 r.in.buffer = buffer;
804 /* Out parameters */
805 r.out.parm_err = parm_err;
807 if (DEBUGLEVEL >= 10) {
808 NDR_PRINT_IN_DEBUG(NetGroupAdd, &r);
811 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
812 werr = NetGroupAdd_l(ctx, &r);
813 } else {
814 werr = NetGroupAdd_r(ctx, &r);
817 r.out.result = W_ERROR_V(werr);
819 if (DEBUGLEVEL >= 10) {
820 NDR_PRINT_OUT_DEBUG(NetGroupAdd, &r);
823 return r.out.result;
826 /****************************************************************
827 NetGroupDel
828 ****************************************************************/
830 NET_API_STATUS NetGroupDel(const char * server_name /* [in] */,
831 const char * group_name /* [in] */)
833 struct NetGroupDel r;
834 struct libnetapi_ctx *ctx = NULL;
835 NET_API_STATUS status;
836 WERROR werr;
838 status = libnetapi_getctx(&ctx);
839 if (status != 0) {
840 return status;
843 /* In parameters */
844 r.in.server_name = server_name;
845 r.in.group_name = group_name;
847 /* Out parameters */
849 if (DEBUGLEVEL >= 10) {
850 NDR_PRINT_IN_DEBUG(NetGroupDel, &r);
853 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
854 werr = NetGroupDel_l(ctx, &r);
855 } else {
856 werr = NetGroupDel_r(ctx, &r);
859 r.out.result = W_ERROR_V(werr);
861 if (DEBUGLEVEL >= 10) {
862 NDR_PRINT_OUT_DEBUG(NetGroupDel, &r);
865 return r.out.result;
868 /****************************************************************
869 NetGroupEnum
870 ****************************************************************/
872 NET_API_STATUS NetGroupEnum(const char * server_name /* [in] */,
873 uint32_t level /* [in] */,
874 uint8_t **buffer /* [out] [ref] */,
875 uint32_t prefmaxlen /* [in] */,
876 uint32_t *entries_read /* [out] [ref] */,
877 uint32_t *total_entries /* [out] [ref] */,
878 uint32_t *resume_handle /* [in,out] [ref] */)
880 struct NetGroupEnum r;
881 struct libnetapi_ctx *ctx = NULL;
882 NET_API_STATUS status;
883 WERROR werr;
885 status = libnetapi_getctx(&ctx);
886 if (status != 0) {
887 return status;
890 /* In parameters */
891 r.in.server_name = server_name;
892 r.in.level = level;
893 r.in.prefmaxlen = prefmaxlen;
894 r.in.resume_handle = resume_handle;
896 /* Out parameters */
897 r.out.buffer = buffer;
898 r.out.entries_read = entries_read;
899 r.out.total_entries = total_entries;
900 r.out.resume_handle = resume_handle;
902 if (DEBUGLEVEL >= 10) {
903 NDR_PRINT_IN_DEBUG(NetGroupEnum, &r);
906 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
907 werr = NetGroupEnum_l(ctx, &r);
908 } else {
909 werr = NetGroupEnum_r(ctx, &r);
912 r.out.result = W_ERROR_V(werr);
914 if (DEBUGLEVEL >= 10) {
915 NDR_PRINT_OUT_DEBUG(NetGroupEnum, &r);
918 return r.out.result;
921 /****************************************************************
922 NetGroupSetInfo
923 ****************************************************************/
925 NET_API_STATUS NetGroupSetInfo(const char * server_name /* [in] */,
926 const char * group_name /* [in] */,
927 uint32_t level /* [in] */,
928 uint8_t *buffer /* [in] [ref] */,
929 uint32_t *parm_err /* [out] [ref] */)
931 struct NetGroupSetInfo r;
932 struct libnetapi_ctx *ctx = NULL;
933 NET_API_STATUS status;
934 WERROR werr;
936 status = libnetapi_getctx(&ctx);
937 if (status != 0) {
938 return status;
941 /* In parameters */
942 r.in.server_name = server_name;
943 r.in.group_name = group_name;
944 r.in.level = level;
945 r.in.buffer = buffer;
947 /* Out parameters */
948 r.out.parm_err = parm_err;
950 if (DEBUGLEVEL >= 10) {
951 NDR_PRINT_IN_DEBUG(NetGroupSetInfo, &r);
954 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
955 werr = NetGroupSetInfo_l(ctx, &r);
956 } else {
957 werr = NetGroupSetInfo_r(ctx, &r);
960 r.out.result = W_ERROR_V(werr);
962 if (DEBUGLEVEL >= 10) {
963 NDR_PRINT_OUT_DEBUG(NetGroupSetInfo, &r);
966 return r.out.result;
969 /****************************************************************
970 NetGroupGetInfo
971 ****************************************************************/
973 NET_API_STATUS NetGroupGetInfo(const char * server_name /* [in] */,
974 const char * group_name /* [in] */,
975 uint32_t level /* [in] */,
976 uint8_t **buffer /* [out] [ref] */)
978 struct NetGroupGetInfo r;
979 struct libnetapi_ctx *ctx = NULL;
980 NET_API_STATUS status;
981 WERROR werr;
983 status = libnetapi_getctx(&ctx);
984 if (status != 0) {
985 return status;
988 /* In parameters */
989 r.in.server_name = server_name;
990 r.in.group_name = group_name;
991 r.in.level = level;
993 /* Out parameters */
994 r.out.buffer = buffer;
996 if (DEBUGLEVEL >= 10) {
997 NDR_PRINT_IN_DEBUG(NetGroupGetInfo, &r);
1000 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1001 werr = NetGroupGetInfo_l(ctx, &r);
1002 } else {
1003 werr = NetGroupGetInfo_r(ctx, &r);
1006 r.out.result = W_ERROR_V(werr);
1008 if (DEBUGLEVEL >= 10) {
1009 NDR_PRINT_OUT_DEBUG(NetGroupGetInfo, &r);
1012 return r.out.result;
1015 /****************************************************************
1016 NetGroupAddUser
1017 ****************************************************************/
1019 NET_API_STATUS NetGroupAddUser(const char * server_name /* [in] */,
1020 const char * group_name /* [in] */,
1021 const char * user_name /* [in] */)
1023 struct NetGroupAddUser r;
1024 struct libnetapi_ctx *ctx = NULL;
1025 NET_API_STATUS status;
1026 WERROR werr;
1028 status = libnetapi_getctx(&ctx);
1029 if (status != 0) {
1030 return status;
1033 /* In parameters */
1034 r.in.server_name = server_name;
1035 r.in.group_name = group_name;
1036 r.in.user_name = user_name;
1038 /* Out parameters */
1040 if (DEBUGLEVEL >= 10) {
1041 NDR_PRINT_IN_DEBUG(NetGroupAddUser, &r);
1044 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1045 werr = NetGroupAddUser_l(ctx, &r);
1046 } else {
1047 werr = NetGroupAddUser_r(ctx, &r);
1050 r.out.result = W_ERROR_V(werr);
1052 if (DEBUGLEVEL >= 10) {
1053 NDR_PRINT_OUT_DEBUG(NetGroupAddUser, &r);
1056 return r.out.result;
1059 /****************************************************************
1060 NetGroupDelUser
1061 ****************************************************************/
1063 NET_API_STATUS NetGroupDelUser(const char * server_name /* [in] */,
1064 const char * group_name /* [in] */,
1065 const char * user_name /* [in] */)
1067 struct NetGroupDelUser r;
1068 struct libnetapi_ctx *ctx = NULL;
1069 NET_API_STATUS status;
1070 WERROR werr;
1072 status = libnetapi_getctx(&ctx);
1073 if (status != 0) {
1074 return status;
1077 /* In parameters */
1078 r.in.server_name = server_name;
1079 r.in.group_name = group_name;
1080 r.in.user_name = user_name;
1082 /* Out parameters */
1084 if (DEBUGLEVEL >= 10) {
1085 NDR_PRINT_IN_DEBUG(NetGroupDelUser, &r);
1088 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1089 werr = NetGroupDelUser_l(ctx, &r);
1090 } else {
1091 werr = NetGroupDelUser_r(ctx, &r);
1094 r.out.result = W_ERROR_V(werr);
1096 if (DEBUGLEVEL >= 10) {
1097 NDR_PRINT_OUT_DEBUG(NetGroupDelUser, &r);
1100 return r.out.result;
1103 /****************************************************************
1104 NetGroupGetUsers
1105 ****************************************************************/
1107 NET_API_STATUS NetGroupGetUsers(const char * server_name /* [in] */,
1108 const char * group_name /* [in] */,
1109 uint32_t level /* [in] */,
1110 uint8_t **buffer /* [out] [ref] */,
1111 uint32_t prefmaxlen /* [in] */,
1112 uint32_t *entries_read /* [out] [ref] */,
1113 uint32_t *total_entries /* [out] [ref] */,
1114 uint32_t *resume_handle /* [in,out] [ref] */)
1116 struct NetGroupGetUsers r;
1117 struct libnetapi_ctx *ctx = NULL;
1118 NET_API_STATUS status;
1119 WERROR werr;
1121 status = libnetapi_getctx(&ctx);
1122 if (status != 0) {
1123 return status;
1126 /* In parameters */
1127 r.in.server_name = server_name;
1128 r.in.group_name = group_name;
1129 r.in.level = level;
1130 r.in.prefmaxlen = prefmaxlen;
1131 r.in.resume_handle = resume_handle;
1133 /* Out parameters */
1134 r.out.buffer = buffer;
1135 r.out.entries_read = entries_read;
1136 r.out.total_entries = total_entries;
1137 r.out.resume_handle = resume_handle;
1139 if (DEBUGLEVEL >= 10) {
1140 NDR_PRINT_IN_DEBUG(NetGroupGetUsers, &r);
1143 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1144 werr = NetGroupGetUsers_l(ctx, &r);
1145 } else {
1146 werr = NetGroupGetUsers_r(ctx, &r);
1149 r.out.result = W_ERROR_V(werr);
1151 if (DEBUGLEVEL >= 10) {
1152 NDR_PRINT_OUT_DEBUG(NetGroupGetUsers, &r);
1155 return r.out.result;
1158 /****************************************************************
1159 NetLocalGroupAdd
1160 ****************************************************************/
1162 NET_API_STATUS NetLocalGroupAdd(const char * server_name /* [in] */,
1163 uint32_t level /* [in] */,
1164 uint8_t *buffer /* [in] [ref] */,
1165 uint32_t *parm_err /* [out] [ref] */)
1167 struct NetLocalGroupAdd r;
1168 struct libnetapi_ctx *ctx = NULL;
1169 NET_API_STATUS status;
1170 WERROR werr;
1172 status = libnetapi_getctx(&ctx);
1173 if (status != 0) {
1174 return status;
1177 /* In parameters */
1178 r.in.server_name = server_name;
1179 r.in.level = level;
1180 r.in.buffer = buffer;
1182 /* Out parameters */
1183 r.out.parm_err = parm_err;
1185 if (DEBUGLEVEL >= 10) {
1186 NDR_PRINT_IN_DEBUG(NetLocalGroupAdd, &r);
1189 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1190 werr = NetLocalGroupAdd_l(ctx, &r);
1191 } else {
1192 werr = NetLocalGroupAdd_r(ctx, &r);
1195 r.out.result = W_ERROR_V(werr);
1197 if (DEBUGLEVEL >= 10) {
1198 NDR_PRINT_OUT_DEBUG(NetLocalGroupAdd, &r);
1201 return r.out.result;
1204 /****************************************************************
1205 NetLocalGroupDel
1206 ****************************************************************/
1208 NET_API_STATUS NetLocalGroupDel(const char * server_name /* [in] */,
1209 const char * group_name /* [in] */)
1211 struct NetLocalGroupDel r;
1212 struct libnetapi_ctx *ctx = NULL;
1213 NET_API_STATUS status;
1214 WERROR werr;
1216 status = libnetapi_getctx(&ctx);
1217 if (status != 0) {
1218 return status;
1221 /* In parameters */
1222 r.in.server_name = server_name;
1223 r.in.group_name = group_name;
1225 /* Out parameters */
1227 if (DEBUGLEVEL >= 10) {
1228 NDR_PRINT_IN_DEBUG(NetLocalGroupDel, &r);
1231 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1232 werr = NetLocalGroupDel_l(ctx, &r);
1233 } else {
1234 werr = NetLocalGroupDel_r(ctx, &r);
1237 r.out.result = W_ERROR_V(werr);
1239 if (DEBUGLEVEL >= 10) {
1240 NDR_PRINT_OUT_DEBUG(NetLocalGroupDel, &r);
1243 return r.out.result;
1246 /****************************************************************
1247 NetLocalGroupGetInfo
1248 ****************************************************************/
1250 NET_API_STATUS NetLocalGroupGetInfo(const char * server_name /* [in] */,
1251 const char * group_name /* [in] */,
1252 uint32_t level /* [in] */,
1253 uint8_t **buffer /* [out] [ref] */)
1255 struct NetLocalGroupGetInfo r;
1256 struct libnetapi_ctx *ctx = NULL;
1257 NET_API_STATUS status;
1258 WERROR werr;
1260 status = libnetapi_getctx(&ctx);
1261 if (status != 0) {
1262 return status;
1265 /* In parameters */
1266 r.in.server_name = server_name;
1267 r.in.group_name = group_name;
1268 r.in.level = level;
1270 /* Out parameters */
1271 r.out.buffer = buffer;
1273 if (DEBUGLEVEL >= 10) {
1274 NDR_PRINT_IN_DEBUG(NetLocalGroupGetInfo, &r);
1277 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1278 werr = NetLocalGroupGetInfo_l(ctx, &r);
1279 } else {
1280 werr = NetLocalGroupGetInfo_r(ctx, &r);
1283 r.out.result = W_ERROR_V(werr);
1285 if (DEBUGLEVEL >= 10) {
1286 NDR_PRINT_OUT_DEBUG(NetLocalGroupGetInfo, &r);
1289 return r.out.result;
1292 /****************************************************************
1293 NetLocalGroupSetInfo
1294 ****************************************************************/
1296 NET_API_STATUS NetLocalGroupSetInfo(const char * server_name /* [in] */,
1297 const char * group_name /* [in] */,
1298 uint32_t level /* [in] */,
1299 uint8_t *buffer /* [in] [ref] */,
1300 uint32_t *parm_err /* [out] [ref] */)
1302 struct NetLocalGroupSetInfo r;
1303 struct libnetapi_ctx *ctx = NULL;
1304 NET_API_STATUS status;
1305 WERROR werr;
1307 status = libnetapi_getctx(&ctx);
1308 if (status != 0) {
1309 return status;
1312 /* In parameters */
1313 r.in.server_name = server_name;
1314 r.in.group_name = group_name;
1315 r.in.level = level;
1316 r.in.buffer = buffer;
1318 /* Out parameters */
1319 r.out.parm_err = parm_err;
1321 if (DEBUGLEVEL >= 10) {
1322 NDR_PRINT_IN_DEBUG(NetLocalGroupSetInfo, &r);
1325 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1326 werr = NetLocalGroupSetInfo_l(ctx, &r);
1327 } else {
1328 werr = NetLocalGroupSetInfo_r(ctx, &r);
1331 r.out.result = W_ERROR_V(werr);
1333 if (DEBUGLEVEL >= 10) {
1334 NDR_PRINT_OUT_DEBUG(NetLocalGroupSetInfo, &r);
1337 return r.out.result;
1340 /****************************************************************
1341 NetLocalGroupEnum
1342 ****************************************************************/
1344 NET_API_STATUS NetLocalGroupEnum(const char * server_name /* [in] */,
1345 uint32_t level /* [in] */,
1346 uint8_t **buffer /* [out] [ref] */,
1347 uint32_t prefmaxlen /* [in] */,
1348 uint32_t *entries_read /* [out] [ref] */,
1349 uint32_t *total_entries /* [out] [ref] */,
1350 uint32_t *resume_handle /* [in,out] [ref] */)
1352 struct NetLocalGroupEnum r;
1353 struct libnetapi_ctx *ctx = NULL;
1354 NET_API_STATUS status;
1355 WERROR werr;
1357 status = libnetapi_getctx(&ctx);
1358 if (status != 0) {
1359 return status;
1362 /* In parameters */
1363 r.in.server_name = server_name;
1364 r.in.level = level;
1365 r.in.prefmaxlen = prefmaxlen;
1366 r.in.resume_handle = resume_handle;
1368 /* Out parameters */
1369 r.out.buffer = buffer;
1370 r.out.entries_read = entries_read;
1371 r.out.total_entries = total_entries;
1372 r.out.resume_handle = resume_handle;
1374 if (DEBUGLEVEL >= 10) {
1375 NDR_PRINT_IN_DEBUG(NetLocalGroupEnum, &r);
1378 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1379 werr = NetLocalGroupEnum_l(ctx, &r);
1380 } else {
1381 werr = NetLocalGroupEnum_r(ctx, &r);
1384 r.out.result = W_ERROR_V(werr);
1386 if (DEBUGLEVEL >= 10) {
1387 NDR_PRINT_OUT_DEBUG(NetLocalGroupEnum, &r);
1390 return r.out.result;
1393 /****************************************************************
1394 NetRemoteTOD
1395 ****************************************************************/
1397 NET_API_STATUS NetRemoteTOD(const char * server_name /* [in] */,
1398 uint8_t **buffer /* [out] [ref] */)
1400 struct NetRemoteTOD r;
1401 struct libnetapi_ctx *ctx = NULL;
1402 NET_API_STATUS status;
1403 WERROR werr;
1405 status = libnetapi_getctx(&ctx);
1406 if (status != 0) {
1407 return status;
1410 /* In parameters */
1411 r.in.server_name = server_name;
1413 /* Out parameters */
1414 r.out.buffer = buffer;
1416 if (DEBUGLEVEL >= 10) {
1417 NDR_PRINT_IN_DEBUG(NetRemoteTOD, &r);
1420 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1421 werr = NetRemoteTOD_l(ctx, &r);
1422 } else {
1423 werr = NetRemoteTOD_r(ctx, &r);
1426 r.out.result = W_ERROR_V(werr);
1428 if (DEBUGLEVEL >= 10) {
1429 NDR_PRINT_OUT_DEBUG(NetRemoteTOD, &r);
1432 return r.out.result;