]> git.samba.org - mat/samba.git/blob - source3/lib/netapi/netapi.h
netapi: add NetJoinFlags to public header.
[mat/samba.git] / source3 / lib / netapi / netapi.h
1 /*
2  *  Unix SMB/CIFS implementation.
3  *  NetApi Support
4  *  Copyright (C) Guenther Deschner 2007-2008
5  *
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.
10  *
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.
15  *
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/>.
18  */
19
20 #ifndef __LIB_NETAPI_H__
21 #define __LIB_NETAPI_H__
22
23 #ifdef __cplusplus
24 extern "C" {
25 #endif /* __cplusplus */
26
27 /****************************************************************
28  NET_API_STATUS
29 ****************************************************************/
30 typedef enum {
31         NET_API_STATUS_SUCCESS = 0
32 } NET_API_STATUS;
33
34 #define ERROR_MORE_DATA ( 234L )
35
36 #define ENCRYPTED_PWLEN ( 16 )
37
38 /****************************************************************
39 ****************************************************************/
40
41 #ifndef _HEADER_misc
42
43 struct GUID {
44         uint32_t time_low;
45         uint16_t time_mid;
46         uint16_t time_hi_and_version;
47         uint8_t clock_seq[2];
48         uint8_t node[6];
49 };
50
51 #endif /* _HEADER_misc */
52
53 #ifndef _HEADER_libnetapi
54
55 #ifndef MAXSUBAUTHS
56 #define MAXSUBAUTHS 15 /* max sub authorities in a SID */
57 #endif
58
59 struct domsid {
60         uint8_t   sid_rev_num;
61         uint8_t   num_auths;
62         uint8_t   id_auth[6];
63         uint32_t  sub_auths[MAXSUBAUTHS];
64 };
65
66 struct DOMAIN_CONTROLLER_INFO {
67         const char * domain_controller_name;
68         const char * domain_controller_address;
69         uint32_t domain_controller_address_type;
70         struct GUID domain_guid;
71         const char * domain_name;
72         const char * dns_forest_name;
73         uint32_t flags;
74         const char * dc_site_name;
75         const char * client_site_name;
76 };
77
78 /* bitmap NetJoinFlags */
79 #define NETSETUP_JOIN_DOMAIN ( 0x00000001 )
80 #define NETSETUP_ACCT_CREATE ( 0x00000002 )
81 #define NETSETUP_ACCT_DELETE ( 0x00000004 )
82 #define NETSETUP_WIN9X_UPGRADE ( 0x00000010 )
83 #define NETSETUP_DOMAIN_JOIN_IF_JOINED ( 0x00000020 )
84 #define NETSETUP_JOIN_UNSECURE ( 0x00000040 )
85 #define NETSETUP_MACHINE_PWD_PASSED ( 0x00000080 )
86 #define NETSETUP_DEFER_SPN_SET ( 0x00000100 )
87 #define NETSETUP_JOIN_DC_ACCOUNT ( 0x00000200 )
88 #define NETSETUP_JOIN_WITH_NEW_NAME ( 0x00000400 )
89 #define NETSETUP_INSTALL_INVOCATION ( 0x00040000 )
90 #define NETSETUP_IGNORE_UNSUPPORTED_FLAGS ( 0x10000000 )
91
92 #define FILTER_TEMP_DUPLICATE_ACCOUNT   ( 0x0001 )
93 #define FILTER_NORMAL_ACCOUNT   ( 0x0002 )
94 #define FILTER_INTERDOMAIN_TRUST_ACCOUNT        ( 0x0008 )
95 #define FILTER_WORKSTATION_TRUST_ACCOUNT        ( 0x0010 )
96 #define FILTER_SERVER_TRUST_ACCOUNT     ( 0x0020 )
97
98 #define TIMEQ_FOREVER  ( (uint32_t)-1L )
99
100 struct SERVER_INFO_1005 {
101         const char * sv1005_comment;
102 };
103
104 struct USER_INFO_0 {
105         const char * usri0_name;
106 };
107
108 #define USER_PRIV_GUEST ( 0 )
109 #define USER_PRIV_USER  ( 1 )
110 #define USER_PRIV_ADMIN ( 2 )
111
112 struct USER_INFO_1 {
113         const char * usri1_name;
114         const char * usri1_password;
115         uint32_t usri1_password_age;
116         uint32_t usri1_priv;
117         const char * usri1_home_dir;
118         const char * usri1_comment;
119         uint32_t usri1_flags;
120         const char * usri1_script_path;
121 };
122
123 #define AF_OP_PRINT     ( 0x1 )
124 #define AF_OP_COMM      ( 0x2 )
125 #define AF_OP_SERVER    ( 0x4 )
126 #define AF_OP_ACCOUNTS  ( 0x8 )
127
128 struct USER_INFO_2 {
129         const char * usri2_name;
130         const char * usri2_password;
131         uint32_t usri2_password_age;
132         uint32_t usri2_priv;
133         const char * usri2_home_dir;
134         const char * usri2_comment;
135         uint32_t usri2_flags;
136         const char * usri2_script_path;
137         uint32_t usri2_auth_flags;
138         const char * usri2_full_name;
139         const char * usri2_usr_comment;
140         const char * usri2_parms;
141         const char * usri2_workstations;
142         uint32_t usri2_last_logon;
143         uint32_t usri2_last_logoff;
144         uint32_t usri2_acct_expires;
145         uint32_t usri2_max_storage;
146         uint32_t usri2_units_per_week;
147         uint8_t *usri2_logon_hours;/* [unique] */
148         uint32_t usri2_bad_pw_count;
149         uint32_t usri2_num_logons;
150         const char * usri2_logon_server;
151         uint32_t usri2_country_code;
152         uint32_t usri2_code_page;
153 };
154
155 struct USER_INFO_3 {
156         const char * usri3_name;
157         uint32_t usri3_password_age;
158         uint32_t usri3_priv;
159         const char * usri3_home_dir;
160         const char * usri3_comment;
161         uint32_t usri3_flags;
162         const char * usri3_script_path;
163         uint32_t usri3_auth_flags;
164         const char * usri3_full_name;
165         const char * usri3_usr_comment;
166         const char * usri3_parms;
167         const char * usri3_workstations;
168         uint32_t usri3_last_logon;
169         uint32_t usri3_last_logoff;
170         uint32_t usri3_acct_expires;
171         uint32_t usri3_max_storage;
172         uint32_t usri3_units_per_week;
173         uint8_t *usri3_logon_hours;/* [unique] */
174         uint32_t usri3_bad_pw_count;
175         uint32_t usri3_num_logons;
176         const char * usri3_logon_server;
177         uint32_t usri3_country_code;
178         uint32_t usri3_code_page;
179         uint32_t usri3_user_id;
180         uint32_t usri3_primary_group_id;
181         const char * usri3_profile;
182         const char * usri3_home_dir_drive;
183         uint32_t usri3_password_expired;
184 };
185
186 struct USER_INFO_4 {
187         const char * usri4_name;
188         const char * usri4_password;
189         uint32_t usri4_password_age;
190         uint32_t usri4_priv;
191         const char * usri4_home_dir;
192         const char * usri4_comment;
193         uint32_t usri4_flags;
194         const char * usri4_script_path;
195         uint32_t usri4_auth_flags;
196         const char * usri4_full_name;
197         const char * usri4_usr_comment;
198         const char * usri4_parms;
199         const char * usri4_workstations;
200         uint32_t usri4_last_logon;
201         uint32_t usri4_last_logoff;
202         uint32_t usri4_acct_expires;
203         uint32_t usri4_max_storage;
204         uint32_t usri4_units_per_week;
205         uint8_t *usri4_logon_hours;/* [unique] */
206         uint32_t usri4_bad_pw_count;
207         uint32_t usri4_num_logons;
208         const char * usri4_logon_server;
209         uint32_t usri4_country_code;
210         uint32_t usri4_code_page;
211         struct domsid *usri4_user_sid;/* [unique] */
212         uint32_t usri4_primary_group_id;
213         const char * usri4_profile;
214         const char * usri4_home_dir_drive;
215         uint32_t usri4_password_expired;
216 };
217
218 struct USER_INFO_10 {
219         const char * usri10_name;
220         const char * usri10_comment;
221         const char * usri10_usr_comment;
222         const char * usri10_full_name;
223 };
224
225 struct USER_INFO_11 {
226         const char * usri11_name;
227         const char * usri11_comment;
228         const char * usri11_usr_comment;
229         const char * usri11_full_name;
230         uint32_t usri11_priv;
231         uint32_t usri11_auth_flags;
232         uint32_t usri11_password_age;
233         const char * usri11_home_dir;
234         const char * usri11_parms;
235         uint32_t usri11_last_logon;
236         uint32_t usri11_last_logoff;
237         uint32_t usri11_bad_pw_count;
238         uint32_t usri11_num_logons;
239         const char * usri11_logon_server;
240         uint32_t usri11_country_code;
241         const char * usri11_workstations;
242         uint32_t usri11_max_storage;
243         uint32_t usri11_units_per_week;
244         uint8_t *usri11_logon_hours;/* [unique] */
245         uint32_t usri11_code_page;
246 };
247
248 struct USER_INFO_20 {
249         const char * usri20_name;
250         const char * usri20_full_name;
251         const char * usri20_comment;
252         uint32_t usri20_flags;
253         uint32_t usri20_user_id;
254 };
255
256 struct USER_INFO_21 {
257         uint8_t *usri21_password;
258 };
259
260 struct USER_INFO_22 {
261         const char * usri22_name;
262         uint8_t *usri22_password;
263         uint32_t usri22_password_age;
264         uint32_t usri22_priv;
265         const char * usri22_home_dir;
266         const char * usri22_comment;
267         uint32_t usri22_flags;
268         uint32_t usri22_script_path;
269         uint32_t usri22_auth_flags;
270         const char * usri22_full_name;
271         const char * usri22_usr_comment;
272         const char * usri22_parms;
273         const char * usri22_workstations;
274         uint32_t usri22_last_logon;
275         uint32_t usri22_last_logoff;
276         uint32_t usri22_acct_expires;
277         uint32_t usri22_max_storage;
278         uint32_t usri22_units_per_week;
279         uint8_t *usri22_logon_hours;/* [unique] */
280         uint32_t usri22_bad_pw_count;
281         uint32_t usri22_num_logons;
282         const char * usri22_logon_server;
283         uint32_t usri22_country_code;
284         uint32_t usri22_code_page;
285 };
286
287 struct USER_INFO_23 {
288         const char * usri23_name;
289         const char * usri23_full_name;
290         const char * usri23_comment;
291         uint32_t usri23_flags;
292         struct domsid *usri23_user_sid;/* [unique] */
293 };
294
295 struct USER_INFO_1003 {
296         const char * usri1003_password;
297 };
298
299 struct USER_INFO_1005 {
300         uint32_t usri1005_priv;
301 };
302
303 struct USER_INFO_1006 {
304         const char * usri1006_home_dir;
305 };
306
307 struct USER_INFO_1007 {
308         const char * usri1007_comment;
309 };
310
311 struct USER_INFO_1008 {
312         uint32_t usri1008_flags;
313 };
314
315 struct USER_INFO_1009 {
316         const char * usri1009_script_path;
317 };
318
319 struct USER_INFO_1010 {
320         uint32_t usri1010_auth_flags;
321 };
322
323 struct USER_INFO_1011 {
324         const char * usri1011_full_name;
325 };
326
327 struct USER_INFO_1012 {
328         const char * usri1012_usr_comment;
329 };
330
331 struct USER_INFO_1013 {
332         const char * usri1013_parms;
333 };
334
335 struct USER_INFO_1014 {
336         const char * usri1014_workstations;
337 };
338
339 struct USER_INFO_1017 {
340         uint32_t usri1017_acct_expires;
341 };
342
343 struct USER_INFO_1018 {
344         uint32_t usri1018_max_storage;
345 };
346
347 struct USER_INFO_1020 {
348         uint32_t usri1020_units_per_week;
349         uint8_t *usri1020_logon_hours;/* [unique] */
350 };
351
352 struct USER_INFO_1023 {
353         const char * usri1023_logon_server;
354 };
355
356 struct USER_INFO_1024 {
357         uint32_t usri1024_country_code;
358 };
359
360 struct USER_INFO_1025 {
361         uint32_t usri1025_code_page;
362 };
363
364 struct USER_INFO_1051 {
365         uint32_t usri1051_primary_group_id;
366 };
367
368 struct USER_INFO_1052 {
369         const char * usri1052_profile;
370 };
371
372 struct USER_INFO_1053 {
373         const char * usri1053_home_dir_drive;
374 };
375
376 struct USER_MODALS_INFO_0 {
377         uint32_t usrmod0_min_passwd_len;
378         uint32_t usrmod0_max_passwd_age;
379         uint32_t usrmod0_min_passwd_age;
380         uint32_t usrmod0_force_logoff;
381         uint32_t usrmod0_password_hist_len;
382 };
383
384 struct USER_MODALS_INFO_1 {
385         uint32_t usrmod1_role;
386         const char * usrmod1_primary;
387 };
388
389 struct USER_MODALS_INFO_2 {
390         const char * usrmod2_domain_name;
391         struct domsid *usrmod2_domain_id;/* [unique] */
392 };
393
394 struct USER_MODALS_INFO_3 {
395         uint32_t usrmod3_lockout_duration;
396         uint32_t usrmod3_lockout_observation_window;
397         uint32_t usrmod3_lockout_threshold;
398 };
399
400 struct USER_MODALS_INFO_1001 {
401         uint32_t usrmod1001_min_passwd_len;
402 };
403
404 struct USER_MODALS_INFO_1002 {
405         uint32_t usrmod1002_max_passwd_age;
406 };
407
408 struct USER_MODALS_INFO_1003 {
409         uint32_t usrmod1003_min_passwd_age;
410 };
411
412 struct USER_MODALS_INFO_1004 {
413         uint32_t usrmod1004_force_logoff;
414 };
415
416 struct USER_MODALS_INFO_1005 {
417         uint32_t usrmod1005_password_hist_len;
418 };
419
420 struct USER_MODALS_INFO_1006 {
421         uint32_t usrmod1006_role;
422 };
423
424 struct USER_MODALS_INFO_1007 {
425         const char * usrmod1007_primary;
426 };
427
428 struct NET_DISPLAY_USER {
429         const char * usri1_name;
430         const char * usri1_comment;
431         uint32_t usri1_flags;
432         const char * usri1_full_name;
433         uint32_t usri1_user_id;
434         uint32_t usri1_next_index;
435 };
436
437 struct NET_DISPLAY_MACHINE {
438         const char * usri2_name;
439         const char * usri2_comment;
440         uint32_t usri2_flags;
441         uint32_t usri2_user_id;
442         uint32_t usri2_next_index;
443 };
444
445 struct NET_DISPLAY_GROUP {
446         const char * grpi3_name;
447         const char * grpi3_comment;
448         uint32_t grpi3_group_id;
449         uint32_t grpi3_attributes;
450         uint32_t grpi3_next_index;
451 };
452
453 struct GROUP_INFO_0 {
454         const char * grpi0_name;
455 };
456
457 struct GROUP_INFO_1 {
458         const char * grpi1_name;
459         const char * grpi1_comment;
460 };
461
462 struct GROUP_INFO_2 {
463         const char * grpi2_name;
464         const char * grpi2_comment;
465         uint32_t grpi2_group_id;
466         uint32_t grpi2_attributes;
467 };
468
469 struct GROUP_INFO_3 {
470         const char * grpi3_name;
471         const char * grpi3_comment;
472         struct domsid * grpi3_group_sid;
473         uint32_t grpi3_attributes;
474 };
475
476 struct GROUP_INFO_1002 {
477         const char * grpi1002_comment;
478 };
479
480 struct GROUP_INFO_1005 {
481         uint32_t grpi1005_attributes;
482 };
483
484 struct GROUP_USERS_INFO_0 {
485         const char * grui0_name;
486 };
487
488 struct GROUP_USERS_INFO_1 {
489         const char * grui1_name;
490         uint32_t grui1_attributes;
491 };
492
493 struct LOCALGROUP_INFO_0 {
494         const char * lgrpi0_name;
495 };
496
497 struct LOCALGROUP_INFO_1 {
498         const char * lgrpi1_name;
499         const char * lgrpi1_comment;
500 };
501
502 struct LOCALGROUP_INFO_1002 {
503         const char * lgrpi1002_comment;
504 };
505
506 enum SID_NAME_USE {
507         SidTypeUser=1,
508         SidTypeGroup=2,
509         SidTypeDomain=3,
510         SidTypeAlias=4,
511         SidTypeWellKnownGroup=5,
512         SidTypeDeletedAccount=6,
513         SidTypeInvalid=7,
514         SidTypeUnknown=8,
515         SidTypeComputer=9,
516         SidTypeLabel=10
517 };
518
519 struct LOCALGROUP_MEMBERS_INFO_0 {
520         struct domsid *lgrmi0_sid;/* [unique] */
521 };
522
523 struct LOCALGROUP_MEMBERS_INFO_1 {
524         struct domsid *lgrmi1_sid;/* [unique] */
525         enum SID_NAME_USE lgrmi1_sidusage;
526         const char * lgrmi1_name;
527 };
528
529 struct LOCALGROUP_MEMBERS_INFO_2 {
530         struct domsid *lgrmi2_sid;/* [unique] */
531         enum SID_NAME_USE lgrmi2_sidusage;
532         const char * lgrmi2_domainandname;
533 };
534
535 struct LOCALGROUP_MEMBERS_INFO_3 {
536         const char * lgrmi3_domainandname;
537 };
538
539 struct TIME_OF_DAY_INFO {
540         uint32_t tod_elapsedt;
541         uint32_t tod_msecs;
542         uint32_t tod_hours;
543         uint32_t tod_mins;
544         uint32_t tod_secs;
545         uint32_t tod_hunds;
546         int32_t tod_timezone;
547         uint32_t tod_tinterval;
548         uint32_t tod_day;
549         uint32_t tod_month;
550         uint32_t tod_year;
551         uint32_t tod_weekday;
552 };
553
554 struct SHARE_INFO_2 {
555         const char * shi2_netname;
556         uint32_t shi2_type;
557         const char * shi2_remark;
558         uint32_t shi2_permissions;
559         uint32_t shi2_max_uses;
560         uint32_t shi2_current_uses;
561         const char * shi2_path;
562         const char * shi2_passwd;
563 };
564
565 #endif /* _HEADER_libnetapi */
566
567 /****************************************************************
568 ****************************************************************/
569
570 struct libnetapi_ctx {
571         char *debuglevel;
572         char *error_string;
573         char *username;
574         char *workgroup;
575         char *password;
576         char *krb5_cc_env;
577         int use_kerberos;
578         int disable_policy_handle_cache;
579
580         void *private_data;
581 };
582
583 /****************************************************************
584 ****************************************************************/
585
586 NET_API_STATUS libnetapi_init(struct libnetapi_ctx **ctx);
587
588 /****************************************************************
589 ****************************************************************/
590
591 NET_API_STATUS libnetapi_free(struct libnetapi_ctx *ctx);
592
593 /****************************************************************
594 ****************************************************************/
595
596 NET_API_STATUS libnetapi_getctx(struct libnetapi_ctx **ctx);
597
598 /****************************************************************
599 ****************************************************************/
600
601 NET_API_STATUS libnetapi_set_debuglevel(struct libnetapi_ctx *ctx,
602                                         const char *debuglevel);
603
604 /****************************************************************
605 ****************************************************************/
606
607 NET_API_STATUS libnetapi_set_username(struct libnetapi_ctx *ctx,
608                                       const char *username);
609
610 /****************************************************************
611 ****************************************************************/
612
613 NET_API_STATUS libnetapi_set_password(struct libnetapi_ctx *ctx,
614                                       const char *password);
615
616 /****************************************************************
617 ****************************************************************/
618
619 NET_API_STATUS libnetapi_set_workgroup(struct libnetapi_ctx *ctx,
620                                        const char *workgroup);
621
622 /****************************************************************
623 ****************************************************************/
624
625 NET_API_STATUS libnetapi_set_use_kerberos(struct libnetapi_ctx *ctx);
626
627 /****************************************************************
628 ****************************************************************/
629
630 const char *libnetapi_errstr(NET_API_STATUS status);
631
632 /****************************************************************
633 ****************************************************************/
634
635 const char *libnetapi_get_error_string(struct libnetapi_ctx *ctx,
636                                        NET_API_STATUS status);
637
638 /****************************************************************
639  NetApiBufferAllocate
640 ****************************************************************/
641
642 NET_API_STATUS NetApiBufferAllocate(uint32_t byte_count,
643                                     void **buffer);
644
645 /****************************************************************
646  NetApiBufferFree
647 ****************************************************************/
648
649 NET_API_STATUS NetApiBufferFree(void *buffer);
650
651 /************************************************************//**
652  *
653  * ConvertSidToStringSid
654  *
655  * @brief Convert a domain sid into a string
656  *
657  * @param[in] sid A pointer to a sid structure
658  * @param[in,out] sid_string A pointer that holds a pointer to a sid string. Caller
659  * needs to free with free(3)
660  * @return bool
661  ***************************************************************/
662
663 int  ConvertSidToStringSid(const struct domsid *sid,
664                            char **sid_string);
665
666 /************************************************************//**
667  *
668  * ConvertStringSidToSid
669  *
670  * @brief Convert a string into a domain sid
671  *
672  * @param[in] sid_string A pointer to a sid string.
673  * @param[in,out] sid A pointer that holds a pointer to a sid structure.
674  * Caller needs to free with free(3)
675  * @return bool
676  ***************************************************************/
677
678 int ConvertStringSidToSid(const char *sid_string,
679                           struct domsid **sid);
680
681 /************************************************************//**
682  *
683  * NetJoinDomain
684  *
685  * @brief Join a computer to a domain or workgroup
686  *
687  * @param[in] server The server name to connect to
688  * @param[in] domain The domain or workgroup to join
689  * @param[in] account_ou The organizational Unit to create the computer account
690  * in (AD only)
691  * @param[in] account The domain account used for joining a domain
692  * @param[in] password The domain account's password used for joining a domain
693  * @param[in] join_flags Bitmask field to define specific join features
694  * @return NET_API_STATUS
695  *
696  * example netdomjoin/netdomjoin.c
697  ***************************************************************/
698
699 NET_API_STATUS NetJoinDomain(const char * server /* [in] */,
700                              const char * domain /* [in] [ref] */,
701                              const char * account_ou /* [in] */,
702                              const char * account /* [in] */,
703                              const char * password /* [in] */,
704                              uint32_t join_flags /* [in] */);
705
706 /************************************************************//**
707  *
708  * NetUnjoinDomain
709  *
710  * @brief Unjoin a computer from a domain or workgroup
711  *
712  * @param[in] server_name The server name to connect to
713  * @param[in] account The domain account used for unjoining a domain
714  * @param[in] password The domain account's password used for unjoining a domain
715  * @param[in] unjoin_flags Bitmask field to define specific unjoin features
716  * @return NET_API_STATUS
717  *
718  ***************************************************************/
719
720 NET_API_STATUS NetUnjoinDomain(const char * server_name /* [in] */,
721                                const char * account /* [in] */,
722                                const char * password /* [in] */,
723                                uint32_t unjoin_flags /* [in] */);
724
725 /************************************************************//**
726  *
727  * NetGetJoinInformation
728  *
729  * @brief Unjoin a computer from a domain or workgroup
730  *
731  * @param[in] server_name The server name to connect to
732  * @param[out] name_buffer Returns the name of the workgroup or domain
733  * @param[out] name_type  Returns the type of that name
734  * @return NET_API_STATUS
735  *
736  * example netdomjoin-gui/netdomjoin-gui.c
737  *
738  ***************************************************************/
739
740 NET_API_STATUS NetGetJoinInformation(const char * server_name /* [in] */,
741                                      const char * *name_buffer /* [out] [ref] */,
742                                      uint16_t *name_type /* [out] [ref] */);
743
744 /************************************************************//**
745  *
746  * NetGetJoinableOUs
747  *
748  * @brief Query for the list of joinable organizational Units that can be used
749  * for joining AD
750  *
751  * @param[in] server_name The server name to connect to
752  * @param[in] domain The AD domain to query
753  * @param[in] account The domain account used for the query
754  * @param[in] password The domain account's password used for the query
755  * @param[out] ou_count The number of ous returned
756  * @param[out] ous Returned string array containing the ous
757  * @return NET_API_STATUS
758  *
759  * example netdomjoin-gui/netdomjoin-gui.c
760  *
761  ***************************************************************/
762
763 NET_API_STATUS NetGetJoinableOUs(const char * server_name /* [in] */,
764                                  const char * domain /* [in] [ref] */,
765                                  const char * account /* [in] */,
766                                  const char * password /* [in] */,
767                                  uint32_t *ou_count /* [out] [ref] */,
768                                  const char * **ous /* [out] [ref] */);
769
770 /************************************************************//**
771  *
772  * NetServerGetInfo
773  *
774  * @brief Get Information on a server
775  *
776  * @param[in] server_name The server name to connect to
777  * @param[in] level The level to define which information is requested
778  * @param[out] buffer The returned buffer carrying the SERVER_INFO structure
779  * @return NET_API_STATUS
780  *
781  ***************************************************************/
782
783 NET_API_STATUS NetServerGetInfo(const char * server_name /* [in] */,
784                                 uint32_t level /* [in] */,
785                                 uint8_t **buffer /* [out] [ref] */);
786
787 /************************************************************//**
788  *
789  * NetServerSetInfo
790  *
791  * @brief Get Information on a server
792  *
793  * @param[in] server_name The server name to connect to
794  * @param[in] level The level to define which information is set
795  * @param[in] buffer The buffer carrying the SERVER_INFO structure
796  * @param[out] parm_error On failure returns the invalid SERVER_INFO member
797  * @return NET_API_STATUS
798  *
799  ***************************************************************/
800
801 NET_API_STATUS NetServerSetInfo(const char * server_name /* [in] */,
802                                 uint32_t level /* [in] */,
803                                 uint8_t *buffer /* [in] [ref] */,
804                                 uint32_t *parm_error /* [out] [ref] */);
805
806 /************************************************************//**
807  *
808  * NetGetDCName
809  *
810  * @brief Query for the PDC for a given domain
811  *
812  * @param[in] server_name The server name to connect to
813  * @param[in] domain_name The name of the domain to lookup
814  * @param[out] buffer The name of the domain to lookup
815  * @return NET_API_STATUS
816  *
817  * example getdc/getdc.c
818  ***************************************************************/
819
820 NET_API_STATUS NetGetDCName(const char * server_name /* [in] */,
821                             const char * domain_name /* [in] */,
822                             uint8_t **buffer /* [out] [ref] */);
823
824 /************************************************************//**
825  *
826  * NetGetAnyDCName
827  *
828  * @brief Query for any DC for a given domain
829  *
830  * @param[in] server_name The server name to connect to
831  * @param[in] domain_name The name of the domain to lookup
832  * @param[out] buffer The name of the domain to lookup
833  * @return NET_API_STATUS
834  *
835  * example getdc/getdc.c
836  ***************************************************************/
837
838 NET_API_STATUS NetGetAnyDCName(const char * server_name /* [in] */,
839                                const char * domain_name /* [in] */,
840                                uint8_t **buffer /* [out] [ref] */);
841
842
843 /************************************************************//**
844  *
845  * DsGetDcName
846  *
847  * @brief Lookup a DC for a given domain and return information structure
848  *
849  * @param[in] server_name The server name to connect to
850  * @param[in] domain_name The name of the domain to lookup (cannot be NULL)
851  * @param[in] domain_guid The GUID of the domain to lookup (optional)
852  * @param[in] site_name The name of the site the DC should reside in
853  * @param[in] flags A bitmask to request specific features supported by the DC
854  * @param[out] dc_info Pointer to a DOMAIN_CONTROLLER_INFO structure
855  * @return NET_API_STATUS
856  *
857  * example dsgetdc/dsgetdc.c
858  ***************************************************************/
859
860 NET_API_STATUS DsGetDcName(const char * server_name /* [in] [unique] */,
861                            const char * domain_name /* [in] [ref] */,
862                            struct GUID *domain_guid /* [in] [unique] */,
863                            const char * site_name /* [in] [unique] */,
864                            uint32_t flags /* [in] */,
865                            struct DOMAIN_CONTROLLER_INFO **dc_info /* [out] [ref] */);
866
867 /************************************************************//**
868  *
869  * NetUserAdd
870  *
871  * @brief Create a user on a given server
872  *
873  * @param[in] server_name The server name to connect to
874  * @param[in] level The level of the USER_INFO structure passed in (Currently
875  * only level 1 is supported)
876  * @param[in] buffer The buffer carrying the USER_INFO structure
877  * @param[out] parm_error In case of error returns the failing member of the
878  * structure
879  * @return NET_API_STATUS
880  *
881  * example user/user_add.c
882  ***************************************************************/
883
884 NET_API_STATUS NetUserAdd(const char * server_name /* [in] */,
885                           uint32_t level /* [in] */,
886                           uint8_t *buffer /* [in] [ref] */,
887                           uint32_t *parm_error /* [out] [ref] */);
888
889 /************************************************************//**
890  *
891  * NetUserDel
892  *
893  * @brief Delete a user on a given server
894  *
895  * @param[in] server_name The server name to connect to
896  * @param[in] user_name The user account to delete
897  * @return NET_API_STATUS
898  *
899  * example user/user_del.c
900  ***************************************************************/
901
902 NET_API_STATUS NetUserDel(const char * server_name /* [in] */,
903                           const char * user_name /* [in] */);
904
905 /************************************************************//**
906  *
907  * NetUserEnum
908  *
909  * @brief Enumerate accounts on a server
910  *
911  * @param[in] server_name The server name to connect to
912  * @param[in] level The enumeration level used for the query (Currently only
913  * level 0 is supported)
914  * @param[in] filter The account flags filter used for the query
915  * @param[out] buffer The returned enumeration buffer
916  * @param[in] prefmaxlen The requested maximal buffer size
917  * @param[out] entries_read The number of returned entries
918  * @param[out] total_entries The number of total entries
919  * @param[in,out] resume_handle A handle passed in and returned for resuming
920  * operations
921  * @return NET_API_STATUS
922  *
923  * example user/user_enum.c
924  ***************************************************************/
925
926 NET_API_STATUS NetUserEnum(const char * server_name /* [in] */,
927                            uint32_t level /* [in] */,
928                            uint32_t filter /* [in] */,
929                            uint8_t **buffer /* [out] [ref] */,
930                            uint32_t prefmaxlen /* [in] */,
931                            uint32_t *entries_read /* [out] [ref] */,
932                            uint32_t *total_entries /* [out] [ref] */,
933                            uint32_t *resume_handle /* [in,out] [ref] */);
934
935 /************************************************************//**
936  *
937  * NetUserChangePassword
938  *
939  * @brief Change the password for a user on a given server or in a given domain
940  *
941  * @param[in] domain_name The server or domain name to connect to
942  * @param[in] user_name The user account to change the password for
943  * @param[in] old_password The user account's old password
944  * @param[in] new_password The user account's new password
945  * @return NET_API_STATUS
946  *
947  * example user/user_chgpwd.c
948  ***************************************************************/
949
950 NET_API_STATUS NetUserChangePassword(const char * domain_name /* [in] */,
951                                      const char * user_name /* [in] */,
952                                      const char * old_password /* [in] */,
953                                      const char * new_password /* [in] */);
954
955 /************************************************************//**
956  *
957  * NetUserGetInfo
958  *
959  * @brief Get User Information
960  *
961  * @param[in] server_name The server name to connect to
962  * @param[in] user_name The name of the user that is going to be queried
963  * @param[in] level The level defining the requested USER_INFO_X structure
964  * @param[out] buffer The buffer containing a USER_INFO_X structure
965  * @return NET_API_STATUS
966  *
967  * example user/user_getinfo.c
968  ***************************************************************/
969
970 NET_API_STATUS NetUserGetInfo(const char * server_name /* [in] */,
971                               const char * user_name /* [in] */,
972                               uint32_t level /* [in] */,
973                               uint8_t **buffer /* [out] [ref] */);
974
975 /************************************************************//**
976  *
977  * NetUserSetInfo
978  *
979  * @brief Set User Information
980  *
981  * @param[in] server_name The server name to connect to
982  * @param[in] user_name The name of the user that is going to be modified
983  * @param[in] level The level defining the requested USER_INFO_X structure
984  * @param[in] buffer The buffer containing a USER_INFO_X structure
985  * @param[out] parm_err The returned parameter error number if any
986  * @return NET_API_STATUS
987  *
988  * example user/user_setinfo.c
989  ***************************************************************/
990
991 NET_API_STATUS NetUserSetInfo(const char * server_name /* [in] */,
992                               const char * user_name /* [in] */,
993                               uint32_t level /* [in] */,
994                               uint8_t *buffer /* [in] [ref] */,
995                               uint32_t *parm_err /* [out] [ref] */);
996
997 /************************************************************//**
998  *
999  * NetUserModalsGet
1000  *
1001  * @brief Get SAM domain and password information
1002  *
1003  * @param[in] server_name The server name to connect to
1004  * @param[in] level The level defining which USER_MODALS_INFO_X buffer to query
1005  * @param[out] buffer The returned USER_MODALS_INFO_X buffer
1006  * @return NET_API_STATUS
1007  *
1008  * example user/user_modalsget.c
1009  ***************************************************************/
1010
1011 NET_API_STATUS NetUserModalsGet(const char * server_name /* [in] */,
1012                                 uint32_t level /* [in] */,
1013                                 uint8_t **buffer /* [out] [ref] */);
1014
1015 /************************************************************//**
1016  *
1017  * NetUserModalsSet
1018  *
1019  * @brief Set SAM domain and password information
1020  *
1021  * @param[in] server_name The server name to connect to
1022  * @param[in] level The level defining which USER_MODALS_INFO_X buffer to query
1023  * @param[out] buffer The buffer conntaing a USER_MODALS_INFO_X structure
1024  * @param[out] parm_err The returned parameter error number if any
1025  * @return NET_API_STATUS
1026  *
1027  * example user/user_modalsset.c
1028  ***************************************************************/
1029
1030 NET_API_STATUS NetUserModalsSet(const char * server_name /* [in] */,
1031                                 uint32_t level /* [in] */,
1032                                 uint8_t *buffer /* [in] [ref] */,
1033                                 uint32_t *parm_err /* [out] [ref] */);
1034
1035 /************************************************************//**
1036  *
1037  * NetUserGetGroups
1038  *
1039  * @brief Enumerate grouplist of a user on a server
1040  *
1041  * @param[in] server_name The server name to connect to
1042  * @param[in] user_name The user name to query
1043  * @param[in] level The enumeration level used for the query (Currently only
1044  * level 0 is supported)
1045  * @param[out] buffer The returned enumeration buffer
1046  * @param[in] prefmaxlen The requested maximal buffer size
1047  * @param[out] entries_read The number of returned entries
1048  * @param[out] total_entries The number of total entries
1049  * @return NET_API_STATUS
1050  *
1051  * example user/user_getgroups.c
1052  ***************************************************************/
1053
1054 NET_API_STATUS NetUserGetGroups(const char * server_name /* [in] */,
1055                                 const char * user_name /* [in] */,
1056                                 uint32_t level /* [in] */,
1057                                 uint8_t **buffer /* [out] [ref] */,
1058                                 uint32_t prefmaxlen /* [in] */,
1059                                 uint32_t *entries_read /* [out] [ref] */,
1060                                 uint32_t *total_entries /* [out] [ref] */);
1061
1062 /************************************************************//**
1063  *
1064  * NetQueryDisplayInformation
1065  *
1066  * @brief Enumerate accounts on a server
1067  *
1068  * @param[in] server_name The server name to connect to
1069  * @param[in] level The enumeration level used for the query
1070  * @param[in] idx The index to start the the display enumeration at
1071  * @param[in] entries_requested The number of entries requested
1072  * @param[in] prefmaxlen The requested maximal buffer size
1073  * @param[out] entries_read The number of returned entries
1074  * @param[out] buffer The returned display information buffer
1075  * @return NET_API_STATUS
1076  *
1077  * example user/user_dispinfo.c
1078  ***************************************************************/
1079
1080 NET_API_STATUS NetQueryDisplayInformation(const char * server_name /* [in] [unique] */,
1081                                           uint32_t level /* [in] */,
1082                                           uint32_t idx /* [in] */,
1083                                           uint32_t entries_requested /* [in] */,
1084                                           uint32_t prefmaxlen /* [in] */,
1085                                           uint32_t *entries_read /* [out] [ref] */,
1086                                           void **buffer /* [out] [noprint,ref] */);
1087
1088 /************************************************************//**
1089  *
1090  * NetGroupAdd
1091  *
1092  * @brief Create Domain Group
1093  *
1094  * @param[in] server_name The server name to connect to
1095  * @param[in] level The level used for the new group creation
1096  * @param[in] buf The buffer containing the group structure
1097  * @param[out] parm_err The returned parameter error number if any
1098  * @return NET_API_STATUS
1099  *
1100  * example group/group_add.c
1101  ***************************************************************/
1102
1103 NET_API_STATUS NetGroupAdd(const char * server_name /* [in] */,
1104                            uint32_t level /* [in] */,
1105                            uint8_t *buf /* [in] [ref] */,
1106                            uint32_t *parm_err /* [out] [ref] */);
1107
1108 /************************************************************//**
1109  *
1110  * NetGroupDel
1111  *
1112  * @brief Delete Domain Group
1113  *
1114  * @param[in] server_name The server name to connect to
1115  * @param[in] group_name The name of the group that is going to be deleted
1116  * @return NET_API_STATUS
1117  *
1118  * example group/group_del.c
1119  ***************************************************************/
1120
1121 NET_API_STATUS NetGroupDel(const char * server_name /* [in] */,
1122                            const char * group_name /* [in] */);
1123
1124 /************************************************************//**
1125  *
1126  * NetGroupEnum
1127  *
1128  * @brief Enumerate groups on a server
1129  *
1130  * @param[in] server_name The server name to connect to
1131  * @param[in] level The enumeration level used for the query (Currently only
1132  * level 0 is supported)
1133  * @param[out] buffer The returned enumeration buffer
1134  * @param[in] prefmaxlen The requested maximal buffer size
1135  * @param[out] entries_read The number of returned entries
1136  * @param[out] total_entries The number of total entries
1137  * @param[in,out] resume_handle A handle passed in and returned for resuming
1138  * operations
1139  * @return NET_API_STATUS
1140  *
1141  * example group/group_enum.c
1142  ***************************************************************/
1143
1144 NET_API_STATUS NetGroupEnum(const char * server_name /* [in] */,
1145                             uint32_t level /* [in] */,
1146                             uint8_t **buffer /* [out] [ref] */,
1147                             uint32_t prefmaxlen /* [in] */,
1148                             uint32_t *entries_read /* [out] [ref] */,
1149                             uint32_t *total_entries /* [out] [ref] */,
1150                             uint32_t *resume_handle /* [in,out] [ref] */);
1151
1152 /************************************************************//**
1153  *
1154  * NetGroupSetInfo
1155  *
1156  * @brief Set Domain Group Information
1157  *
1158  * @param[in] server_name The server name to connect to
1159  * @param[in] group_name The name of the group that is going to be modified
1160  * @param[in] level The level defining the structure type in buf
1161  * @param[in] buf The buffer containing a GROUP_INFO_X structure
1162  * @param[out] parm_err The returned parameter error number if any
1163  * @return NET_API_STATUS
1164  *
1165  * example group/group_setinfo.c
1166  ***************************************************************/
1167
1168 NET_API_STATUS NetGroupSetInfo(const char * server_name /* [in] */,
1169                                const char * group_name /* [in] */,
1170                                uint32_t level /* [in] */,
1171                                uint8_t *buf /* [in] [ref] */,
1172                                uint32_t *parm_err /* [out] [ref] */);
1173
1174 /************************************************************//**
1175  *
1176  * NetGroupGetInfo
1177  *
1178  * @brief Get Domain Group Information
1179  *
1180  * @param[in] server_name The server name to connect to
1181  * @param[in] group_name The name of the group that is going to be queried
1182  * @param[in] level The level defining the requested GROUP_INFO_X structure
1183  * @param[out] buf The buffer containing a GROUP_INFO_X structure
1184  * @return NET_API_STATUS
1185  *
1186  * example group/group_getinfo.c
1187  ***************************************************************/
1188
1189 NET_API_STATUS NetGroupGetInfo(const char * server_name /* [in] */,
1190                                const char * group_name /* [in] */,
1191                                uint32_t level /* [in] */,
1192                                uint8_t **buf /* [out] [ref] */);
1193
1194 /************************************************************//**
1195  *
1196  * NetGroupAddUser
1197  *
1198  * @brief Add existing User to existing Domain Group
1199  *
1200  * @param[in] server_name The server name to connect to
1201  * @param[in] group_name The name of the group that is going to be modified
1202  * @param[in] user_name The name of the user that is going to be added to the
1203  * group
1204  * @return NET_API_STATUS
1205  *
1206  * example group/group_adduser.c
1207  ***************************************************************/
1208
1209 NET_API_STATUS NetGroupAddUser(const char * server_name /* [in] */,
1210                                const char * group_name /* [in] */,
1211                                const char * user_name /* [in] */);
1212
1213 /************************************************************//**
1214  *
1215  * NetGroupDelUser
1216  *
1217  * @brief Remove User from Domain Group
1218  *
1219  * @param[in] server_name The server name to connect to
1220  * @param[in] group_name The name of the group that is going to be modified
1221  * @param[in] user_name The name of the user that is going to be removed from
1222  * the group
1223  * @return NET_API_STATUS
1224  *
1225  * example group/group_deluser.c
1226  ***************************************************************/
1227
1228 NET_API_STATUS NetGroupDelUser(const char * server_name /* [in] */,
1229                                const char * group_name /* [in] */,
1230                                const char * user_name /* [in] */);
1231
1232 /************************************************************//**
1233  *
1234  * NetGroupGetUsers
1235  *
1236  * @brief Get Users for a group on a server
1237  *
1238  * @param[in] server_name The server name to connect to
1239  * @param[in] group_name The group name to enumerate users for
1240  * @param[in] level The enumeration level used for the query
1241  * @param[out] buffer The returned enumeration buffer
1242  * @param[in] prefmaxlen The requested maximal buffer size
1243  * @param[out] entries_read The number of returned entries
1244  * @param[out] total_entries The number of total entries
1245  * @param[in,out] resume_handle A handle passed in and returned for resuming
1246  * operations
1247  * @return NET_API_STATUS
1248  *
1249  * example group/group_getusers.c
1250  ***************************************************************/
1251
1252 NET_API_STATUS NetGroupGetUsers(const char * server_name /* [in] */,
1253                                 const char * group_name /* [in] */,
1254                                 uint32_t level /* [in] */,
1255                                 uint8_t **buffer /* [out] [ref] */,
1256                                 uint32_t prefmaxlen /* [in] */,
1257                                 uint32_t *entries_read /* [out] [ref] */,
1258                                 uint32_t *total_entries /* [out] [ref] */,
1259                                 uint32_t *resume_handle /* [in,out] [ref] */);
1260
1261 /************************************************************//**
1262  *
1263  * NetLocalGroupAdd
1264  *
1265  * @brief Create Local Group
1266  *
1267  * @param[in] server_name The server name to connect to
1268  * @param[in] level The level used for the new group creation
1269  * @param[in] buf The buffer containing the group structure
1270  * @param[out] parm_err The returned parameter error number if any
1271  * @return NET_API_STATUS
1272  *
1273  * example localgroup/localgroup_add.c
1274  ***************************************************************/
1275
1276 NET_API_STATUS NetLocalGroupAdd(const char * server_name /* [in] */,
1277                                 uint32_t level /* [in] */,
1278                                 uint8_t *buf /* [in] [ref] */,
1279                                 uint32_t *parm_err /* [out] [ref] */);
1280
1281 /************************************************************//**
1282  *
1283  * NetLocalGroupDel
1284  *
1285  * @brief Delete Local Group
1286  *
1287  * @param[in] server_name The server name to connect to
1288  * @param[in] group_name The name of the group that is going to be deleted
1289  * @return NET_API_STATUS
1290  *
1291  * example localgroup/localgroup_del.c
1292  ***************************************************************/
1293
1294
1295 NET_API_STATUS NetLocalGroupDel(const char * server_name /* [in] */,
1296                                 const char * group_name /* [in] */);
1297
1298 /************************************************************//**
1299  *
1300  * NetLocalGroupGetInfo
1301  *
1302  * @brief Get Local Group Information
1303  *
1304  * @param[in] server_name The server name to connect to
1305  * @param[in] group_name The name of the group that is going to be queried
1306  * @param[in] level The level defining the requested LOCALGROUP_INFO_X structure
1307  * @param[out] buf The buffer containing a LOCALGROUP_INFO_X structure
1308  * @return NET_API_STATUS
1309  *
1310  * example localgroup/localgroup_getinfo.c
1311  ***************************************************************/
1312
1313 NET_API_STATUS NetLocalGroupGetInfo(const char * server_name /* [in] */,
1314                                     const char * group_name /* [in] */,
1315                                     uint32_t level /* [in] */,
1316                                     uint8_t **buf /* [out] [ref] */);
1317
1318 /************************************************************//**
1319  *
1320  * NetLocalGroupSetInfo
1321  *
1322  * @brief Set Local Group Information
1323  *
1324  * @param[in] server_name The server name to connect to
1325  * @param[in] group_name The name of the group that is going to be modified
1326  * @param[in] level The level defining the requested LOCALGROUP_INFO_X structure
1327  * @param[in] buf The buffer containing a LOCALGROUP_INFO_X structure
1328  * @param[out] parm_err The returned parameter error number if any
1329  * @return NET_API_STATUS
1330  *
1331  * example localgroup/localgroup_setinfo.c
1332  ***************************************************************/
1333
1334
1335 NET_API_STATUS NetLocalGroupSetInfo(const char * server_name /* [in] */,
1336                                     const char * group_name /* [in] */,
1337                                     uint32_t level /* [in] */,
1338                                     uint8_t *buf /* [in] [ref] */,
1339                                     uint32_t *parm_err /* [out] [ref] */);
1340
1341 /************************************************************//**
1342  *
1343  * NetLocalGroupEnum
1344  *
1345  * @brief Enumerate local groups on a server
1346  *
1347  * @param[in] server_name The server name to connect to
1348  * @param[in] level The enumeration level used for the query (Currently only
1349  * level 0 is supported)
1350  * @param[out] buffer The returned enumeration buffer
1351  * @param[in] prefmaxlen The requested maximal buffer size
1352  * @param[out] entries_read The number of returned entries
1353  * @param[out] total_entries The number of total entries
1354  * @param[in,out] resume_handle A handle passed in and returned for resuming
1355  * operations
1356  * @return NET_API_STATUS
1357  *
1358  * example localgroup/localgroup_enum.c
1359  ***************************************************************/
1360
1361 NET_API_STATUS NetLocalGroupEnum(const char * server_name /* [in] */,
1362                                  uint32_t level /* [in] */,
1363                                  uint8_t **buffer /* [out] [ref] */,
1364                                  uint32_t prefmaxlen /* [in] */,
1365                                  uint32_t *entries_read /* [out] [ref] */,
1366                                  uint32_t *total_entries /* [out] [ref] */,
1367                                  uint32_t *resume_handle /* [in,out] [ref] */);
1368
1369 /************************************************************//**
1370  *
1371  * NetLocalGroupAddMembers
1372  *
1373  * @brief Add Members to a Local Group
1374  *
1375  * @param[in] server_name The server name to connect to
1376  * @param[in] group_name The name of the group that is going to modified
1377  * @param[in] level The level defining the LOCALGROUP_MEMBERS_INFO_X structure
1378  * @param[in] buffer The buffer containing a LOCALGROUP_MEMBERS_INFO_X structure
1379  * @param[in] total_entries The number of LOCALGROUP_MEMBERS_INFO_X entries in
1380  * the buffer
1381  * @return NET_API_STATUS
1382  *
1383  * example localgroup/localgroup_addmembers.c
1384  ***************************************************************/
1385
1386 NET_API_STATUS NetLocalGroupAddMembers(const char * server_name /* [in] */,
1387                                        const char * group_name /* [in] */,
1388                                        uint32_t level /* [in] */,
1389                                        uint8_t *buffer /* [in] [ref] */,
1390                                        uint32_t total_entries /* [in] */);
1391
1392 /************************************************************//**
1393  *
1394  * NetLocalGroupDelMembers
1395  *
1396  * @brief Delete Members from a Local Group
1397  *
1398  * @param[in] server_name The server name to connect to
1399  * @param[in] group_name The name of the group that is going to modified
1400  * @param[in] level The level defining the LOCALGROUP_MEMBERS_INFO_X structure
1401  * @param[in] buffer The buffer containing a LOCALGROUP_MEMBERS_INFO_X structure
1402  * @param[in] total_entries The number of LOCALGROUP_MEMBERS_INFO_X entries in
1403  * the buffer
1404  * @return NET_API_STATUS
1405  *
1406  * example localgroup/localgroup_delmembers.c
1407  ***************************************************************/
1408
1409 NET_API_STATUS NetLocalGroupDelMembers(const char * server_name /* [in] */,
1410                                        const char * group_name /* [in] */,
1411                                        uint32_t level /* [in] */,
1412                                        uint8_t *buffer /* [in] [ref] */,
1413                                        uint32_t total_entries /* [in] */);
1414
1415 /************************************************************//**
1416  *
1417  * NetLocalGroupGetMembers
1418  *
1419  * @brief Enumerate Members in a local group
1420  *
1421  * @param[in] server_name The server name to connect to
1422  * @param[in] local_group_name The localgroup that is going to be queried
1423  * @param[in] level The level defining the LOCALGROUP_MEMBERS_INFO_X structure
1424  * @param[out] buffer The buffer containing a LOCALGROUP_MEMBERS_INFO_X
1425  * structure
1426  * @param[in] prefmaxlen The requested maximal buffer size
1427  * @param[out] entries_read The number of LOCALGROUP_MEMBERS_INFO_X entries in the buffer
1428  * @param[out] total_entries The total number of LOCALGROUP_MEMBERS_INFO_X entries for that group
1429  * @param[in,out] resume_handle A handle passed in and returned for resuming
1430  * operations
1431  * @return NET_API_STATUS
1432  *
1433  * example localgroup/localgroup_getmembers.c
1434  ***************************************************************/
1435
1436 NET_API_STATUS NetLocalGroupGetMembers(const char * server_name /* [in] */,
1437                                        const char * local_group_name /* [in] */,
1438                                        uint32_t level /* [in] */,
1439                                        uint8_t **buffer /* [out] [ref] */,
1440                                        uint32_t prefmaxlen /* [in] */,
1441                                        uint32_t *entries_read /* [out] [ref] */,
1442                                        uint32_t *total_entries /* [out] [ref] */,
1443                                        uint32_t *resume_handle /* [in,out] [ref] */);
1444
1445 /************************************************************//**
1446  *
1447  * NetLocalGroupSetMembers
1448  *
1449  * @brief Set Members in a Local Group
1450  *
1451  * @param[in] server_name The server name to connect to
1452  * @param[in] group_name The name of the group that is going to modified
1453  * @param[in] level The level defining the LOCALGROUP_MEMBERS_INFO_X structure
1454  * @param[in] buffer The buffer containing a LOCALGROUP_MEMBERS_INFO_X structure
1455  * @param[in] total_entries The number of LOCALGROUP_MEMBERS_INFO_X entries in
1456  * the buffer
1457  * @return NET_API_STATUS
1458  *
1459  * example localgroup/localgroup_setmembers.c
1460  ***************************************************************/
1461
1462 NET_API_STATUS NetLocalGroupSetMembers(const char * server_name /* [in] */,
1463                                        const char * group_name /* [in] */,
1464                                        uint32_t level /* [in] */,
1465                                        uint8_t *buffer /* [in] [ref] */,
1466                                        uint32_t total_entries /* [in] */);
1467
1468 /************************************************************//**
1469  *
1470  * NetRemoteTOD
1471  *
1472  * @brief Query remote Time of Day
1473  *
1474  * @param[in] server_name The server name to connect to
1475  * @param[out] buf The buffer containing a TIME_OF_DAY_INFO structure
1476  * @return NET_API_STATUS
1477  *
1478  * example server/remote_tod.c
1479  ***************************************************************/
1480
1481 NET_API_STATUS NetRemoteTOD(const char * server_name /* [in] */,
1482                             uint8_t **buf /* [out] [ref] */);
1483
1484 /************************************************************//**
1485  *
1486  * NetShareAdd
1487  *
1488  * @brief Add Share
1489  *
1490  * @param[in] server_name The server name to connect to
1491  * @param[in] level The level defining the requested SHARE_INFO_X structure
1492  * @param[in] buf The buffer containing a SHARE_INFO_X structure
1493  * @param[out] parm_err The returned parameter error number if any
1494  * @return NET_API_STATUS
1495  *
1496  * example share/share_add.c
1497  ***************************************************************/
1498
1499 NET_API_STATUS NetShareAdd(const char * server_name /* [in] */,
1500                            uint32_t level /* [in] */,
1501                            uint8_t *buffer /* [in] [ref] */,
1502                            uint32_t *parm_err /* [out] [ref] */);
1503
1504 #ifdef __cplusplus
1505 }
1506 #endif /* __cplusplus */
1507
1508 #endif /* __LIB_NETAPI_H__ */