netapi: add IDL for NetGroupSetUsers.
[ira/wip.git] / source3 / librpc / idl / libnetapi.idl
1 /*
2   libnetapi interface definition
3 */
4
5 cpp_quote("#define LIBNETAPI_LOCAL_SERVER(x) (!x || is_myname_or_ipaddr(x))")
6 cpp_quote("#ifndef MAXSUBAUTHS")
7 cpp_quote("#define MAXSUBAUTHS 15 /* max sub authorities in a SID */")
8 cpp_quote("#endif")
9
10 [
11         pointer_default(unique)
12 ]
13 interface libnetapi
14 {
15         const int ERROR_MORE_DATA = 234L;
16
17         [public] typedef [v1_enum] enum {
18                 NERR_Success=0
19         } NET_API_STATUS;
20
21         [public] typedef struct {
22                 uint8 sid_rev_num;
23                 uint8 num_auths;
24                 uint8 id_auth[6];
25                 uint32 sub_auths[MAXSUBAUTHS];
26         } domsid;
27
28         /*******************************************/
29         /* NetJoinDomain                           */
30         /*******************************************/
31
32         typedef [public,bitmap32bit] bitmap {
33                 NETSETUP_JOIN_DOMAIN                    = 0x00000001,
34                 NETSETUP_ACCT_CREATE                    = 0x00000002,
35                 NETSETUP_ACCT_DELETE                    = 0x00000004,
36                 NETSETUP_WIN9X_UPGRADE                  = 0x00000010,
37                 NETSETUP_DOMAIN_JOIN_IF_JOINED          = 0x00000020,
38                 NETSETUP_JOIN_UNSECURE                  = 0x00000040,
39                 NETSETUP_MACHINE_PWD_PASSED             = 0x00000080,
40                 NETSETUP_DEFER_SPN_SET                  = 0x00000100,
41                 NETSETUP_JOIN_DC_ACCOUNT                = 0x00000200,
42                 NETSETUP_JOIN_WITH_NEW_NAME             = 0x00000400,
43                 NETSETUP_INSTALL_INVOCATION             = 0x00040000,
44                 NETSETUP_IGNORE_UNSUPPORTED_FLAGS       = 0x10000000
45         } NetJoinFlags;
46
47         [nopush,nopull] NET_API_STATUS NetJoinDomain(
48                 [in,unique] string *server,
49                 [in,ref] string *domain,
50                 [in,unique] string *account_ou,
51                 [in,unique] string *account,
52                 [in,unique] string *password,
53                 [in] NetJoinFlags join_flags
54                 );
55
56         /*******************************************/
57         /* NetUnjoinDomain                         */
58         /*******************************************/
59
60         [nopush,nopull] NET_API_STATUS NetUnjoinDomain(
61                 [in,unique] string *server_name,
62                 [in,unique] string *account,
63                 [in,unique] string *password,
64                 [in] NetJoinFlags unjoin_flags
65                 );
66
67         /*******************************************/
68         /* NetGetJoinInformation                   */
69         /*******************************************/
70
71         typedef enum {
72                 NetSetupUnknownStatus = 0,
73                 NetSetupUnjoined = 1,
74                 NetSetupWorkgroupName = 2,
75                 NetSetupDomainName = 3
76         } NETSETUP_JOIN_STATUS;
77
78         [nopush,nopull] NET_API_STATUS NetGetJoinInformation(
79                 [in,unique] string *server_name,
80                 [out] string **name_buffer,
81                 [out] uint16 *name_type
82                 );
83
84         /*******************************************/
85         /* NetGetJoinableOUs                       */
86         /*******************************************/
87
88         [nopush,nopull] NET_API_STATUS NetGetJoinableOUs(
89                 [in,unique] string *server_name,
90                 [in,ref] string *domain,
91                 [in,unique] string *account,
92                 [in,unique] string *password,
93                 [out] uint32 *ou_count,
94                 [out] string ***ous
95                 );
96
97         /*******************************************/
98         /* NetRenameMachineInDomain                */
99         /*******************************************/
100
101         [nopush,nopull] NET_API_STATUS NetRenameMachineInDomain(
102                 [in] string server_name,
103                 [in] string new_machine_name,
104                 [in] string account,
105                 [in] string password,
106                 [in] uint32 rename_options
107                 );
108
109         /*******************************************/
110         /* NetServerGetInfo                        */
111         /*******************************************/
112
113         [public] typedef struct {
114                 uint32 sv100_platform_id;
115                 string sv100_name;
116         } SERVER_INFO_100;
117
118         [public] typedef struct {
119                 uint32 sv101_platform_id;
120                 string sv101_name;
121                 uint32 sv101_version_major;
122                 uint32 sv101_version_minor;
123                 uint32 sv101_type;
124                 string sv101_comment;
125         } SERVER_INFO_101;
126
127         [public] typedef struct {
128                 uint32 sv102_platform_id;
129                 string sv102_name;
130                 uint32 sv102_version_major;
131                 uint32 sv102_version_minor;
132                 uint32 sv102_type;
133                 string sv102_comment;
134                 uint32 sv102_users;
135                 uint32 sv102_disc;
136                 boolean8 sv102_hidden;
137                 uint32 sv102_announce;
138                 uint32 sv102_anndelta;
139                 uint32 sv102_licenses;
140                 string sv102_userpath;
141         } SERVER_INFO_102;
142
143         [public] typedef struct {
144                 string sv1005_comment;
145         } SERVER_INFO_1005;
146
147         [nopush,nopull] NET_API_STATUS NetServerGetInfo(
148                 [in,unique] string *server_name,
149                 [in] uint32 level,
150                 [out] uint8 **buffer
151                 );
152
153         /*******************************************/
154         /* NetServerSetInfo                        */
155         /*******************************************/
156
157         [nopush,nopull] NET_API_STATUS NetServerSetInfo(
158                 [in,unique] string *server_name,
159                 [in] uint32 level,
160                 [in] uint8 *buffer,
161                 [out] uint32 *parm_error
162                 );
163
164         /*******************************************/
165         /* NetGetDCName                            */
166         /*******************************************/
167
168         [nopush,nopull] NET_API_STATUS NetGetDCName(
169                 [in,unique] string *server_name,
170                 [in,unique] string *domain_name,
171                 [out] uint8 **buffer
172                 );
173
174         /*******************************************/
175         /* NetGetAnyDCName                         */
176         /*******************************************/
177
178         [nopush,nopull] NET_API_STATUS NetGetAnyDCName(
179                 [in,unique] string *server_name,
180                 [in,unique] string *domain_name,
181                 [out] uint8 **buffer
182                 );
183
184         /*******************************************/
185         /* DsGetDcName                             */
186         /*******************************************/
187
188         [public] typedef struct {
189                 string domain_controller_name;
190                 string domain_controller_address;
191                 uint32 domain_controller_address_type;
192                 GUID domain_guid;
193                 string domain_name;
194                 string dns_forest_name;
195                 uint32 flags;
196                 string dc_site_name;
197                 string client_site_name;
198         } DOMAIN_CONTROLLER_INFO;
199
200         [nopush,nopull] NET_API_STATUS DsGetDcName(
201                 [in,unique] string *server_name,
202                 [in,ref] string *domain_name,
203                 [in,unique] GUID *domain_guid,
204                 [in,unique] string *site_name,
205                 [in] uint32 flags,
206                 [out,ref] DOMAIN_CONTROLLER_INFO **dc_info
207                 );
208
209         /*******************************************/
210         /* NetUserAdd                              */
211         /*******************************************/
212
213         [public] typedef struct {
214                 string usri0_name;
215         } USER_INFO_0;
216
217         /* priv */
218         const int USER_PRIV_GUEST       = 0;
219         const int USER_PRIV_USER        = 1;
220         const int USER_PRIV_ADMIN       = 2;
221
222         [public] typedef struct {
223                 string usri1_name;
224                 string usri1_password;
225                 uint32 usri1_password_age;
226                 uint32 usri1_priv;
227                 string usri1_home_dir;
228                 string usri1_comment;
229                 uint32 usri1_flags;
230                 string usri1_script_path;
231         } USER_INFO_1;
232
233         /* auth_flags in USER_INFO_2 */
234
235         const int AF_OP_PRINT           = 0x1;
236         const int AF_OP_COMM            = 0x2;
237         const int AF_OP_SERVER          = 0x4;
238         const int AF_OP_ACCOUNTS        = 0x8;
239         const int AF_SETTABLE_BITS      = (AF_OP_PRINT | AF_OP_COMM | AF_OP_SERVER | AF_OP_ACCOUNTS);
240
241         const int USER_MAXSTORAGE_UNLIMITED = (uint32_t)-1L;
242
243         [public] typedef struct {
244                 string usri2_name;
245                 string usri2_password;
246                 uint32 usri2_password_age;
247                 uint32 usri2_priv;
248                 string usri2_home_dir;
249                 string usri2_comment;
250                 uint32 usri2_flags;
251                 string usri2_script_path;
252                 uint32 usri2_auth_flags;
253                 string usri2_full_name;
254                 string usri2_usr_comment;
255                 string usri2_parms;
256                 string usri2_workstations;
257                 uint32 usri2_last_logon;
258                 uint32 usri2_last_logoff;
259                 uint32 usri2_acct_expires;
260                 uint32 usri2_max_storage;
261                 uint32 usri2_units_per_week;
262                 uint8 *usri2_logon_hours;
263                 uint32 usri2_bad_pw_count;
264                 uint32 usri2_num_logons;
265                 string usri2_logon_server;
266                 uint32 usri2_country_code;
267                 uint32 usri2_code_page;
268         } USER_INFO_2;
269
270         [public] typedef struct {
271                 string usri3_name;
272                 uint32 usri3_password_age;
273                 uint32 usri3_priv;
274                 string usri3_home_dir;
275                 string usri3_comment;
276                 uint32 usri3_flags;
277                 string usri3_script_path;
278                 uint32 usri3_auth_flags;
279                 string usri3_full_name;
280                 string usri3_usr_comment;
281                 string usri3_parms;
282                 string usri3_workstations;
283                 uint32 usri3_last_logon;
284                 uint32 usri3_last_logoff;
285                 uint32 usri3_acct_expires;
286                 uint32 usri3_max_storage;
287                 uint32 usri3_units_per_week;
288                 uint8 *usri3_logon_hours;
289                 uint32 usri3_bad_pw_count;
290                 uint32 usri3_num_logons;
291                 string usri3_logon_server;
292                 uint32 usri3_country_code;
293                 uint32 usri3_code_page;
294                 uint32 usri3_user_id;
295                 uint32 usri3_primary_group_id;
296                 string usri3_profile;
297                 string usri3_home_dir_drive;
298                 uint32 usri3_password_expired;
299         } USER_INFO_3;
300
301         [public] typedef struct {
302                 string usri4_name;
303                 string usri4_password;
304                 uint32 usri4_password_age;
305                 uint32 usri4_priv;
306                 string usri4_home_dir;
307                 string usri4_comment;
308                 uint32 usri4_flags;
309                 string usri4_script_path;
310                 uint32 usri4_auth_flags;
311                 string usri4_full_name;
312                 string usri4_usr_comment;
313                 string usri4_parms;
314                 string usri4_workstations;
315                 uint32 usri4_last_logon;
316                 uint32 usri4_last_logoff;
317                 uint32 usri4_acct_expires;
318                 uint32 usri4_max_storage;
319                 uint32 usri4_units_per_week;
320                 uint8 *usri4_logon_hours;
321                 uint32 usri4_bad_pw_count;
322                 uint32 usri4_num_logons;
323                 string usri4_logon_server;
324                 uint32 usri4_country_code;
325                 uint32 usri4_code_page;
326                 domsid *usri4_user_sid;
327                 uint32 usri4_primary_group_id;
328                 string usri4_profile;
329                 string usri4_home_dir_drive;
330                 uint32 usri4_password_expired;
331         } USER_INFO_4;
332
333         [public] typedef struct {
334                 string usri10_name;
335                 string usri10_comment;
336                 string usri10_usr_comment;
337                 string usri10_full_name;
338         } USER_INFO_10;
339
340         [public] typedef struct {
341                 string usri11_name;
342                 string usri11_comment;
343                 string usri11_usr_comment;
344                 string usri11_full_name;
345                 uint32 usri11_priv;
346                 uint32 usri11_auth_flags;
347                 uint32 usri11_password_age;
348                 string usri11_home_dir;
349                 string usri11_parms;
350                 uint32 usri11_last_logon;
351                 uint32 usri11_last_logoff;
352                 uint32 usri11_bad_pw_count;
353                 uint32 usri11_num_logons;
354                 string usri11_logon_server;
355                 uint32 usri11_country_code;
356                 string usri11_workstations;
357                 uint32 usri11_max_storage;
358                 uint32 usri11_units_per_week;
359                 uint8 *usri11_logon_hours;
360                 uint32 usri11_code_page;
361         } USER_INFO_11;
362
363         [public] typedef struct {
364                 string usri20_name;
365                 string usri20_full_name;
366                 string usri20_comment;
367                 uint32 usri20_flags;
368                 uint32 usri20_user_id;
369         } USER_INFO_20;
370
371         const int ENCRYPTED_PWLEN = 16;
372
373         [public] typedef struct {
374                 uint8 usri21_password[ENCRYPTED_PWLEN];
375         } USER_INFO_21;
376
377         [public] typedef struct {
378                 string usri22_name;
379                 uint8 usri22_password[ENCRYPTED_PWLEN];
380                 uint32 usri22_password_age;
381                 uint32 usri22_priv;
382                 string usri22_home_dir;
383                 string usri22_comment;
384                 uint32 usri22_flags;
385                 uint32 usri22_script_path;
386                 uint32 usri22_auth_flags;
387                 string usri22_full_name;
388                 string usri22_usr_comment;
389                 string usri22_parms;
390                 string usri22_workstations;
391                 uint32 usri22_last_logon;
392                 uint32 usri22_last_logoff;
393                 uint32 usri22_acct_expires;
394                 uint32 usri22_max_storage;
395                 uint32 usri22_units_per_week;
396                 uint8 *usri22_logon_hours;
397                 uint32 usri22_bad_pw_count;
398                 uint32 usri22_num_logons;
399                 string usri22_logon_server;
400                 uint32 usri22_country_code;
401                 uint32 usri22_code_page;
402         } USER_INFO_22;
403
404         [public] typedef struct {
405                 string usri23_name;
406                 string usri23_full_name;
407                 string usri23_comment;
408                 uint32 usri23_flags;
409                 domsid *usri23_user_sid;
410         } USER_INFO_23;
411
412         [public] typedef struct {
413                 string usri1003_password;
414         } USER_INFO_1003;
415
416         [public] typedef struct {
417                 uint32 usri1005_priv;
418         } USER_INFO_1005;
419
420         [public] typedef struct {
421                 string usri1006_home_dir;
422         } USER_INFO_1006;
423
424         [public] typedef struct {
425                 string usri1007_comment;
426         } USER_INFO_1007;
427
428         [public] typedef struct {
429                 uint32 usri1008_flags;
430         } USER_INFO_1008;
431
432         [public] typedef struct {
433                 string usri1009_script_path;
434         } USER_INFO_1009;
435
436         [public] typedef struct {
437                 uint32 usri1010_auth_flags;
438         } USER_INFO_1010;
439
440         [public] typedef struct {
441                 string usri1011_full_name;
442         } USER_INFO_1011;
443
444         [public] typedef struct {
445                 string usri1012_usr_comment;
446         } USER_INFO_1012;
447
448         [public] typedef struct {
449                 string usri1013_parms;
450         } USER_INFO_1013;
451
452         [public] typedef struct {
453                 string usri1014_workstations;
454         } USER_INFO_1014;
455
456         [public] typedef struct {
457                 uint32 usri1017_acct_expires;
458         } USER_INFO_1017;
459
460         [public] typedef struct {
461                 uint32 usri1018_max_storage;
462         } USER_INFO_1018;
463
464         [public] typedef struct {
465                 uint32 usri1020_units_per_week;
466                 uint8 *usri1020_logon_hours;
467         } USER_INFO_1020;
468
469         [public] typedef struct {
470                 string usri1023_logon_server;
471         } USER_INFO_1023;
472
473         [public] typedef struct {
474                 uint32 usri1024_country_code;
475         } USER_INFO_1024;
476
477         [public] typedef struct {
478                 uint32 usri1025_code_page;
479         } USER_INFO_1025;
480
481         [public] typedef struct {
482                 uint32 usri1051_primary_group_id;
483         } USER_INFO_1051;
484
485         [public] typedef struct {
486                 string usri1052_profile;
487         } USER_INFO_1052;
488
489         [public] typedef struct {
490                 string usri1053_home_dir_drive;
491         } USER_INFO_1053;
492
493         [public] typedef struct {
494                 string usriX_name;
495                 string usriX_password;
496                 uint32 usriX_password_age;
497                 uint32 usriX_priv;
498                 string usriX_home_dir;
499                 string usriX_comment;
500                 uint32 usriX_flags;
501                 string usriX_script_path;
502                 uint32 usriX_auth_flags;
503                 string usriX_full_name;
504                 string usriX_usr_comment;
505                 string usriX_parms;
506                 string usriX_workstations;
507                 uint32 usriX_last_logon;
508                 uint32 usriX_last_logoff;
509                 uint32 usriX_acct_expires;
510                 uint32 usriX_max_storage;
511                 uint32 usriX_units_per_week;
512                 uint8 *usriX_logon_hours;
513                 uint32 usriX_bad_pw_count;
514                 uint32 usriX_num_logons;
515                 string usriX_logon_server;
516                 uint32 usriX_country_code;
517                 uint32 usriX_code_page;
518                 string usriX_profile;
519                 string usriX_home_dir_drive;
520                 uint32 usriX_primary_group_id;
521         } USER_INFO_X;
522
523         [nopush,nopull] NET_API_STATUS NetUserAdd(
524                 [in,unique] string *server_name,
525                 [in] uint32 level,
526                 [in,ref] uint8 *buffer,
527                 [out,ref] uint32 *parm_error
528                 );
529
530         /*******************************************/
531         /* NetUserDel                              */
532         /*******************************************/
533
534         [nopush,nopull] NET_API_STATUS NetUserDel(
535                 [in,unique] string *server_name,
536                 [in,ref] string *user_name
537                 );
538
539         /*******************************************/
540         /* NetUserEnum                             */
541         /*******************************************/
542
543         const int FILTER_TEMP_DUPLICATE_ACCOUNT = 0x0001;
544         const int FILTER_NORMAL_ACCOUNT = 0x0002;
545         const int FILTER_INTERDOMAIN_TRUST_ACCOUNT = 0x0008;
546         const int FILTER_WORKSTATION_TRUST_ACCOUNT = 0x0010;
547         const int FILTER_SERVER_TRUST_ACCOUNT = 0x0020;
548
549         [nopush,nopull] NET_API_STATUS NetUserEnum(
550                 [in,unique] string *server_name,
551                 [in] uint32 level,
552                 [in] uint32 filter,
553                 [out,ref] uint8 **buffer,
554                 [in] uint32 prefmaxlen,
555                 [out,ref] uint32 *entries_read,
556                 [out,ref] uint32 *total_entries,
557                 [in,out,ref] uint32 *resume_handle
558                 );
559
560         /*******************************************/
561         /* NetUserChangePassword                   */
562         /*******************************************/
563
564         [nopush,nopull] NET_API_STATUS NetUserChangePassword(
565                 [in] string domain_name,
566                 [in] string user_name,
567                 [in] string old_password,
568                 [in] string new_password
569                 );
570
571         /*******************************************/
572         /* NetUserGetInfo                          */
573         /*******************************************/
574
575         [nopush,nopull] NET_API_STATUS NetUserGetInfo(
576                 [in] string server_name,
577                 [in] string user_name,
578                 [in] uint32 level,
579                 [out] uint8 **buffer
580                 );
581
582         /*******************************************/
583         /* NetUserSetInfo                          */
584         /*******************************************/
585
586         [nopush,nopull] NET_API_STATUS NetUserSetInfo(
587                 [in] string server_name,
588                 [in] string user_name,
589                 [in] uint32 level,
590                 [in] uint8 *buffer,
591                 [out] uint32 *parm_err
592                 );
593
594         /*******************************************/
595         /* NetUserGetGroups                        */
596         /*******************************************/
597
598         [public] typedef struct {
599                 string grui0_name;
600         } GROUP_USERS_INFO_0;
601
602         [public] typedef struct {
603                 string grui1_name;
604                 uint32 grui1_attributes;
605         } GROUP_USERS_INFO_1;
606
607         [nopush,nopull] NET_API_STATUS NetUserGetGroups(
608                 [in] string server_name,
609                 [in] string user_name,
610                 [in] uint32 level,
611                 [out] uint8 **buffer,
612                 [in] uint32 prefmaxlen,
613                 [out,ref] uint32 *entries_read,
614                 [out,ref] uint32 *total_entries
615                 );
616
617         /*******************************************/
618         /* NetUserSetGroups                        */
619         /*******************************************/
620
621         [nopush,nopull] NET_API_STATUS NetUserSetGroups(
622                 [in] string server_name,
623                 [in] string user_name,
624                 [in] uint32 level,
625                 [in] uint8 *buffer,
626                 [in] uint32 num_entries
627                 );
628
629         /*******************************************/
630         /* NetUserModalsGet                        */
631         /*******************************************/
632
633         const int TIMEQ_FOREVER = (uint32_t)-1L;
634
635         typedef struct {
636                 uint32 usrmod0_min_passwd_len;
637                 uint32 usrmod0_max_passwd_age;
638                 uint32 usrmod0_min_passwd_age;
639                 uint32 usrmod0_force_logoff;
640                 uint32 usrmod0_password_hist_len;
641         } USER_MODALS_INFO_0;
642
643         typedef struct {
644                 uint32 usrmod1_role;
645                 string usrmod1_primary;
646         } USER_MODALS_INFO_1;
647
648         typedef struct {
649                 string usrmod2_domain_name;
650                 domsid *usrmod2_domain_id;
651         } USER_MODALS_INFO_2;
652
653         typedef struct {
654                 uint32 usrmod3_lockout_duration;
655                 uint32 usrmod3_lockout_observation_window;
656                 uint32 usrmod3_lockout_threshold;
657         } USER_MODALS_INFO_3;
658
659         typedef struct {
660                 uint32 usrmod1001_min_passwd_len;
661         } USER_MODALS_INFO_1001;
662
663         typedef struct {
664                 uint32 usrmod1002_max_passwd_age;
665         } USER_MODALS_INFO_1002;
666
667         typedef struct {
668                 uint32 usrmod1003_min_passwd_age;
669         } USER_MODALS_INFO_1003;
670
671         typedef struct {
672                 uint32 usrmod1004_force_logoff;
673         } USER_MODALS_INFO_1004;
674
675         typedef struct {
676                 uint32 usrmod1005_password_hist_len;
677         } USER_MODALS_INFO_1005;
678
679         typedef struct {
680                 uint32 usrmod1006_role;
681         } USER_MODALS_INFO_1006;
682
683         typedef struct {
684                 string usrmod1007_primary;
685         } USER_MODALS_INFO_1007;
686
687         [nopush,nopull] NET_API_STATUS NetUserModalsGet(
688                 [in] string server_name,
689                 [in] uint32 level,
690                 [out,ref] uint8 **buffer
691                 );
692
693         /*******************************************/
694         /* NetUserModalsSet                        */
695         /*******************************************/
696
697         [nopush,nopull] NET_API_STATUS NetUserModalsSet(
698                 [in] string server_name,
699                 [in] uint32 level,
700                 [in] uint8 *buffer,
701                 [out,ref] uint32 *parm_err
702                 );
703
704         /*******************************************/
705         /* NetQueryDisplayInformation              */
706         /*******************************************/
707
708         [public] typedef struct {
709                 string usri1_name;
710                 string usri1_comment;
711                 uint32 usri1_flags;
712                 string usri1_full_name;
713                 uint32 usri1_user_id;
714                 uint32 usri1_next_index;
715         } NET_DISPLAY_USER;
716
717         [public] typedef struct {
718                 string usri2_name;
719                 string usri2_comment;
720                 uint32 usri2_flags;
721                 uint32 usri2_user_id;
722                 uint32 usri2_next_index;
723         } NET_DISPLAY_MACHINE;
724
725         [public] typedef struct {
726                 string grpi3_name;
727                 string grpi3_comment;
728                 uint32 grpi3_group_id;
729                 uint32 grpi3_attributes;
730                 uint32 grpi3_next_index;
731         } NET_DISPLAY_GROUP;
732
733         [nopush,nopull] NET_API_STATUS NetQueryDisplayInformation(
734                 [in,unique] string *server_name,
735                 [in] uint32 level,
736                 [in] uint32 idx,
737                 [in] uint32 entries_requested,
738                 [in] uint32 prefmaxlen,
739                 [out,ref] uint32 *entries_read,
740                 [out,ref,noprint] void **buffer
741                 );
742
743         /*******************************************/
744         /* NetGroupAdd                             */
745         /*******************************************/
746
747         typedef struct {
748                 string grpi0_name;
749         } GROUP_INFO_0;
750
751         typedef struct {
752                 string grpi1_name;
753                 string grpi1_comment;
754         } GROUP_INFO_1;
755
756         typedef struct {
757                 string grpi2_name;
758                 string grpi2_comment;
759                 uint32 grpi2_group_id;
760                 uint32 grpi2_attributes;
761         } GROUP_INFO_2;
762
763         typedef struct {
764                 string grpi3_name;
765                 string grpi3_comment;
766                 domsid *grpi3_group_sid;
767                 uint32 grpi3_attributes;
768         } GROUP_INFO_3;
769
770         typedef struct {
771                 string grpi1002_comment;
772         } GROUP_INFO_1002;
773
774         typedef struct {
775                 uint32 grpi1005_attributes;
776         } GROUP_INFO_1005;
777
778         [nopush,nopull] NET_API_STATUS NetGroupAdd(
779                 [in] string server_name,
780                 [in] uint32 level,
781                 [in] uint8 *buffer,
782                 [out] uint32 *parm_err
783                 );
784
785         /*******************************************/
786         /* NetGroupDel                             */
787         /*******************************************/
788
789         [nopush,nopull] NET_API_STATUS NetGroupDel(
790                 [in] string server_name,
791                 [in] string group_name
792                 );
793
794         /*******************************************/
795         /* NetGroupEnum                            */
796         /*******************************************/
797
798         [nopush,nopull] NET_API_STATUS NetGroupEnum(
799                 [in] string server_name,
800                 [in] uint32 level,
801                 [out,ref] uint8 **buffer,
802                 [in] uint32 prefmaxlen,
803                 [out,ref] uint32 *entries_read,
804                 [out,ref] uint32 *total_entries,
805                 [in,out,ref] uint32 *resume_handle
806                 );
807
808         /*******************************************/
809         /* NetGroupSetInfo                         */
810         /*******************************************/
811
812         [nopush,nopull] NET_API_STATUS NetGroupSetInfo(
813                 [in] string server_name,
814                 [in] string group_name,
815                 [in] uint32 level,
816                 [in] uint8 *buffer,
817                 [out] uint32 *parm_err
818                 );
819
820         /*******************************************/
821         /* NetGroupGetInfo                         */
822         /*******************************************/
823
824         [nopush,nopull] NET_API_STATUS NetGroupGetInfo(
825                 [in] string server_name,
826                 [in] string group_name,
827                 [in] uint32 level,
828                 [out] uint8 **buffer
829                 );
830
831         /*******************************************/
832         /* NetGroupAddUser                         */
833         /*******************************************/
834
835         [nopush,nopull] NET_API_STATUS NetGroupAddUser(
836                 [in] string server_name,
837                 [in] string group_name,
838                 [in] string user_name
839                 );
840
841         /*******************************************/
842         /* NetGroupDelUser                         */
843         /*******************************************/
844
845         [nopush,nopull] NET_API_STATUS NetGroupDelUser(
846                 [in] string server_name,
847                 [in] string group_name,
848                 [in] string user_name
849                 );
850
851         /*******************************************/
852         /* NetGroupGetUsers                        */
853         /*******************************************/
854
855         [nopush,nopull] NET_API_STATUS NetGroupGetUsers(
856                 [in] string server_name,
857                 [in] string group_name,
858                 [in] uint32 level,
859                 [out] uint8 **buffer,
860                 [in] uint32 prefmaxlen,
861                 [out,ref] uint32 *entries_read,
862                 [out,ref] uint32 *total_entries,
863                 [in,out,ref] uint32 *resume_handle
864                 );
865
866         /*******************************************/
867         /* NetGroupSetUsers                        */
868         /*******************************************/
869
870         [nopush,nopull] NET_API_STATUS NetGroupSetUsers(
871                 [in] string server_name,
872                 [in] string group_name,
873                 [in] uint32 level,
874                 [in] uint8 *buffer,
875                 [in] uint32 num_entries
876                 );
877
878         /*******************************************/
879         /* NetLocalGroupAdd                        */
880         /*******************************************/
881
882         typedef struct {
883                 string lgrpi0_name;
884         } LOCALGROUP_INFO_0;
885
886         typedef struct {
887                 string lgrpi1_name;
888                 string lgrpi1_comment;
889         } LOCALGROUP_INFO_1;
890
891         typedef struct {
892                 string lgrpi1002_comment;
893         } LOCALGROUP_INFO_1002;
894
895         [nopush,nopull] NET_API_STATUS NetLocalGroupAdd(
896                 [in] string server_name,
897                 [in] uint32 level,
898                 [in] uint8 *buffer,
899                 [out,ref] uint32 *parm_err
900                 );
901
902         /*******************************************/
903         /* NetLocalGroupDel                        */
904         /*******************************************/
905
906         [nopush,nopull] NET_API_STATUS NetLocalGroupDel(
907                 [in] string server_name,
908                 [in] string group_name
909                 );
910
911         /*******************************************/
912         /* NetLocalGroupGetInfo                    */
913         /*******************************************/
914
915         [nopush,nopull] NET_API_STATUS NetLocalGroupGetInfo(
916                 [in] string server_name,
917                 [in] string group_name,
918                 [in] uint32 level,
919                 [out,ref] uint8 **buffer
920                 );
921
922         /*******************************************/
923         /* NetLocalGroupSetInfo                    */
924         /*******************************************/
925
926         [nopush,nopull] NET_API_STATUS NetLocalGroupSetInfo(
927                 [in] string server_name,
928                 [in] string group_name,
929                 [in] uint32 level,
930                 [in,ref] uint8 *buffer,
931                 [out,ref] uint32 *parm_err
932                 );
933
934         /*******************************************/
935         /* NetLocalGroupEnum                       */
936         /*******************************************/
937
938         [nopush,nopull] NET_API_STATUS NetLocalGroupEnum(
939                 [in] string server_name,
940                 [in] uint32 level,
941                 [out,ref] uint8 **buffer,
942                 [in] uint32 prefmaxlen,
943                 [out,ref] uint32 *entries_read,
944                 [out,ref] uint32 *total_entries,
945                 [in,out,ref] uint32 *resume_handle
946                 );
947
948         /*******************************************/
949         /* NetLocalGroupAddMembers                 */
950         /*******************************************/
951
952         typedef enum {
953                 SidTypeUser             = 1,
954                 SidTypeGroup            = 2,
955                 SidTypeDomain           = 3,
956                 SidTypeAlias            = 4,
957                 SidTypeWellKnownGroup   = 5,
958                 SidTypeDeletedAccount   = 6,
959                 SidTypeInvalid          = 7,
960                 SidTypeUnknown          = 8,
961                 SidTypeComputer         = 9,
962                 SidTypeLabel            = 10
963         } SID_NAME_USE;
964
965         typedef struct {
966                 domsid *lgrmi0_sid;
967         } LOCALGROUP_MEMBERS_INFO_0;
968
969         typedef struct {
970                 domsid *lgrmi1_sid;
971                 SID_NAME_USE lgrmi1_sidusage;
972                 string lgrmi1_name;
973         } LOCALGROUP_MEMBERS_INFO_1;
974
975         typedef struct {
976                 domsid *lgrmi2_sid;
977                 SID_NAME_USE lgrmi2_sidusage;
978                 string lgrmi2_domainandname;
979         } LOCALGROUP_MEMBERS_INFO_2;
980
981         typedef struct {
982                 string lgrmi3_domainandname;
983         } LOCALGROUP_MEMBERS_INFO_3;
984
985         [nopush,nopull] NET_API_STATUS NetLocalGroupAddMembers(
986                 [in] string server_name,
987                 [in] string group_name,
988                 [in] uint32 level,
989                 [in] uint8 *buffer,
990                 [in] uint32 total_entries
991                 );
992
993         /*******************************************/
994         /* NetLocalGroupDelMembers                 */
995         /*******************************************/
996
997         [nopush,nopull] NET_API_STATUS NetLocalGroupDelMembers(
998                 [in] string server_name,
999                 [in] string group_name,
1000                 [in] uint32 level,
1001                 [in] uint8 *buffer,
1002                 [in] uint32 total_entries
1003                 );
1004
1005         /*******************************************/
1006         /* NetLocalGroupGetMembers                 */
1007         /*******************************************/
1008
1009         [nopush,nopull] NET_API_STATUS NetLocalGroupGetMembers(
1010                 [in] string server_name,
1011                 [in] string local_group_name,
1012                 [in] uint32 level,
1013                 [out] uint8 **buffer,
1014                 [in] uint32 prefmaxlen,
1015                 [out] uint32 *entries_read,
1016                 [out] uint32 *total_entries,
1017                 [in,out] uint32 *resume_handle
1018                 );
1019
1020         /*******************************************/
1021         /* NetLocalGroupSetMembers                 */
1022         /*******************************************/
1023
1024         [nopush,nopull] NET_API_STATUS NetLocalGroupSetMembers(
1025                 [in] string server_name,
1026                 [in] string group_name,
1027                 [in] uint32 level,
1028                 [in] uint8 *buffer,
1029                 [in] uint32 total_entries
1030                 );
1031
1032         /*******************************************/
1033         /* NetRemoteTOD                            */
1034         /*******************************************/
1035
1036         typedef struct {
1037                 uint32 tod_elapsedt;
1038                 uint32 tod_msecs;
1039                 uint32 tod_hours;
1040                 uint32 tod_mins;
1041                 uint32 tod_secs;
1042                 uint32 tod_hunds;
1043                 int32 tod_timezone;
1044                 uint32 tod_tinterval;
1045                 uint32 tod_day;
1046                 uint32 tod_month;
1047                 uint32 tod_year;
1048                 uint32 tod_weekday;
1049         } TIME_OF_DAY_INFO;
1050
1051         [nopush,nopull] NET_API_STATUS NetRemoteTOD(
1052                 [in] string server_name,
1053                 [out,ref] uint8 **buffer
1054                 );
1055
1056         /*******************************************/
1057         /* NetShareAdd                             */
1058         /*******************************************/
1059
1060         typedef struct {
1061                 string shi0_netname;
1062         } SHARE_INFO_0;
1063
1064         typedef struct {
1065                 string shi1_netname;
1066                 uint32 shi1_type;
1067                 string shi1_remark;
1068         } SHARE_INFO_1;
1069
1070         typedef struct {
1071                 string shi2_netname;
1072                 uint32 shi2_type;
1073                 string shi2_remark;
1074                 uint32 shi2_permissions;
1075                 uint32 shi2_max_uses;
1076                 uint32 shi2_current_uses;
1077                 string shi2_path;
1078                 string shi2_passwd;
1079         } SHARE_INFO_2;
1080
1081         typedef struct {
1082                 string shi501_netname;
1083                 uint32 shi501_type;
1084                 string shi501_remark;
1085                 uint32 shi501_flags;
1086         } SHARE_INFO_501;
1087
1088         typedef struct {
1089                 string shi1004_remark;
1090         } SHARE_INFO_1004;
1091
1092         const int CSC_MASK = 0x30;
1093
1094         typedef [public,bitmap32bit] bitmap {
1095                 SHI1005_FLAGS_DFS                               = 0x01,
1096                 SHI1005_FLAGS_DFS_ROOT                          = 0x02,
1097                 CSC_CACHE_MANUAL_REINT                          = 0x00,
1098                 CSC_CACHE_AUTO_REINT                            = 0x10,
1099                 CSC_CACHE_VDO                                   = 0x20,
1100                 CSC_CACHE_NONE                                  = 0x30,
1101                 SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS          = 0x0100,
1102                 SHI1005_FLAGS_FORCE_SHARED_DELETE               = 0x0200,
1103                 SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING           = 0x0400,
1104                 SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM       = 0x0800
1105         } SHARE_INFO_1005_FLAGS;
1106
1107         typedef struct {
1108                 SHARE_INFO_1005_FLAGS shi1005_flags;
1109         } SHARE_INFO_1005;
1110
1111         typedef struct {
1112                 uint32 shi1006_max_uses;
1113         } SHARE_INFO_1006;
1114
1115         [nopush,nopull] NET_API_STATUS NetShareAdd(
1116                 [in] string server_name,
1117                 [in] uint32 level,
1118                 [in] uint8 *buffer,
1119                 [out] uint32 *parm_err
1120                 );
1121
1122         /*******************************************/
1123         /* NetShareDel                             */
1124         /*******************************************/
1125
1126         [nopush,nopull] NET_API_STATUS NetShareDel(
1127                 [in] string server_name,
1128                 [in] string net_name,
1129                 [in] uint32 reserved
1130                 );
1131
1132         /*******************************************/
1133         /* NetShareEnum                            */
1134         /*******************************************/
1135
1136         [nopush,nopull] NET_API_STATUS NetShareEnum(
1137                 [in] string server_name,
1138                 [in] uint32 level,
1139                 [out] uint8 **buffer,
1140                 [in] uint32 prefmaxlen,
1141                 [out] uint32 *entries_read,
1142                 [out] uint32 *total_entries,
1143                 [in,out] uint32 *resume_handle
1144                 );
1145
1146         /*******************************************/
1147         /* NetShareGetInfo                         */
1148         /*******************************************/
1149
1150         [nopush,nopull] NET_API_STATUS NetShareGetInfo(
1151                 [in] string server_name,
1152                 [in] string net_name,
1153                 [in] uint32 level,
1154                 [out] uint8 **buffer
1155                 );
1156
1157         /*******************************************/
1158         /* NetShareSetInfo                         */
1159         /*******************************************/
1160
1161         [nopush,nopull] NET_API_STATUS NetShareSetInfo(
1162                 [in] string server_name,
1163                 [in] string net_name,
1164                 [in] uint32 level,
1165                 [in] uint8 *buffer,
1166                 [out] uint32 *parm_err
1167                 );
1168 }