2 * Unix SMB/CIFS implementation.
4 * Copyright (C) Guenther Deschner 2007-2008
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 3 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, see <http://www.gnu.org/licenses/>.
21 #include "librpc/gen_ndr/libnetapi.h"
22 #include "lib/netapi/netapi.h"
23 #include "lib/netapi/netapi_private.h"
24 #include "lib/netapi/libnetapi.h"
25 #include "librpc/gen_ndr/ndr_libnetapi.h"
27 /****************************************************************
29 ****************************************************************/
31 NET_API_STATUS
NetJoinDomain(const char * server
/* [in] [unique] */,
32 const char * domain
/* [in] [ref] */,
33 const char * account_ou
/* [in] [unique] */,
34 const char * account
/* [in] [unique] */,
35 const char * password
/* [in] [unique] */,
36 uint32_t join_flags
/* [in] */)
38 struct NetJoinDomain r
;
39 struct libnetapi_ctx
*ctx
= NULL
;
40 NET_API_STATUS status
;
43 status
= libnetapi_getctx(&ctx
);
51 r
.in
.account_ou
= account_ou
;
52 r
.in
.account
= account
;
53 r
.in
.password
= password
;
54 r
.in
.join_flags
= join_flags
;
58 if (DEBUGLEVEL
>= 10) {
59 NDR_PRINT_IN_DEBUG(NetJoinDomain
, &r
);
62 if (LIBNETAPI_LOCAL_SERVER(server
)) {
63 werr
= NetJoinDomain_l(ctx
, &r
);
65 werr
= NetJoinDomain_r(ctx
, &r
);
68 r
.out
.result
= W_ERROR_V(werr
);
70 if (DEBUGLEVEL
>= 10) {
71 NDR_PRINT_OUT_DEBUG(NetJoinDomain
, &r
);
77 /****************************************************************
79 ****************************************************************/
81 NET_API_STATUS
NetUnjoinDomain(const char * server_name
/* [in] [unique] */,
82 const char * account
/* [in] [unique] */,
83 const char * password
/* [in] [unique] */,
84 uint32_t unjoin_flags
/* [in] */)
86 struct NetUnjoinDomain r
;
87 struct libnetapi_ctx
*ctx
= NULL
;
88 NET_API_STATUS status
;
91 status
= libnetapi_getctx(&ctx
);
97 r
.in
.server_name
= server_name
;
98 r
.in
.account
= account
;
99 r
.in
.password
= password
;
100 r
.in
.unjoin_flags
= unjoin_flags
;
104 if (DEBUGLEVEL
>= 10) {
105 NDR_PRINT_IN_DEBUG(NetUnjoinDomain
, &r
);
108 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
109 werr
= NetUnjoinDomain_l(ctx
, &r
);
111 werr
= NetUnjoinDomain_r(ctx
, &r
);
114 r
.out
.result
= W_ERROR_V(werr
);
116 if (DEBUGLEVEL
>= 10) {
117 NDR_PRINT_OUT_DEBUG(NetUnjoinDomain
, &r
);
123 /****************************************************************
124 NetGetJoinInformation
125 ****************************************************************/
127 NET_API_STATUS
NetGetJoinInformation(const char * server_name
/* [in] [unique] */,
128 const char * *name_buffer
/* [out] [ref] */,
129 uint16_t *name_type
/* [out] [ref] */)
131 struct NetGetJoinInformation r
;
132 struct libnetapi_ctx
*ctx
= NULL
;
133 NET_API_STATUS status
;
136 status
= libnetapi_getctx(&ctx
);
142 r
.in
.server_name
= server_name
;
145 r
.out
.name_buffer
= name_buffer
;
146 r
.out
.name_type
= name_type
;
148 if (DEBUGLEVEL
>= 10) {
149 NDR_PRINT_IN_DEBUG(NetGetJoinInformation
, &r
);
152 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
153 werr
= NetGetJoinInformation_l(ctx
, &r
);
155 werr
= NetGetJoinInformation_r(ctx
, &r
);
158 r
.out
.result
= W_ERROR_V(werr
);
160 if (DEBUGLEVEL
>= 10) {
161 NDR_PRINT_OUT_DEBUG(NetGetJoinInformation
, &r
);
167 /****************************************************************
169 ****************************************************************/
171 NET_API_STATUS
NetGetJoinableOUs(const char * server_name
/* [in] [unique] */,
172 const char * domain
/* [in] [ref] */,
173 const char * account
/* [in] [unique] */,
174 const char * password
/* [in] [unique] */,
175 uint32_t *ou_count
/* [out] [ref] */,
176 const char * **ous
/* [out] [ref] */)
178 struct NetGetJoinableOUs r
;
179 struct libnetapi_ctx
*ctx
= NULL
;
180 NET_API_STATUS status
;
183 status
= libnetapi_getctx(&ctx
);
189 r
.in
.server_name
= server_name
;
190 r
.in
.domain
= domain
;
191 r
.in
.account
= account
;
192 r
.in
.password
= password
;
195 r
.out
.ou_count
= ou_count
;
198 if (DEBUGLEVEL
>= 10) {
199 NDR_PRINT_IN_DEBUG(NetGetJoinableOUs
, &r
);
202 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
203 werr
= NetGetJoinableOUs_l(ctx
, &r
);
205 werr
= NetGetJoinableOUs_r(ctx
, &r
);
208 r
.out
.result
= W_ERROR_V(werr
);
210 if (DEBUGLEVEL
>= 10) {
211 NDR_PRINT_OUT_DEBUG(NetGetJoinableOUs
, &r
);
217 /****************************************************************
219 ****************************************************************/
221 NET_API_STATUS
NetServerGetInfo(const char * server_name
/* [in] [unique] */,
222 uint32_t level
/* [in] */,
223 uint8_t **buffer
/* [out] [ref] */)
225 struct NetServerGetInfo r
;
226 struct libnetapi_ctx
*ctx
= NULL
;
227 NET_API_STATUS status
;
230 status
= libnetapi_getctx(&ctx
);
236 r
.in
.server_name
= server_name
;
240 r
.out
.buffer
= buffer
;
242 if (DEBUGLEVEL
>= 10) {
243 NDR_PRINT_IN_DEBUG(NetServerGetInfo
, &r
);
246 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
247 werr
= NetServerGetInfo_l(ctx
, &r
);
249 werr
= NetServerGetInfo_r(ctx
, &r
);
252 r
.out
.result
= W_ERROR_V(werr
);
254 if (DEBUGLEVEL
>= 10) {
255 NDR_PRINT_OUT_DEBUG(NetServerGetInfo
, &r
);
261 /****************************************************************
263 ****************************************************************/
265 NET_API_STATUS
NetServerSetInfo(const char * server_name
/* [in] [unique] */,
266 uint32_t level
/* [in] */,
267 uint8_t *buffer
/* [in] [ref] */,
268 uint32_t *parm_error
/* [out] [ref] */)
270 struct NetServerSetInfo r
;
271 struct libnetapi_ctx
*ctx
= NULL
;
272 NET_API_STATUS status
;
275 status
= libnetapi_getctx(&ctx
);
281 r
.in
.server_name
= server_name
;
283 r
.in
.buffer
= buffer
;
286 r
.out
.parm_error
= parm_error
;
288 if (DEBUGLEVEL
>= 10) {
289 NDR_PRINT_IN_DEBUG(NetServerSetInfo
, &r
);
292 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
293 werr
= NetServerSetInfo_l(ctx
, &r
);
295 werr
= NetServerSetInfo_r(ctx
, &r
);
298 r
.out
.result
= W_ERROR_V(werr
);
300 if (DEBUGLEVEL
>= 10) {
301 NDR_PRINT_OUT_DEBUG(NetServerSetInfo
, &r
);
307 /****************************************************************
309 ****************************************************************/
311 NET_API_STATUS
NetGetDCName(const char * server_name
/* [in] [unique] */,
312 const char * domain_name
/* [in] [unique] */,
313 uint8_t **buffer
/* [out] [ref] */)
315 struct NetGetDCName r
;
316 struct libnetapi_ctx
*ctx
= NULL
;
317 NET_API_STATUS status
;
320 status
= libnetapi_getctx(&ctx
);
326 r
.in
.server_name
= server_name
;
327 r
.in
.domain_name
= domain_name
;
330 r
.out
.buffer
= buffer
;
332 if (DEBUGLEVEL
>= 10) {
333 NDR_PRINT_IN_DEBUG(NetGetDCName
, &r
);
336 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
337 werr
= NetGetDCName_l(ctx
, &r
);
339 werr
= NetGetDCName_r(ctx
, &r
);
342 r
.out
.result
= W_ERROR_V(werr
);
344 if (DEBUGLEVEL
>= 10) {
345 NDR_PRINT_OUT_DEBUG(NetGetDCName
, &r
);
351 /****************************************************************
353 ****************************************************************/
355 NET_API_STATUS
NetGetAnyDCName(const char * server_name
/* [in] [unique] */,
356 const char * domain_name
/* [in] [unique] */,
357 uint8_t **buffer
/* [out] [ref] */)
359 struct NetGetAnyDCName r
;
360 struct libnetapi_ctx
*ctx
= NULL
;
361 NET_API_STATUS status
;
364 status
= libnetapi_getctx(&ctx
);
370 r
.in
.server_name
= server_name
;
371 r
.in
.domain_name
= domain_name
;
374 r
.out
.buffer
= buffer
;
376 if (DEBUGLEVEL
>= 10) {
377 NDR_PRINT_IN_DEBUG(NetGetAnyDCName
, &r
);
380 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
381 werr
= NetGetAnyDCName_l(ctx
, &r
);
383 werr
= NetGetAnyDCName_r(ctx
, &r
);
386 r
.out
.result
= W_ERROR_V(werr
);
388 if (DEBUGLEVEL
>= 10) {
389 NDR_PRINT_OUT_DEBUG(NetGetAnyDCName
, &r
);
395 /****************************************************************
397 ****************************************************************/
399 NET_API_STATUS
DsGetDcName(const char * server_name
/* [in] [unique] */,
400 const char * domain_name
/* [in] [ref] */,
401 struct GUID
*domain_guid
/* [in] [unique] */,
402 const char * site_name
/* [in] [unique] */,
403 uint32_t flags
/* [in] */,
404 struct DOMAIN_CONTROLLER_INFO
**dc_info
/* [out] [ref] */)
406 struct DsGetDcName r
;
407 struct libnetapi_ctx
*ctx
= NULL
;
408 NET_API_STATUS status
;
411 status
= libnetapi_getctx(&ctx
);
417 r
.in
.server_name
= server_name
;
418 r
.in
.domain_name
= domain_name
;
419 r
.in
.domain_guid
= domain_guid
;
420 r
.in
.site_name
= site_name
;
424 r
.out
.dc_info
= dc_info
;
426 if (DEBUGLEVEL
>= 10) {
427 NDR_PRINT_IN_DEBUG(DsGetDcName
, &r
);
430 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
431 werr
= DsGetDcName_l(ctx
, &r
);
433 werr
= DsGetDcName_r(ctx
, &r
);
436 r
.out
.result
= W_ERROR_V(werr
);
438 if (DEBUGLEVEL
>= 10) {
439 NDR_PRINT_OUT_DEBUG(DsGetDcName
, &r
);
445 /****************************************************************
447 ****************************************************************/
449 NET_API_STATUS
NetUserAdd(const char * server_name
/* [in] [unique] */,
450 uint32_t level
/* [in] */,
451 uint8_t *buffer
/* [in] [ref] */,
452 uint32_t *parm_error
/* [out] [ref] */)
455 struct libnetapi_ctx
*ctx
= NULL
;
456 NET_API_STATUS status
;
459 status
= libnetapi_getctx(&ctx
);
465 r
.in
.server_name
= server_name
;
467 r
.in
.buffer
= buffer
;
470 r
.out
.parm_error
= parm_error
;
472 if (DEBUGLEVEL
>= 10) {
473 NDR_PRINT_IN_DEBUG(NetUserAdd
, &r
);
476 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
477 werr
= NetUserAdd_l(ctx
, &r
);
479 werr
= NetUserAdd_r(ctx
, &r
);
482 r
.out
.result
= W_ERROR_V(werr
);
484 if (DEBUGLEVEL
>= 10) {
485 NDR_PRINT_OUT_DEBUG(NetUserAdd
, &r
);
491 /****************************************************************
493 ****************************************************************/
495 NET_API_STATUS
NetUserDel(const char * server_name
/* [in] [unique] */,
496 const char * user_name
/* [in] [ref] */)
499 struct libnetapi_ctx
*ctx
= NULL
;
500 NET_API_STATUS status
;
503 status
= libnetapi_getctx(&ctx
);
509 r
.in
.server_name
= server_name
;
510 r
.in
.user_name
= user_name
;
514 if (DEBUGLEVEL
>= 10) {
515 NDR_PRINT_IN_DEBUG(NetUserDel
, &r
);
518 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
519 werr
= NetUserDel_l(ctx
, &r
);
521 werr
= NetUserDel_r(ctx
, &r
);
524 r
.out
.result
= W_ERROR_V(werr
);
526 if (DEBUGLEVEL
>= 10) {
527 NDR_PRINT_OUT_DEBUG(NetUserDel
, &r
);
533 /****************************************************************
535 ****************************************************************/
537 NET_API_STATUS
NetUserEnum(const char * server_name
/* [in] [unique] */,
538 uint32_t level
/* [in] */,
539 uint32_t filter
/* [in] */,
540 uint8_t **buffer
/* [out] [ref] */,
541 uint32_t prefmaxlen
/* [in] */,
542 uint32_t *entries_read
/* [out] [ref] */,
543 uint32_t *total_entries
/* [out] [ref] */,
544 uint32_t *resume_handle
/* [in,out] [ref] */)
546 struct NetUserEnum r
;
547 struct libnetapi_ctx
*ctx
= NULL
;
548 NET_API_STATUS status
;
551 status
= libnetapi_getctx(&ctx
);
557 r
.in
.server_name
= server_name
;
559 r
.in
.filter
= filter
;
560 r
.in
.prefmaxlen
= prefmaxlen
;
561 r
.in
.resume_handle
= resume_handle
;
564 r
.out
.buffer
= buffer
;
565 r
.out
.entries_read
= entries_read
;
566 r
.out
.total_entries
= total_entries
;
567 r
.out
.resume_handle
= resume_handle
;
569 if (DEBUGLEVEL
>= 10) {
570 NDR_PRINT_IN_DEBUG(NetUserEnum
, &r
);
573 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
574 werr
= NetUserEnum_l(ctx
, &r
);
576 werr
= NetUserEnum_r(ctx
, &r
);
579 r
.out
.result
= W_ERROR_V(werr
);
581 if (DEBUGLEVEL
>= 10) {
582 NDR_PRINT_OUT_DEBUG(NetUserEnum
, &r
);
588 /****************************************************************
589 NetUserChangePassword
590 ****************************************************************/
592 NET_API_STATUS
NetUserChangePassword(const char * domain_name
/* [in] */,
593 const char * user_name
/* [in] */,
594 const char * old_password
/* [in] */,
595 const char * new_password
/* [in] */)
597 struct NetUserChangePassword r
;
598 struct libnetapi_ctx
*ctx
= NULL
;
599 NET_API_STATUS status
;
602 status
= libnetapi_getctx(&ctx
);
608 r
.in
.domain_name
= domain_name
;
609 r
.in
.user_name
= user_name
;
610 r
.in
.old_password
= old_password
;
611 r
.in
.new_password
= new_password
;
615 if (DEBUGLEVEL
>= 10) {
616 NDR_PRINT_IN_DEBUG(NetUserChangePassword
, &r
);
619 if (LIBNETAPI_LOCAL_SERVER(domain_name
)) {
620 werr
= NetUserChangePassword_l(ctx
, &r
);
622 werr
= NetUserChangePassword_r(ctx
, &r
);
625 r
.out
.result
= W_ERROR_V(werr
);
627 if (DEBUGLEVEL
>= 10) {
628 NDR_PRINT_OUT_DEBUG(NetUserChangePassword
, &r
);
634 /****************************************************************
636 ****************************************************************/
638 NET_API_STATUS
NetUserGetInfo(const char * server_name
/* [in] */,
639 const char * user_name
/* [in] */,
640 uint32_t level
/* [in] */,
641 uint8_t **buffer
/* [out] [ref] */)
643 struct NetUserGetInfo r
;
644 struct libnetapi_ctx
*ctx
= NULL
;
645 NET_API_STATUS status
;
648 status
= libnetapi_getctx(&ctx
);
654 r
.in
.server_name
= server_name
;
655 r
.in
.user_name
= user_name
;
659 r
.out
.buffer
= buffer
;
661 if (DEBUGLEVEL
>= 10) {
662 NDR_PRINT_IN_DEBUG(NetUserGetInfo
, &r
);
665 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
666 werr
= NetUserGetInfo_l(ctx
, &r
);
668 werr
= NetUserGetInfo_r(ctx
, &r
);
671 r
.out
.result
= W_ERROR_V(werr
);
673 if (DEBUGLEVEL
>= 10) {
674 NDR_PRINT_OUT_DEBUG(NetUserGetInfo
, &r
);
680 /****************************************************************
682 ****************************************************************/
684 NET_API_STATUS
NetUserSetInfo(const char * server_name
/* [in] */,
685 const char * user_name
/* [in] */,
686 uint32_t level
/* [in] */,
687 uint8_t *buffer
/* [in] [ref] */,
688 uint32_t *parm_err
/* [out] [ref] */)
690 struct NetUserSetInfo r
;
691 struct libnetapi_ctx
*ctx
= NULL
;
692 NET_API_STATUS status
;
695 status
= libnetapi_getctx(&ctx
);
701 r
.in
.server_name
= server_name
;
702 r
.in
.user_name
= user_name
;
704 r
.in
.buffer
= buffer
;
707 r
.out
.parm_err
= parm_err
;
709 if (DEBUGLEVEL
>= 10) {
710 NDR_PRINT_IN_DEBUG(NetUserSetInfo
, &r
);
713 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
714 werr
= NetUserSetInfo_l(ctx
, &r
);
716 werr
= NetUserSetInfo_r(ctx
, &r
);
719 r
.out
.result
= W_ERROR_V(werr
);
721 if (DEBUGLEVEL
>= 10) {
722 NDR_PRINT_OUT_DEBUG(NetUserSetInfo
, &r
);
728 /****************************************************************
730 ****************************************************************/
732 NET_API_STATUS
NetUserGetGroups(const char * server_name
/* [in] */,
733 const char * user_name
/* [in] */,
734 uint32_t level
/* [in] */,
735 uint8_t **buffer
/* [out] [ref] */,
736 uint32_t prefmaxlen
/* [in] */,
737 uint32_t *entries_read
/* [out] [ref] */,
738 uint32_t *total_entries
/* [out] [ref] */)
740 struct NetUserGetGroups r
;
741 struct libnetapi_ctx
*ctx
= NULL
;
742 NET_API_STATUS status
;
745 status
= libnetapi_getctx(&ctx
);
751 r
.in
.server_name
= server_name
;
752 r
.in
.user_name
= user_name
;
754 r
.in
.prefmaxlen
= prefmaxlen
;
757 r
.out
.buffer
= buffer
;
758 r
.out
.entries_read
= entries_read
;
759 r
.out
.total_entries
= total_entries
;
761 if (DEBUGLEVEL
>= 10) {
762 NDR_PRINT_IN_DEBUG(NetUserGetGroups
, &r
);
765 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
766 werr
= NetUserGetGroups_l(ctx
, &r
);
768 werr
= NetUserGetGroups_r(ctx
, &r
);
771 r
.out
.result
= W_ERROR_V(werr
);
773 if (DEBUGLEVEL
>= 10) {
774 NDR_PRINT_OUT_DEBUG(NetUserGetGroups
, &r
);
780 /****************************************************************
782 ****************************************************************/
784 NET_API_STATUS
NetUserModalsGet(const char * server_name
/* [in] */,
785 uint32_t level
/* [in] */,
786 uint8_t **buffer
/* [out] [ref] */)
788 struct NetUserModalsGet r
;
789 struct libnetapi_ctx
*ctx
= NULL
;
790 NET_API_STATUS status
;
793 status
= libnetapi_getctx(&ctx
);
799 r
.in
.server_name
= server_name
;
803 r
.out
.buffer
= buffer
;
805 if (DEBUGLEVEL
>= 10) {
806 NDR_PRINT_IN_DEBUG(NetUserModalsGet
, &r
);
809 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
810 werr
= NetUserModalsGet_l(ctx
, &r
);
812 werr
= NetUserModalsGet_r(ctx
, &r
);
815 r
.out
.result
= W_ERROR_V(werr
);
817 if (DEBUGLEVEL
>= 10) {
818 NDR_PRINT_OUT_DEBUG(NetUserModalsGet
, &r
);
824 /****************************************************************
826 ****************************************************************/
828 NET_API_STATUS
NetUserModalsSet(const char * server_name
/* [in] */,
829 uint32_t level
/* [in] */,
830 uint8_t *buffer
/* [in] [ref] */,
831 uint32_t *parm_err
/* [out] [ref] */)
833 struct NetUserModalsSet r
;
834 struct libnetapi_ctx
*ctx
= NULL
;
835 NET_API_STATUS status
;
838 status
= libnetapi_getctx(&ctx
);
844 r
.in
.server_name
= server_name
;
846 r
.in
.buffer
= buffer
;
849 r
.out
.parm_err
= parm_err
;
851 if (DEBUGLEVEL
>= 10) {
852 NDR_PRINT_IN_DEBUG(NetUserModalsSet
, &r
);
855 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
856 werr
= NetUserModalsSet_l(ctx
, &r
);
858 werr
= NetUserModalsSet_r(ctx
, &r
);
861 r
.out
.result
= W_ERROR_V(werr
);
863 if (DEBUGLEVEL
>= 10) {
864 NDR_PRINT_OUT_DEBUG(NetUserModalsSet
, &r
);
870 /****************************************************************
871 NetQueryDisplayInformation
872 ****************************************************************/
874 NET_API_STATUS
NetQueryDisplayInformation(const char * server_name
/* [in] [unique] */,
875 uint32_t level
/* [in] */,
876 uint32_t idx
/* [in] */,
877 uint32_t entries_requested
/* [in] */,
878 uint32_t prefmaxlen
/* [in] */,
879 uint32_t *entries_read
/* [out] [ref] */,
880 void **buffer
/* [out] [noprint,ref] */)
882 struct NetQueryDisplayInformation r
;
883 struct libnetapi_ctx
*ctx
= NULL
;
884 NET_API_STATUS status
;
887 status
= libnetapi_getctx(&ctx
);
893 r
.in
.server_name
= server_name
;
896 r
.in
.entries_requested
= entries_requested
;
897 r
.in
.prefmaxlen
= prefmaxlen
;
900 r
.out
.entries_read
= entries_read
;
901 r
.out
.buffer
= buffer
;
903 if (DEBUGLEVEL
>= 10) {
904 NDR_PRINT_IN_DEBUG(NetQueryDisplayInformation
, &r
);
907 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
908 werr
= NetQueryDisplayInformation_l(ctx
, &r
);
910 werr
= NetQueryDisplayInformation_r(ctx
, &r
);
913 r
.out
.result
= W_ERROR_V(werr
);
915 if (DEBUGLEVEL
>= 10) {
916 NDR_PRINT_OUT_DEBUG(NetQueryDisplayInformation
, &r
);
922 /****************************************************************
924 ****************************************************************/
926 NET_API_STATUS
NetGroupAdd(const char * server_name
/* [in] */,
927 uint32_t level
/* [in] */,
928 uint8_t *buffer
/* [in] [ref] */,
929 uint32_t *parm_err
/* [out] [ref] */)
931 struct NetGroupAdd r
;
932 struct libnetapi_ctx
*ctx
= NULL
;
933 NET_API_STATUS status
;
936 status
= libnetapi_getctx(&ctx
);
942 r
.in
.server_name
= server_name
;
944 r
.in
.buffer
= buffer
;
947 r
.out
.parm_err
= parm_err
;
949 if (DEBUGLEVEL
>= 10) {
950 NDR_PRINT_IN_DEBUG(NetGroupAdd
, &r
);
953 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
954 werr
= NetGroupAdd_l(ctx
, &r
);
956 werr
= NetGroupAdd_r(ctx
, &r
);
959 r
.out
.result
= W_ERROR_V(werr
);
961 if (DEBUGLEVEL
>= 10) {
962 NDR_PRINT_OUT_DEBUG(NetGroupAdd
, &r
);
968 /****************************************************************
970 ****************************************************************/
972 NET_API_STATUS
NetGroupDel(const char * server_name
/* [in] */,
973 const char * group_name
/* [in] */)
975 struct NetGroupDel r
;
976 struct libnetapi_ctx
*ctx
= NULL
;
977 NET_API_STATUS status
;
980 status
= libnetapi_getctx(&ctx
);
986 r
.in
.server_name
= server_name
;
987 r
.in
.group_name
= group_name
;
991 if (DEBUGLEVEL
>= 10) {
992 NDR_PRINT_IN_DEBUG(NetGroupDel
, &r
);
995 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
996 werr
= NetGroupDel_l(ctx
, &r
);
998 werr
= NetGroupDel_r(ctx
, &r
);
1001 r
.out
.result
= W_ERROR_V(werr
);
1003 if (DEBUGLEVEL
>= 10) {
1004 NDR_PRINT_OUT_DEBUG(NetGroupDel
, &r
);
1007 return r
.out
.result
;
1010 /****************************************************************
1012 ****************************************************************/
1014 NET_API_STATUS
NetGroupEnum(const char * server_name
/* [in] */,
1015 uint32_t level
/* [in] */,
1016 uint8_t **buffer
/* [out] [ref] */,
1017 uint32_t prefmaxlen
/* [in] */,
1018 uint32_t *entries_read
/* [out] [ref] */,
1019 uint32_t *total_entries
/* [out] [ref] */,
1020 uint32_t *resume_handle
/* [in,out] [ref] */)
1022 struct NetGroupEnum r
;
1023 struct libnetapi_ctx
*ctx
= NULL
;
1024 NET_API_STATUS status
;
1027 status
= libnetapi_getctx(&ctx
);
1033 r
.in
.server_name
= server_name
;
1035 r
.in
.prefmaxlen
= prefmaxlen
;
1036 r
.in
.resume_handle
= resume_handle
;
1038 /* Out parameters */
1039 r
.out
.buffer
= buffer
;
1040 r
.out
.entries_read
= entries_read
;
1041 r
.out
.total_entries
= total_entries
;
1042 r
.out
.resume_handle
= resume_handle
;
1044 if (DEBUGLEVEL
>= 10) {
1045 NDR_PRINT_IN_DEBUG(NetGroupEnum
, &r
);
1048 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
1049 werr
= NetGroupEnum_l(ctx
, &r
);
1051 werr
= NetGroupEnum_r(ctx
, &r
);
1054 r
.out
.result
= W_ERROR_V(werr
);
1056 if (DEBUGLEVEL
>= 10) {
1057 NDR_PRINT_OUT_DEBUG(NetGroupEnum
, &r
);
1060 return r
.out
.result
;
1063 /****************************************************************
1065 ****************************************************************/
1067 NET_API_STATUS
NetGroupSetInfo(const char * server_name
/* [in] */,
1068 const char * group_name
/* [in] */,
1069 uint32_t level
/* [in] */,
1070 uint8_t *buffer
/* [in] [ref] */,
1071 uint32_t *parm_err
/* [out] [ref] */)
1073 struct NetGroupSetInfo r
;
1074 struct libnetapi_ctx
*ctx
= NULL
;
1075 NET_API_STATUS status
;
1078 status
= libnetapi_getctx(&ctx
);
1084 r
.in
.server_name
= server_name
;
1085 r
.in
.group_name
= group_name
;
1087 r
.in
.buffer
= buffer
;
1089 /* Out parameters */
1090 r
.out
.parm_err
= parm_err
;
1092 if (DEBUGLEVEL
>= 10) {
1093 NDR_PRINT_IN_DEBUG(NetGroupSetInfo
, &r
);
1096 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
1097 werr
= NetGroupSetInfo_l(ctx
, &r
);
1099 werr
= NetGroupSetInfo_r(ctx
, &r
);
1102 r
.out
.result
= W_ERROR_V(werr
);
1104 if (DEBUGLEVEL
>= 10) {
1105 NDR_PRINT_OUT_DEBUG(NetGroupSetInfo
, &r
);
1108 return r
.out
.result
;
1111 /****************************************************************
1113 ****************************************************************/
1115 NET_API_STATUS
NetGroupGetInfo(const char * server_name
/* [in] */,
1116 const char * group_name
/* [in] */,
1117 uint32_t level
/* [in] */,
1118 uint8_t **buffer
/* [out] [ref] */)
1120 struct NetGroupGetInfo r
;
1121 struct libnetapi_ctx
*ctx
= NULL
;
1122 NET_API_STATUS status
;
1125 status
= libnetapi_getctx(&ctx
);
1131 r
.in
.server_name
= server_name
;
1132 r
.in
.group_name
= group_name
;
1135 /* Out parameters */
1136 r
.out
.buffer
= buffer
;
1138 if (DEBUGLEVEL
>= 10) {
1139 NDR_PRINT_IN_DEBUG(NetGroupGetInfo
, &r
);
1142 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
1143 werr
= NetGroupGetInfo_l(ctx
, &r
);
1145 werr
= NetGroupGetInfo_r(ctx
, &r
);
1148 r
.out
.result
= W_ERROR_V(werr
);
1150 if (DEBUGLEVEL
>= 10) {
1151 NDR_PRINT_OUT_DEBUG(NetGroupGetInfo
, &r
);
1154 return r
.out
.result
;
1157 /****************************************************************
1159 ****************************************************************/
1161 NET_API_STATUS
NetGroupAddUser(const char * server_name
/* [in] */,
1162 const char * group_name
/* [in] */,
1163 const char * user_name
/* [in] */)
1165 struct NetGroupAddUser r
;
1166 struct libnetapi_ctx
*ctx
= NULL
;
1167 NET_API_STATUS status
;
1170 status
= libnetapi_getctx(&ctx
);
1176 r
.in
.server_name
= server_name
;
1177 r
.in
.group_name
= group_name
;
1178 r
.in
.user_name
= user_name
;
1180 /* Out parameters */
1182 if (DEBUGLEVEL
>= 10) {
1183 NDR_PRINT_IN_DEBUG(NetGroupAddUser
, &r
);
1186 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
1187 werr
= NetGroupAddUser_l(ctx
, &r
);
1189 werr
= NetGroupAddUser_r(ctx
, &r
);
1192 r
.out
.result
= W_ERROR_V(werr
);
1194 if (DEBUGLEVEL
>= 10) {
1195 NDR_PRINT_OUT_DEBUG(NetGroupAddUser
, &r
);
1198 return r
.out
.result
;
1201 /****************************************************************
1203 ****************************************************************/
1205 NET_API_STATUS
NetGroupDelUser(const char * server_name
/* [in] */,
1206 const char * group_name
/* [in] */,
1207 const char * user_name
/* [in] */)
1209 struct NetGroupDelUser r
;
1210 struct libnetapi_ctx
*ctx
= NULL
;
1211 NET_API_STATUS status
;
1214 status
= libnetapi_getctx(&ctx
);
1220 r
.in
.server_name
= server_name
;
1221 r
.in
.group_name
= group_name
;
1222 r
.in
.user_name
= user_name
;
1224 /* Out parameters */
1226 if (DEBUGLEVEL
>= 10) {
1227 NDR_PRINT_IN_DEBUG(NetGroupDelUser
, &r
);
1230 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
1231 werr
= NetGroupDelUser_l(ctx
, &r
);
1233 werr
= NetGroupDelUser_r(ctx
, &r
);
1236 r
.out
.result
= W_ERROR_V(werr
);
1238 if (DEBUGLEVEL
>= 10) {
1239 NDR_PRINT_OUT_DEBUG(NetGroupDelUser
, &r
);
1242 return r
.out
.result
;
1245 /****************************************************************
1247 ****************************************************************/
1249 NET_API_STATUS
NetGroupGetUsers(const char * server_name
/* [in] */,
1250 const char * group_name
/* [in] */,
1251 uint32_t level
/* [in] */,
1252 uint8_t **buffer
/* [out] [ref] */,
1253 uint32_t prefmaxlen
/* [in] */,
1254 uint32_t *entries_read
/* [out] [ref] */,
1255 uint32_t *total_entries
/* [out] [ref] */,
1256 uint32_t *resume_handle
/* [in,out] [ref] */)
1258 struct NetGroupGetUsers r
;
1259 struct libnetapi_ctx
*ctx
= NULL
;
1260 NET_API_STATUS status
;
1263 status
= libnetapi_getctx(&ctx
);
1269 r
.in
.server_name
= server_name
;
1270 r
.in
.group_name
= group_name
;
1272 r
.in
.prefmaxlen
= prefmaxlen
;
1273 r
.in
.resume_handle
= resume_handle
;
1275 /* Out parameters */
1276 r
.out
.buffer
= buffer
;
1277 r
.out
.entries_read
= entries_read
;
1278 r
.out
.total_entries
= total_entries
;
1279 r
.out
.resume_handle
= resume_handle
;
1281 if (DEBUGLEVEL
>= 10) {
1282 NDR_PRINT_IN_DEBUG(NetGroupGetUsers
, &r
);
1285 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
1286 werr
= NetGroupGetUsers_l(ctx
, &r
);
1288 werr
= NetGroupGetUsers_r(ctx
, &r
);
1291 r
.out
.result
= W_ERROR_V(werr
);
1293 if (DEBUGLEVEL
>= 10) {
1294 NDR_PRINT_OUT_DEBUG(NetGroupGetUsers
, &r
);
1297 return r
.out
.result
;
1300 /****************************************************************
1302 ****************************************************************/
1304 NET_API_STATUS
NetLocalGroupAdd(const char * server_name
/* [in] */,
1305 uint32_t level
/* [in] */,
1306 uint8_t *buffer
/* [in] [ref] */,
1307 uint32_t *parm_err
/* [out] [ref] */)
1309 struct NetLocalGroupAdd r
;
1310 struct libnetapi_ctx
*ctx
= NULL
;
1311 NET_API_STATUS status
;
1314 status
= libnetapi_getctx(&ctx
);
1320 r
.in
.server_name
= server_name
;
1322 r
.in
.buffer
= buffer
;
1324 /* Out parameters */
1325 r
.out
.parm_err
= parm_err
;
1327 if (DEBUGLEVEL
>= 10) {
1328 NDR_PRINT_IN_DEBUG(NetLocalGroupAdd
, &r
);
1331 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
1332 werr
= NetLocalGroupAdd_l(ctx
, &r
);
1334 werr
= NetLocalGroupAdd_r(ctx
, &r
);
1337 r
.out
.result
= W_ERROR_V(werr
);
1339 if (DEBUGLEVEL
>= 10) {
1340 NDR_PRINT_OUT_DEBUG(NetLocalGroupAdd
, &r
);
1343 return r
.out
.result
;
1346 /****************************************************************
1348 ****************************************************************/
1350 NET_API_STATUS
NetLocalGroupDel(const char * server_name
/* [in] */,
1351 const char * group_name
/* [in] */)
1353 struct NetLocalGroupDel r
;
1354 struct libnetapi_ctx
*ctx
= NULL
;
1355 NET_API_STATUS status
;
1358 status
= libnetapi_getctx(&ctx
);
1364 r
.in
.server_name
= server_name
;
1365 r
.in
.group_name
= group_name
;
1367 /* Out parameters */
1369 if (DEBUGLEVEL
>= 10) {
1370 NDR_PRINT_IN_DEBUG(NetLocalGroupDel
, &r
);
1373 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
1374 werr
= NetLocalGroupDel_l(ctx
, &r
);
1376 werr
= NetLocalGroupDel_r(ctx
, &r
);
1379 r
.out
.result
= W_ERROR_V(werr
);
1381 if (DEBUGLEVEL
>= 10) {
1382 NDR_PRINT_OUT_DEBUG(NetLocalGroupDel
, &r
);
1385 return r
.out
.result
;
1388 /****************************************************************
1389 NetLocalGroupGetInfo
1390 ****************************************************************/
1392 NET_API_STATUS
NetLocalGroupGetInfo(const char * server_name
/* [in] */,
1393 const char * group_name
/* [in] */,
1394 uint32_t level
/* [in] */,
1395 uint8_t **buffer
/* [out] [ref] */)
1397 struct NetLocalGroupGetInfo r
;
1398 struct libnetapi_ctx
*ctx
= NULL
;
1399 NET_API_STATUS status
;
1402 status
= libnetapi_getctx(&ctx
);
1408 r
.in
.server_name
= server_name
;
1409 r
.in
.group_name
= group_name
;
1412 /* Out parameters */
1413 r
.out
.buffer
= buffer
;
1415 if (DEBUGLEVEL
>= 10) {
1416 NDR_PRINT_IN_DEBUG(NetLocalGroupGetInfo
, &r
);
1419 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
1420 werr
= NetLocalGroupGetInfo_l(ctx
, &r
);
1422 werr
= NetLocalGroupGetInfo_r(ctx
, &r
);
1425 r
.out
.result
= W_ERROR_V(werr
);
1427 if (DEBUGLEVEL
>= 10) {
1428 NDR_PRINT_OUT_DEBUG(NetLocalGroupGetInfo
, &r
);
1431 return r
.out
.result
;
1434 /****************************************************************
1435 NetLocalGroupSetInfo
1436 ****************************************************************/
1438 NET_API_STATUS
NetLocalGroupSetInfo(const char * server_name
/* [in] */,
1439 const char * group_name
/* [in] */,
1440 uint32_t level
/* [in] */,
1441 uint8_t *buffer
/* [in] [ref] */,
1442 uint32_t *parm_err
/* [out] [ref] */)
1444 struct NetLocalGroupSetInfo r
;
1445 struct libnetapi_ctx
*ctx
= NULL
;
1446 NET_API_STATUS status
;
1449 status
= libnetapi_getctx(&ctx
);
1455 r
.in
.server_name
= server_name
;
1456 r
.in
.group_name
= group_name
;
1458 r
.in
.buffer
= buffer
;
1460 /* Out parameters */
1461 r
.out
.parm_err
= parm_err
;
1463 if (DEBUGLEVEL
>= 10) {
1464 NDR_PRINT_IN_DEBUG(NetLocalGroupSetInfo
, &r
);
1467 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
1468 werr
= NetLocalGroupSetInfo_l(ctx
, &r
);
1470 werr
= NetLocalGroupSetInfo_r(ctx
, &r
);
1473 r
.out
.result
= W_ERROR_V(werr
);
1475 if (DEBUGLEVEL
>= 10) {
1476 NDR_PRINT_OUT_DEBUG(NetLocalGroupSetInfo
, &r
);
1479 return r
.out
.result
;
1482 /****************************************************************
1484 ****************************************************************/
1486 NET_API_STATUS
NetLocalGroupEnum(const char * server_name
/* [in] */,
1487 uint32_t level
/* [in] */,
1488 uint8_t **buffer
/* [out] [ref] */,
1489 uint32_t prefmaxlen
/* [in] */,
1490 uint32_t *entries_read
/* [out] [ref] */,
1491 uint32_t *total_entries
/* [out] [ref] */,
1492 uint32_t *resume_handle
/* [in,out] [ref] */)
1494 struct NetLocalGroupEnum r
;
1495 struct libnetapi_ctx
*ctx
= NULL
;
1496 NET_API_STATUS status
;
1499 status
= libnetapi_getctx(&ctx
);
1505 r
.in
.server_name
= server_name
;
1507 r
.in
.prefmaxlen
= prefmaxlen
;
1508 r
.in
.resume_handle
= resume_handle
;
1510 /* Out parameters */
1511 r
.out
.buffer
= buffer
;
1512 r
.out
.entries_read
= entries_read
;
1513 r
.out
.total_entries
= total_entries
;
1514 r
.out
.resume_handle
= resume_handle
;
1516 if (DEBUGLEVEL
>= 10) {
1517 NDR_PRINT_IN_DEBUG(NetLocalGroupEnum
, &r
);
1520 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
1521 werr
= NetLocalGroupEnum_l(ctx
, &r
);
1523 werr
= NetLocalGroupEnum_r(ctx
, &r
);
1526 r
.out
.result
= W_ERROR_V(werr
);
1528 if (DEBUGLEVEL
>= 10) {
1529 NDR_PRINT_OUT_DEBUG(NetLocalGroupEnum
, &r
);
1532 return r
.out
.result
;
1535 /****************************************************************
1536 NetLocalGroupAddMembers
1537 ****************************************************************/
1539 NET_API_STATUS
NetLocalGroupAddMembers(const char * server_name
/* [in] */,
1540 const char * group_name
/* [in] */,
1541 uint32_t level
/* [in] */,
1542 uint8_t *buffer
/* [in] [ref] */,
1543 uint32_t total_entries
/* [in] */)
1545 struct NetLocalGroupAddMembers r
;
1546 struct libnetapi_ctx
*ctx
= NULL
;
1547 NET_API_STATUS status
;
1550 status
= libnetapi_getctx(&ctx
);
1556 r
.in
.server_name
= server_name
;
1557 r
.in
.group_name
= group_name
;
1559 r
.in
.buffer
= buffer
;
1560 r
.in
.total_entries
= total_entries
;
1562 /* Out parameters */
1564 if (DEBUGLEVEL
>= 10) {
1565 NDR_PRINT_IN_DEBUG(NetLocalGroupAddMembers
, &r
);
1568 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
1569 werr
= NetLocalGroupAddMembers_l(ctx
, &r
);
1571 werr
= NetLocalGroupAddMembers_r(ctx
, &r
);
1574 r
.out
.result
= W_ERROR_V(werr
);
1576 if (DEBUGLEVEL
>= 10) {
1577 NDR_PRINT_OUT_DEBUG(NetLocalGroupAddMembers
, &r
);
1580 return r
.out
.result
;
1583 /****************************************************************
1584 NetLocalGroupDelMembers
1585 ****************************************************************/
1587 NET_API_STATUS
NetLocalGroupDelMembers(const char * server_name
/* [in] */,
1588 const char * group_name
/* [in] */,
1589 uint32_t level
/* [in] */,
1590 uint8_t *buffer
/* [in] [ref] */,
1591 uint32_t total_entries
/* [in] */)
1593 struct NetLocalGroupDelMembers r
;
1594 struct libnetapi_ctx
*ctx
= NULL
;
1595 NET_API_STATUS status
;
1598 status
= libnetapi_getctx(&ctx
);
1604 r
.in
.server_name
= server_name
;
1605 r
.in
.group_name
= group_name
;
1607 r
.in
.buffer
= buffer
;
1608 r
.in
.total_entries
= total_entries
;
1610 /* Out parameters */
1612 if (DEBUGLEVEL
>= 10) {
1613 NDR_PRINT_IN_DEBUG(NetLocalGroupDelMembers
, &r
);
1616 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
1617 werr
= NetLocalGroupDelMembers_l(ctx
, &r
);
1619 werr
= NetLocalGroupDelMembers_r(ctx
, &r
);
1622 r
.out
.result
= W_ERROR_V(werr
);
1624 if (DEBUGLEVEL
>= 10) {
1625 NDR_PRINT_OUT_DEBUG(NetLocalGroupDelMembers
, &r
);
1628 return r
.out
.result
;
1631 /****************************************************************
1632 NetLocalGroupGetMembers
1633 ****************************************************************/
1635 NET_API_STATUS
NetLocalGroupGetMembers(const char * server_name
/* [in] */,
1636 const char * local_group_name
/* [in] */,
1637 uint32_t level
/* [in] */,
1638 uint8_t **buffer
/* [out] [ref] */,
1639 uint32_t prefmaxlen
/* [in] */,
1640 uint32_t *entries_read
/* [out] [ref] */,
1641 uint32_t *total_entries
/* [out] [ref] */,
1642 uint32_t *resume_handle
/* [in,out] [ref] */)
1644 struct NetLocalGroupGetMembers r
;
1645 struct libnetapi_ctx
*ctx
= NULL
;
1646 NET_API_STATUS status
;
1649 status
= libnetapi_getctx(&ctx
);
1655 r
.in
.server_name
= server_name
;
1656 r
.in
.local_group_name
= local_group_name
;
1658 r
.in
.prefmaxlen
= prefmaxlen
;
1659 r
.in
.resume_handle
= resume_handle
;
1661 /* Out parameters */
1662 r
.out
.buffer
= buffer
;
1663 r
.out
.entries_read
= entries_read
;
1664 r
.out
.total_entries
= total_entries
;
1665 r
.out
.resume_handle
= resume_handle
;
1667 if (DEBUGLEVEL
>= 10) {
1668 NDR_PRINT_IN_DEBUG(NetLocalGroupGetMembers
, &r
);
1671 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
1672 werr
= NetLocalGroupGetMembers_l(ctx
, &r
);
1674 werr
= NetLocalGroupGetMembers_r(ctx
, &r
);
1677 r
.out
.result
= W_ERROR_V(werr
);
1679 if (DEBUGLEVEL
>= 10) {
1680 NDR_PRINT_OUT_DEBUG(NetLocalGroupGetMembers
, &r
);
1683 return r
.out
.result
;
1686 /****************************************************************
1687 NetLocalGroupSetMembers
1688 ****************************************************************/
1690 NET_API_STATUS
NetLocalGroupSetMembers(const char * server_name
/* [in] */,
1691 const char * group_name
/* [in] */,
1692 uint32_t level
/* [in] */,
1693 uint8_t *buffer
/* [in] [ref] */,
1694 uint32_t total_entries
/* [in] */)
1696 struct NetLocalGroupSetMembers r
;
1697 struct libnetapi_ctx
*ctx
= NULL
;
1698 NET_API_STATUS status
;
1701 status
= libnetapi_getctx(&ctx
);
1707 r
.in
.server_name
= server_name
;
1708 r
.in
.group_name
= group_name
;
1710 r
.in
.buffer
= buffer
;
1711 r
.in
.total_entries
= total_entries
;
1713 /* Out parameters */
1715 if (DEBUGLEVEL
>= 10) {
1716 NDR_PRINT_IN_DEBUG(NetLocalGroupSetMembers
, &r
);
1719 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
1720 werr
= NetLocalGroupSetMembers_l(ctx
, &r
);
1722 werr
= NetLocalGroupSetMembers_r(ctx
, &r
);
1725 r
.out
.result
= W_ERROR_V(werr
);
1727 if (DEBUGLEVEL
>= 10) {
1728 NDR_PRINT_OUT_DEBUG(NetLocalGroupSetMembers
, &r
);
1731 return r
.out
.result
;
1734 /****************************************************************
1736 ****************************************************************/
1738 NET_API_STATUS
NetRemoteTOD(const char * server_name
/* [in] */,
1739 uint8_t **buffer
/* [out] [ref] */)
1741 struct NetRemoteTOD r
;
1742 struct libnetapi_ctx
*ctx
= NULL
;
1743 NET_API_STATUS status
;
1746 status
= libnetapi_getctx(&ctx
);
1752 r
.in
.server_name
= server_name
;
1754 /* Out parameters */
1755 r
.out
.buffer
= buffer
;
1757 if (DEBUGLEVEL
>= 10) {
1758 NDR_PRINT_IN_DEBUG(NetRemoteTOD
, &r
);
1761 if (LIBNETAPI_LOCAL_SERVER(server_name
)) {
1762 werr
= NetRemoteTOD_l(ctx
, &r
);
1764 werr
= NetRemoteTOD_r(ctx
, &r
);
1767 r
.out
.result
= W_ERROR_V(werr
);
1769 if (DEBUGLEVEL
>= 10) {
1770 NDR_PRINT_OUT_DEBUG(NetRemoteTOD
, &r
);
1773 return r
.out
.result
;