lib:ldb: Document environment variables in ldb manpage
[Samba.git] / source3 / lib / netapi / libnetapi.c
blob29073168ef81f4c3cdcaa6610f46efb533e3846f
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;
42 TALLOC_CTX *frame = talloc_stackframe();
44 ZERO_STRUCT(r);
46 status = libnetapi_getctx(&ctx);
47 if (status != 0) {
48 TALLOC_FREE(frame);
49 return status;
52 /* In parameters */
53 r.in.server = server;
54 r.in.domain = domain;
55 r.in.account_ou = account_ou;
56 r.in.account = account;
57 r.in.password = password;
58 r.in.join_flags = join_flags;
60 /* Out parameters */
62 if (DEBUGLEVEL >= 10) {
63 NDR_PRINT_IN_DEBUG(NetJoinDomain, &r);
66 if (LIBNETAPI_LOCAL_SERVER(server)) {
67 werr = NetJoinDomain_l(ctx, &r);
68 } else {
69 werr = NetJoinDomain_r(ctx, &r);
72 r.out.result = W_ERROR_V(werr);
74 if (DEBUGLEVEL >= 10) {
75 NDR_PRINT_OUT_DEBUG(NetJoinDomain, &r);
78 TALLOC_FREE(frame);
79 return (NET_API_STATUS)r.out.result;
82 /****************************************************************
83 NetUnjoinDomain
84 ****************************************************************/
86 NET_API_STATUS NetUnjoinDomain(const char * server_name /* [in] [unique] */,
87 const char * account /* [in] [unique] */,
88 const char * password /* [in] [unique] */,
89 uint32_t unjoin_flags /* [in] */)
91 struct NetUnjoinDomain r;
92 struct libnetapi_ctx *ctx = NULL;
93 NET_API_STATUS status;
94 WERROR werr;
95 TALLOC_CTX *frame = talloc_stackframe();
97 ZERO_STRUCT(r);
99 status = libnetapi_getctx(&ctx);
100 if (status != 0) {
101 TALLOC_FREE(frame);
102 return status;
105 /* In parameters */
106 r.in.server_name = server_name;
107 r.in.account = account;
108 r.in.password = password;
109 r.in.unjoin_flags = unjoin_flags;
111 /* Out parameters */
113 if (DEBUGLEVEL >= 10) {
114 NDR_PRINT_IN_DEBUG(NetUnjoinDomain, &r);
117 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
118 werr = NetUnjoinDomain_l(ctx, &r);
119 } else {
120 werr = NetUnjoinDomain_r(ctx, &r);
123 r.out.result = W_ERROR_V(werr);
125 if (DEBUGLEVEL >= 10) {
126 NDR_PRINT_OUT_DEBUG(NetUnjoinDomain, &r);
129 TALLOC_FREE(frame);
130 return (NET_API_STATUS)r.out.result;
133 /****************************************************************
134 NetGetJoinInformation
135 ****************************************************************/
137 NET_API_STATUS NetGetJoinInformation(const char * server_name /* [in] [unique] */,
138 const char * *name_buffer /* [out] [ref] */,
139 uint16_t *name_type /* [out] [ref] */)
141 struct NetGetJoinInformation r;
142 struct libnetapi_ctx *ctx = NULL;
143 NET_API_STATUS status;
144 WERROR werr;
145 TALLOC_CTX *frame = talloc_stackframe();
147 ZERO_STRUCT(r);
149 status = libnetapi_getctx(&ctx);
150 if (status != 0) {
151 TALLOC_FREE(frame);
152 return status;
155 /* In parameters */
156 r.in.server_name = server_name;
158 /* Out parameters */
159 r.out.name_buffer = name_buffer;
160 r.out.name_type = name_type;
162 if (DEBUGLEVEL >= 10) {
163 NDR_PRINT_IN_DEBUG(NetGetJoinInformation, &r);
166 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
167 werr = NetGetJoinInformation_l(ctx, &r);
168 } else {
169 werr = NetGetJoinInformation_r(ctx, &r);
172 r.out.result = W_ERROR_V(werr);
174 if (DEBUGLEVEL >= 10) {
175 NDR_PRINT_OUT_DEBUG(NetGetJoinInformation, &r);
178 TALLOC_FREE(frame);
179 return (NET_API_STATUS)r.out.result;
182 /****************************************************************
183 NetGetJoinableOUs
184 ****************************************************************/
186 NET_API_STATUS NetGetJoinableOUs(const char * server_name /* [in] [unique] */,
187 const char * domain /* [in] [ref] */,
188 const char * account /* [in] [unique] */,
189 const char * password /* [in] [unique] */,
190 uint32_t *ou_count /* [out] [ref] */,
191 const char * **ous /* [out] [ref] */)
193 struct NetGetJoinableOUs r;
194 struct libnetapi_ctx *ctx = NULL;
195 NET_API_STATUS status;
196 WERROR werr;
197 TALLOC_CTX *frame = talloc_stackframe();
199 ZERO_STRUCT(r);
201 status = libnetapi_getctx(&ctx);
202 if (status != 0) {
203 TALLOC_FREE(frame);
204 return status;
207 /* In parameters */
208 r.in.server_name = server_name;
209 r.in.domain = domain;
210 r.in.account = account;
211 r.in.password = password;
213 /* Out parameters */
214 r.out.ou_count = ou_count;
215 r.out.ous = ous;
217 if (DEBUGLEVEL >= 10) {
218 NDR_PRINT_IN_DEBUG(NetGetJoinableOUs, &r);
221 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
222 werr = NetGetJoinableOUs_l(ctx, &r);
223 } else {
224 werr = NetGetJoinableOUs_r(ctx, &r);
227 r.out.result = W_ERROR_V(werr);
229 if (DEBUGLEVEL >= 10) {
230 NDR_PRINT_OUT_DEBUG(NetGetJoinableOUs, &r);
233 TALLOC_FREE(frame);
234 return (NET_API_STATUS)r.out.result;
237 /****************************************************************
238 NetRenameMachineInDomain
239 ****************************************************************/
241 NET_API_STATUS NetRenameMachineInDomain(const char * server_name /* [in] */,
242 const char * new_machine_name /* [in] */,
243 const char * account /* [in] */,
244 const char * password /* [in] */,
245 uint32_t rename_options /* [in] */)
247 struct NetRenameMachineInDomain r;
248 struct libnetapi_ctx *ctx = NULL;
249 NET_API_STATUS status;
250 WERROR werr;
251 TALLOC_CTX *frame = talloc_stackframe();
253 ZERO_STRUCT(r);
255 status = libnetapi_getctx(&ctx);
256 if (status != 0) {
257 TALLOC_FREE(frame);
258 return status;
261 /* In parameters */
262 r.in.server_name = server_name;
263 r.in.new_machine_name = new_machine_name;
264 r.in.account = account;
265 r.in.password = password;
266 r.in.rename_options = rename_options;
268 /* Out parameters */
270 if (DEBUGLEVEL >= 10) {
271 NDR_PRINT_IN_DEBUG(NetRenameMachineInDomain, &r);
274 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
275 werr = NetRenameMachineInDomain_l(ctx, &r);
276 } else {
277 werr = NetRenameMachineInDomain_r(ctx, &r);
280 r.out.result = W_ERROR_V(werr);
282 if (DEBUGLEVEL >= 10) {
283 NDR_PRINT_OUT_DEBUG(NetRenameMachineInDomain, &r);
286 TALLOC_FREE(frame);
287 return (NET_API_STATUS)r.out.result;
290 /****************************************************************
291 NetProvisionComputerAccount
292 ****************************************************************/
294 NET_API_STATUS NetProvisionComputerAccount(const char * domain /* [in] [ref] */,
295 const char * machine_name /* [in] [ref] */,
296 const char * machine_account_ou /* [in] [unique] */,
297 const char * dcname /* [in] [unique] */,
298 uint32_t options /* [in] */,
299 uint8_t **provision_bin_data /* [in,out] [unique] */,
300 uint32_t *provision_bin_data_size /* [in,out] [unique] */,
301 const char * *provision_text_data /* [in,out] [unique] */)
303 struct NetProvisionComputerAccount r;
304 struct libnetapi_ctx *ctx = NULL;
305 NET_API_STATUS status;
306 WERROR werr;
307 TALLOC_CTX *frame = talloc_stackframe();
309 ZERO_STRUCT(r);
311 status = libnetapi_getctx(&ctx);
312 if (status != 0) {
313 TALLOC_FREE(frame);
314 return status;
317 /* In parameters */
318 r.in.domain = domain;
319 r.in.machine_name = machine_name;
320 r.in.machine_account_ou = machine_account_ou;
321 r.in.dcname = dcname;
322 r.in.options = options;
323 r.in.provision_bin_data = provision_bin_data;
324 r.in.provision_bin_data_size = provision_bin_data_size;
325 r.in.provision_text_data = provision_text_data;
327 /* Out parameters */
328 r.out.provision_bin_data = provision_bin_data;
329 r.out.provision_bin_data_size = provision_bin_data_size;
330 r.out.provision_text_data = provision_text_data;
332 if (DEBUGLEVEL >= 10) {
333 NDR_PRINT_IN_DEBUG(NetProvisionComputerAccount, &r);
336 werr = NetProvisionComputerAccount_l(ctx, &r);
338 r.out.result = W_ERROR_V(werr);
340 if (DEBUGLEVEL >= 10) {
341 NDR_PRINT_OUT_DEBUG(NetProvisionComputerAccount, &r);
344 TALLOC_FREE(frame);
345 return (NET_API_STATUS)r.out.result;
348 /****************************************************************
349 NetRequestOfflineDomainJoin
350 ****************************************************************/
352 NET_API_STATUS NetRequestOfflineDomainJoin(uint8_t *provision_bin_data /* [in] [unique] */,
353 uint32_t provision_bin_data_size /* [in] */,
354 uint32_t options /* [in] */,
355 const char * windows_path /* [in] [unique] */)
357 struct NetRequestOfflineDomainJoin r;
358 struct libnetapi_ctx *ctx = NULL;
359 NET_API_STATUS status;
360 WERROR werr;
361 TALLOC_CTX *frame = talloc_stackframe();
363 ZERO_STRUCT(r);
365 status = libnetapi_getctx(&ctx);
366 if (status != 0) {
367 TALLOC_FREE(frame);
368 return status;
371 /* In parameters */
372 r.in.provision_bin_data = provision_bin_data;
373 r.in.provision_bin_data_size = provision_bin_data_size;
374 r.in.options = options;
375 r.in.windows_path = windows_path;
377 /* Out parameters */
379 if (DEBUGLEVEL >= 10) {
380 NDR_PRINT_IN_DEBUG(NetRequestOfflineDomainJoin, &r);
383 werr = NetRequestOfflineDomainJoin_l(ctx, &r);
385 r.out.result = W_ERROR_V(werr);
387 if (DEBUGLEVEL >= 10) {
388 NDR_PRINT_OUT_DEBUG(NetRequestOfflineDomainJoin, &r);
391 TALLOC_FREE(frame);
392 return (NET_API_STATUS)r.out.result;
395 /****************************************************************
396 NetComposeOfflineDomainJoin
397 ****************************************************************/
398 NET_API_STATUS NetComposeOfflineDomainJoin(const char *dns_domain_name /* [in] [ref] */,
399 const char *netbios_domain_name /* [in] [ref] */,
400 struct domsid *domain_sid /* [in] [ref] */,
401 struct GUID *domain_guid /* [in] [ref] */,
402 const char *forest_name /* [in] [ref] */,
403 const char *machine_account_name /* [in] [ref] */,
404 const char *machine_account_password /* [in] [ref] */,
405 const char *dc_name /* [in] [unique] */,
406 const char *dc_address /* [in] [unique] */,
407 int domain_is_ad /* [in] */,
408 uint8_t **compose_bin_data /* [in,out] [unique] */,
409 uint32_t *compose_bin_data_size /* [in,out] [unique] */,
410 const char * *compose_text_data /* [in,out] [unique] */)
412 struct NetComposeOfflineDomainJoin r;
413 struct libnetapi_ctx *ctx = NULL;
414 NET_API_STATUS status;
415 WERROR werr;
416 TALLOC_CTX *frame = talloc_stackframe();
418 ZERO_STRUCT(r);
420 status = libnetapi_getctx(&ctx);
421 if (status != 0) {
422 TALLOC_FREE(frame);
423 return status;
426 /* In parameters */
427 r.in.dns_domain_name = dns_domain_name;
428 r.in.netbios_domain_name = netbios_domain_name;
429 r.in.domain_sid = domain_sid;
430 r.in.domain_guid = domain_guid;
431 r.in.forest_name = forest_name;
432 r.in.machine_account_name = machine_account_name;
433 r.in.machine_account_password = machine_account_password;
434 r.in.dc_name = dc_name;
435 r.in.dc_address = dc_address;
436 r.in.domain_is_ad = domain_is_ad;
437 r.in.compose_bin_data = compose_bin_data;
438 r.in.compose_bin_data_size = compose_bin_data_size;
439 r.in.compose_text_data = compose_text_data;
441 /* Out parameters */
442 r.out.compose_bin_data = compose_bin_data;
443 r.out.compose_bin_data_size = compose_bin_data_size;
444 r.out.compose_text_data = compose_text_data;
446 if (DEBUGLEVEL >= 10) {
447 NDR_PRINT_IN_DEBUG(NetComposeOfflineDomainJoin, &r);
450 werr = NetComposeOfflineDomainJoin_l(ctx, &r);
452 r.out.result = W_ERROR_V(werr);
454 if (DEBUGLEVEL >= 10) {
455 NDR_PRINT_OUT_DEBUG(NetComposeOfflineDomainJoin, &r);
458 TALLOC_FREE(frame);
459 return (NET_API_STATUS)r.out.result;
462 /****************************************************************
463 NetServerGetInfo
464 ****************************************************************/
466 NET_API_STATUS NetServerGetInfo(const char * server_name /* [in] [unique] */,
467 uint32_t level /* [in] */,
468 uint8_t **buffer /* [out] [ref] */)
470 struct NetServerGetInfo r;
471 struct libnetapi_ctx *ctx = NULL;
472 NET_API_STATUS status;
473 WERROR werr;
474 TALLOC_CTX *frame = talloc_stackframe();
476 ZERO_STRUCT(r);
478 status = libnetapi_getctx(&ctx);
479 if (status != 0) {
480 TALLOC_FREE(frame);
481 return status;
484 /* In parameters */
485 r.in.server_name = server_name;
486 r.in.level = level;
488 /* Out parameters */
489 r.out.buffer = buffer;
491 if (DEBUGLEVEL >= 10) {
492 NDR_PRINT_IN_DEBUG(NetServerGetInfo, &r);
495 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
496 werr = NetServerGetInfo_l(ctx, &r);
497 } else {
498 werr = NetServerGetInfo_r(ctx, &r);
501 r.out.result = W_ERROR_V(werr);
503 if (DEBUGLEVEL >= 10) {
504 NDR_PRINT_OUT_DEBUG(NetServerGetInfo, &r);
507 TALLOC_FREE(frame);
508 return (NET_API_STATUS)r.out.result;
511 /****************************************************************
512 NetServerSetInfo
513 ****************************************************************/
515 NET_API_STATUS NetServerSetInfo(const char * server_name /* [in] [unique] */,
516 uint32_t level /* [in] */,
517 uint8_t *buffer /* [in] [ref] */,
518 uint32_t *parm_error /* [out] [ref] */)
520 struct NetServerSetInfo r;
521 struct libnetapi_ctx *ctx = NULL;
522 NET_API_STATUS status;
523 WERROR werr;
524 TALLOC_CTX *frame = talloc_stackframe();
526 ZERO_STRUCT(r);
528 status = libnetapi_getctx(&ctx);
529 if (status != 0) {
530 TALLOC_FREE(frame);
531 return status;
534 /* In parameters */
535 r.in.server_name = server_name;
536 r.in.level = level;
537 r.in.buffer = buffer;
539 /* Out parameters */
540 r.out.parm_error = parm_error;
542 if (DEBUGLEVEL >= 10) {
543 NDR_PRINT_IN_DEBUG(NetServerSetInfo, &r);
546 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
547 werr = NetServerSetInfo_l(ctx, &r);
548 } else {
549 werr = NetServerSetInfo_r(ctx, &r);
552 r.out.result = W_ERROR_V(werr);
554 if (DEBUGLEVEL >= 10) {
555 NDR_PRINT_OUT_DEBUG(NetServerSetInfo, &r);
558 TALLOC_FREE(frame);
559 return (NET_API_STATUS)r.out.result;
562 /****************************************************************
563 NetWkstaGetInfo
564 ****************************************************************/
566 NET_API_STATUS NetWkstaGetInfo(const char * server_name /* [in] [unique] */,
567 uint32_t level /* [in] */,
568 uint8_t **buffer /* [out] [ref] */)
570 struct NetWkstaGetInfo r;
571 struct libnetapi_ctx *ctx = NULL;
572 NET_API_STATUS status;
573 WERROR werr;
574 TALLOC_CTX *frame = talloc_stackframe();
576 ZERO_STRUCT(r);
578 status = libnetapi_getctx(&ctx);
579 if (status != 0) {
580 TALLOC_FREE(frame);
581 return status;
584 /* In parameters */
585 r.in.server_name = server_name;
586 r.in.level = level;
588 /* Out parameters */
589 r.out.buffer = buffer;
591 if (DEBUGLEVEL >= 10) {
592 NDR_PRINT_IN_DEBUG(NetWkstaGetInfo, &r);
595 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
596 werr = NetWkstaGetInfo_l(ctx, &r);
597 } else {
598 werr = NetWkstaGetInfo_r(ctx, &r);
601 r.out.result = W_ERROR_V(werr);
603 if (DEBUGLEVEL >= 10) {
604 NDR_PRINT_OUT_DEBUG(NetWkstaGetInfo, &r);
607 TALLOC_FREE(frame);
608 return (NET_API_STATUS)r.out.result;
611 /****************************************************************
612 NetGetDCName
613 ****************************************************************/
615 NET_API_STATUS NetGetDCName(const char * server_name /* [in] [unique] */,
616 const char * domain_name /* [in] [unique] */,
617 uint8_t **buffer /* [out] [ref] */)
619 struct NetGetDCName r;
620 struct libnetapi_ctx *ctx = NULL;
621 NET_API_STATUS status;
622 WERROR werr;
623 TALLOC_CTX *frame = talloc_stackframe();
625 ZERO_STRUCT(r);
627 status = libnetapi_getctx(&ctx);
628 if (status != 0) {
629 TALLOC_FREE(frame);
630 return status;
633 /* In parameters */
634 r.in.server_name = server_name;
635 r.in.domain_name = domain_name;
637 /* Out parameters */
638 r.out.buffer = buffer;
640 if (DEBUGLEVEL >= 10) {
641 NDR_PRINT_IN_DEBUG(NetGetDCName, &r);
644 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
645 werr = NetGetDCName_l(ctx, &r);
646 } else {
647 werr = NetGetDCName_r(ctx, &r);
650 r.out.result = W_ERROR_V(werr);
652 if (DEBUGLEVEL >= 10) {
653 NDR_PRINT_OUT_DEBUG(NetGetDCName, &r);
656 TALLOC_FREE(frame);
657 return (NET_API_STATUS)r.out.result;
660 /****************************************************************
661 NetGetAnyDCName
662 ****************************************************************/
664 NET_API_STATUS NetGetAnyDCName(const char * server_name /* [in] [unique] */,
665 const char * domain_name /* [in] [unique] */,
666 uint8_t **buffer /* [out] [ref] */)
668 struct NetGetAnyDCName r;
669 struct libnetapi_ctx *ctx = NULL;
670 NET_API_STATUS status;
671 WERROR werr;
672 TALLOC_CTX *frame = talloc_stackframe();
674 ZERO_STRUCT(r);
676 status = libnetapi_getctx(&ctx);
677 if (status != 0) {
678 TALLOC_FREE(frame);
679 return status;
682 /* In parameters */
683 r.in.server_name = server_name;
684 r.in.domain_name = domain_name;
686 /* Out parameters */
687 r.out.buffer = buffer;
689 if (DEBUGLEVEL >= 10) {
690 NDR_PRINT_IN_DEBUG(NetGetAnyDCName, &r);
693 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
694 werr = NetGetAnyDCName_l(ctx, &r);
695 } else {
696 werr = NetGetAnyDCName_r(ctx, &r);
699 r.out.result = W_ERROR_V(werr);
701 if (DEBUGLEVEL >= 10) {
702 NDR_PRINT_OUT_DEBUG(NetGetAnyDCName, &r);
705 TALLOC_FREE(frame);
706 return (NET_API_STATUS)r.out.result;
709 /****************************************************************
710 DsGetDcName
711 ****************************************************************/
713 NET_API_STATUS DsGetDcName(const char * server_name /* [in] [unique] */,
714 const char * domain_name /* [in] [ref] */,
715 struct GUID *domain_guid /* [in] [unique] */,
716 const char * site_name /* [in] [unique] */,
717 uint32_t flags /* [in] */,
718 struct DOMAIN_CONTROLLER_INFO **dc_info /* [out] [ref] */)
720 struct DsGetDcName r;
721 struct libnetapi_ctx *ctx = NULL;
722 NET_API_STATUS status;
723 WERROR werr;
724 TALLOC_CTX *frame = talloc_stackframe();
726 ZERO_STRUCT(r);
728 status = libnetapi_getctx(&ctx);
729 if (status != 0) {
730 TALLOC_FREE(frame);
731 return status;
734 /* In parameters */
735 r.in.server_name = server_name;
736 r.in.domain_name = domain_name;
737 r.in.domain_guid = domain_guid;
738 r.in.site_name = site_name;
739 r.in.flags = flags;
741 /* Out parameters */
742 r.out.dc_info = dc_info;
744 if (DEBUGLEVEL >= 10) {
745 NDR_PRINT_IN_DEBUG(DsGetDcName, &r);
748 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
749 werr = DsGetDcName_l(ctx, &r);
750 } else {
751 werr = DsGetDcName_r(ctx, &r);
754 r.out.result = W_ERROR_V(werr);
756 if (DEBUGLEVEL >= 10) {
757 NDR_PRINT_OUT_DEBUG(DsGetDcName, &r);
760 TALLOC_FREE(frame);
761 return (NET_API_STATUS)r.out.result;
764 /****************************************************************
765 NetUserAdd
766 ****************************************************************/
768 NET_API_STATUS NetUserAdd(const char * server_name /* [in] [unique] */,
769 uint32_t level /* [in] */,
770 uint8_t *buffer /* [in] [ref] */,
771 uint32_t *parm_error /* [out] [ref] */)
773 struct NetUserAdd r;
774 struct libnetapi_ctx *ctx = NULL;
775 NET_API_STATUS status;
776 WERROR werr;
777 TALLOC_CTX *frame = talloc_stackframe();
779 ZERO_STRUCT(r);
781 status = libnetapi_getctx(&ctx);
782 if (status != 0) {
783 TALLOC_FREE(frame);
784 return status;
787 /* In parameters */
788 r.in.server_name = server_name;
789 r.in.level = level;
790 r.in.buffer = buffer;
792 /* Out parameters */
793 r.out.parm_error = parm_error;
795 if (DEBUGLEVEL >= 10) {
796 NDR_PRINT_IN_DEBUG(NetUserAdd, &r);
799 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
800 werr = NetUserAdd_l(ctx, &r);
801 } else {
802 werr = NetUserAdd_r(ctx, &r);
805 r.out.result = W_ERROR_V(werr);
807 if (DEBUGLEVEL >= 10) {
808 NDR_PRINT_OUT_DEBUG(NetUserAdd, &r);
811 TALLOC_FREE(frame);
812 return (NET_API_STATUS)r.out.result;
815 /****************************************************************
816 NetUserDel
817 ****************************************************************/
819 NET_API_STATUS NetUserDel(const char * server_name /* [in] [unique] */,
820 const char * user_name /* [in] [ref] */)
822 struct NetUserDel r;
823 struct libnetapi_ctx *ctx = NULL;
824 NET_API_STATUS status;
825 WERROR werr;
826 TALLOC_CTX *frame = talloc_stackframe();
828 ZERO_STRUCT(r);
830 status = libnetapi_getctx(&ctx);
831 if (status != 0) {
832 TALLOC_FREE(frame);
833 return status;
836 /* In parameters */
837 r.in.server_name = server_name;
838 r.in.user_name = user_name;
840 /* Out parameters */
842 if (DEBUGLEVEL >= 10) {
843 NDR_PRINT_IN_DEBUG(NetUserDel, &r);
846 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
847 werr = NetUserDel_l(ctx, &r);
848 } else {
849 werr = NetUserDel_r(ctx, &r);
852 r.out.result = W_ERROR_V(werr);
854 if (DEBUGLEVEL >= 10) {
855 NDR_PRINT_OUT_DEBUG(NetUserDel, &r);
858 TALLOC_FREE(frame);
859 return (NET_API_STATUS)r.out.result;
862 /****************************************************************
863 NetUserEnum
864 ****************************************************************/
866 NET_API_STATUS NetUserEnum(const char * server_name /* [in] [unique] */,
867 uint32_t level /* [in] */,
868 uint32_t filter /* [in] */,
869 uint8_t **buffer /* [out] [ref] */,
870 uint32_t prefmaxlen /* [in] */,
871 uint32_t *entries_read /* [out] [ref] */,
872 uint32_t *total_entries /* [out] [ref] */,
873 uint32_t *resume_handle /* [in,out] [ref] */)
875 struct NetUserEnum r;
876 struct libnetapi_ctx *ctx = NULL;
877 NET_API_STATUS status;
878 WERROR werr;
879 TALLOC_CTX *frame = talloc_stackframe();
881 ZERO_STRUCT(r);
883 status = libnetapi_getctx(&ctx);
884 if (status != 0) {
885 TALLOC_FREE(frame);
886 return status;
889 /* In parameters */
890 r.in.server_name = server_name;
891 r.in.level = level;
892 r.in.filter = filter;
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(NetUserEnum, &r);
906 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
907 werr = NetUserEnum_l(ctx, &r);
908 } else {
909 werr = NetUserEnum_r(ctx, &r);
912 r.out.result = W_ERROR_V(werr);
914 if (DEBUGLEVEL >= 10) {
915 NDR_PRINT_OUT_DEBUG(NetUserEnum, &r);
918 TALLOC_FREE(frame);
919 return (NET_API_STATUS)r.out.result;
922 /****************************************************************
923 NetUserChangePassword
924 ****************************************************************/
926 NET_API_STATUS NetUserChangePassword(const char * domain_name /* [in] */,
927 const char * user_name /* [in] */,
928 const char * old_password /* [in] */,
929 const char * new_password /* [in] */)
931 struct NetUserChangePassword r;
932 struct libnetapi_ctx *ctx = NULL;
933 NET_API_STATUS status;
934 WERROR werr;
935 TALLOC_CTX *frame = talloc_stackframe();
937 ZERO_STRUCT(r);
939 status = libnetapi_getctx(&ctx);
940 if (status != 0) {
941 TALLOC_FREE(frame);
942 return status;
945 /* In parameters */
946 r.in.domain_name = domain_name;
947 r.in.user_name = user_name;
948 r.in.old_password = old_password;
949 r.in.new_password = new_password;
951 /* Out parameters */
953 if (DEBUGLEVEL >= 10) {
954 NDR_PRINT_IN_DEBUG(NetUserChangePassword, &r);
957 werr = NetUserChangePassword_l(ctx, &r);
959 r.out.result = W_ERROR_V(werr);
961 if (DEBUGLEVEL >= 10) {
962 NDR_PRINT_OUT_DEBUG(NetUserChangePassword, &r);
965 TALLOC_FREE(frame);
966 return (NET_API_STATUS)r.out.result;
969 /****************************************************************
970 NetUserGetInfo
971 ****************************************************************/
973 NET_API_STATUS NetUserGetInfo(const char * server_name /* [in] */,
974 const char * user_name /* [in] */,
975 uint32_t level /* [in] */,
976 uint8_t **buffer /* [out] [ref] */)
978 struct NetUserGetInfo r;
979 struct libnetapi_ctx *ctx = NULL;
980 NET_API_STATUS status;
981 WERROR werr;
982 TALLOC_CTX *frame = talloc_stackframe();
984 ZERO_STRUCT(r);
986 status = libnetapi_getctx(&ctx);
987 if (status != 0) {
988 TALLOC_FREE(frame);
989 return status;
992 /* In parameters */
993 r.in.server_name = server_name;
994 r.in.user_name = user_name;
995 r.in.level = level;
997 /* Out parameters */
998 r.out.buffer = buffer;
1000 if (DEBUGLEVEL >= 10) {
1001 NDR_PRINT_IN_DEBUG(NetUserGetInfo, &r);
1004 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1005 werr = NetUserGetInfo_l(ctx, &r);
1006 } else {
1007 werr = NetUserGetInfo_r(ctx, &r);
1010 r.out.result = W_ERROR_V(werr);
1012 if (DEBUGLEVEL >= 10) {
1013 NDR_PRINT_OUT_DEBUG(NetUserGetInfo, &r);
1016 TALLOC_FREE(frame);
1017 return (NET_API_STATUS)r.out.result;
1020 /****************************************************************
1021 NetUserSetInfo
1022 ****************************************************************/
1024 NET_API_STATUS NetUserSetInfo(const char * server_name /* [in] */,
1025 const char * user_name /* [in] */,
1026 uint32_t level /* [in] */,
1027 uint8_t *buffer /* [in] [ref] */,
1028 uint32_t *parm_err /* [out] [ref] */)
1030 struct NetUserSetInfo r;
1031 struct libnetapi_ctx *ctx = NULL;
1032 NET_API_STATUS status;
1033 WERROR werr;
1034 TALLOC_CTX *frame = talloc_stackframe();
1036 ZERO_STRUCT(r);
1038 status = libnetapi_getctx(&ctx);
1039 if (status != 0) {
1040 TALLOC_FREE(frame);
1041 return status;
1044 /* In parameters */
1045 r.in.server_name = server_name;
1046 r.in.user_name = user_name;
1047 r.in.level = level;
1048 r.in.buffer = buffer;
1050 /* Out parameters */
1051 r.out.parm_err = parm_err;
1053 if (DEBUGLEVEL >= 10) {
1054 NDR_PRINT_IN_DEBUG(NetUserSetInfo, &r);
1057 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1058 werr = NetUserSetInfo_l(ctx, &r);
1059 } else {
1060 werr = NetUserSetInfo_r(ctx, &r);
1063 r.out.result = W_ERROR_V(werr);
1065 if (DEBUGLEVEL >= 10) {
1066 NDR_PRINT_OUT_DEBUG(NetUserSetInfo, &r);
1069 TALLOC_FREE(frame);
1070 return (NET_API_STATUS)r.out.result;
1073 /****************************************************************
1074 NetUserGetGroups
1075 ****************************************************************/
1077 NET_API_STATUS NetUserGetGroups(const char * server_name /* [in] */,
1078 const char * user_name /* [in] */,
1079 uint32_t level /* [in] */,
1080 uint8_t **buffer /* [out] [ref] */,
1081 uint32_t prefmaxlen /* [in] */,
1082 uint32_t *entries_read /* [out] [ref] */,
1083 uint32_t *total_entries /* [out] [ref] */)
1085 struct NetUserGetGroups r;
1086 struct libnetapi_ctx *ctx = NULL;
1087 NET_API_STATUS status;
1088 WERROR werr;
1089 TALLOC_CTX *frame = talloc_stackframe();
1091 ZERO_STRUCT(r);
1093 status = libnetapi_getctx(&ctx);
1094 if (status != 0) {
1095 TALLOC_FREE(frame);
1096 return status;
1099 /* In parameters */
1100 r.in.server_name = server_name;
1101 r.in.user_name = user_name;
1102 r.in.level = level;
1103 r.in.prefmaxlen = prefmaxlen;
1105 /* Out parameters */
1106 r.out.buffer = buffer;
1107 r.out.entries_read = entries_read;
1108 r.out.total_entries = total_entries;
1110 if (DEBUGLEVEL >= 10) {
1111 NDR_PRINT_IN_DEBUG(NetUserGetGroups, &r);
1114 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1115 werr = NetUserGetGroups_l(ctx, &r);
1116 } else {
1117 werr = NetUserGetGroups_r(ctx, &r);
1120 r.out.result = W_ERROR_V(werr);
1122 if (DEBUGLEVEL >= 10) {
1123 NDR_PRINT_OUT_DEBUG(NetUserGetGroups, &r);
1126 TALLOC_FREE(frame);
1127 return (NET_API_STATUS)r.out.result;
1130 /****************************************************************
1131 NetUserSetGroups
1132 ****************************************************************/
1134 NET_API_STATUS NetUserSetGroups(const char * server_name /* [in] */,
1135 const char * user_name /* [in] */,
1136 uint32_t level /* [in] */,
1137 uint8_t *buffer /* [in] [ref] */,
1138 uint32_t num_entries /* [in] */)
1140 struct NetUserSetGroups r;
1141 struct libnetapi_ctx *ctx = NULL;
1142 NET_API_STATUS status;
1143 WERROR werr;
1144 TALLOC_CTX *frame = talloc_stackframe();
1146 ZERO_STRUCT(r);
1148 status = libnetapi_getctx(&ctx);
1149 if (status != 0) {
1150 TALLOC_FREE(frame);
1151 return status;
1154 /* In parameters */
1155 r.in.server_name = server_name;
1156 r.in.user_name = user_name;
1157 r.in.level = level;
1158 r.in.buffer = buffer;
1159 r.in.num_entries = num_entries;
1161 /* Out parameters */
1163 if (DEBUGLEVEL >= 10) {
1164 NDR_PRINT_IN_DEBUG(NetUserSetGroups, &r);
1167 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1168 werr = NetUserSetGroups_l(ctx, &r);
1169 } else {
1170 werr = NetUserSetGroups_r(ctx, &r);
1173 r.out.result = W_ERROR_V(werr);
1175 if (DEBUGLEVEL >= 10) {
1176 NDR_PRINT_OUT_DEBUG(NetUserSetGroups, &r);
1179 TALLOC_FREE(frame);
1180 return (NET_API_STATUS)r.out.result;
1183 /****************************************************************
1184 NetUserGetLocalGroups
1185 ****************************************************************/
1187 NET_API_STATUS NetUserGetLocalGroups(const char * server_name /* [in] */,
1188 const char * user_name /* [in] */,
1189 uint32_t level /* [in] */,
1190 uint32_t flags /* [in] */,
1191 uint8_t **buffer /* [out] [ref] */,
1192 uint32_t prefmaxlen /* [in] */,
1193 uint32_t *entries_read /* [out] [ref] */,
1194 uint32_t *total_entries /* [out] [ref] */)
1196 struct NetUserGetLocalGroups r;
1197 struct libnetapi_ctx *ctx = NULL;
1198 NET_API_STATUS status;
1199 WERROR werr;
1200 TALLOC_CTX *frame = talloc_stackframe();
1202 ZERO_STRUCT(r);
1204 status = libnetapi_getctx(&ctx);
1205 if (status != 0) {
1206 TALLOC_FREE(frame);
1207 return status;
1210 /* In parameters */
1211 r.in.server_name = server_name;
1212 r.in.user_name = user_name;
1213 r.in.level = level;
1214 r.in.flags = flags;
1215 r.in.prefmaxlen = prefmaxlen;
1217 /* Out parameters */
1218 r.out.buffer = buffer;
1219 r.out.entries_read = entries_read;
1220 r.out.total_entries = total_entries;
1222 if (DEBUGLEVEL >= 10) {
1223 NDR_PRINT_IN_DEBUG(NetUserGetLocalGroups, &r);
1226 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1227 werr = NetUserGetLocalGroups_l(ctx, &r);
1228 } else {
1229 werr = NetUserGetLocalGroups_r(ctx, &r);
1232 r.out.result = W_ERROR_V(werr);
1234 if (DEBUGLEVEL >= 10) {
1235 NDR_PRINT_OUT_DEBUG(NetUserGetLocalGroups, &r);
1238 TALLOC_FREE(frame);
1239 return (NET_API_STATUS)r.out.result;
1242 /****************************************************************
1243 NetUserModalsGet
1244 ****************************************************************/
1246 NET_API_STATUS NetUserModalsGet(const char * server_name /* [in] */,
1247 uint32_t level /* [in] */,
1248 uint8_t **buffer /* [out] [ref] */)
1250 struct NetUserModalsGet r;
1251 struct libnetapi_ctx *ctx = NULL;
1252 NET_API_STATUS status;
1253 WERROR werr;
1254 TALLOC_CTX *frame = talloc_stackframe();
1256 ZERO_STRUCT(r);
1258 status = libnetapi_getctx(&ctx);
1259 if (status != 0) {
1260 TALLOC_FREE(frame);
1261 return status;
1264 /* In parameters */
1265 r.in.server_name = server_name;
1266 r.in.level = level;
1268 /* Out parameters */
1269 r.out.buffer = buffer;
1271 if (DEBUGLEVEL >= 10) {
1272 NDR_PRINT_IN_DEBUG(NetUserModalsGet, &r);
1275 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1276 werr = NetUserModalsGet_l(ctx, &r);
1277 } else {
1278 werr = NetUserModalsGet_r(ctx, &r);
1281 r.out.result = W_ERROR_V(werr);
1283 if (DEBUGLEVEL >= 10) {
1284 NDR_PRINT_OUT_DEBUG(NetUserModalsGet, &r);
1287 TALLOC_FREE(frame);
1288 return (NET_API_STATUS)r.out.result;
1291 /****************************************************************
1292 NetUserModalsSet
1293 ****************************************************************/
1295 NET_API_STATUS NetUserModalsSet(const char * server_name /* [in] */,
1296 uint32_t level /* [in] */,
1297 uint8_t *buffer /* [in] [ref] */,
1298 uint32_t *parm_err /* [out] [ref] */)
1300 struct NetUserModalsSet r;
1301 struct libnetapi_ctx *ctx = NULL;
1302 NET_API_STATUS status;
1303 WERROR werr;
1304 TALLOC_CTX *frame = talloc_stackframe();
1306 ZERO_STRUCT(r);
1308 status = libnetapi_getctx(&ctx);
1309 if (status != 0) {
1310 TALLOC_FREE(frame);
1311 return status;
1314 /* In parameters */
1315 r.in.server_name = server_name;
1316 r.in.level = level;
1317 r.in.buffer = buffer;
1319 /* Out parameters */
1320 r.out.parm_err = parm_err;
1322 if (DEBUGLEVEL >= 10) {
1323 NDR_PRINT_IN_DEBUG(NetUserModalsSet, &r);
1326 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1327 werr = NetUserModalsSet_l(ctx, &r);
1328 } else {
1329 werr = NetUserModalsSet_r(ctx, &r);
1332 r.out.result = W_ERROR_V(werr);
1334 if (DEBUGLEVEL >= 10) {
1335 NDR_PRINT_OUT_DEBUG(NetUserModalsSet, &r);
1338 TALLOC_FREE(frame);
1339 return (NET_API_STATUS)r.out.result;
1342 /****************************************************************
1343 NetQueryDisplayInformation
1344 ****************************************************************/
1346 NET_API_STATUS NetQueryDisplayInformation(const char * server_name /* [in] [unique] */,
1347 uint32_t level /* [in] */,
1348 uint32_t idx /* [in] */,
1349 uint32_t entries_requested /* [in] */,
1350 uint32_t prefmaxlen /* [in] */,
1351 uint32_t *entries_read /* [out] [ref] */,
1352 void **buffer /* [out] [noprint,ref] */)
1354 struct NetQueryDisplayInformation r;
1355 struct libnetapi_ctx *ctx = NULL;
1356 NET_API_STATUS status;
1357 WERROR werr;
1358 TALLOC_CTX *frame = talloc_stackframe();
1360 ZERO_STRUCT(r);
1362 status = libnetapi_getctx(&ctx);
1363 if (status != 0) {
1364 TALLOC_FREE(frame);
1365 return status;
1368 /* In parameters */
1369 r.in.server_name = server_name;
1370 r.in.level = level;
1371 r.in.idx = idx;
1372 r.in.entries_requested = entries_requested;
1373 r.in.prefmaxlen = prefmaxlen;
1375 /* Out parameters */
1376 r.out.entries_read = entries_read;
1377 r.out.buffer = buffer;
1379 if (DEBUGLEVEL >= 10) {
1380 NDR_PRINT_IN_DEBUG(NetQueryDisplayInformation, &r);
1383 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1384 werr = NetQueryDisplayInformation_l(ctx, &r);
1385 } else {
1386 werr = NetQueryDisplayInformation_r(ctx, &r);
1389 r.out.result = W_ERROR_V(werr);
1391 if (DEBUGLEVEL >= 10) {
1392 NDR_PRINT_OUT_DEBUG(NetQueryDisplayInformation, &r);
1395 TALLOC_FREE(frame);
1396 return (NET_API_STATUS)r.out.result;
1399 /****************************************************************
1400 NetGroupAdd
1401 ****************************************************************/
1403 NET_API_STATUS NetGroupAdd(const char * server_name /* [in] */,
1404 uint32_t level /* [in] */,
1405 uint8_t *buffer /* [in] [ref] */,
1406 uint32_t *parm_err /* [out] [ref] */)
1408 struct NetGroupAdd r;
1409 struct libnetapi_ctx *ctx = NULL;
1410 NET_API_STATUS status;
1411 WERROR werr;
1412 TALLOC_CTX *frame = talloc_stackframe();
1414 ZERO_STRUCT(r);
1416 status = libnetapi_getctx(&ctx);
1417 if (status != 0) {
1418 TALLOC_FREE(frame);
1419 return status;
1422 /* In parameters */
1423 r.in.server_name = server_name;
1424 r.in.level = level;
1425 r.in.buffer = buffer;
1427 /* Out parameters */
1428 r.out.parm_err = parm_err;
1430 if (DEBUGLEVEL >= 10) {
1431 NDR_PRINT_IN_DEBUG(NetGroupAdd, &r);
1434 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1435 werr = NetGroupAdd_l(ctx, &r);
1436 } else {
1437 werr = NetGroupAdd_r(ctx, &r);
1440 r.out.result = W_ERROR_V(werr);
1442 if (DEBUGLEVEL >= 10) {
1443 NDR_PRINT_OUT_DEBUG(NetGroupAdd, &r);
1446 TALLOC_FREE(frame);
1447 return (NET_API_STATUS)r.out.result;
1450 /****************************************************************
1451 NetGroupDel
1452 ****************************************************************/
1454 NET_API_STATUS NetGroupDel(const char * server_name /* [in] */,
1455 const char * group_name /* [in] */)
1457 struct NetGroupDel r;
1458 struct libnetapi_ctx *ctx = NULL;
1459 NET_API_STATUS status;
1460 WERROR werr;
1461 TALLOC_CTX *frame = talloc_stackframe();
1463 ZERO_STRUCT(r);
1465 status = libnetapi_getctx(&ctx);
1466 if (status != 0) {
1467 TALLOC_FREE(frame);
1468 return status;
1471 /* In parameters */
1472 r.in.server_name = server_name;
1473 r.in.group_name = group_name;
1475 /* Out parameters */
1477 if (DEBUGLEVEL >= 10) {
1478 NDR_PRINT_IN_DEBUG(NetGroupDel, &r);
1481 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1482 werr = NetGroupDel_l(ctx, &r);
1483 } else {
1484 werr = NetGroupDel_r(ctx, &r);
1487 r.out.result = W_ERROR_V(werr);
1489 if (DEBUGLEVEL >= 10) {
1490 NDR_PRINT_OUT_DEBUG(NetGroupDel, &r);
1493 TALLOC_FREE(frame);
1494 return (NET_API_STATUS)r.out.result;
1497 /****************************************************************
1498 NetGroupEnum
1499 ****************************************************************/
1501 NET_API_STATUS NetGroupEnum(const char * server_name /* [in] */,
1502 uint32_t level /* [in] */,
1503 uint8_t **buffer /* [out] [ref] */,
1504 uint32_t prefmaxlen /* [in] */,
1505 uint32_t *entries_read /* [out] [ref] */,
1506 uint32_t *total_entries /* [out] [ref] */,
1507 uint32_t *resume_handle /* [in,out] [ref] */)
1509 struct NetGroupEnum r;
1510 struct libnetapi_ctx *ctx = NULL;
1511 NET_API_STATUS status;
1512 WERROR werr;
1513 TALLOC_CTX *frame = talloc_stackframe();
1515 ZERO_STRUCT(r);
1517 status = libnetapi_getctx(&ctx);
1518 if (status != 0) {
1519 TALLOC_FREE(frame);
1520 return status;
1523 /* In parameters */
1524 r.in.server_name = server_name;
1525 r.in.level = level;
1526 r.in.prefmaxlen = prefmaxlen;
1527 r.in.resume_handle = resume_handle;
1529 /* Out parameters */
1530 r.out.buffer = buffer;
1531 r.out.entries_read = entries_read;
1532 r.out.total_entries = total_entries;
1533 r.out.resume_handle = resume_handle;
1535 if (DEBUGLEVEL >= 10) {
1536 NDR_PRINT_IN_DEBUG(NetGroupEnum, &r);
1539 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1540 werr = NetGroupEnum_l(ctx, &r);
1541 } else {
1542 werr = NetGroupEnum_r(ctx, &r);
1545 r.out.result = W_ERROR_V(werr);
1547 if (DEBUGLEVEL >= 10) {
1548 NDR_PRINT_OUT_DEBUG(NetGroupEnum, &r);
1551 TALLOC_FREE(frame);
1552 return (NET_API_STATUS)r.out.result;
1555 /****************************************************************
1556 NetGroupSetInfo
1557 ****************************************************************/
1559 NET_API_STATUS NetGroupSetInfo(const char * server_name /* [in] */,
1560 const char * group_name /* [in] */,
1561 uint32_t level /* [in] */,
1562 uint8_t *buffer /* [in] [ref] */,
1563 uint32_t *parm_err /* [out] [ref] */)
1565 struct NetGroupSetInfo r;
1566 struct libnetapi_ctx *ctx = NULL;
1567 NET_API_STATUS status;
1568 WERROR werr;
1569 TALLOC_CTX *frame = talloc_stackframe();
1571 ZERO_STRUCT(r);
1573 status = libnetapi_getctx(&ctx);
1574 if (status != 0) {
1575 TALLOC_FREE(frame);
1576 return status;
1579 /* In parameters */
1580 r.in.server_name = server_name;
1581 r.in.group_name = group_name;
1582 r.in.level = level;
1583 r.in.buffer = buffer;
1585 /* Out parameters */
1586 r.out.parm_err = parm_err;
1588 if (DEBUGLEVEL >= 10) {
1589 NDR_PRINT_IN_DEBUG(NetGroupSetInfo, &r);
1592 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1593 werr = NetGroupSetInfo_l(ctx, &r);
1594 } else {
1595 werr = NetGroupSetInfo_r(ctx, &r);
1598 r.out.result = W_ERROR_V(werr);
1600 if (DEBUGLEVEL >= 10) {
1601 NDR_PRINT_OUT_DEBUG(NetGroupSetInfo, &r);
1604 TALLOC_FREE(frame);
1605 return (NET_API_STATUS)r.out.result;
1608 /****************************************************************
1609 NetGroupGetInfo
1610 ****************************************************************/
1612 NET_API_STATUS NetGroupGetInfo(const char * server_name /* [in] */,
1613 const char * group_name /* [in] */,
1614 uint32_t level /* [in] */,
1615 uint8_t **buffer /* [out] [ref] */)
1617 struct NetGroupGetInfo r;
1618 struct libnetapi_ctx *ctx = NULL;
1619 NET_API_STATUS status;
1620 WERROR werr;
1621 TALLOC_CTX *frame = talloc_stackframe();
1623 ZERO_STRUCT(r);
1625 status = libnetapi_getctx(&ctx);
1626 if (status != 0) {
1627 TALLOC_FREE(frame);
1628 return status;
1631 /* In parameters */
1632 r.in.server_name = server_name;
1633 r.in.group_name = group_name;
1634 r.in.level = level;
1636 /* Out parameters */
1637 r.out.buffer = buffer;
1639 if (DEBUGLEVEL >= 10) {
1640 NDR_PRINT_IN_DEBUG(NetGroupGetInfo, &r);
1643 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1644 werr = NetGroupGetInfo_l(ctx, &r);
1645 } else {
1646 werr = NetGroupGetInfo_r(ctx, &r);
1649 r.out.result = W_ERROR_V(werr);
1651 if (DEBUGLEVEL >= 10) {
1652 NDR_PRINT_OUT_DEBUG(NetGroupGetInfo, &r);
1655 TALLOC_FREE(frame);
1656 return (NET_API_STATUS)r.out.result;
1659 /****************************************************************
1660 NetGroupAddUser
1661 ****************************************************************/
1663 NET_API_STATUS NetGroupAddUser(const char * server_name /* [in] */,
1664 const char * group_name /* [in] */,
1665 const char * user_name /* [in] */)
1667 struct NetGroupAddUser r;
1668 struct libnetapi_ctx *ctx = NULL;
1669 NET_API_STATUS status;
1670 WERROR werr;
1671 TALLOC_CTX *frame = talloc_stackframe();
1673 ZERO_STRUCT(r);
1675 status = libnetapi_getctx(&ctx);
1676 if (status != 0) {
1677 TALLOC_FREE(frame);
1678 return status;
1681 /* In parameters */
1682 r.in.server_name = server_name;
1683 r.in.group_name = group_name;
1684 r.in.user_name = user_name;
1686 /* Out parameters */
1688 if (DEBUGLEVEL >= 10) {
1689 NDR_PRINT_IN_DEBUG(NetGroupAddUser, &r);
1692 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1693 werr = NetGroupAddUser_l(ctx, &r);
1694 } else {
1695 werr = NetGroupAddUser_r(ctx, &r);
1698 r.out.result = W_ERROR_V(werr);
1700 if (DEBUGLEVEL >= 10) {
1701 NDR_PRINT_OUT_DEBUG(NetGroupAddUser, &r);
1704 TALLOC_FREE(frame);
1705 return (NET_API_STATUS)r.out.result;
1708 /****************************************************************
1709 NetGroupDelUser
1710 ****************************************************************/
1712 NET_API_STATUS NetGroupDelUser(const char * server_name /* [in] */,
1713 const char * group_name /* [in] */,
1714 const char * user_name /* [in] */)
1716 struct NetGroupDelUser r;
1717 struct libnetapi_ctx *ctx = NULL;
1718 NET_API_STATUS status;
1719 WERROR werr;
1720 TALLOC_CTX *frame = talloc_stackframe();
1722 ZERO_STRUCT(r);
1724 status = libnetapi_getctx(&ctx);
1725 if (status != 0) {
1726 TALLOC_FREE(frame);
1727 return status;
1730 /* In parameters */
1731 r.in.server_name = server_name;
1732 r.in.group_name = group_name;
1733 r.in.user_name = user_name;
1735 /* Out parameters */
1737 if (DEBUGLEVEL >= 10) {
1738 NDR_PRINT_IN_DEBUG(NetGroupDelUser, &r);
1741 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1742 werr = NetGroupDelUser_l(ctx, &r);
1743 } else {
1744 werr = NetGroupDelUser_r(ctx, &r);
1747 r.out.result = W_ERROR_V(werr);
1749 if (DEBUGLEVEL >= 10) {
1750 NDR_PRINT_OUT_DEBUG(NetGroupDelUser, &r);
1753 TALLOC_FREE(frame);
1754 return (NET_API_STATUS)r.out.result;
1757 /****************************************************************
1758 NetGroupGetUsers
1759 ****************************************************************/
1761 NET_API_STATUS NetGroupGetUsers(const char * server_name /* [in] */,
1762 const char * group_name /* [in] */,
1763 uint32_t level /* [in] */,
1764 uint8_t **buffer /* [out] [ref] */,
1765 uint32_t prefmaxlen /* [in] */,
1766 uint32_t *entries_read /* [out] [ref] */,
1767 uint32_t *total_entries /* [out] [ref] */,
1768 uint32_t *resume_handle /* [in,out] [ref] */)
1770 struct NetGroupGetUsers r;
1771 struct libnetapi_ctx *ctx = NULL;
1772 NET_API_STATUS status;
1773 WERROR werr;
1774 TALLOC_CTX *frame = talloc_stackframe();
1776 ZERO_STRUCT(r);
1778 status = libnetapi_getctx(&ctx);
1779 if (status != 0) {
1780 TALLOC_FREE(frame);
1781 return status;
1784 /* In parameters */
1785 r.in.server_name = server_name;
1786 r.in.group_name = group_name;
1787 r.in.level = level;
1788 r.in.prefmaxlen = prefmaxlen;
1789 r.in.resume_handle = resume_handle;
1791 /* Out parameters */
1792 r.out.buffer = buffer;
1793 r.out.entries_read = entries_read;
1794 r.out.total_entries = total_entries;
1795 r.out.resume_handle = resume_handle;
1797 if (DEBUGLEVEL >= 10) {
1798 NDR_PRINT_IN_DEBUG(NetGroupGetUsers, &r);
1801 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1802 werr = NetGroupGetUsers_l(ctx, &r);
1803 } else {
1804 werr = NetGroupGetUsers_r(ctx, &r);
1807 r.out.result = W_ERROR_V(werr);
1809 if (DEBUGLEVEL >= 10) {
1810 NDR_PRINT_OUT_DEBUG(NetGroupGetUsers, &r);
1813 TALLOC_FREE(frame);
1814 return (NET_API_STATUS)r.out.result;
1817 /****************************************************************
1818 NetGroupSetUsers
1819 ****************************************************************/
1821 NET_API_STATUS NetGroupSetUsers(const char * server_name /* [in] */,
1822 const char * group_name /* [in] */,
1823 uint32_t level /* [in] */,
1824 uint8_t *buffer /* [in] [ref] */,
1825 uint32_t num_entries /* [in] */)
1827 struct NetGroupSetUsers r;
1828 struct libnetapi_ctx *ctx = NULL;
1829 NET_API_STATUS status;
1830 WERROR werr;
1831 TALLOC_CTX *frame = talloc_stackframe();
1833 ZERO_STRUCT(r);
1835 status = libnetapi_getctx(&ctx);
1836 if (status != 0) {
1837 TALLOC_FREE(frame);
1838 return status;
1841 /* In parameters */
1842 r.in.server_name = server_name;
1843 r.in.group_name = group_name;
1844 r.in.level = level;
1845 r.in.buffer = buffer;
1846 r.in.num_entries = num_entries;
1848 /* Out parameters */
1850 if (DEBUGLEVEL >= 10) {
1851 NDR_PRINT_IN_DEBUG(NetGroupSetUsers, &r);
1854 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1855 werr = NetGroupSetUsers_l(ctx, &r);
1856 } else {
1857 werr = NetGroupSetUsers_r(ctx, &r);
1860 r.out.result = W_ERROR_V(werr);
1862 if (DEBUGLEVEL >= 10) {
1863 NDR_PRINT_OUT_DEBUG(NetGroupSetUsers, &r);
1866 TALLOC_FREE(frame);
1867 return (NET_API_STATUS)r.out.result;
1870 /****************************************************************
1871 NetLocalGroupAdd
1872 ****************************************************************/
1874 NET_API_STATUS NetLocalGroupAdd(const char * server_name /* [in] */,
1875 uint32_t level /* [in] */,
1876 uint8_t *buffer /* [in] [ref] */,
1877 uint32_t *parm_err /* [out] [ref] */)
1879 struct NetLocalGroupAdd r;
1880 struct libnetapi_ctx *ctx = NULL;
1881 NET_API_STATUS status;
1882 WERROR werr;
1883 TALLOC_CTX *frame = talloc_stackframe();
1885 ZERO_STRUCT(r);
1887 status = libnetapi_getctx(&ctx);
1888 if (status != 0) {
1889 TALLOC_FREE(frame);
1890 return status;
1893 /* In parameters */
1894 r.in.server_name = server_name;
1895 r.in.level = level;
1896 r.in.buffer = buffer;
1898 /* Out parameters */
1899 r.out.parm_err = parm_err;
1901 if (DEBUGLEVEL >= 10) {
1902 NDR_PRINT_IN_DEBUG(NetLocalGroupAdd, &r);
1905 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1906 werr = NetLocalGroupAdd_l(ctx, &r);
1907 } else {
1908 werr = NetLocalGroupAdd_r(ctx, &r);
1911 r.out.result = W_ERROR_V(werr);
1913 if (DEBUGLEVEL >= 10) {
1914 NDR_PRINT_OUT_DEBUG(NetLocalGroupAdd, &r);
1917 TALLOC_FREE(frame);
1918 return (NET_API_STATUS)r.out.result;
1921 /****************************************************************
1922 NetLocalGroupDel
1923 ****************************************************************/
1925 NET_API_STATUS NetLocalGroupDel(const char * server_name /* [in] */,
1926 const char * group_name /* [in] */)
1928 struct NetLocalGroupDel r;
1929 struct libnetapi_ctx *ctx = NULL;
1930 NET_API_STATUS status;
1931 WERROR werr;
1932 TALLOC_CTX *frame = talloc_stackframe();
1934 ZERO_STRUCT(r);
1936 status = libnetapi_getctx(&ctx);
1937 if (status != 0) {
1938 TALLOC_FREE(frame);
1939 return status;
1942 /* In parameters */
1943 r.in.server_name = server_name;
1944 r.in.group_name = group_name;
1946 /* Out parameters */
1948 if (DEBUGLEVEL >= 10) {
1949 NDR_PRINT_IN_DEBUG(NetLocalGroupDel, &r);
1952 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
1953 werr = NetLocalGroupDel_l(ctx, &r);
1954 } else {
1955 werr = NetLocalGroupDel_r(ctx, &r);
1958 r.out.result = W_ERROR_V(werr);
1960 if (DEBUGLEVEL >= 10) {
1961 NDR_PRINT_OUT_DEBUG(NetLocalGroupDel, &r);
1964 TALLOC_FREE(frame);
1965 return (NET_API_STATUS)r.out.result;
1968 /****************************************************************
1969 NetLocalGroupGetInfo
1970 ****************************************************************/
1972 NET_API_STATUS NetLocalGroupGetInfo(const char * server_name /* [in] */,
1973 const char * group_name /* [in] */,
1974 uint32_t level /* [in] */,
1975 uint8_t **buffer /* [out] [ref] */)
1977 struct NetLocalGroupGetInfo r;
1978 struct libnetapi_ctx *ctx = NULL;
1979 NET_API_STATUS status;
1980 WERROR werr;
1981 TALLOC_CTX *frame = talloc_stackframe();
1983 ZERO_STRUCT(r);
1985 status = libnetapi_getctx(&ctx);
1986 if (status != 0) {
1987 TALLOC_FREE(frame);
1988 return status;
1991 /* In parameters */
1992 r.in.server_name = server_name;
1993 r.in.group_name = group_name;
1994 r.in.level = level;
1996 /* Out parameters */
1997 r.out.buffer = buffer;
1999 if (DEBUGLEVEL >= 10) {
2000 NDR_PRINT_IN_DEBUG(NetLocalGroupGetInfo, &r);
2003 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2004 werr = NetLocalGroupGetInfo_l(ctx, &r);
2005 } else {
2006 werr = NetLocalGroupGetInfo_r(ctx, &r);
2009 r.out.result = W_ERROR_V(werr);
2011 if (DEBUGLEVEL >= 10) {
2012 NDR_PRINT_OUT_DEBUG(NetLocalGroupGetInfo, &r);
2015 TALLOC_FREE(frame);
2016 return (NET_API_STATUS)r.out.result;
2019 /****************************************************************
2020 NetLocalGroupSetInfo
2021 ****************************************************************/
2023 NET_API_STATUS NetLocalGroupSetInfo(const char * server_name /* [in] */,
2024 const char * group_name /* [in] */,
2025 uint32_t level /* [in] */,
2026 uint8_t *buffer /* [in] [ref] */,
2027 uint32_t *parm_err /* [out] [ref] */)
2029 struct NetLocalGroupSetInfo r;
2030 struct libnetapi_ctx *ctx = NULL;
2031 NET_API_STATUS status;
2032 WERROR werr;
2033 TALLOC_CTX *frame = talloc_stackframe();
2035 ZERO_STRUCT(r);
2037 status = libnetapi_getctx(&ctx);
2038 if (status != 0) {
2039 TALLOC_FREE(frame);
2040 return status;
2043 /* In parameters */
2044 r.in.server_name = server_name;
2045 r.in.group_name = group_name;
2046 r.in.level = level;
2047 r.in.buffer = buffer;
2049 /* Out parameters */
2050 r.out.parm_err = parm_err;
2052 if (DEBUGLEVEL >= 10) {
2053 NDR_PRINT_IN_DEBUG(NetLocalGroupSetInfo, &r);
2056 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2057 werr = NetLocalGroupSetInfo_l(ctx, &r);
2058 } else {
2059 werr = NetLocalGroupSetInfo_r(ctx, &r);
2062 r.out.result = W_ERROR_V(werr);
2064 if (DEBUGLEVEL >= 10) {
2065 NDR_PRINT_OUT_DEBUG(NetLocalGroupSetInfo, &r);
2068 TALLOC_FREE(frame);
2069 return (NET_API_STATUS)r.out.result;
2072 /****************************************************************
2073 NetLocalGroupEnum
2074 ****************************************************************/
2076 NET_API_STATUS NetLocalGroupEnum(const char * server_name /* [in] */,
2077 uint32_t level /* [in] */,
2078 uint8_t **buffer /* [out] [ref] */,
2079 uint32_t prefmaxlen /* [in] */,
2080 uint32_t *entries_read /* [out] [ref] */,
2081 uint32_t *total_entries /* [out] [ref] */,
2082 uint32_t *resume_handle /* [in,out] [ref] */)
2084 struct NetLocalGroupEnum r;
2085 struct libnetapi_ctx *ctx = NULL;
2086 NET_API_STATUS status;
2087 WERROR werr;
2088 TALLOC_CTX *frame = talloc_stackframe();
2090 ZERO_STRUCT(r);
2092 status = libnetapi_getctx(&ctx);
2093 if (status != 0) {
2094 TALLOC_FREE(frame);
2095 return status;
2098 /* In parameters */
2099 r.in.server_name = server_name;
2100 r.in.level = level;
2101 r.in.prefmaxlen = prefmaxlen;
2102 r.in.resume_handle = resume_handle;
2104 /* Out parameters */
2105 r.out.buffer = buffer;
2106 r.out.entries_read = entries_read;
2107 r.out.total_entries = total_entries;
2108 r.out.resume_handle = resume_handle;
2110 if (DEBUGLEVEL >= 10) {
2111 NDR_PRINT_IN_DEBUG(NetLocalGroupEnum, &r);
2114 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2115 werr = NetLocalGroupEnum_l(ctx, &r);
2116 } else {
2117 werr = NetLocalGroupEnum_r(ctx, &r);
2120 r.out.result = W_ERROR_V(werr);
2122 if (DEBUGLEVEL >= 10) {
2123 NDR_PRINT_OUT_DEBUG(NetLocalGroupEnum, &r);
2126 TALLOC_FREE(frame);
2127 return (NET_API_STATUS)r.out.result;
2130 /****************************************************************
2131 NetLocalGroupAddMembers
2132 ****************************************************************/
2134 NET_API_STATUS NetLocalGroupAddMembers(const char * server_name /* [in] */,
2135 const char * group_name /* [in] */,
2136 uint32_t level /* [in] */,
2137 uint8_t *buffer /* [in] [ref] */,
2138 uint32_t total_entries /* [in] */)
2140 struct NetLocalGroupAddMembers r;
2141 struct libnetapi_ctx *ctx = NULL;
2142 NET_API_STATUS status;
2143 WERROR werr;
2144 TALLOC_CTX *frame = talloc_stackframe();
2146 ZERO_STRUCT(r);
2148 status = libnetapi_getctx(&ctx);
2149 if (status != 0) {
2150 TALLOC_FREE(frame);
2151 return status;
2154 /* In parameters */
2155 r.in.server_name = server_name;
2156 r.in.group_name = group_name;
2157 r.in.level = level;
2158 r.in.buffer = buffer;
2159 r.in.total_entries = total_entries;
2161 /* Out parameters */
2163 if (DEBUGLEVEL >= 10) {
2164 NDR_PRINT_IN_DEBUG(NetLocalGroupAddMembers, &r);
2167 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2168 werr = NetLocalGroupAddMembers_l(ctx, &r);
2169 } else {
2170 werr = NetLocalGroupAddMembers_r(ctx, &r);
2173 r.out.result = W_ERROR_V(werr);
2175 if (DEBUGLEVEL >= 10) {
2176 NDR_PRINT_OUT_DEBUG(NetLocalGroupAddMembers, &r);
2179 TALLOC_FREE(frame);
2180 return (NET_API_STATUS)r.out.result;
2183 /****************************************************************
2184 NetLocalGroupDelMembers
2185 ****************************************************************/
2187 NET_API_STATUS NetLocalGroupDelMembers(const char * server_name /* [in] */,
2188 const char * group_name /* [in] */,
2189 uint32_t level /* [in] */,
2190 uint8_t *buffer /* [in] [ref] */,
2191 uint32_t total_entries /* [in] */)
2193 struct NetLocalGroupDelMembers r;
2194 struct libnetapi_ctx *ctx = NULL;
2195 NET_API_STATUS status;
2196 WERROR werr;
2197 TALLOC_CTX *frame = talloc_stackframe();
2199 ZERO_STRUCT(r);
2201 status = libnetapi_getctx(&ctx);
2202 if (status != 0) {
2203 TALLOC_FREE(frame);
2204 return status;
2207 /* In parameters */
2208 r.in.server_name = server_name;
2209 r.in.group_name = group_name;
2210 r.in.level = level;
2211 r.in.buffer = buffer;
2212 r.in.total_entries = total_entries;
2214 /* Out parameters */
2216 if (DEBUGLEVEL >= 10) {
2217 NDR_PRINT_IN_DEBUG(NetLocalGroupDelMembers, &r);
2220 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2221 werr = NetLocalGroupDelMembers_l(ctx, &r);
2222 } else {
2223 werr = NetLocalGroupDelMembers_r(ctx, &r);
2226 r.out.result = W_ERROR_V(werr);
2228 if (DEBUGLEVEL >= 10) {
2229 NDR_PRINT_OUT_DEBUG(NetLocalGroupDelMembers, &r);
2232 TALLOC_FREE(frame);
2233 return (NET_API_STATUS)r.out.result;
2236 /****************************************************************
2237 NetLocalGroupGetMembers
2238 ****************************************************************/
2240 NET_API_STATUS NetLocalGroupGetMembers(const char * server_name /* [in] */,
2241 const char * local_group_name /* [in] */,
2242 uint32_t level /* [in] */,
2243 uint8_t **buffer /* [out] [ref] */,
2244 uint32_t prefmaxlen /* [in] */,
2245 uint32_t *entries_read /* [out] [ref] */,
2246 uint32_t *total_entries /* [out] [ref] */,
2247 uint32_t *resume_handle /* [in,out] [ref] */)
2249 struct NetLocalGroupGetMembers r;
2250 struct libnetapi_ctx *ctx = NULL;
2251 NET_API_STATUS status;
2252 WERROR werr;
2253 TALLOC_CTX *frame = talloc_stackframe();
2255 ZERO_STRUCT(r);
2257 status = libnetapi_getctx(&ctx);
2258 if (status != 0) {
2259 TALLOC_FREE(frame);
2260 return status;
2263 /* In parameters */
2264 r.in.server_name = server_name;
2265 r.in.local_group_name = local_group_name;
2266 r.in.level = level;
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(NetLocalGroupGetMembers, &r);
2280 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2281 werr = NetLocalGroupGetMembers_l(ctx, &r);
2282 } else {
2283 werr = NetLocalGroupGetMembers_r(ctx, &r);
2286 r.out.result = W_ERROR_V(werr);
2288 if (DEBUGLEVEL >= 10) {
2289 NDR_PRINT_OUT_DEBUG(NetLocalGroupGetMembers, &r);
2292 TALLOC_FREE(frame);
2293 return (NET_API_STATUS)r.out.result;
2296 /****************************************************************
2297 NetLocalGroupSetMembers
2298 ****************************************************************/
2300 NET_API_STATUS NetLocalGroupSetMembers(const char * server_name /* [in] */,
2301 const char * group_name /* [in] */,
2302 uint32_t level /* [in] */,
2303 uint8_t *buffer /* [in] [ref] */,
2304 uint32_t total_entries /* [in] */)
2306 struct NetLocalGroupSetMembers r;
2307 struct libnetapi_ctx *ctx = NULL;
2308 NET_API_STATUS status;
2309 WERROR werr;
2310 TALLOC_CTX *frame = talloc_stackframe();
2312 ZERO_STRUCT(r);
2314 status = libnetapi_getctx(&ctx);
2315 if (status != 0) {
2316 TALLOC_FREE(frame);
2317 return status;
2320 /* In parameters */
2321 r.in.server_name = server_name;
2322 r.in.group_name = group_name;
2323 r.in.level = level;
2324 r.in.buffer = buffer;
2325 r.in.total_entries = total_entries;
2327 /* Out parameters */
2329 if (DEBUGLEVEL >= 10) {
2330 NDR_PRINT_IN_DEBUG(NetLocalGroupSetMembers, &r);
2333 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2334 werr = NetLocalGroupSetMembers_l(ctx, &r);
2335 } else {
2336 werr = NetLocalGroupSetMembers_r(ctx, &r);
2339 r.out.result = W_ERROR_V(werr);
2341 if (DEBUGLEVEL >= 10) {
2342 NDR_PRINT_OUT_DEBUG(NetLocalGroupSetMembers, &r);
2345 TALLOC_FREE(frame);
2346 return (NET_API_STATUS)r.out.result;
2349 /****************************************************************
2350 NetRemoteTOD
2351 ****************************************************************/
2353 NET_API_STATUS NetRemoteTOD(const char * server_name /* [in] */,
2354 uint8_t **buffer /* [out] [ref] */)
2356 struct NetRemoteTOD r;
2357 struct libnetapi_ctx *ctx = NULL;
2358 NET_API_STATUS status;
2359 WERROR werr;
2360 TALLOC_CTX *frame = talloc_stackframe();
2362 ZERO_STRUCT(r);
2364 status = libnetapi_getctx(&ctx);
2365 if (status != 0) {
2366 TALLOC_FREE(frame);
2367 return status;
2370 /* In parameters */
2371 r.in.server_name = server_name;
2373 /* Out parameters */
2374 r.out.buffer = buffer;
2376 if (DEBUGLEVEL >= 10) {
2377 NDR_PRINT_IN_DEBUG(NetRemoteTOD, &r);
2380 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2381 werr = NetRemoteTOD_l(ctx, &r);
2382 } else {
2383 werr = NetRemoteTOD_r(ctx, &r);
2386 r.out.result = W_ERROR_V(werr);
2388 if (DEBUGLEVEL >= 10) {
2389 NDR_PRINT_OUT_DEBUG(NetRemoteTOD, &r);
2392 TALLOC_FREE(frame);
2393 return (NET_API_STATUS)r.out.result;
2396 /****************************************************************
2397 NetShareAdd
2398 ****************************************************************/
2400 NET_API_STATUS NetShareAdd(const char * server_name /* [in] */,
2401 uint32_t level /* [in] */,
2402 uint8_t *buffer /* [in] [ref] */,
2403 uint32_t *parm_err /* [out] [ref] */)
2405 struct NetShareAdd r;
2406 struct libnetapi_ctx *ctx = NULL;
2407 NET_API_STATUS status;
2408 WERROR werr;
2409 TALLOC_CTX *frame = talloc_stackframe();
2411 ZERO_STRUCT(r);
2413 status = libnetapi_getctx(&ctx);
2414 if (status != 0) {
2415 TALLOC_FREE(frame);
2416 return status;
2419 /* In parameters */
2420 r.in.server_name = server_name;
2421 r.in.level = level;
2422 r.in.buffer = buffer;
2424 /* Out parameters */
2425 r.out.parm_err = parm_err;
2427 if (DEBUGLEVEL >= 10) {
2428 NDR_PRINT_IN_DEBUG(NetShareAdd, &r);
2431 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2432 werr = NetShareAdd_l(ctx, &r);
2433 } else {
2434 werr = NetShareAdd_r(ctx, &r);
2437 r.out.result = W_ERROR_V(werr);
2439 if (DEBUGLEVEL >= 10) {
2440 NDR_PRINT_OUT_DEBUG(NetShareAdd, &r);
2443 TALLOC_FREE(frame);
2444 return (NET_API_STATUS)r.out.result;
2447 /****************************************************************
2448 NetShareDel
2449 ****************************************************************/
2451 NET_API_STATUS NetShareDel(const char * server_name /* [in] */,
2452 const char * net_name /* [in] */,
2453 uint32_t reserved /* [in] */)
2455 struct NetShareDel r;
2456 struct libnetapi_ctx *ctx = NULL;
2457 NET_API_STATUS status;
2458 WERROR werr;
2459 TALLOC_CTX *frame = talloc_stackframe();
2461 ZERO_STRUCT(r);
2463 status = libnetapi_getctx(&ctx);
2464 if (status != 0) {
2465 TALLOC_FREE(frame);
2466 return status;
2469 /* In parameters */
2470 r.in.server_name = server_name;
2471 r.in.net_name = net_name;
2472 r.in.reserved = reserved;
2474 /* Out parameters */
2476 if (DEBUGLEVEL >= 10) {
2477 NDR_PRINT_IN_DEBUG(NetShareDel, &r);
2480 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2481 werr = NetShareDel_l(ctx, &r);
2482 } else {
2483 werr = NetShareDel_r(ctx, &r);
2486 r.out.result = W_ERROR_V(werr);
2488 if (DEBUGLEVEL >= 10) {
2489 NDR_PRINT_OUT_DEBUG(NetShareDel, &r);
2492 TALLOC_FREE(frame);
2493 return (NET_API_STATUS)r.out.result;
2496 /****************************************************************
2497 NetShareEnum
2498 ****************************************************************/
2500 NET_API_STATUS NetShareEnum(const char * server_name /* [in] */,
2501 uint32_t level /* [in] */,
2502 uint8_t **buffer /* [out] [ref] */,
2503 uint32_t prefmaxlen /* [in] */,
2504 uint32_t *entries_read /* [out] [ref] */,
2505 uint32_t *total_entries /* [out] [ref] */,
2506 uint32_t *resume_handle /* [in,out] [ref] */)
2508 struct NetShareEnum r;
2509 struct libnetapi_ctx *ctx = NULL;
2510 NET_API_STATUS status;
2511 WERROR werr;
2512 TALLOC_CTX *frame = talloc_stackframe();
2514 ZERO_STRUCT(r);
2516 status = libnetapi_getctx(&ctx);
2517 if (status != 0) {
2518 TALLOC_FREE(frame);
2519 return status;
2522 /* In parameters */
2523 r.in.server_name = server_name;
2524 r.in.level = level;
2525 r.in.prefmaxlen = prefmaxlen;
2526 r.in.resume_handle = resume_handle;
2528 /* Out parameters */
2529 r.out.buffer = buffer;
2530 r.out.entries_read = entries_read;
2531 r.out.total_entries = total_entries;
2532 r.out.resume_handle = resume_handle;
2534 if (DEBUGLEVEL >= 10) {
2535 NDR_PRINT_IN_DEBUG(NetShareEnum, &r);
2538 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2539 werr = NetShareEnum_l(ctx, &r);
2540 } else {
2541 werr = NetShareEnum_r(ctx, &r);
2544 r.out.result = W_ERROR_V(werr);
2546 if (DEBUGLEVEL >= 10) {
2547 NDR_PRINT_OUT_DEBUG(NetShareEnum, &r);
2550 TALLOC_FREE(frame);
2551 return (NET_API_STATUS)r.out.result;
2554 /****************************************************************
2555 NetShareGetInfo
2556 ****************************************************************/
2558 NET_API_STATUS NetShareGetInfo(const char * server_name /* [in] */,
2559 const char * net_name /* [in] */,
2560 uint32_t level /* [in] */,
2561 uint8_t **buffer /* [out] [ref] */)
2563 struct NetShareGetInfo r;
2564 struct libnetapi_ctx *ctx = NULL;
2565 NET_API_STATUS status;
2566 WERROR werr;
2567 TALLOC_CTX *frame = talloc_stackframe();
2569 ZERO_STRUCT(r);
2571 status = libnetapi_getctx(&ctx);
2572 if (status != 0) {
2573 TALLOC_FREE(frame);
2574 return status;
2577 /* In parameters */
2578 r.in.server_name = server_name;
2579 r.in.net_name = net_name;
2580 r.in.level = level;
2582 /* Out parameters */
2583 r.out.buffer = buffer;
2585 if (DEBUGLEVEL >= 10) {
2586 NDR_PRINT_IN_DEBUG(NetShareGetInfo, &r);
2589 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2590 werr = NetShareGetInfo_l(ctx, &r);
2591 } else {
2592 werr = NetShareGetInfo_r(ctx, &r);
2595 r.out.result = W_ERROR_V(werr);
2597 if (DEBUGLEVEL >= 10) {
2598 NDR_PRINT_OUT_DEBUG(NetShareGetInfo, &r);
2601 TALLOC_FREE(frame);
2602 return (NET_API_STATUS)r.out.result;
2605 /****************************************************************
2606 NetShareSetInfo
2607 ****************************************************************/
2609 NET_API_STATUS NetShareSetInfo(const char * server_name /* [in] */,
2610 const char * net_name /* [in] */,
2611 uint32_t level /* [in] */,
2612 uint8_t *buffer /* [in] [ref] */,
2613 uint32_t *parm_err /* [out] [ref] */)
2615 struct NetShareSetInfo r;
2616 struct libnetapi_ctx *ctx = NULL;
2617 NET_API_STATUS status;
2618 WERROR werr;
2619 TALLOC_CTX *frame = talloc_stackframe();
2621 ZERO_STRUCT(r);
2623 status = libnetapi_getctx(&ctx);
2624 if (status != 0) {
2625 TALLOC_FREE(frame);
2626 return status;
2629 /* In parameters */
2630 r.in.server_name = server_name;
2631 r.in.net_name = net_name;
2632 r.in.level = level;
2633 r.in.buffer = buffer;
2635 /* Out parameters */
2636 r.out.parm_err = parm_err;
2638 if (DEBUGLEVEL >= 10) {
2639 NDR_PRINT_IN_DEBUG(NetShareSetInfo, &r);
2642 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2643 werr = NetShareSetInfo_l(ctx, &r);
2644 } else {
2645 werr = NetShareSetInfo_r(ctx, &r);
2648 r.out.result = W_ERROR_V(werr);
2650 if (DEBUGLEVEL >= 10) {
2651 NDR_PRINT_OUT_DEBUG(NetShareSetInfo, &r);
2654 TALLOC_FREE(frame);
2655 return (NET_API_STATUS)r.out.result;
2658 /****************************************************************
2659 NetFileClose
2660 ****************************************************************/
2662 NET_API_STATUS NetFileClose(const char * server_name /* [in] */,
2663 uint32_t fileid /* [in] */)
2665 struct NetFileClose r;
2666 struct libnetapi_ctx *ctx = NULL;
2667 NET_API_STATUS status;
2668 WERROR werr;
2669 TALLOC_CTX *frame = talloc_stackframe();
2671 ZERO_STRUCT(r);
2673 status = libnetapi_getctx(&ctx);
2674 if (status != 0) {
2675 TALLOC_FREE(frame);
2676 return status;
2679 /* In parameters */
2680 r.in.server_name = server_name;
2681 r.in.fileid = fileid;
2683 /* Out parameters */
2685 if (DEBUGLEVEL >= 10) {
2686 NDR_PRINT_IN_DEBUG(NetFileClose, &r);
2689 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2690 werr = NetFileClose_l(ctx, &r);
2691 } else {
2692 werr = NetFileClose_r(ctx, &r);
2695 r.out.result = W_ERROR_V(werr);
2697 if (DEBUGLEVEL >= 10) {
2698 NDR_PRINT_OUT_DEBUG(NetFileClose, &r);
2701 TALLOC_FREE(frame);
2702 return (NET_API_STATUS)r.out.result;
2705 /****************************************************************
2706 NetFileGetInfo
2707 ****************************************************************/
2709 NET_API_STATUS NetFileGetInfo(const char * server_name /* [in] */,
2710 uint32_t fileid /* [in] */,
2711 uint32_t level /* [in] */,
2712 uint8_t **buffer /* [out] [ref] */)
2714 struct NetFileGetInfo r;
2715 struct libnetapi_ctx *ctx = NULL;
2716 NET_API_STATUS status;
2717 WERROR werr;
2718 TALLOC_CTX *frame = talloc_stackframe();
2720 ZERO_STRUCT(r);
2722 status = libnetapi_getctx(&ctx);
2723 if (status != 0) {
2724 TALLOC_FREE(frame);
2725 return status;
2728 /* In parameters */
2729 r.in.server_name = server_name;
2730 r.in.fileid = fileid;
2731 r.in.level = level;
2733 /* Out parameters */
2734 r.out.buffer = buffer;
2736 if (DEBUGLEVEL >= 10) {
2737 NDR_PRINT_IN_DEBUG(NetFileGetInfo, &r);
2740 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2741 werr = NetFileGetInfo_l(ctx, &r);
2742 } else {
2743 werr = NetFileGetInfo_r(ctx, &r);
2746 r.out.result = W_ERROR_V(werr);
2748 if (DEBUGLEVEL >= 10) {
2749 NDR_PRINT_OUT_DEBUG(NetFileGetInfo, &r);
2752 TALLOC_FREE(frame);
2753 return (NET_API_STATUS)r.out.result;
2756 /****************************************************************
2757 NetFileEnum
2758 ****************************************************************/
2760 NET_API_STATUS NetFileEnum(const char * server_name /* [in] */,
2761 const char * base_path /* [in] */,
2762 const char * user_name /* [in] */,
2763 uint32_t level /* [in] */,
2764 uint8_t **buffer /* [out] [ref] */,
2765 uint32_t prefmaxlen /* [in] */,
2766 uint32_t *entries_read /* [out] [ref] */,
2767 uint32_t *total_entries /* [out] [ref] */,
2768 uint32_t *resume_handle /* [in,out] [ref] */)
2770 struct NetFileEnum r;
2771 struct libnetapi_ctx *ctx = NULL;
2772 NET_API_STATUS status;
2773 WERROR werr;
2774 TALLOC_CTX *frame = talloc_stackframe();
2776 ZERO_STRUCT(r);
2778 status = libnetapi_getctx(&ctx);
2779 if (status != 0) {
2780 TALLOC_FREE(frame);
2781 return status;
2784 /* In parameters */
2785 r.in.server_name = server_name;
2786 r.in.base_path = base_path;
2787 r.in.user_name = user_name;
2788 r.in.level = level;
2789 r.in.prefmaxlen = prefmaxlen;
2790 r.in.resume_handle = resume_handle;
2792 /* Out parameters */
2793 r.out.buffer = buffer;
2794 r.out.entries_read = entries_read;
2795 r.out.total_entries = total_entries;
2796 r.out.resume_handle = resume_handle;
2798 if (DEBUGLEVEL >= 10) {
2799 NDR_PRINT_IN_DEBUG(NetFileEnum, &r);
2802 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2803 werr = NetFileEnum_l(ctx, &r);
2804 } else {
2805 werr = NetFileEnum_r(ctx, &r);
2808 r.out.result = W_ERROR_V(werr);
2810 if (DEBUGLEVEL >= 10) {
2811 NDR_PRINT_OUT_DEBUG(NetFileEnum, &r);
2814 TALLOC_FREE(frame);
2815 return (NET_API_STATUS)r.out.result;
2818 /****************************************************************
2819 NetShutdownInit
2820 ****************************************************************/
2822 NET_API_STATUS NetShutdownInit(const char * server_name /* [in] */,
2823 const char * message /* [in] */,
2824 uint32_t timeout /* [in] */,
2825 uint8_t force_apps /* [in] */,
2826 uint8_t do_reboot /* [in] */)
2828 struct NetShutdownInit r;
2829 struct libnetapi_ctx *ctx = NULL;
2830 NET_API_STATUS status;
2831 WERROR werr;
2832 TALLOC_CTX *frame = talloc_stackframe();
2834 ZERO_STRUCT(r);
2836 status = libnetapi_getctx(&ctx);
2837 if (status != 0) {
2838 TALLOC_FREE(frame);
2839 return status;
2842 /* In parameters */
2843 r.in.server_name = server_name;
2844 r.in.message = message;
2845 r.in.timeout = timeout;
2846 r.in.force_apps = force_apps;
2847 r.in.do_reboot = do_reboot;
2849 /* Out parameters */
2851 if (DEBUGLEVEL >= 10) {
2852 NDR_PRINT_IN_DEBUG(NetShutdownInit, &r);
2855 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2856 werr = NetShutdownInit_l(ctx, &r);
2857 } else {
2858 werr = NetShutdownInit_r(ctx, &r);
2861 r.out.result = W_ERROR_V(werr);
2863 if (DEBUGLEVEL >= 10) {
2864 NDR_PRINT_OUT_DEBUG(NetShutdownInit, &r);
2867 TALLOC_FREE(frame);
2868 return (NET_API_STATUS)r.out.result;
2871 /****************************************************************
2872 NetShutdownAbort
2873 ****************************************************************/
2875 NET_API_STATUS NetShutdownAbort(const char * server_name /* [in] */)
2877 struct NetShutdownAbort r;
2878 struct libnetapi_ctx *ctx = NULL;
2879 NET_API_STATUS status;
2880 WERROR werr;
2881 TALLOC_CTX *frame = talloc_stackframe();
2883 ZERO_STRUCT(r);
2885 status = libnetapi_getctx(&ctx);
2886 if (status != 0) {
2887 TALLOC_FREE(frame);
2888 return status;
2891 /* In parameters */
2892 r.in.server_name = server_name;
2894 /* Out parameters */
2896 if (DEBUGLEVEL >= 10) {
2897 NDR_PRINT_IN_DEBUG(NetShutdownAbort, &r);
2900 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2901 werr = NetShutdownAbort_l(ctx, &r);
2902 } else {
2903 werr = NetShutdownAbort_r(ctx, &r);
2906 r.out.result = W_ERROR_V(werr);
2908 if (DEBUGLEVEL >= 10) {
2909 NDR_PRINT_OUT_DEBUG(NetShutdownAbort, &r);
2912 TALLOC_FREE(frame);
2913 return (NET_API_STATUS)r.out.result;
2916 /****************************************************************
2917 I_NetLogonControl
2918 ****************************************************************/
2920 NET_API_STATUS I_NetLogonControl(const char * server_name /* [in] */,
2921 uint32_t function_code /* [in] */,
2922 uint32_t query_level /* [in] */,
2923 uint8_t **buffer /* [out] [ref] */)
2925 struct I_NetLogonControl r;
2926 struct libnetapi_ctx *ctx = NULL;
2927 NET_API_STATUS status;
2928 WERROR werr;
2929 TALLOC_CTX *frame = talloc_stackframe();
2931 ZERO_STRUCT(r);
2933 status = libnetapi_getctx(&ctx);
2934 if (status != 0) {
2935 TALLOC_FREE(frame);
2936 return status;
2939 /* In parameters */
2940 r.in.server_name = server_name;
2941 r.in.function_code = function_code;
2942 r.in.query_level = query_level;
2944 /* Out parameters */
2945 r.out.buffer = buffer;
2947 if (DEBUGLEVEL >= 10) {
2948 NDR_PRINT_IN_DEBUG(I_NetLogonControl, &r);
2951 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
2952 werr = I_NetLogonControl_l(ctx, &r);
2953 } else {
2954 werr = I_NetLogonControl_r(ctx, &r);
2957 r.out.result = W_ERROR_V(werr);
2959 if (DEBUGLEVEL >= 10) {
2960 NDR_PRINT_OUT_DEBUG(I_NetLogonControl, &r);
2963 TALLOC_FREE(frame);
2964 return (NET_API_STATUS)r.out.result;
2967 /****************************************************************
2968 I_NetLogonControl2
2969 ****************************************************************/
2971 NET_API_STATUS I_NetLogonControl2(const char * server_name /* [in] */,
2972 uint32_t function_code /* [in] */,
2973 uint32_t query_level /* [in] */,
2974 uint8_t *data /* [in] [unique] */,
2975 uint8_t **buffer /* [out] [ref] */)
2977 struct I_NetLogonControl2 r;
2978 struct libnetapi_ctx *ctx = NULL;
2979 NET_API_STATUS status;
2980 WERROR werr;
2981 TALLOC_CTX *frame = talloc_stackframe();
2983 ZERO_STRUCT(r);
2985 status = libnetapi_getctx(&ctx);
2986 if (status != 0) {
2987 TALLOC_FREE(frame);
2988 return status;
2991 /* In parameters */
2992 r.in.server_name = server_name;
2993 r.in.function_code = function_code;
2994 r.in.query_level = query_level;
2995 r.in.data = data;
2997 /* Out parameters */
2998 r.out.buffer = buffer;
3000 if (DEBUGLEVEL >= 10) {
3001 NDR_PRINT_IN_DEBUG(I_NetLogonControl2, &r);
3004 if (LIBNETAPI_LOCAL_SERVER(server_name)) {
3005 werr = I_NetLogonControl2_l(ctx, &r);
3006 } else {
3007 werr = I_NetLogonControl2_r(ctx, &r);
3010 r.out.result = W_ERROR_V(werr);
3012 if (DEBUGLEVEL >= 10) {
3013 NDR_PRINT_OUT_DEBUG(I_NetLogonControl2, &r);
3016 TALLOC_FREE(frame);
3017 return (NET_API_STATUS)r.out.result;