netapi: add USER_PRIV_* constants to IDL.
[jra/samba/.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         [nopush,nopull] NET_API_STATUS NetJoinDomain(
33                 [in,unique] string *server,
34                 [in,ref] string *domain,
35                 [in,unique] string *account_ou,
36                 [in,unique] string *account,
37                 [in,unique] string *password,
38                 [in] uint32 join_flags
39                 );
40
41         /*******************************************/
42         /* NetUnjoinDomain                         */
43         /*******************************************/
44
45         [nopush,nopull] NET_API_STATUS NetUnjoinDomain(
46                 [in,unique] string *server_name,
47                 [in,unique] string *account,
48                 [in,unique] string *password,
49                 [in] uint32 unjoin_flags
50                 );
51
52         /*******************************************/
53         /* NetGetJoinInformation                   */
54         /*******************************************/
55
56         [nopush,nopull] NET_API_STATUS NetGetJoinInformation(
57                 [in,unique] string *server_name,
58                 [out] string **name_buffer,
59                 [out] uint16 *name_type
60                 );
61
62         /*******************************************/
63         /* NetGetJoinableOUs                       */
64         /*******************************************/
65
66         [nopush,nopull] NET_API_STATUS NetGetJoinableOUs(
67                 [in,unique] string *server_name,
68                 [in,ref] string *domain,
69                 [in,unique] string *account,
70                 [in,unique] string *password,
71                 [out] uint32 *ou_count,
72                 [out] string ***ous
73                 );
74
75         /*******************************************/
76         /* NetServerGetInfo                        */
77         /*******************************************/
78
79         [public] typedef struct {
80                 string sv1005_comment;
81         } SERVER_INFO_1005;
82
83         [nopush,nopull] NET_API_STATUS NetServerGetInfo(
84                 [in,unique] string *server_name,
85                 [in] uint32 level,
86                 [out] uint8 **buffer
87                 );
88
89         /*******************************************/
90         /* NetServerSetInfo                        */
91         /*******************************************/
92
93         [nopush,nopull] NET_API_STATUS NetServerSetInfo(
94                 [in,unique] string *server_name,
95                 [in] uint32 level,
96                 [in] uint8 *buffer,
97                 [out] uint32 *parm_error
98                 );
99
100         /*******************************************/
101         /* NetGetDCName                            */
102         /*******************************************/
103
104         [nopush,nopull] NET_API_STATUS NetGetDCName(
105                 [in,unique] string *server_name,
106                 [in,unique] string *domain_name,
107                 [out] uint8 **buffer
108                 );
109
110         /*******************************************/
111         /* NetGetAnyDCName                         */
112         /*******************************************/
113
114         [nopush,nopull] NET_API_STATUS NetGetAnyDCName(
115                 [in,unique] string *server_name,
116                 [in,unique] string *domain_name,
117                 [out] uint8 **buffer
118                 );
119
120         /*******************************************/
121         /* DsGetDcName                             */
122         /*******************************************/
123
124         [public] typedef struct {
125                 string domain_controller_name;
126                 string domain_controller_address;
127                 uint32 domain_controller_address_type;
128                 GUID domain_guid;
129                 string domain_name;
130                 string dns_forest_name;
131                 uint32 flags;
132                 string dc_site_name;
133                 string client_site_name;
134         } DOMAIN_CONTROLLER_INFO;
135
136         [nopush,nopull] NET_API_STATUS DsGetDcName(
137                 [in,unique] string *server_name,
138                 [in,ref] string *domain_name,
139                 [in,unique] GUID *domain_guid,
140                 [in,unique] string *site_name,
141                 [in] uint32 flags,
142                 [out,ref] DOMAIN_CONTROLLER_INFO **dc_info
143                 );
144
145         /*******************************************/
146         /* NetUserAdd                              */
147         /*******************************************/
148
149         [public] typedef struct {
150                 string usri0_name;
151         } USER_INFO_0;
152
153         /* priv */
154         const int USER_PRIV_GUEST       = 0;
155         const int USER_PRIV_USER        = 1;
156         const int USER_PRIV_ADMIN       = 2;
157
158         [public] typedef struct {
159                 string usri1_name;
160                 string usri1_password;
161                 uint32 usri1_password_age;
162                 uint32 usri1_priv;
163                 string usri1_home_dir;
164                 string usri1_comment;
165                 uint32 usri1_flags;
166                 string usri1_script_path;
167         } USER_INFO_1;
168
169         [public] typedef struct {
170                 string usri2_name;
171                 string usri2_password;
172                 uint32 usri2_password_age;
173                 uint32 usri2_priv;
174                 string usri2_home_dir;
175                 string usri2_comment;
176                 uint32 usri2_flags;
177                 string usri2_script_path;
178                 uint32 usri2_auth_flags;
179                 string usri2_full_name;
180                 string usri2_usr_comment;
181                 string usri2_parms;
182                 string usri2_workstations;
183                 uint32 usri2_last_logon;
184                 uint32 usri2_last_logoff;
185                 uint32 usri2_acct_expires;
186                 uint32 usri2_max_storage;
187                 uint32 usri2_units_per_week;
188                 uint8 *usri2_logon_hours;
189                 uint32 usri2_bad_pw_count;
190                 uint32 usri2_num_logons;
191                 string usri2_logon_server;
192                 uint32 usri2_country_code;
193                 uint32 usri2_code_page;
194         } USER_INFO_2;
195
196         [public] typedef struct {
197                 string usri3_name;
198                 uint32 usri3_password_age;
199                 uint32 usri3_priv;
200                 string usri3_home_dir;
201                 string usri3_comment;
202                 uint32 usri3_flags;
203                 string usri3_script_path;
204                 uint32 usri3_auth_flags;
205                 string usri3_full_name;
206                 string usri3_usr_comment;
207                 string usri3_parms;
208                 string usri3_workstations;
209                 uint32 usri3_last_logon;
210                 uint32 usri3_last_logoff;
211                 uint32 usri3_acct_expires;
212                 uint32 usri3_max_storage;
213                 uint32 usri3_units_per_week;
214                 uint8 *usri3_logon_hours;
215                 uint32 usri3_bad_pw_count;
216                 uint32 usri3_num_logons;
217                 string usri3_logon_server;
218                 uint32 usri3_country_code;
219                 uint32 usri3_code_page;
220                 uint32 usri3_user_id;
221                 uint32 usri3_primary_group_id;
222                 string usri3_profile;
223                 string usri3_home_dir_drive;
224                 uint32 usri3_password_expired;
225         } USER_INFO_3;
226
227         [public] typedef struct {
228                 string usri4_name;
229                 string usri4_password;
230                 uint32 usri4_password_age;
231                 uint32 usri4_priv;
232                 string usri4_home_dir;
233                 string usri4_comment;
234                 uint32 usri4_flags;
235                 string usri4_script_path;
236                 uint32 usri4_auth_flags;
237                 string usri4_full_name;
238                 string usri4_usr_comment;
239                 string usri4_parms;
240                 string usri4_workstations;
241                 uint32 usri4_last_logon;
242                 uint32 usri4_last_logoff;
243                 uint32 usri4_acct_expires;
244                 uint32 usri4_max_storage;
245                 uint32 usri4_units_per_week;
246                 uint8 *usri4_logon_hours;
247                 uint32 usri4_bad_pw_count;
248                 uint32 usri4_num_logons;
249                 string usri4_logon_server;
250                 uint32 usri4_country_code;
251                 uint32 usri4_code_page;
252                 domsid *usri4_user_sid;
253                 uint32 usri4_primary_group_id;
254                 string usri4_profile;
255                 string usri4_home_dir_drive;
256                 uint32 usri4_password_expired;
257         } USER_INFO_4;
258
259         [public] typedef struct {
260                 string usri10_name;
261                 string usri10_comment;
262                 string usri10_usr_comment;
263                 string usri10_full_name;
264         } USER_INFO_10;
265
266         [public] typedef struct {
267                 string usri11_name;
268                 string usri11_comment;
269                 string usri11_usr_comment;
270                 string usri11_full_name;
271                 uint32 usri11_priv;
272                 uint32 usri11_auth_flags;
273                 uint32 usri11_password_age;
274                 string usri11_home_dir;
275                 string usri11_parms;
276                 uint32 usri11_last_logon;
277                 uint32 usri11_last_logoff;
278                 uint32 usri11_bad_pw_count;
279                 uint32 usri11_num_logons;
280                 string usri11_logon_server;
281                 uint32 usri11_country_code;
282                 string usri11_workstations;
283                 uint32 usri11_max_storage;
284                 uint32 usri11_units_per_week;
285                 uint8 *usri11_logon_hours;
286                 uint32 usri11_code_page;
287         } USER_INFO_11;
288
289         [public] typedef struct {
290                 string usri20_name;
291                 string usri20_full_name;
292                 string usri20_comment;
293                 uint32 usri20_flags;
294                 uint32 usri20_user_id;
295         } USER_INFO_20;
296
297         const int ENCRYPTED_PWLEN = 16;
298
299         [public] typedef struct {
300                 uint8 usri21_password[ENCRYPTED_PWLEN];
301         } USER_INFO_21;
302
303         [public] typedef struct {
304                 string usri22_name;
305                 uint8 usri22_password[ENCRYPTED_PWLEN];
306                 uint32 usri22_password_age;
307                 uint32 usri22_priv;
308                 string usri22_home_dir;
309                 string usri22_comment;
310                 uint32 usri22_flags;
311                 uint32 usri22_script_path;
312                 uint32 usri22_auth_flags;
313                 string usri22_full_name;
314                 string usri22_usr_comment;
315                 string usri22_parms;
316                 string usri22_workstations;
317                 uint32 usri22_last_logon;
318                 uint32 usri22_last_logoff;
319                 uint32 usri22_acct_expires;
320                 uint32 usri22_max_storage;
321                 uint32 usri22_units_per_week;
322                 uint8 *usri22_logon_hours;
323                 uint32 usri22_bad_pw_count;
324                 uint32 usri22_num_logons;
325                 string usri22_logon_server;
326                 uint32 usri22_country_code;
327                 uint32 usri22_code_page;
328         } USER_INFO_22;
329
330         [public] typedef struct {
331                 string usri23_name;
332                 string usri23_full_name;
333                 string usri23_comment;
334                 uint32 usri23_flags;
335                 domsid *usri23_user_sid;
336         } USER_INFO_23;
337
338         [public] typedef struct {
339                 string usri1003_password;
340         } USER_INFO_1003;
341
342         [public] typedef struct {
343                 uint32 usri1005_priv;
344         } USER_INFO_1005;
345
346         [public] typedef struct {
347                 string usri1006_home_dir;
348         } USER_INFO_1006;
349
350         [public] typedef struct {
351                 string usri1007_comment;
352         } USER_INFO_1007;
353
354         [public] typedef struct {
355                 uint32 usri1008_flags;
356         } USER_INFO_1008;
357
358         [public] typedef struct {
359                 string usri1009_script_path;
360         } USER_INFO_1009;
361
362         [public] typedef struct {
363                 uint32 usri1010_auth_flags;
364         } USER_INFO_1010;
365
366         [public] typedef struct {
367                 string usri1011_full_name;
368         } USER_INFO_1011;
369
370         [public] typedef struct {
371                 string usri1012_usr_comment;
372         } USER_INFO_1012;
373
374         [public] typedef struct {
375                 string usri1013_parms;
376         } USER_INFO_1013;
377
378         [public] typedef struct {
379                 string usri1014_workstations;
380         } USER_INFO_1014;
381
382         [public] typedef struct {
383                 uint32 usri1017_acct_expires;
384         } USER_INFO_1017;
385
386         [public] typedef struct {
387                 uint32 usri1018_max_storage;
388         } USER_INFO_1018;
389
390         [public] typedef struct {
391                 uint32 usri1020_units_per_week;
392                 uint8 *usri1020_logon_hours;
393         } USER_INFO_1020;
394
395         [public] typedef struct {
396                 string usri1023_logon_server;
397         } USER_INFO_1023;
398
399         [public] typedef struct {
400                 uint32 usri1024_country_code;
401         } USER_INFO_1024;
402
403         [public] typedef struct {
404                 uint32 usri1025_code_page;
405         } USER_INFO_1025;
406
407         [public] typedef struct {
408                 uint32 usri1051_primary_group_id;
409         } USER_INFO_1051;
410
411         [public] typedef struct {
412                 string usri1052_profile;
413         } USER_INFO_1052;
414
415         [public] typedef struct {
416                 string usri1053_home_dir_drive;
417         } USER_INFO_1053;
418
419         [public] typedef struct {
420                 string usriX_name;
421                 string usriX_password;
422                 uint32 usriX_password_age;
423                 uint32 usriX_priv;
424                 string usriX_home_dir;
425                 string usriX_comment;
426                 uint32 usriX_flags;
427                 string usriX_script_path;
428                 uint32 usriX_auth_flags;
429                 string usriX_full_name;
430                 string usriX_usr_comment;
431                 string usriX_parms;
432                 string usriX_workstations;
433                 uint32 usriX_last_logon;
434                 uint32 usriX_last_logoff;
435                 uint32 usriX_acct_expires;
436                 uint32 usriX_max_storage;
437                 uint32 usriX_units_per_week;
438                 uint8 *usriX_logon_hours;
439                 uint32 usriX_bad_pw_count;
440                 uint32 usriX_num_logons;
441                 string usriX_logon_server;
442                 uint32 usriX_country_code;
443                 uint32 usriX_code_page;
444                 string usriX_profile;
445                 string usriX_home_dir_drive;
446                 uint32 usriX_primary_group_id;
447         } USER_INFO_X;
448
449         [nopush,nopull] NET_API_STATUS NetUserAdd(
450                 [in,unique] string *server_name,
451                 [in] uint32 level,
452                 [in,ref] uint8 *buffer,
453                 [out,ref] uint32 *parm_error
454                 );
455
456         /*******************************************/
457         /* NetUserDel                              */
458         /*******************************************/
459
460         [nopush,nopull] NET_API_STATUS NetUserDel(
461                 [in,unique] string *server_name,
462                 [in,ref] string *user_name
463                 );
464
465         /*******************************************/
466         /* NetUserEnum                             */
467         /*******************************************/
468
469         const int FILTER_TEMP_DUPLICATE_ACCOUNT = 0x0001;
470         const int FILTER_NORMAL_ACCOUNT = 0x0002;
471         const int FILTER_INTERDOMAIN_TRUST_ACCOUNT = 0x0008;
472         const int FILTER_WORKSTATION_TRUST_ACCOUNT = 0x0010;
473         const int FILTER_SERVER_TRUST_ACCOUNT = 0x0020;
474
475         [nopush,nopull] NET_API_STATUS NetUserEnum(
476                 [in,unique] string *server_name,
477                 [in] uint32 level,
478                 [in] uint32 filter,
479                 [out,ref] uint8 **buffer,
480                 [in] uint32 prefmaxlen,
481                 [out,ref] uint32 *entries_read,
482                 [out,ref] uint32 *total_entries,
483                 [in,out,ref] uint32 *resume_handle
484                 );
485
486         /*******************************************/
487         /* NetUserChangePassword                   */
488         /*******************************************/
489
490         [nopush,nopull] NET_API_STATUS NetUserChangePassword(
491                 [in] string domain_name,
492                 [in] string user_name,
493                 [in] string old_password,
494                 [in] string new_password
495                 );
496
497         /*******************************************/
498         /* NetUserGetInfo                          */
499         /*******************************************/
500
501         [nopush,nopull] NET_API_STATUS NetUserGetInfo(
502                 [in] string server_name,
503                 [in] string user_name,
504                 [in] uint32 level,
505                 [out] uint8 **buffer
506                 );
507
508         /*******************************************/
509         /* NetUserSetInfo                          */
510         /*******************************************/
511
512         [nopush,nopull] NET_API_STATUS NetUserSetInfo(
513                 [in] string server_name,
514                 [in] string user_name,
515                 [in] uint32 level,
516                 [in] uint8 *buffer,
517                 [out] uint32 *parm_err
518                 );
519
520         /*******************************************/
521         /* NetUserGetGroups                        */
522         /*******************************************/
523
524         [public] typedef struct {
525                 string grui0_name;
526         } GROUP_USERS_INFO_0;
527
528         [public] typedef struct {
529                 string grui1_name;
530                 uint32 grui1_attributes;
531         } GROUP_USERS_INFO_1;
532
533         [nopush,nopull] NET_API_STATUS NetUserGetGroups(
534                 [in] string server_name,
535                 [in] string user_name,
536                 [in] uint32 level,
537                 [out] uint8 **buffer,
538                 [in] uint32 prefmaxlen,
539                 [out,ref] uint32 *entries_read,
540                 [out,ref] uint32 *total_entries
541                 );
542
543         /*******************************************/
544         /* NetUserModalsGet                        */
545         /*******************************************/
546
547         const int TIMEQ_FOREVER = (uint32_t)-1L;
548
549         typedef struct {
550                 uint32 usrmod0_min_passwd_len;
551                 uint32 usrmod0_max_passwd_age;
552                 uint32 usrmod0_min_passwd_age;
553                 uint32 usrmod0_force_logoff;
554                 uint32 usrmod0_password_hist_len;
555         } USER_MODALS_INFO_0;
556
557         typedef struct {
558                 uint32 usrmod1_role;
559                 string usrmod1_primary;
560         } USER_MODALS_INFO_1;
561
562         typedef struct {
563                 string usrmod2_domain_name;
564                 domsid *usrmod2_domain_id;
565         } USER_MODALS_INFO_2;
566
567         typedef struct {
568                 uint32 usrmod3_lockout_duration;
569                 uint32 usrmod3_lockout_observation_window;
570                 uint32 usrmod3_lockout_threshold;
571         } USER_MODALS_INFO_3;
572
573         typedef struct {
574                 uint32 usrmod1001_min_passwd_len;
575         } USER_MODALS_INFO_1001;
576
577         typedef struct {
578                 uint32 usrmod1002_max_passwd_age;
579         } USER_MODALS_INFO_1002;
580
581         typedef struct {
582                 uint32 usrmod1003_min_passwd_age;
583         } USER_MODALS_INFO_1003;
584
585         typedef struct {
586                 uint32 usrmod1004_force_logoff;
587         } USER_MODALS_INFO_1004;
588
589         typedef struct {
590                 uint32 usrmod1005_password_hist_len;
591         } USER_MODALS_INFO_1005;
592
593         typedef struct {
594                 uint32 usrmod1006_role;
595         } USER_MODALS_INFO_1006;
596
597         typedef struct {
598                 string usrmod1007_primary;
599         } USER_MODALS_INFO_1007;
600
601         [nopush,nopull] NET_API_STATUS NetUserModalsGet(
602                 [in] string server_name,
603                 [in] uint32 level,
604                 [out,ref] uint8 **buffer
605                 );
606
607         /*******************************************/
608         /* NetUserModalsSet                        */
609         /*******************************************/
610
611         [nopush,nopull] NET_API_STATUS NetUserModalsSet(
612                 [in] string server_name,
613                 [in] uint32 level,
614                 [in] uint8 *buffer,
615                 [out,ref] uint32 *parm_err
616                 );
617
618         /*******************************************/
619         /* NetQueryDisplayInformation              */
620         /*******************************************/
621
622         [public] typedef struct {
623                 string usri1_name;
624                 string usri1_comment;
625                 uint32 usri1_flags;
626                 string usri1_full_name;
627                 uint32 usri1_user_id;
628                 uint32 usri1_next_index;
629         } NET_DISPLAY_USER;
630
631         [public] typedef struct {
632                 string usri2_name;
633                 string usri2_comment;
634                 uint32 usri2_flags;
635                 uint32 usri2_user_id;
636                 uint32 usri2_next_index;
637         } NET_DISPLAY_MACHINE;
638
639         [public] typedef struct {
640                 string grpi3_name;
641                 string grpi3_comment;
642                 uint32 grpi3_group_id;
643                 uint32 grpi3_attributes;
644                 uint32 grpi3_next_index;
645         } NET_DISPLAY_GROUP;
646
647         [nopush,nopull] NET_API_STATUS NetQueryDisplayInformation(
648                 [in,unique] string *server_name,
649                 [in] uint32 level,
650                 [in] uint32 idx,
651                 [in] uint32 entries_requested,
652                 [in] uint32 prefmaxlen,
653                 [out,ref] uint32 *entries_read,
654                 [out,ref,noprint] void **buffer
655                 );
656
657         /*******************************************/
658         /* NetGroupAdd                             */
659         /*******************************************/
660
661         typedef struct {
662                 string grpi0_name;
663         } GROUP_INFO_0;
664
665         typedef struct {
666                 string grpi1_name;
667                 string grpi1_comment;
668         } GROUP_INFO_1;
669
670         typedef struct {
671                 string grpi2_name;
672                 string grpi2_comment;
673                 uint32 grpi2_group_id;
674                 uint32 grpi2_attributes;
675         } GROUP_INFO_2;
676
677         typedef struct {
678                 string grpi3_name;
679                 string grpi3_comment;
680                 domsid *grpi3_group_sid;
681                 uint32 grpi3_attributes;
682         } GROUP_INFO_3;
683
684         typedef struct {
685                 string grpi1002_comment;
686         } GROUP_INFO_1002;
687
688         typedef struct {
689                 uint32 grpi1005_attributes;
690         } GROUP_INFO_1005;
691
692         [nopush,nopull] NET_API_STATUS NetGroupAdd(
693                 [in] string server_name,
694                 [in] uint32 level,
695                 [in] uint8 *buffer,
696                 [out] uint32 *parm_err
697                 );
698
699         /*******************************************/
700         /* NetGroupDel                             */
701         /*******************************************/
702
703         [nopush,nopull] NET_API_STATUS NetGroupDel(
704                 [in] string server_name,
705                 [in] string group_name
706                 );
707
708         /*******************************************/
709         /* NetGroupEnum                            */
710         /*******************************************/
711
712         [nopush,nopull] NET_API_STATUS NetGroupEnum(
713                 [in] string server_name,
714                 [in] uint32 level,
715                 [out,ref] uint8 **buffer,
716                 [in] uint32 prefmaxlen,
717                 [out,ref] uint32 *entries_read,
718                 [out,ref] uint32 *total_entries,
719                 [in,out,ref] uint32 *resume_handle
720                 );
721
722         /*******************************************/
723         /* NetGroupSetInfo                         */
724         /*******************************************/
725
726         [nopush,nopull] NET_API_STATUS NetGroupSetInfo(
727                 [in] string server_name,
728                 [in] string group_name,
729                 [in] uint32 level,
730                 [in] uint8 *buffer,
731                 [out] uint32 *parm_err
732                 );
733
734         /*******************************************/
735         /* NetGroupGetInfo                         */
736         /*******************************************/
737
738         [nopush,nopull] NET_API_STATUS NetGroupGetInfo(
739                 [in] string server_name,
740                 [in] string group_name,
741                 [in] uint32 level,
742                 [out] uint8 **buffer
743                 );
744
745         /*******************************************/
746         /* NetGroupAddUser                         */
747         /*******************************************/
748
749         [nopush,nopull] NET_API_STATUS NetGroupAddUser(
750                 [in] string server_name,
751                 [in] string group_name,
752                 [in] string user_name
753                 );
754
755         /*******************************************/
756         /* NetGroupDelUser                         */
757         /*******************************************/
758
759         [nopush,nopull] NET_API_STATUS NetGroupDelUser(
760                 [in] string server_name,
761                 [in] string group_name,
762                 [in] string user_name
763                 );
764
765         /*******************************************/
766         /* NetGroupGetUsers                        */
767         /*******************************************/
768
769         [nopush,nopull] NET_API_STATUS NetGroupGetUsers(
770                 [in] string server_name,
771                 [in] string group_name,
772                 [in] uint32 level,
773                 [out] uint8 **buffer,
774                 [in] uint32 prefmaxlen,
775                 [out,ref] uint32 *entries_read,
776                 [out,ref] uint32 *total_entries,
777                 [in,out,ref] uint32 *resume_handle
778                 );
779
780         /*******************************************/
781         /* NetLocalGroupAdd                        */
782         /*******************************************/
783
784         typedef struct {
785                 string lgrpi0_name;
786         } LOCALGROUP_INFO_0;
787
788         typedef struct {
789                 string lgrpi1_name;
790                 string lgrpi1_comment;
791         } LOCALGROUP_INFO_1;
792
793         typedef struct {
794                 string lgrpi1002_comment;
795         } LOCALGROUP_INFO_1002;
796
797         [nopush,nopull] NET_API_STATUS NetLocalGroupAdd(
798                 [in] string server_name,
799                 [in] uint32 level,
800                 [in] uint8 *buffer,
801                 [out,ref] uint32 *parm_err
802                 );
803
804         /*******************************************/
805         /* NetLocalGroupDel                        */
806         /*******************************************/
807
808         [nopush,nopull] NET_API_STATUS NetLocalGroupDel(
809                 [in] string server_name,
810                 [in] string group_name
811                 );
812
813         /*******************************************/
814         /* NetLocalGroupGetInfo                    */
815         /*******************************************/
816
817         [nopush,nopull] NET_API_STATUS NetLocalGroupGetInfo(
818                 [in] string server_name,
819                 [in] string group_name,
820                 [in] uint32 level,
821                 [out,ref] uint8 **buffer
822                 );
823
824         /*******************************************/
825         /* NetLocalGroupSetInfo                    */
826         /*******************************************/
827
828         [nopush,nopull] NET_API_STATUS NetLocalGroupSetInfo(
829                 [in] string server_name,
830                 [in] string group_name,
831                 [in] uint32 level,
832                 [in,ref] uint8 *buffer,
833                 [out,ref] uint32 *parm_err
834                 );
835
836         /*******************************************/
837         /* NetLocalGroupEnum                       */
838         /*******************************************/
839
840         [nopush,nopull] NET_API_STATUS NetLocalGroupEnum(
841                 [in] string server_name,
842                 [in] uint32 level,
843                 [out,ref] uint8 **buffer,
844                 [in] uint32 prefmaxlen,
845                 [out,ref] uint32 *entries_read,
846                 [out,ref] uint32 *total_entries,
847                 [in,out,ref] uint32 *resume_handle
848                 );
849
850         /*******************************************/
851         /* NetLocalGroupAddMembers                 */
852         /*******************************************/
853
854         typedef enum {
855                 SidTypeUser             = 1,
856                 SidTypeGroup            = 2,
857                 SidTypeDomain           = 3,
858                 SidTypeAlias            = 4,
859                 SidTypeWellKnownGroup   = 5,
860                 SidTypeDeletedAccount   = 6,
861                 SidTypeInvalid          = 7,
862                 SidTypeUnknown          = 8,
863                 SidTypeComputer         = 9,
864                 SidTypeLabel            = 10
865         } SID_NAME_USE;
866
867         typedef struct {
868                 domsid *lgrmi0_sid;
869         } LOCALGROUP_MEMBERS_INFO_0;
870
871         typedef struct {
872                 domsid *lgrmi1_sid;
873                 SID_NAME_USE lgrmi1_sidusage;
874                 string lgrmi1_name;
875         } LOCALGROUP_MEMBERS_INFO_1;
876
877         typedef struct {
878                 domsid *lgrmi2_sid;
879                 SID_NAME_USE lgrmi2_sidusage;
880                 string lgrmi2_domainandname;
881         } LOCALGROUP_MEMBERS_INFO_2;
882
883         typedef struct {
884                 string lgrmi3_domainandname;
885         } LOCALGROUP_MEMBERS_INFO_3;
886
887         [nopush,nopull] NET_API_STATUS NetLocalGroupAddMembers(
888                 [in] string server_name,
889                 [in] string group_name,
890                 [in] uint32 level,
891                 [in] uint8 *buffer,
892                 [in] uint32 total_entries
893                 );
894
895         /*******************************************/
896         /* NetLocalGroupDelMembers                 */
897         /*******************************************/
898
899         [nopush,nopull] NET_API_STATUS NetLocalGroupDelMembers(
900                 [in] string server_name,
901                 [in] string group_name,
902                 [in] uint32 level,
903                 [in] uint8 *buffer,
904                 [in] uint32 total_entries
905                 );
906
907         /*******************************************/
908         /* NetLocalGroupGetMembers                 */
909         /*******************************************/
910
911         [nopush,nopull] NET_API_STATUS NetLocalGroupGetMembers(
912                 [in] string server_name,
913                 [in] string local_group_name,
914                 [in] uint32 level,
915                 [out] uint8 **buffer,
916                 [in] uint32 prefmaxlen,
917                 [out] uint32 *entries_read,
918                 [out] uint32 *total_entries,
919                 [in,out] uint32 *resume_handle
920                 );
921
922         /*******************************************/
923         /* NetLocalGroupSetMembers                 */
924         /*******************************************/
925
926         [nopush,nopull] NET_API_STATUS NetLocalGroupSetMembers(
927                 [in] string server_name,
928                 [in] string group_name,
929                 [in] uint32 level,
930                 [in] uint8 *buffer,
931                 [in] uint32 total_entries
932                 );
933
934         /*******************************************/
935         /* NetRemoteTOD                            */
936         /*******************************************/
937
938         typedef struct {
939                 uint32 tod_elapsedt;
940                 uint32 tod_msecs;
941                 uint32 tod_hours;
942                 uint32 tod_mins;
943                 uint32 tod_secs;
944                 uint32 tod_hunds;
945                 int32 tod_timezone;
946                 uint32 tod_tinterval;
947                 uint32 tod_day;
948                 uint32 tod_month;
949                 uint32 tod_year;
950                 uint32 tod_weekday;
951         } TIME_OF_DAY_INFO;
952
953         [nopush,nopull] NET_API_STATUS NetRemoteTOD(
954                 [in] string server_name,
955                 [out,ref] uint8 **buffer
956                 );
957 }