s3:winbindd: Fix size types in idmap_tdb_common
[samba.git] / source3 / lib / netapi / netapi.h
1 /*
2  *  Unix SMB/CIFS implementation.
3  *  NetApi Support
4  *  Copyright (C) Guenther Deschner 2007-2009
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 enum NETSETUP_JOIN_STATUS {
101         NetSetupUnknownStatus=0,
102         NetSetupUnjoined=1,
103         NetSetupWorkgroupName=2,
104         NetSetupDomainName=3
105 };
106
107 struct SERVER_INFO_100 {
108         uint32_t sv100_platform_id;
109         const char * sv100_name;
110 };
111
112 struct SERVER_INFO_101 {
113         uint32_t sv101_platform_id;
114         const char * sv101_name;
115         uint32_t sv101_version_major;
116         uint32_t sv101_version_minor;
117         uint32_t sv101_type;
118         const char * sv101_comment;
119 };
120
121 struct SERVER_INFO_102 {
122         uint32_t sv102_platform_id;
123         const char * sv102_name;
124         uint32_t sv102_version_major;
125         uint32_t sv102_version_minor;
126         uint32_t sv102_type;
127         const char * sv102_comment;
128         uint32_t sv102_users;
129         uint32_t sv102_disc;
130         uint8_t sv102_hidden;
131         uint32_t sv102_announce;
132         uint32_t sv102_anndelta;
133         uint32_t sv102_licenses;
134         const char * sv102_userpath;
135 };
136
137 struct SERVER_INFO_402 {
138         uint32_t sv402_ulist_mtime;
139         uint32_t sv402_glist_mtime;
140         uint32_t sv402_alist_mtime;
141         const char * sv402_alerts;
142         uint32_t sv402_security;
143         uint32_t sv402_numadmin;
144         uint32_t sv402_lanmask;
145         const char * sv402_guestacct;
146         uint32_t sv402_chdevs;
147         uint32_t sv402_chdevq;
148         uint32_t sv402_chdevjobs;
149         uint32_t sv402_connections;
150         uint32_t sv402_shares;
151         uint32_t sv402_openfiles;
152         uint32_t sv402_sessopens;
153         uint32_t sv402_sessvcs;
154         uint32_t sv402_sessreqs;
155         uint32_t sv402_opensearch;
156         uint32_t sv402_activelocks;
157         uint32_t sv402_numreqbuf;
158         uint32_t sv402_sizreqbuf;
159         uint32_t sv402_numbigbuf;
160         uint32_t sv402_numfiletasks;
161         uint32_t sv402_alertsched;
162         uint32_t sv402_erroralert;
163         uint32_t sv402_logonalert;
164         uint32_t sv402_accessalert;
165         uint32_t sv402_diskalert;
166         uint32_t sv402_netioalert;
167         uint32_t sv402_maxauditsz;
168         const char * sv402_srvheuristics;
169 };
170
171 struct SERVER_INFO_403 {
172         uint32_t sv403_ulist_mtime;
173         uint32_t sv403_glist_mtime;
174         uint32_t sv403_alist_mtime;
175         const char * sv403_alerts;
176         uint32_t sv403_security;
177         uint32_t sv403_numadmin;
178         uint32_t sv403_lanmask;
179         const char * sv403_guestacct;
180         uint32_t sv403_chdevs;
181         uint32_t sv403_chdevq;
182         uint32_t sv403_chdevjobs;
183         uint32_t sv403_connections;
184         uint32_t sv403_shares;
185         uint32_t sv403_openfiles;
186         uint32_t sv403_sessopens;
187         uint32_t sv403_sessvcs;
188         uint32_t sv403_sessreqs;
189         uint32_t sv403_opensearch;
190         uint32_t sv403_activelocks;
191         uint32_t sv403_numreqbuf;
192         uint32_t sv403_sizreqbuf;
193         uint32_t sv403_numbigbuf;
194         uint32_t sv403_numfiletasks;
195         uint32_t sv403_alertsched;
196         uint32_t sv403_erroralert;
197         uint32_t sv403_logonalert;
198         uint32_t sv403_accessalert;
199         uint32_t sv403_diskalert;
200         uint32_t sv403_netioalert;
201         uint32_t sv403_maxauditsz;
202         const char * sv403_srvheuristics;
203         uint32_t sv403_auditedevents;
204         uint32_t sv403_autoprofile;
205         const char * sv403_autopath;
206 };
207
208 struct SERVER_INFO_502 {
209         uint32_t sv502_sessopens;
210         uint32_t sv502_sessvcs;
211         uint32_t sv502_opensearch;
212         uint32_t sv502_sizreqbuf;
213         uint32_t sv502_initworkitems;
214         uint32_t sv502_maxworkitems;
215         uint32_t sv502_rawworkitems;
216         uint32_t sv502_irpstacksize;
217         uint32_t sv502_maxrawbuflen;
218         uint32_t sv502_sessusers;
219         uint32_t sv502_sessconns;
220         uint32_t sv502_maxpagedmemoryusage;
221         uint32_t sv502_maxnonpagedmemoryusage;
222         uint8_t sv502_enablesoftcompat;
223         uint8_t sv502_enableforcedlogoff;
224         uint8_t sv502_timesource;
225         uint8_t sv502_acceptdownlevelapis;
226         uint8_t sv502_lmannounce;
227 };
228
229 struct SERVER_INFO_503 {
230         uint32_t sv503_sessopens;
231         uint32_t sv503_sessvcs;
232         uint32_t sv503_opensearch;
233         uint32_t sv503_sizreqbuf;
234         uint32_t sv503_initworkitems;
235         uint32_t sv503_maxworkitems;
236         uint32_t sv503_rawworkitems;
237         uint32_t sv503_irpstacksize;
238         uint32_t sv503_maxrawbuflen;
239         uint32_t sv503_sessusers;
240         uint32_t sv503_sessconns;
241         uint32_t sv503_maxpagedmemoryusage;
242         uint32_t sv503_maxnonpagedmemoryusage;
243         uint8_t sv503_enablesoftcompat;
244         uint8_t sv503_enableforcedlogoff;
245         uint8_t sv503_timesource;
246         uint8_t sv503_acceptdownlevelapis;
247         uint8_t sv503_lmannounce;
248         const char * sv503_domain;
249         uint32_t sv503_maxcopyreadlen;
250         uint32_t sv503_maxcopywritelen;
251         uint32_t sv503_minkeepsearch;
252         uint32_t sv503_maxkeepsearch;
253         uint32_t sv503_minkeepcomplsearch;
254         uint32_t sv503_maxkeepcomplsearch;
255         uint32_t sv503_threadcountadd;
256         uint32_t sv503_numblockthreads;
257         uint32_t sv503_scavtimeout;
258         uint32_t sv503_minrcvqueue;
259         uint32_t sv503_minfreeworkitems;
260         uint32_t sv503_xactmemsize;
261         uint32_t sv503_threadpriority;
262         uint32_t sv503_maxmpxct;
263         uint32_t sv503_oplockbreakwait;
264         uint32_t sv503_oplockbreakresponsewait;
265         uint8_t sv503_enableoplocks;
266         uint8_t sv503_enableoplockforceclose;
267         uint8_t sv503_enablefcbopens;
268         uint8_t sv503_enableraw;
269         uint8_t sv503_enablesharednetdrives;
270         uint32_t sv503_minfreeconnections;
271         uint32_t sv503_maxfreeconnections;
272 };
273
274 struct SERVER_INFO_599 {
275         uint32_t sv599_sessopens;
276         uint32_t sv599_sessvcs;
277         uint32_t sv599_opensearch;
278         uint32_t sv599_sizreqbuf;
279         uint32_t sv599_initworkitems;
280         uint32_t sv599_maxworkitems;
281         uint32_t sv599_rawworkitems;
282         uint32_t sv599_irpstacksize;
283         uint32_t sv599_maxrawbuflen;
284         uint32_t sv599_sessusers;
285         uint32_t sv599_sessconns;
286         uint32_t sv599_maxpagedmemoryusage;
287         uint32_t sv599_maxnonpagedmemoryusage;
288         uint8_t sv599_enablesoftcompat;
289         uint8_t sv599_enableforcedlogoff;
290         uint8_t sv599_timesource;
291         uint8_t sv599_acceptdownlevelapis;
292         uint8_t sv599_lmannounce;
293         const char * sv599_domain;
294         uint32_t sv599_maxcopyreadlen;
295         uint32_t sv599_maxcopywritelen;
296         uint32_t sv599_minkeepsearch;
297         uint32_t sv599_maxkeepsearch;
298         uint32_t sv599_minkeepcomplsearch;
299         uint32_t sv599_maxkeepcomplsearch;
300         uint32_t sv599_threadcountadd;
301         uint32_t sv599_numblockthreads;
302         uint32_t sv599_scavtimeout;
303         uint32_t sv599_minrcvqueue;
304         uint32_t sv599_minfreeworkitems;
305         uint32_t sv599_xactmemsize;
306         uint32_t sv599_threadpriority;
307         uint32_t sv599_maxmpxct;
308         uint32_t sv599_oplockbreakwait;
309         uint32_t sv599_oplockbreakresponsewait;
310         uint8_t sv599_enableoplocks;
311         uint8_t sv599_enableoplockforceclose;
312         uint8_t sv599_enablefcbopens;
313         uint8_t sv599_enableraw;
314         uint8_t sv599_enablesharednetdrives;
315         uint32_t sv599_minfreeconnections;
316         uint32_t sv599_maxfreeconnections;
317         uint32_t sv599_initsesstable;
318         uint32_t sv599_initconntable;
319         uint32_t sv599_initfiletable;
320         uint32_t sv599_initsearchtable;
321         uint32_t sv599_alertschedule;
322         uint32_t sv599_errorthreshold;
323         uint32_t sv599_networkerrorthreshold;
324         uint32_t sv599_diskspacethreshold;
325         uint32_t sv599_reserved;
326         uint32_t sv599_maxlinkdelay;
327         uint32_t sv599_minlinkthroughput;
328         uint32_t sv599_linkinfovalidtime;
329         uint32_t sv599_scavqosinfoupdatetime;
330         uint32_t sv599_maxworkitemidletime;
331 };
332
333 struct SERVER_INFO_598 {
334         uint32_t sv598_maxrawworkitems;
335         uint32_t sv598_maxthreadsperqueue;
336         uint32_t sv598_producttype;
337         uint32_t sv598_serversize;
338         uint32_t sv598_connectionlessautodisc;
339         uint32_t sv598_sharingviolationretries;
340         uint32_t sv598_sharingviolationdelay;
341         uint32_t sv598_maxglobalopensearch;
342         uint32_t sv598_removeduplicatesearches;
343         uint32_t sv598_lockviolationoffset;
344         uint32_t sv598_lockviolationdelay;
345         uint32_t sv598_mdlreadswitchover;
346         uint32_t sv598_cachedopenlimit;
347         uint32_t sv598_otherqueueaffinity;
348         uint8_t sv598_restrictnullsessaccess;
349         uint8_t sv598_enablewfw311directipx;
350         uint32_t sv598_queuesamplesecs;
351         uint32_t sv598_balancecount;
352         uint32_t sv598_preferredaffinity;
353         uint32_t sv598_maxfreerfcbs;
354         uint32_t sv598_maxfreemfcbs;
355         uint32_t sv598_maxfreelfcbs;
356         uint32_t sv598_maxfreepagedpoolchunks;
357         uint32_t sv598_minpagedpoolchunksize;
358         uint32_t sv598_maxpagedpoolchunksize;
359         uint8_t sv598_sendsfrompreferredprocessor;
360         uint32_t sv598_cacheddirectorylimit;
361         uint32_t sv598_maxcopylength;
362         uint8_t sv598_enablecompression;
363         uint8_t sv598_autosharewks;
364         uint8_t sv598_autoshareserver;
365         uint8_t sv598_enablesecuritysignature;
366         uint8_t sv598_requiresecuritysignature;
367         uint32_t sv598_minclientbuffersize;
368         struct GUID sv598_serverguid;
369         uint32_t sv598_ConnectionNoSessionsTimeout;
370         uint32_t sv598_IdleThreadTimeOut;
371         uint8_t sv598_enableW9xsecuritysignature;
372         uint8_t sv598_enforcekerberosreauthentication;
373         uint8_t sv598_disabledos;
374         uint32_t sv598_lowdiskspaceminimum;
375         uint8_t sv598_disablestrictnamechecking;
376 };
377
378 struct SERVER_INFO_1005 {
379         const char * sv1005_comment;
380 };
381
382 struct SERVER_INFO_1107 {
383         uint32_t sv1107_users;
384 };
385
386 struct SERVER_INFO_1010 {
387         int32_t sv1010_disc;
388 };
389
390 struct SERVER_INFO_1016 {
391         uint8_t sv1016_hidden;
392 };
393
394 struct SERVER_INFO_1017 {
395         uint32_t sv1017_announce;
396 };
397
398 struct SERVER_INFO_1018 {
399         uint32_t sv1018_anndelta;
400 };
401
402 struct SERVER_INFO_1501 {
403         uint32_t sv1501_sessopens;
404 };
405
406 struct SERVER_INFO_1502 {
407         uint32_t sv1502_sessvcs;
408 };
409
410 struct SERVER_INFO_1503 {
411         uint32_t sv1503_opensearch;
412 };
413
414 struct SERVER_INFO_1506 {
415         uint32_t sv1506_maxworkitems;
416 };
417
418 struct SERVER_INFO_1509 {
419         uint32_t sv1509_maxrawbuflen;
420 };
421
422 struct SERVER_INFO_1510 {
423         uint32_t sv1510_sessusers;
424 };
425
426 struct SERVER_INFO_1511 {
427         uint32_t sv1511_sessconns;
428 };
429
430 struct SERVER_INFO_1512 {
431         uint32_t sv1512_maxnonpagedmemoryusage;
432 };
433
434 struct SERVER_INFO_1513 {
435         uint32_t sv1513_maxpagedmemoryusage;
436 };
437
438 struct SERVER_INFO_1514 {
439         uint8_t sv1514_enablesoftcompat;
440 };
441
442 struct SERVER_INFO_1515 {
443         uint8_t sv1515_enableforcedlogoff;
444 };
445
446 struct SERVER_INFO_1516 {
447         uint8_t sv1516_timesource;
448 };
449
450 struct SERVER_INFO_1518 {
451         uint8_t sv1518_lmannounce;
452 };
453
454 struct SERVER_INFO_1520 {
455         uint32_t sv1520_maxcopyreadlen;
456 };
457
458 struct SERVER_INFO_1521 {
459         uint32_t sv1521_maxcopywritelen;
460 };
461
462 struct SERVER_INFO_1522 {
463         uint32_t sv1522_minkeepsearch;
464 };
465
466 struct SERVER_INFO_1523 {
467         uint32_t sv1523_maxkeepsearch;
468 };
469
470 struct SERVER_INFO_1524 {
471         uint32_t sv1524_minkeepcomplsearch;
472 };
473
474 struct SERVER_INFO_1525 {
475         uint32_t sv1525_maxkeepcomplsearch;
476 };
477
478 struct SERVER_INFO_1528 {
479         uint32_t sv1528_scavtimeout;
480 };
481
482 struct SERVER_INFO_1529 {
483         uint32_t sv1529_minrcvqueue;
484 };
485
486 struct SERVER_INFO_1530 {
487         uint32_t sv1530_minfreeworkitems;
488 };
489
490 struct SERVER_INFO_1533 {
491         uint32_t sv1533_maxmpxct;
492 };
493
494 struct SERVER_INFO_1534 {
495         uint32_t sv1534_oplockbreakwait;
496 };
497
498 struct SERVER_INFO_1535 {
499         uint32_t sv1535_oplockbreakresponsewait;
500 };
501
502 struct SERVER_INFO_1536 {
503         uint8_t sv1536_enableoplocks;
504 };
505
506 struct SERVER_INFO_1537 {
507         uint8_t sv1537_enableoplockforceclose;
508 };
509
510 struct SERVER_INFO_1538 {
511         uint8_t sv1538_enablefcbopens;
512 };
513
514 struct SERVER_INFO_1539 {
515         uint8_t sv1539_enableraw;
516 };
517
518 struct SERVER_INFO_1540 {
519         uint8_t sv1540_enablesharednetdrives;
520 };
521
522 struct SERVER_INFO_1541 {
523         uint8_t sv1541_minfreeconnections;
524 };
525
526 struct SERVER_INFO_1542 {
527         uint8_t sv1542_maxfreeconnections;
528 };
529
530 struct SERVER_INFO_1543 {
531         uint32_t sv1543_initsesstable;
532 };
533
534 struct SERVER_INFO_1544 {
535         uint32_t sv1544_initconntable;
536 };
537
538 struct SERVER_INFO_1545 {
539         uint32_t sv1545_initfiletable;
540 };
541
542 struct SERVER_INFO_1546 {
543         uint32_t sv1546_initsearchtable;
544 };
545
546 struct SERVER_INFO_1547 {
547         uint32_t sv1547_alertschedule;
548 };
549
550 struct SERVER_INFO_1548 {
551         uint32_t sv1548_errorthreshold;
552 };
553
554 struct SERVER_INFO_1549 {
555         uint32_t sv1549_networkerrorthreshold;
556 };
557
558 struct SERVER_INFO_1550 {
559         uint32_t sv1550_diskspacethreshold;
560 };
561
562 struct SERVER_INFO_1552 {
563         uint32_t sv1552_maxlinkdelay;
564 };
565
566 struct SERVER_INFO_1553 {
567         uint32_t sv1553_minlinkthroughput;
568 };
569
570 struct SERVER_INFO_1554 {
571         uint32_t sv1554_linkinfovalidtime;
572 };
573
574 struct SERVER_INFO_1555 {
575         uint32_t sv1555_scavqosinfoupdatetime;
576 };
577
578 struct SERVER_INFO_1556 {
579         uint32_t sv1556_maxworkitemidletime;
580 };
581
582 struct SERVER_INFO_1557 {
583         uint32_t sv1557_maxrawworkitems;
584 };
585
586 struct SERVER_INFO_1560 {
587         uint32_t sv1560_producttype;
588 };
589
590 struct SERVER_INFO_1561 {
591         uint32_t sv1561_serversize;
592 };
593
594 struct SERVER_INFO_1562 {
595         uint32_t sv1562_connectionlessautodisc;
596 };
597
598 struct SERVER_INFO_1563 {
599         uint32_t sv1563_sharingviolationretries;
600 };
601
602 struct SERVER_INFO_1564 {
603         uint32_t sv1564_sharingviolationdelay;
604 };
605
606 struct SERVER_INFO_1565 {
607         uint32_t sv1565_maxglobalopensearch;
608 };
609
610 struct SERVER_INFO_1566 {
611         uint8_t sv1566_removeduplicatesearches;
612 };
613
614 struct SERVER_INFO_1567 {
615         uint32_t sv1567_lockviolationretries;
616 };
617
618 struct SERVER_INFO_1568 {
619         uint32_t sv1568_lockviolationoffset;
620 };
621
622 struct SERVER_INFO_1569 {
623         uint32_t sv1569_lockviolationdelay;
624 };
625
626 struct SERVER_INFO_1570 {
627         uint32_t sv1570_mdlreadswitchover;
628 };
629
630 struct SERVER_INFO_1571 {
631         uint32_t sv1571_cachedopenlimit;
632 };
633
634 struct SERVER_INFO_1572 {
635         uint32_t sv1572_criticalthreads;
636 };
637
638 struct SERVER_INFO_1573 {
639         uint32_t sv1573_restrictnullsessaccess;
640 };
641
642 struct SERVER_INFO_1574 {
643         uint32_t sv1574_enablewfw311directipx;
644 };
645
646 struct SERVER_INFO_1575 {
647         uint32_t sv1575_otherqueueaffinity;
648 };
649
650 struct SERVER_INFO_1576 {
651         uint32_t sv1576_queuesamplesecs;
652 };
653
654 struct SERVER_INFO_1577 {
655         uint32_t sv1577_balancecount;
656 };
657
658 struct SERVER_INFO_1578 {
659         uint32_t sv1578_preferredaffinity;
660 };
661
662 struct SERVER_INFO_1579 {
663         uint32_t sv1579_maxfreerfcbs;
664 };
665
666 struct SERVER_INFO_1580 {
667         uint32_t sv1580_maxfreemfcbs;
668 };
669
670 struct SERVER_INFO_1581 {
671         uint32_t sv1581_maxfreemlcbs;
672 };
673
674 struct SERVER_INFO_1582 {
675         uint32_t sv1582_maxfreepagedpoolchunks;
676 };
677
678 struct SERVER_INFO_1583 {
679         uint32_t sv1583_minpagedpoolchunksize;
680 };
681
682 struct SERVER_INFO_1584 {
683         uint32_t sv1584_maxpagedpoolchunksize;
684 };
685
686 struct SERVER_INFO_1585 {
687         uint8_t sv1585_sendsfrompreferredprocessor;
688 };
689
690 struct SERVER_INFO_1586 {
691         uint32_t sv1586_maxthreadsperqueue;
692 };
693
694 struct SERVER_INFO_1587 {
695         uint32_t sv1587_cacheddirectorylimit;
696 };
697
698 struct SERVER_INFO_1588 {
699         uint32_t sv1588_maxcopylength;
700 };
701
702 struct SERVER_INFO_1590 {
703         uint32_t sv1590_enablecompression;
704 };
705
706 struct SERVER_INFO_1591 {
707         uint32_t sv1591_autosharewks;
708 };
709
710 struct SERVER_INFO_1592 {
711         uint32_t sv1592_autosharewks;
712 };
713
714 struct SERVER_INFO_1593 {
715         uint32_t sv1593_enablesecuritysignature;
716 };
717
718 struct SERVER_INFO_1594 {
719         uint32_t sv1594_requiresecuritysignature;
720 };
721
722 struct SERVER_INFO_1595 {
723         uint32_t sv1595_minclientbuffersize;
724 };
725
726 struct SERVER_INFO_1596 {
727         uint32_t sv1596_ConnectionNoSessionsTimeout;
728 };
729
730 struct SERVER_INFO_1597 {
731         uint32_t sv1597_IdleThreadTimeOut;
732 };
733
734 struct SERVER_INFO_1598 {
735         uint32_t sv1598_enableW9xsecuritysignature;
736 };
737
738 struct SERVER_INFO_1599 {
739         uint8_t sv1598_enforcekerberosreauthentication;
740 };
741
742 struct SERVER_INFO_1600 {
743         uint8_t sv1598_disabledos;
744 };
745
746 struct SERVER_INFO_1601 {
747         uint32_t sv1598_lowdiskspaceminimum;
748 };
749
750 struct SERVER_INFO_1602 {
751         uint8_t sv_1598_disablestrictnamechecking;
752 };
753
754 struct USER_INFO_0 {
755         const char * usri0_name;
756 };
757
758 #define USER_PRIV_GUEST ( 0 )
759 #define USER_PRIV_USER  ( 1 )
760 #define USER_PRIV_ADMIN ( 2 )
761
762 struct USER_INFO_1 {
763         const char * usri1_name;
764         const char * usri1_password;
765         uint32_t usri1_password_age;
766         uint32_t usri1_priv;
767         const char * usri1_home_dir;
768         const char * usri1_comment;
769         uint32_t usri1_flags;
770         const char * usri1_script_path;
771 };
772
773 #define AF_OP_PRINT     ( 0x1 )
774 #define AF_OP_COMM      ( 0x2 )
775 #define AF_OP_SERVER    ( 0x4 )
776 #define AF_OP_ACCOUNTS  ( 0x8 )
777
778 struct USER_INFO_2 {
779         const char * usri2_name;
780         const char * usri2_password;
781         uint32_t usri2_password_age;
782         uint32_t usri2_priv;
783         const char * usri2_home_dir;
784         const char * usri2_comment;
785         uint32_t usri2_flags;
786         const char * usri2_script_path;
787         uint32_t usri2_auth_flags;
788         const char * usri2_full_name;
789         const char * usri2_usr_comment;
790         const char * usri2_parms;
791         const char * usri2_workstations;
792         uint32_t usri2_last_logon;
793         uint32_t usri2_last_logoff;
794         uint32_t usri2_acct_expires;
795         uint32_t usri2_max_storage;
796         uint32_t usri2_units_per_week;
797         uint8_t *usri2_logon_hours;/* [unique] */
798         uint32_t usri2_bad_pw_count;
799         uint32_t usri2_num_logons;
800         const char * usri2_logon_server;
801         uint32_t usri2_country_code;
802         uint32_t usri2_code_page;
803 };
804
805 struct USER_INFO_3 {
806         const char * usri3_name;
807         uint32_t usri3_password_age;
808         uint32_t usri3_priv;
809         const char * usri3_home_dir;
810         const char * usri3_comment;
811         uint32_t usri3_flags;
812         const char * usri3_script_path;
813         uint32_t usri3_auth_flags;
814         const char * usri3_full_name;
815         const char * usri3_usr_comment;
816         const char * usri3_parms;
817         const char * usri3_workstations;
818         uint32_t usri3_last_logon;
819         uint32_t usri3_last_logoff;
820         uint32_t usri3_acct_expires;
821         uint32_t usri3_max_storage;
822         uint32_t usri3_units_per_week;
823         uint8_t *usri3_logon_hours;/* [unique] */
824         uint32_t usri3_bad_pw_count;
825         uint32_t usri3_num_logons;
826         const char * usri3_logon_server;
827         uint32_t usri3_country_code;
828         uint32_t usri3_code_page;
829         uint32_t usri3_user_id;
830         uint32_t usri3_primary_group_id;
831         const char * usri3_profile;
832         const char * usri3_home_dir_drive;
833         uint32_t usri3_password_expired;
834 };
835
836 struct USER_INFO_4 {
837         const char * usri4_name;
838         const char * usri4_password;
839         uint32_t usri4_password_age;
840         uint32_t usri4_priv;
841         const char * usri4_home_dir;
842         const char * usri4_comment;
843         uint32_t usri4_flags;
844         const char * usri4_script_path;
845         uint32_t usri4_auth_flags;
846         const char * usri4_full_name;
847         const char * usri4_usr_comment;
848         const char * usri4_parms;
849         const char * usri4_workstations;
850         uint32_t usri4_last_logon;
851         uint32_t usri4_last_logoff;
852         uint32_t usri4_acct_expires;
853         uint32_t usri4_max_storage;
854         uint32_t usri4_units_per_week;
855         uint8_t *usri4_logon_hours;/* [unique] */
856         uint32_t usri4_bad_pw_count;
857         uint32_t usri4_num_logons;
858         const char * usri4_logon_server;
859         uint32_t usri4_country_code;
860         uint32_t usri4_code_page;
861         struct domsid *usri4_user_sid;/* [unique] */
862         uint32_t usri4_primary_group_id;
863         const char * usri4_profile;
864         const char * usri4_home_dir_drive;
865         uint32_t usri4_password_expired;
866 };
867
868 struct USER_INFO_10 {
869         const char * usri10_name;
870         const char * usri10_comment;
871         const char * usri10_usr_comment;
872         const char * usri10_full_name;
873 };
874
875 struct USER_INFO_11 {
876         const char * usri11_name;
877         const char * usri11_comment;
878         const char * usri11_usr_comment;
879         const char * usri11_full_name;
880         uint32_t usri11_priv;
881         uint32_t usri11_auth_flags;
882         uint32_t usri11_password_age;
883         const char * usri11_home_dir;
884         const char * usri11_parms;
885         uint32_t usri11_last_logon;
886         uint32_t usri11_last_logoff;
887         uint32_t usri11_bad_pw_count;
888         uint32_t usri11_num_logons;
889         const char * usri11_logon_server;
890         uint32_t usri11_country_code;
891         const char * usri11_workstations;
892         uint32_t usri11_max_storage;
893         uint32_t usri11_units_per_week;
894         uint8_t *usri11_logon_hours;/* [unique] */
895         uint32_t usri11_code_page;
896 };
897
898 struct USER_INFO_20 {
899         const char * usri20_name;
900         const char * usri20_full_name;
901         const char * usri20_comment;
902         uint32_t usri20_flags;
903         uint32_t usri20_user_id;
904 };
905
906 struct USER_INFO_21 {
907         uint8_t *usri21_password;
908 };
909
910 struct USER_INFO_22 {
911         const char * usri22_name;
912         uint8_t *usri22_password;
913         uint32_t usri22_password_age;
914         uint32_t usri22_priv;
915         const char * usri22_home_dir;
916         const char * usri22_comment;
917         uint32_t usri22_flags;
918         uint32_t usri22_script_path;
919         uint32_t usri22_auth_flags;
920         const char * usri22_full_name;
921         const char * usri22_usr_comment;
922         const char * usri22_parms;
923         const char * usri22_workstations;
924         uint32_t usri22_last_logon;
925         uint32_t usri22_last_logoff;
926         uint32_t usri22_acct_expires;
927         uint32_t usri22_max_storage;
928         uint32_t usri22_units_per_week;
929         uint8_t *usri22_logon_hours;/* [unique] */
930         uint32_t usri22_bad_pw_count;
931         uint32_t usri22_num_logons;
932         const char * usri22_logon_server;
933         uint32_t usri22_country_code;
934         uint32_t usri22_code_page;
935 };
936
937 struct USER_INFO_23 {
938         const char * usri23_name;
939         const char * usri23_full_name;
940         const char * usri23_comment;
941         uint32_t usri23_flags;
942         struct domsid *usri23_user_sid;/* [unique] */
943 };
944
945 struct USER_INFO_1003 {
946         const char * usri1003_password;
947 };
948
949 struct USER_INFO_1005 {
950         uint32_t usri1005_priv;
951 };
952
953 struct USER_INFO_1006 {
954         const char * usri1006_home_dir;
955 };
956
957 struct USER_INFO_1007 {
958         const char * usri1007_comment;
959 };
960
961 struct USER_INFO_1008 {
962         uint32_t usri1008_flags;
963 };
964
965 struct USER_INFO_1009 {
966         const char * usri1009_script_path;
967 };
968
969 struct USER_INFO_1010 {
970         uint32_t usri1010_auth_flags;
971 };
972
973 struct USER_INFO_1011 {
974         const char * usri1011_full_name;
975 };
976
977 struct USER_INFO_1012 {
978         const char * usri1012_usr_comment;
979 };
980
981 struct USER_INFO_1013 {
982         const char * usri1013_parms;
983 };
984
985 struct USER_INFO_1014 {
986         const char * usri1014_workstations;
987 };
988
989 struct USER_INFO_1017 {
990         uint32_t usri1017_acct_expires;
991 };
992
993 struct USER_INFO_1018 {
994         uint32_t usri1018_max_storage;
995 };
996
997 struct USER_INFO_1020 {
998         uint32_t usri1020_units_per_week;
999         uint8_t *usri1020_logon_hours;/* [unique] */
1000 };
1001
1002 struct USER_INFO_1023 {
1003         const char * usri1023_logon_server;
1004 };
1005
1006 struct USER_INFO_1024 {
1007         uint32_t usri1024_country_code;
1008 };
1009
1010 struct USER_INFO_1025 {
1011         uint32_t usri1025_code_page;
1012 };
1013
1014 struct USER_INFO_1051 {
1015         uint32_t usri1051_primary_group_id;
1016 };
1017
1018 struct USER_INFO_1052 {
1019         const char * usri1052_profile;
1020 };
1021
1022 struct USER_INFO_1053 {
1023         const char * usri1053_home_dir_drive;
1024 };
1025
1026 struct USER_MODALS_INFO_0 {
1027         uint32_t usrmod0_min_passwd_len;
1028         uint32_t usrmod0_max_passwd_age;
1029         uint32_t usrmod0_min_passwd_age;
1030         uint32_t usrmod0_force_logoff;
1031         uint32_t usrmod0_password_hist_len;
1032 };
1033
1034 struct USER_MODALS_INFO_1 {
1035         uint32_t usrmod1_role;
1036         const char * usrmod1_primary;
1037 };
1038
1039 struct USER_MODALS_INFO_2 {
1040         const char * usrmod2_domain_name;
1041         struct domsid *usrmod2_domain_id;/* [unique] */
1042 };
1043
1044 struct USER_MODALS_INFO_3 {
1045         uint32_t usrmod3_lockout_duration;
1046         uint32_t usrmod3_lockout_observation_window;
1047         uint32_t usrmod3_lockout_threshold;
1048 };
1049
1050 struct USER_MODALS_INFO_1001 {
1051         uint32_t usrmod1001_min_passwd_len;
1052 };
1053
1054 struct USER_MODALS_INFO_1002 {
1055         uint32_t usrmod1002_max_passwd_age;
1056 };
1057
1058 struct USER_MODALS_INFO_1003 {
1059         uint32_t usrmod1003_min_passwd_age;
1060 };
1061
1062 struct USER_MODALS_INFO_1004 {
1063         uint32_t usrmod1004_force_logoff;
1064 };
1065
1066 struct USER_MODALS_INFO_1005 {
1067         uint32_t usrmod1005_password_hist_len;
1068 };
1069
1070 struct USER_MODALS_INFO_1006 {
1071         uint32_t usrmod1006_role;
1072 };
1073
1074 struct USER_MODALS_INFO_1007 {
1075         const char * usrmod1007_primary;
1076 };
1077
1078 struct NET_DISPLAY_USER {
1079         const char * usri1_name;
1080         const char * usri1_comment;
1081         uint32_t usri1_flags;
1082         const char * usri1_full_name;
1083         uint32_t usri1_user_id;
1084         uint32_t usri1_next_index;
1085 };
1086
1087 struct NET_DISPLAY_MACHINE {
1088         const char * usri2_name;
1089         const char * usri2_comment;
1090         uint32_t usri2_flags;
1091         uint32_t usri2_user_id;
1092         uint32_t usri2_next_index;
1093 };
1094
1095 struct NET_DISPLAY_GROUP {
1096         const char * grpi3_name;
1097         const char * grpi3_comment;
1098         uint32_t grpi3_group_id;
1099         uint32_t grpi3_attributes;
1100         uint32_t grpi3_next_index;
1101 };
1102
1103 struct GROUP_INFO_0 {
1104         const char * grpi0_name;
1105 };
1106
1107 struct GROUP_INFO_1 {
1108         const char * grpi1_name;
1109         const char * grpi1_comment;
1110 };
1111
1112 struct GROUP_INFO_2 {
1113         const char * grpi2_name;
1114         const char * grpi2_comment;
1115         uint32_t grpi2_group_id;
1116         uint32_t grpi2_attributes;
1117 };
1118
1119 struct GROUP_INFO_3 {
1120         const char * grpi3_name;
1121         const char * grpi3_comment;
1122         struct domsid * grpi3_group_sid;
1123         uint32_t grpi3_attributes;
1124 };
1125
1126 struct GROUP_INFO_1002 {
1127         const char * grpi1002_comment;
1128 };
1129
1130 struct GROUP_INFO_1005 {
1131         uint32_t grpi1005_attributes;
1132 };
1133
1134 struct GROUP_USERS_INFO_0 {
1135         const char * grui0_name;
1136 };
1137
1138 struct GROUP_USERS_INFO_1 {
1139         const char * grui1_name;
1140         uint32_t grui1_attributes;
1141 };
1142
1143 struct LOCALGROUP_INFO_0 {
1144         const char * lgrpi0_name;
1145 };
1146
1147 struct LOCALGROUP_INFO_1 {
1148         const char * lgrpi1_name;
1149         const char * lgrpi1_comment;
1150 };
1151
1152 struct LOCALGROUP_INFO_1002 {
1153         const char * lgrpi1002_comment;
1154 };
1155
1156 enum SID_NAME_USE {
1157         SidTypeUser=1,
1158         SidTypeGroup=2,
1159         SidTypeDomain=3,
1160         SidTypeAlias=4,
1161         SidTypeWellKnownGroup=5,
1162         SidTypeDeletedAccount=6,
1163         SidTypeInvalid=7,
1164         SidTypeUnknown=8,
1165         SidTypeComputer=9,
1166         SidTypeLabel=10
1167 };
1168
1169 struct LOCALGROUP_MEMBERS_INFO_0 {
1170         struct domsid *lgrmi0_sid;/* [unique] */
1171 };
1172
1173 struct LOCALGROUP_MEMBERS_INFO_1 {
1174         struct domsid *lgrmi1_sid;/* [unique] */
1175         enum SID_NAME_USE lgrmi1_sidusage;
1176         const char * lgrmi1_name;
1177 };
1178
1179 struct LOCALGROUP_MEMBERS_INFO_2 {
1180         struct domsid *lgrmi2_sid;/* [unique] */
1181         enum SID_NAME_USE lgrmi2_sidusage;
1182         const char * lgrmi2_domainandname;
1183 };
1184
1185 struct LOCALGROUP_MEMBERS_INFO_3 {
1186         const char * lgrmi3_domainandname;
1187 };
1188
1189 struct LOCALGROUP_USERS_INFO_0 {
1190         const char * lgrui0_name;
1191 };
1192
1193 struct TIME_OF_DAY_INFO {
1194         uint32_t tod_elapsedt;
1195         uint32_t tod_msecs;
1196         uint32_t tod_hours;
1197         uint32_t tod_mins;
1198         uint32_t tod_secs;
1199         uint32_t tod_hunds;
1200         int32_t tod_timezone;
1201         uint32_t tod_tinterval;
1202         uint32_t tod_day;
1203         uint32_t tod_month;
1204         uint32_t tod_year;
1205         uint32_t tod_weekday;
1206 };
1207
1208 struct SHARE_INFO_0 {
1209         const char * shi0_netname;
1210 };
1211
1212 struct SHARE_INFO_1 {
1213         const char * shi1_netname;
1214         uint32_t shi1_type;
1215         const char * shi1_remark;
1216 };
1217
1218 struct SHARE_INFO_2 {
1219         const char * shi2_netname;
1220         uint32_t shi2_type;
1221         const char * shi2_remark;
1222         uint32_t shi2_permissions;
1223         uint32_t shi2_max_uses;
1224         uint32_t shi2_current_uses;
1225         const char * shi2_path;
1226         const char * shi2_passwd;
1227 };
1228
1229 struct SHARE_INFO_501 {
1230         const char * shi501_netname;
1231         uint32_t shi501_type;
1232         const char * shi501_remark;
1233         uint32_t shi501_flags;
1234 };
1235
1236 struct SHARE_INFO_502 {
1237         const char * shi502_netname;
1238         uint32_t shi502_type;
1239         const char * shi502_remark;
1240         uint32_t shi502_permissions;
1241         uint32_t shi502_max_uses;
1242         uint32_t shi502_current_uses;
1243         const char * shi502_path;
1244         const char * shi502_passwd;
1245         uint32_t shi502_reserved;
1246         struct security_descriptor * shi502_security_descriptor;
1247 };
1248
1249 struct SHARE_INFO_1004 {
1250         const char * shi1004_remark;
1251 };
1252
1253 struct SHARE_INFO_1005 {
1254         uint32_t shi1005_flags;
1255 };
1256
1257 struct SHARE_INFO_1006 {
1258         uint32_t shi1006_max_uses;
1259 };
1260
1261 struct FILE_INFO_2 {
1262         uint32_t fi2_id;
1263 };
1264
1265 struct FILE_INFO_3 {
1266         uint32_t fi3_id;
1267         uint32_t fi3_permissions;
1268         uint32_t fi3_num_locks;
1269         const char * fi3_pathname;
1270         const char * fi3_username;
1271 };
1272
1273 struct NETLOGON_INFO_1 {
1274         uint32_t netlog1_flags;
1275         NET_API_STATUS netlog1_pdc_connection_status;
1276 };
1277
1278 struct NETLOGON_INFO_2 {
1279         uint32_t netlog2_flags;
1280         NET_API_STATUS netlog2_pdc_connection_status;
1281         const char * netlog2_trusted_dc_name;
1282         NET_API_STATUS netlog2_tc_connection_status;
1283 };
1284
1285 struct NETLOGON_INFO_3 {
1286         uint32_t netlog1_flags;
1287         uint32_t netlog3_logon_attempts;
1288         uint32_t netlog3_reserved1;
1289         uint32_t netlog3_reserved2;
1290         uint32_t netlog3_reserved3;
1291         uint32_t netlog3_reserved4;
1292         uint32_t netlog3_reserved5;
1293 };
1294
1295 struct NETLOGON_INFO_4 {
1296         const char * netlog4_trusted_dc_name;
1297         const char * netlog4_trusted_domain_name;
1298 };
1299
1300 #define DS_PDC_FLAG ( 0x00000001 )
1301 #define DS_GC_FLAG ( 0x00000004 )
1302 #define DS_LDAP_FLAG ( 0x00000008 )
1303 #define DS_DS_FLAG ( 0x00000010 )
1304 #define DS_KDC_FLAG ( 0x00000020 )
1305 #define DS_TIMESERV_FLAG ( 0x00000040 )
1306 #define DS_CLOSEST_FLAG ( 0x00000080 )
1307 #define DS_WRITABLE_FLAG ( 0x00000100 )
1308 #define DS_GOOD_TIMESERV_FLAG ( 0x00000200 )
1309 #define DS_NDNC_FLAG ( 0x00000400 )
1310 #define DS_SELECT_SECRET_DOMAIN_6_FLAG ( 0x00000800 )
1311 #define DS_FULL_SECRET_DOMAIN_6_FLAG ( 0x00001000 )
1312 #define DS_WS_FLAG ( 0x00002000 )
1313 #define DS_DS_8_FLAG ( 0x00004000 )
1314 #define DS_DNS_CONTROLLER_FLAG ( 0x20000000 )
1315 #define DS_DNS_DOMAIN_FLAG ( 0x40000000 )
1316 #define DS_DNS_FOREST_FLAG ( 0x80000000 )
1317
1318 #endif /* _HEADER_libnetapi */
1319
1320 #ifndef _HEADER_netlogon
1321
1322 #define NETLOGON_CONTROL_QUERY ( 0x00000001 )
1323 #define NETLOGON_CONTROL_REPLICATE ( 0x00000002 )
1324 #define NETLOGON_CONTROL_SYNCHRONIZE ( 0x00000003 )
1325 #define NETLOGON_CONTROL_PDC_REPLICATE ( 0x00000004 )
1326 #define NETLOGON_CONTROL_REDISCOVER ( 0x00000005 )
1327 #define NETLOGON_CONTROL_TC_QUERY ( 0x00000006 )
1328 #define NETLOGON_CONTROL_TRANSPORT_NOTIFY ( 0x00000007 )
1329 #define NETLOGON_CONTROL_FIND_USER ( 0x00000008 )
1330 #define NETLOGON_CONTROL_CHANGE_PASSWORD ( 0x00000009 )
1331 #define NETLOGON_CONTROL_TC_VERIFY ( 0x0000000A )
1332 #define NETLOGON_CONTROL_FORCE_DNS_REG ( 0x0000000B )
1333 #define NETLOGON_CONTROL_QUERY_DNS_REG ( 0x0000000C )
1334 #define NETLOGON_CONTROL_BACKUP_CHANGE_LOG ( 0x0000FFFC )
1335 #define NETLOGON_CONTROL_TRUNCATE_LOG ( 0x0000FFFD )
1336 #define NETLOGON_CONTROL_SET_DBFLAG ( 0x0000FFFE )
1337 #define NETLOGON_CONTROL_BREAKPOINT ( 0x0000FFFF )
1338
1339 #define DS_FORCE_REDISCOVERY ( 0x00000001 )
1340 #define DS_DIRECTORY_SERVICE_REQUIRED ( 0x00000010 )
1341 #define DS_DIRECTORY_SERVICE_PREFERRED ( 0x00000020 )
1342 #define DS_GC_SERVER_REQUIRED ( 0x00000040 )
1343 #define DS_PDC_REQUIRED ( 0x00000080 )
1344 #define DS_BACKGROUND_ONLY ( 0x00000100 )
1345 #define DS_IP_REQUIRED ( 0x00000200 )
1346 #define DS_KDC_REQUIRED ( 0x00000400 )
1347 #define DS_TIMESERV_REQUIRED ( 0x00000800 )
1348 #define DS_WRITABLE_REQUIRED ( 0x00001000 )
1349 #define DS_GOOD_TIMESERV_PREFERRED ( 0x00002000 )
1350 #define DS_AVOID_SELF ( 0x00004000 )
1351 #define DS_ONLY_LDAP_NEEDED ( 0x00008000 )
1352 #define DS_IS_FLAT_NAME ( 0x00010000 )
1353 #define DS_IS_DNS_NAME ( 0x00020000 )
1354 #define DS_TRY_NEXTCLOSEST_SITE ( 0x00040000 )
1355 #define DS_DIRECTORY_SERVICE_6_REQUIRED ( 0x00080000 )
1356 #define DS_WEB_SERVICE_REQUIRED ( 0x00100000 )
1357 #define DS_RETURN_DNS_NAME ( 0x40000000 )
1358 #define DS_RETURN_FLAT_NAME ( 0x80000000 )
1359
1360 #endif /* _HEADER_netlogon */
1361
1362 /****************************************************************
1363 ****************************************************************/
1364
1365 struct libnetapi_ctx {
1366         char *debuglevel;
1367         char *error_string;
1368         char *username;
1369         char *workgroup;
1370         char *password;
1371         char *krb5_cc_env;
1372         int use_kerberos;
1373         int use_ccache;
1374         int disable_policy_handle_cache;
1375
1376         void *private_data;
1377 };
1378
1379 /****************************************************************
1380 ****************************************************************/
1381
1382 NET_API_STATUS libnetapi_init(struct libnetapi_ctx **ctx);
1383
1384 /****************************************************************
1385 ****************************************************************/
1386
1387 NET_API_STATUS libnetapi_free(struct libnetapi_ctx *ctx);
1388
1389 /****************************************************************
1390 ****************************************************************/
1391
1392 NET_API_STATUS libnetapi_getctx(struct libnetapi_ctx **ctx);
1393
1394 /****************************************************************
1395 ****************************************************************/
1396
1397 NET_API_STATUS libnetapi_set_debuglevel(struct libnetapi_ctx *ctx,
1398                                         const char *debuglevel);
1399
1400 /****************************************************************
1401 ****************************************************************/
1402
1403 NET_API_STATUS libnetapi_set_username(struct libnetapi_ctx *ctx,
1404                                       const char *username);
1405
1406 /****************************************************************
1407 ****************************************************************/
1408
1409 NET_API_STATUS libnetapi_set_password(struct libnetapi_ctx *ctx,
1410                                       const char *password);
1411
1412 /****************************************************************
1413 ****************************************************************/
1414
1415 NET_API_STATUS libnetapi_set_workgroup(struct libnetapi_ctx *ctx,
1416                                        const char *workgroup);
1417
1418 /****************************************************************
1419 ****************************************************************/
1420
1421 NET_API_STATUS libnetapi_set_use_kerberos(struct libnetapi_ctx *ctx);
1422
1423 /****************************************************************
1424 ****************************************************************/
1425
1426 NET_API_STATUS libnetapi_set_use_ccache(struct libnetapi_ctx *ctx);
1427
1428 /****************************************************************
1429 Return a specific libnetapi error as a string, caller must free with NetApiBufferFree
1430 ****************************************************************/
1431
1432 char *libnetapi_errstr(NET_API_STATUS status);
1433
1434 /****************************************************************
1435 Return the last libnetapi error as a string, caller must free with NetApiBufferFree
1436 ctx is optional
1437 ****************************************************************/
1438
1439 char *libnetapi_get_error_string(struct libnetapi_ctx *ctx,
1440                                  NET_API_STATUS status);
1441
1442 /****************************************************************
1443  NetApiBufferAllocate
1444 ****************************************************************/
1445
1446 NET_API_STATUS NetApiBufferAllocate(uint32_t byte_count,
1447                                     void **buffer);
1448
1449 /****************************************************************
1450  NetApiBufferFree
1451 ****************************************************************/
1452
1453 NET_API_STATUS NetApiBufferFree(void *buffer);
1454
1455 /************************************************************//**
1456  *
1457  * ConvertSidToStringSid
1458  *
1459  * @brief Convert a domain sid into a string
1460  *
1461  * @param[in] sid A pointer to a sid structure
1462  * @param[in,out] sid_string A pointer that holds a pointer to a sid string. Caller
1463  * needs to free with free(3)
1464  * @return bool
1465  ***************************************************************/
1466
1467 int  ConvertSidToStringSid(const struct domsid *sid,
1468                            char **sid_string);
1469
1470 /************************************************************//**
1471  *
1472  * ConvertStringSidToSid
1473  *
1474  * @brief Convert a string into a domain sid
1475  *
1476  * @param[in] sid_string A pointer to a sid string.
1477  * @param[in,out] sid A pointer that holds a pointer to a sid structure.
1478  * Caller needs to free with free(3)
1479  * @return bool
1480  ***************************************************************/
1481
1482 int ConvertStringSidToSid(const char *sid_string,
1483                           struct domsid **sid);
1484
1485 /************************************************************//**
1486  *
1487  * NetJoinDomain
1488  *
1489  * @brief Join a computer to a domain or workgroup
1490  *
1491  * @param[in] server The server name to connect to
1492  * @param[in] domain The domain or workgroup to join
1493  * @param[in] account_ou The organizational Unit to create the computer account
1494  * in (AD only)
1495  * @param[in] account The domain account used for joining a domain
1496  * @param[in] password The domain account's password used for joining a domain
1497  * @param[in] join_flags Bitmask field to define specific join features
1498  * @return NET_API_STATUS
1499  *
1500  * example netdomjoin/netdomjoin.c
1501  ***************************************************************/
1502
1503 NET_API_STATUS NetJoinDomain(const char * server /* [in] */,
1504                              const char * domain /* [in] [ref] */,
1505                              const char * account_ou /* [in] */,
1506                              const char * account /* [in] */,
1507                              const char * password /* [in] */,
1508                              uint32_t join_flags /* [in] */);
1509
1510 /************************************************************//**
1511  *
1512  * NetUnjoinDomain
1513  *
1514  * @brief Unjoin a computer from a domain or workgroup
1515  *
1516  * @param[in] server_name The server name to connect to
1517  * @param[in] account The domain account used for unjoining a domain
1518  * @param[in] password The domain account's password used for unjoining a domain
1519  * @param[in] unjoin_flags Bitmask field to define specific unjoin features
1520  * @return NET_API_STATUS
1521  *
1522  ***************************************************************/
1523
1524 NET_API_STATUS NetUnjoinDomain(const char * server_name /* [in] */,
1525                                const char * account /* [in] */,
1526                                const char * password /* [in] */,
1527                                uint32_t unjoin_flags /* [in] */);
1528
1529 /************************************************************//**
1530  *
1531  * NetGetJoinInformation
1532  *
1533  * @brief Unjoin a computer from a domain or workgroup
1534  *
1535  * @param[in] server_name The server name to connect to
1536  * @param[out] name_buffer Returns the name of the workgroup or domain
1537  * @param[out] name_type  Returns the type of that name
1538  * @return NET_API_STATUS
1539  *
1540  * example netdomjoin-gui/netdomjoin-gui.c
1541  *
1542  ***************************************************************/
1543
1544 NET_API_STATUS NetGetJoinInformation(const char * server_name /* [in] */,
1545                                      const char * *name_buffer /* [out] [ref] */,
1546                                      uint16_t *name_type /* [out] [ref] */);
1547
1548 /************************************************************//**
1549  *
1550  * NetGetJoinableOUs
1551  *
1552  * @brief Query for the list of joinable organizational Units that can be used
1553  * for joining AD
1554  *
1555  * @param[in] server_name The server name to connect to
1556  * @param[in] domain The AD domain to query
1557  * @param[in] account The domain account used for the query
1558  * @param[in] password The domain account's password used for the query
1559  * @param[out] ou_count The number of ous returned
1560  * @param[out] ous Returned string array containing the ous
1561  * @return NET_API_STATUS
1562  *
1563  * example netdomjoin-gui/netdomjoin-gui.c
1564  *
1565  ***************************************************************/
1566
1567 NET_API_STATUS NetGetJoinableOUs(const char * server_name /* [in] */,
1568                                  const char * domain /* [in] [ref] */,
1569                                  const char * account /* [in] */,
1570                                  const char * password /* [in] */,
1571                                  uint32_t *ou_count /* [out] [ref] */,
1572                                  const char * **ous /* [out] [ref] */);
1573
1574 /************************************************************//**
1575  *
1576  * NetRenameMachineInDomain
1577  *
1578  * @brief Rename a machine in a domain
1579  *
1580  * @param[in] server_name The server name to connect to
1581  * @param[in] new_machine_name The new machine name
1582  * @param[in] account The domain account used for the query
1583  * @param[in] password The domain account's password used for the query
1584  * @param[in] rename_options Options used for the rename operation
1585  * @return NET_API_STATUS
1586  *
1587  * example join/rename_machine.c
1588  *
1589  ***************************************************************/
1590
1591 NET_API_STATUS NetRenameMachineInDomain(const char * server_name /* [in] */,
1592                                         const char * new_machine_name /* [in] */,
1593                                         const char * account /* [in] */,
1594                                         const char * password /* [in] */,
1595                                         uint32_t rename_options /* [in] */);
1596
1597 /************************************************************//**
1598  *
1599  * NetServerGetInfo
1600  *
1601  * @brief Get Information on a server
1602  *
1603  * @param[in] server_name The server name to connect to
1604  * @param[in] level The level to define which information is requested
1605  * @param[out] buffer The returned buffer carrying the SERVER_INFO structure
1606  * @return NET_API_STATUS
1607  *
1608  ***************************************************************/
1609
1610 NET_API_STATUS NetServerGetInfo(const char * server_name /* [in] */,
1611                                 uint32_t level /* [in] */,
1612                                 uint8_t **buffer /* [out] [ref] */);
1613
1614 /************************************************************//**
1615  *
1616  * NetServerSetInfo
1617  *
1618  * @brief Get Information on a server
1619  *
1620  * @param[in] server_name The server name to connect to
1621  * @param[in] level The level to define which information is set
1622  * @param[in] buffer The buffer carrying the SERVER_INFO structure
1623  * @param[out] parm_error On failure returns the invalid SERVER_INFO member
1624  * @return NET_API_STATUS
1625  *
1626  ***************************************************************/
1627
1628 NET_API_STATUS NetServerSetInfo(const char * server_name /* [in] */,
1629                                 uint32_t level /* [in] */,
1630                                 uint8_t *buffer /* [in] [ref] */,
1631                                 uint32_t *parm_error /* [out] [ref] */);
1632
1633 /************************************************************//**
1634  *
1635  * NetWkstaGetInfo
1636  *
1637  * @brief Get Information on a workstation
1638  *
1639  * @param[in] wksta_name The workstation name to connect to
1640  * @param[in] level The level to define which information is requested
1641  * @param[out] buffer The returned buffer carrying the WKSTA_INFO structure
1642  * @return NET_API_STATUS
1643  *
1644  ***************************************************************/
1645
1646 NET_API_STATUS NetWkstaGetInfo(const char * wksta_name /* [in] */,
1647                                 uint32_t level /* [in] */,
1648                                 uint8_t **buffer /* [out] [ref] */);
1649
1650 /************************************************************//**
1651  *
1652  * NetGetDCName
1653  *
1654  * @brief Query for the PDC for a given domain
1655  *
1656  * @param[in] server_name The server name to connect to
1657  * @param[in] domain_name The name of the domain to lookup
1658  * @param[out] buffer The name of the domain to lookup
1659  * @return NET_API_STATUS
1660  *
1661  * example getdc/getdc.c
1662  ***************************************************************/
1663
1664 NET_API_STATUS NetGetDCName(const char * server_name /* [in] */,
1665                             const char * domain_name /* [in] */,
1666                             uint8_t **buffer /* [out] [ref] */);
1667
1668 /************************************************************//**
1669  *
1670  * NetGetAnyDCName
1671  *
1672  * @brief Query for any DC for a given domain
1673  *
1674  * @param[in] server_name The server name to connect to
1675  * @param[in] domain_name The name of the domain to lookup
1676  * @param[out] buffer The name of the domain to lookup
1677  * @return NET_API_STATUS
1678  *
1679  * example getdc/getdc.c
1680  ***************************************************************/
1681
1682 NET_API_STATUS NetGetAnyDCName(const char * server_name /* [in] */,
1683                                const char * domain_name /* [in] */,
1684                                uint8_t **buffer /* [out] [ref] */);
1685
1686
1687 /************************************************************//**
1688  *
1689  * DsGetDcName
1690  *
1691  * @brief Lookup a DC for a given domain and return information structure
1692  *
1693  * @param[in] server_name The server name to connect to
1694  * @param[in] domain_name The name of the domain to lookup (cannot be NULL)
1695  * @param[in] domain_guid The GUID of the domain to lookup (optional)
1696  * @param[in] site_name The name of the site the DC should reside in
1697  * @param[in] flags A bitmask to request specific features supported by the DC
1698  * @param[out] dc_info Pointer to a DOMAIN_CONTROLLER_INFO structure
1699  * @return NET_API_STATUS
1700  *
1701  * example dsgetdc/dsgetdc.c
1702  ***************************************************************/
1703
1704 NET_API_STATUS DsGetDcName(const char * server_name /* [in] [unique] */,
1705                            const char * domain_name /* [in] [ref] */,
1706                            struct GUID *domain_guid /* [in] [unique] */,
1707                            const char * site_name /* [in] [unique] */,
1708                            uint32_t flags /* [in] */,
1709                            struct DOMAIN_CONTROLLER_INFO **dc_info /* [out] [ref] */);
1710
1711 /************************************************************//**
1712  *
1713  * NetUserAdd
1714  *
1715  * @brief Create a user on a given server
1716  *
1717  * @param[in] server_name The server name to connect to
1718  * @param[in] level The level of the USER_INFO structure passed in (Currently
1719  * only level 1 is supported)
1720  * @param[in] buffer The buffer carrying the USER_INFO structure
1721  * @param[out] parm_error In case of error returns the failing member of the
1722  * structure
1723  * @return NET_API_STATUS
1724  *
1725  * example user/user_add.c
1726  ***************************************************************/
1727
1728 NET_API_STATUS NetUserAdd(const char * server_name /* [in] */,
1729                           uint32_t level /* [in] */,
1730                           uint8_t *buffer /* [in] [ref] */,
1731                           uint32_t *parm_error /* [out] [ref] */);
1732
1733 /************************************************************//**
1734  *
1735  * NetUserDel
1736  *
1737  * @brief Delete a user on a given server
1738  *
1739  * @param[in] server_name The server name to connect to
1740  * @param[in] user_name The user account to delete
1741  * @return NET_API_STATUS
1742  *
1743  * example user/user_del.c
1744  ***************************************************************/
1745
1746 NET_API_STATUS NetUserDel(const char * server_name /* [in] */,
1747                           const char * user_name /* [in] */);
1748
1749 /************************************************************//**
1750  *
1751  * NetUserEnum
1752  *
1753  * @brief Enumerate accounts on a server
1754  *
1755  * @param[in] server_name The server name to connect to
1756  * @param[in] level The enumeration level used for the query (Currently only
1757  * level 0 is supported)
1758  * @param[in] filter The account flags filter used for the query
1759  * @param[out] buffer The returned enumeration buffer
1760  * @param[in] prefmaxlen The requested maximal buffer size
1761  * @param[out] entries_read The number of returned entries
1762  * @param[out] total_entries The number of total entries
1763  * @param[in,out] resume_handle A handle passed in and returned for resuming
1764  * operations
1765  * @return NET_API_STATUS
1766  *
1767  * example user/user_enum.c
1768  ***************************************************************/
1769
1770 NET_API_STATUS NetUserEnum(const char * server_name /* [in] */,
1771                            uint32_t level /* [in] */,
1772                            uint32_t filter /* [in] */,
1773                            uint8_t **buffer /* [out] [ref] */,
1774                            uint32_t prefmaxlen /* [in] */,
1775                            uint32_t *entries_read /* [out] [ref] */,
1776                            uint32_t *total_entries /* [out] [ref] */,
1777                            uint32_t *resume_handle /* [in,out] [ref] */);
1778
1779 /************************************************************//**
1780  *
1781  * NetUserChangePassword
1782  *
1783  * @brief Change the password for a user on a given server or in a given domain
1784  *
1785  * @param[in] domain_name The server or domain name to connect to
1786  * @param[in] user_name The user account to change the password for
1787  * @param[in] old_password The user account's old password
1788  * @param[in] new_password The user account's new password
1789  * @return NET_API_STATUS
1790  *
1791  * example user/user_chgpwd.c
1792  ***************************************************************/
1793
1794 NET_API_STATUS NetUserChangePassword(const char * domain_name /* [in] */,
1795                                      const char * user_name /* [in] */,
1796                                      const char * old_password /* [in] */,
1797                                      const char * new_password /* [in] */);
1798
1799 /************************************************************//**
1800  *
1801  * NetUserGetInfo
1802  *
1803  * @brief Get User Information
1804  *
1805  * @param[in] server_name The server name to connect to
1806  * @param[in] user_name The name of the user that is going to be queried
1807  * @param[in] level The level defining the requested USER_INFO_X structure
1808  * @param[out] buffer The buffer containing a USER_INFO_X structure
1809  * @return NET_API_STATUS
1810  *
1811  * example user/user_getinfo.c
1812  ***************************************************************/
1813
1814 NET_API_STATUS NetUserGetInfo(const char * server_name /* [in] */,
1815                               const char * user_name /* [in] */,
1816                               uint32_t level /* [in] */,
1817                               uint8_t **buffer /* [out] [ref] */);
1818
1819 /************************************************************//**
1820  *
1821  * NetUserSetInfo
1822  *
1823  * @brief Set User Information
1824  *
1825  * @param[in] server_name The server name to connect to
1826  * @param[in] user_name The name of the user that is going to be modified
1827  * @param[in] level The level defining the requested USER_INFO_X structure
1828  * @param[in] buffer The buffer containing a USER_INFO_X structure
1829  * @param[out] parm_err The returned parameter error number if any
1830  * @return NET_API_STATUS
1831  *
1832  * example user/user_setinfo.c
1833  ***************************************************************/
1834
1835 NET_API_STATUS NetUserSetInfo(const char * server_name /* [in] */,
1836                               const char * user_name /* [in] */,
1837                               uint32_t level /* [in] */,
1838                               uint8_t *buffer /* [in] [ref] */,
1839                               uint32_t *parm_err /* [out] [ref] */);
1840
1841 /************************************************************//**
1842  *
1843  * NetUserModalsGet
1844  *
1845  * @brief Get SAM domain and password information
1846  *
1847  * @param[in] server_name The server name to connect to
1848  * @param[in] level The level defining which USER_MODALS_INFO_X buffer to query
1849  * @param[out] buffer The returned USER_MODALS_INFO_X buffer
1850  * @return NET_API_STATUS
1851  *
1852  * example user/user_modalsget.c
1853  ***************************************************************/
1854
1855 NET_API_STATUS NetUserModalsGet(const char * server_name /* [in] */,
1856                                 uint32_t level /* [in] */,
1857                                 uint8_t **buffer /* [out] [ref] */);
1858
1859 /************************************************************//**
1860  *
1861  * NetUserModalsSet
1862  *
1863  * @brief Set SAM domain and password information
1864  *
1865  * @param[in] server_name The server name to connect to
1866  * @param[in] level The level defining which USER_MODALS_INFO_X buffer to query
1867  * @param[out] buffer The buffer conntaing a USER_MODALS_INFO_X structure
1868  * @param[out] parm_err The returned parameter error number if any
1869  * @return NET_API_STATUS
1870  *
1871  * example user/user_modalsset.c
1872  ***************************************************************/
1873
1874 NET_API_STATUS NetUserModalsSet(const char * server_name /* [in] */,
1875                                 uint32_t level /* [in] */,
1876                                 uint8_t *buffer /* [in] [ref] */,
1877                                 uint32_t *parm_err /* [out] [ref] */);
1878
1879 /************************************************************//**
1880  *
1881  * NetUserGetGroups
1882  *
1883  * @brief Enumerate grouplist of a user on a server
1884  *
1885  * @param[in] server_name The server name to connect to
1886  * @param[in] user_name The user name to query
1887  * @param[in] level The enumeration level used for the query (Currently only
1888  * level 0 is supported)
1889  * @param[out] buffer The returned enumeration buffer
1890  * @param[in] prefmaxlen The requested maximal buffer size
1891  * @param[out] entries_read The number of returned entries
1892  * @param[out] total_entries The number of total entries
1893  * @return NET_API_STATUS
1894  *
1895  * example user/user_getgroups.c
1896  ***************************************************************/
1897
1898 NET_API_STATUS NetUserGetGroups(const char * server_name /* [in] */,
1899                                 const char * user_name /* [in] */,
1900                                 uint32_t level /* [in] */,
1901                                 uint8_t **buffer /* [out] [ref] */,
1902                                 uint32_t prefmaxlen /* [in] */,
1903                                 uint32_t *entries_read /* [out] [ref] */,
1904                                 uint32_t *total_entries /* [out] [ref] */);
1905
1906 /************************************************************//**
1907  *
1908  * NetUserSetGroups
1909  *
1910  * @brief Set grouplist of a user on a server
1911  *
1912  * @param[in] server_name The server name to connect to
1913  * @param[in] user_name The user name to query
1914  * @param[in] level The level defining the GROUP_USERS_INFO_X structures in the buffer
1915  * @param[in] buffer The buffer containing GROUP_USERS_INFO_X structures
1916  * @param[in] num_entries The number of X structures in the buffer
1917  * @return NET_API_STATUS
1918  *
1919  * example user/user_setgroups.c
1920  ***************************************************************/
1921
1922 NET_API_STATUS NetUserSetGroups(const char * server_name /* [in] */,
1923                                 const char * user_name /* [in] */,
1924                                 uint32_t level /* [in] */,
1925                                 uint8_t *buffer /* [in] [ref] */,
1926                                 uint32_t num_entries /* [in] */);
1927
1928 /************************************************************//**
1929  *
1930  * NetUserGetLocalGroups
1931  *
1932  * @brief Enumerate local grouplist of a user on a server
1933  *
1934  * @param[in] server_name The server name to connect to
1935  * @param[in] user_name The user name to query
1936  * @param[in] level The enumeration level used for the query
1937  * @param[in] flags The flags used for the query
1938  * @param[out] buffer The returned enumeration buffer
1939  * @param[in] prefmaxlen The requested maximal buffer size
1940  * @param[out] entries_read The number of returned entries
1941  * @param[out] total_entries The number of total entries
1942  * @return NET_API_STATUS
1943  *
1944  * example user/user_getlocalgroups.c
1945  ***************************************************************/
1946
1947 NET_API_STATUS NetUserGetLocalGroups(const char * server_name /* [in] */,
1948                                      const char * user_name /* [in] */,
1949                                      uint32_t level /* [in] */,
1950                                      uint32_t flags /* [in] */,
1951                                      uint8_t **buffer /* [out] [ref] */,
1952                                      uint32_t prefmaxlen /* [in] */,
1953                                      uint32_t *entries_read /* [out] [ref] */,
1954                                      uint32_t *total_entries /* [out] [ref] */);
1955
1956 /************************************************************//**
1957  *
1958  * NetQueryDisplayInformation
1959  *
1960  * @brief Enumerate accounts on a server
1961  *
1962  * @param[in] server_name The server name to connect to
1963  * @param[in] level The enumeration level used for the query
1964  * @param[in] idx The index to start the the display enumeration at
1965  * @param[in] entries_requested The number of entries requested
1966  * @param[in] prefmaxlen The requested maximal buffer size
1967  * @param[out] entries_read The number of returned entries
1968  * @param[out] buffer The returned display information buffer
1969  * @return NET_API_STATUS
1970  *
1971  * example user/user_dispinfo.c
1972  ***************************************************************/
1973
1974 NET_API_STATUS NetQueryDisplayInformation(const char * server_name /* [in] [unique] */,
1975                                           uint32_t level /* [in] */,
1976                                           uint32_t idx /* [in] */,
1977                                           uint32_t entries_requested /* [in] */,
1978                                           uint32_t prefmaxlen /* [in] */,
1979                                           uint32_t *entries_read /* [out] [ref] */,
1980                                           void **buffer /* [out] [noprint,ref] */);
1981
1982 /************************************************************//**
1983  *
1984  * NetGroupAdd
1985  *
1986  * @brief Create Domain Group
1987  *
1988  * @param[in] server_name The server name to connect to
1989  * @param[in] level The level used for the new group creation
1990  * @param[in] buf The buffer containing the group structure
1991  * @param[out] parm_err The returned parameter error number if any
1992  * @return NET_API_STATUS
1993  *
1994  * example group/group_add.c
1995  ***************************************************************/
1996
1997 NET_API_STATUS NetGroupAdd(const char * server_name /* [in] */,
1998                            uint32_t level /* [in] */,
1999                            uint8_t *buf /* [in] [ref] */,
2000                            uint32_t *parm_err /* [out] [ref] */);
2001
2002 /************************************************************//**
2003  *
2004  * NetGroupDel
2005  *
2006  * @brief Delete Domain Group
2007  *
2008  * @param[in] server_name The server name to connect to
2009  * @param[in] group_name The name of the group that is going to be deleted
2010  * @return NET_API_STATUS
2011  *
2012  * example group/group_del.c
2013  ***************************************************************/
2014
2015 NET_API_STATUS NetGroupDel(const char * server_name /* [in] */,
2016                            const char * group_name /* [in] */);
2017
2018 /************************************************************//**
2019  *
2020  * NetGroupEnum
2021  *
2022  * @brief Enumerate groups on a server
2023  *
2024  * @param[in] server_name The server name to connect to
2025  * @param[in] level The enumeration level used for the query (Currently only
2026  * level 0 is supported)
2027  * @param[out] buffer The returned enumeration buffer
2028  * @param[in] prefmaxlen The requested maximal buffer size
2029  * @param[out] entries_read The number of returned entries
2030  * @param[out] total_entries The number of total entries
2031  * @param[in,out] resume_handle A handle passed in and returned for resuming
2032  * operations
2033  * @return NET_API_STATUS
2034  *
2035  * example group/group_enum.c
2036  ***************************************************************/
2037
2038 NET_API_STATUS NetGroupEnum(const char * server_name /* [in] */,
2039                             uint32_t level /* [in] */,
2040                             uint8_t **buffer /* [out] [ref] */,
2041                             uint32_t prefmaxlen /* [in] */,
2042                             uint32_t *entries_read /* [out] [ref] */,
2043                             uint32_t *total_entries /* [out] [ref] */,
2044                             uint32_t *resume_handle /* [in,out] [ref] */);
2045
2046 /************************************************************//**
2047  *
2048  * NetGroupSetInfo
2049  *
2050  * @brief Set Domain Group Information
2051  *
2052  * @param[in] server_name The server name to connect to
2053  * @param[in] group_name The name of the group that is going to be modified
2054  * @param[in] level The level defining the structure type in buf
2055  * @param[in] buf The buffer containing a GROUP_INFO_X structure
2056  * @param[out] parm_err The returned parameter error number if any
2057  * @return NET_API_STATUS
2058  *
2059  * example group/group_setinfo.c
2060  ***************************************************************/
2061
2062 NET_API_STATUS NetGroupSetInfo(const char * server_name /* [in] */,
2063                                const char * group_name /* [in] */,
2064                                uint32_t level /* [in] */,
2065                                uint8_t *buf /* [in] [ref] */,
2066                                uint32_t *parm_err /* [out] [ref] */);
2067
2068 /************************************************************//**
2069  *
2070  * NetGroupGetInfo
2071  *
2072  * @brief Get Domain Group Information
2073  *
2074  * @param[in] server_name The server name to connect to
2075  * @param[in] group_name The name of the group that is going to be queried
2076  * @param[in] level The level defining the requested GROUP_INFO_X structure
2077  * @param[out] buf The buffer containing a GROUP_INFO_X structure
2078  * @return NET_API_STATUS
2079  *
2080  * example group/group_getinfo.c
2081  ***************************************************************/
2082
2083 NET_API_STATUS NetGroupGetInfo(const char * server_name /* [in] */,
2084                                const char * group_name /* [in] */,
2085                                uint32_t level /* [in] */,
2086                                uint8_t **buf /* [out] [ref] */);
2087
2088 /************************************************************//**
2089  *
2090  * NetGroupAddUser
2091  *
2092  * @brief Add existing User to existing Domain Group
2093  *
2094  * @param[in] server_name The server name to connect to
2095  * @param[in] group_name The name of the group that is going to be modified
2096  * @param[in] user_name The name of the user that is going to be added to the
2097  * group
2098  * @return NET_API_STATUS
2099  *
2100  * example group/group_adduser.c
2101  ***************************************************************/
2102
2103 NET_API_STATUS NetGroupAddUser(const char * server_name /* [in] */,
2104                                const char * group_name /* [in] */,
2105                                const char * user_name /* [in] */);
2106
2107 /************************************************************//**
2108  *
2109  * NetGroupDelUser
2110  *
2111  * @brief Remove User from Domain Group
2112  *
2113  * @param[in] server_name The server name to connect to
2114  * @param[in] group_name The name of the group that is going to be modified
2115  * @param[in] user_name The name of the user that is going to be removed from
2116  * the group
2117  * @return NET_API_STATUS
2118  *
2119  * example group/group_deluser.c
2120  ***************************************************************/
2121
2122 NET_API_STATUS NetGroupDelUser(const char * server_name /* [in] */,
2123                                const char * group_name /* [in] */,
2124                                const char * user_name /* [in] */);
2125
2126 /************************************************************//**
2127  *
2128  * NetGroupGetUsers
2129  *
2130  * @brief Get Users for a group on a server
2131  *
2132  * @param[in] server_name The server name to connect to
2133  * @param[in] group_name The group name to enumerate users for
2134  * @param[in] level The enumeration level used for the query
2135  * @param[out] buffer The returned enumeration buffer
2136  * @param[in] prefmaxlen The requested maximal buffer size
2137  * @param[out] entries_read The number of returned entries
2138  * @param[out] total_entries The number of total entries
2139  * @param[in,out] resume_handle A handle passed in and returned for resuming
2140  * operations
2141  * @return NET_API_STATUS
2142  *
2143  * example group/group_getusers.c
2144  ***************************************************************/
2145
2146 NET_API_STATUS NetGroupGetUsers(const char * server_name /* [in] */,
2147                                 const char * group_name /* [in] */,
2148                                 uint32_t level /* [in] */,
2149                                 uint8_t **buffer /* [out] [ref] */,
2150                                 uint32_t prefmaxlen /* [in] */,
2151                                 uint32_t *entries_read /* [out] [ref] */,
2152                                 uint32_t *total_entries /* [out] [ref] */,
2153                                 uint32_t *resume_handle /* [in,out] [ref] */);
2154
2155 /************************************************************//**
2156  *
2157  * NetGroupSetUsers
2158  *
2159  * @brief Set Users for a group on a server
2160  *
2161  * @param[in] server_name The server name to connect to
2162  * @param[in] group_name The group name to enumerate users for
2163  * @param[in] level The enumeration level used for the query
2164  * @param[in] buffer The buffer containing a X structure
2165  * @param[in] num_entries The number of X entries in the buffer
2166  * @return NET_API_STATUS
2167  *
2168  * example group/group_setusers.c
2169  ***************************************************************/
2170
2171 NET_API_STATUS NetGroupSetUsers(const char * server_name /* [in] */,
2172                                 const char * group_name /* [in] */,
2173                                 uint32_t level /* [in] */,
2174                                 uint8_t *buffer /* [in] [ref] */,
2175                                 uint32_t num_entries /* [in] */);
2176
2177 /************************************************************//**
2178  *
2179  * NetLocalGroupAdd
2180  *
2181  * @brief Create Local Group
2182  *
2183  * @param[in] server_name The server name to connect to
2184  * @param[in] level The level used for the new group creation
2185  * @param[in] buf The buffer containing the group structure
2186  * @param[out] parm_err The returned parameter error number if any
2187  * @return NET_API_STATUS
2188  *
2189  * example localgroup/localgroup_add.c
2190  ***************************************************************/
2191
2192 NET_API_STATUS NetLocalGroupAdd(const char * server_name /* [in] */,
2193                                 uint32_t level /* [in] */,
2194                                 uint8_t *buf /* [in] [ref] */,
2195                                 uint32_t *parm_err /* [out] [ref] */);
2196
2197 /************************************************************//**
2198  *
2199  * NetLocalGroupDel
2200  *
2201  * @brief Delete Local Group
2202  *
2203  * @param[in] server_name The server name to connect to
2204  * @param[in] group_name The name of the group that is going to be deleted
2205  * @return NET_API_STATUS
2206  *
2207  * example localgroup/localgroup_del.c
2208  ***************************************************************/
2209
2210
2211 NET_API_STATUS NetLocalGroupDel(const char * server_name /* [in] */,
2212                                 const char * group_name /* [in] */);
2213
2214 /************************************************************//**
2215  *
2216  * NetLocalGroupGetInfo
2217  *
2218  * @brief Get Local Group Information
2219  *
2220  * @param[in] server_name The server name to connect to
2221  * @param[in] group_name The name of the group that is going to be queried
2222  * @param[in] level The level defining the requested LOCALGROUP_INFO_X structure
2223  * @param[out] buf The buffer containing a LOCALGROUP_INFO_X structure
2224  * @return NET_API_STATUS
2225  *
2226  * example localgroup/localgroup_getinfo.c
2227  ***************************************************************/
2228
2229 NET_API_STATUS NetLocalGroupGetInfo(const char * server_name /* [in] */,
2230                                     const char * group_name /* [in] */,
2231                                     uint32_t level /* [in] */,
2232                                     uint8_t **buf /* [out] [ref] */);
2233
2234 /************************************************************//**
2235  *
2236  * NetLocalGroupSetInfo
2237  *
2238  * @brief Set Local Group Information
2239  *
2240  * @param[in] server_name The server name to connect to
2241  * @param[in] group_name The name of the group that is going to be modified
2242  * @param[in] level The level defining the requested LOCALGROUP_INFO_X structure
2243  * @param[in] buf The buffer containing a LOCALGROUP_INFO_X structure
2244  * @param[out] parm_err The returned parameter error number if any
2245  * @return NET_API_STATUS
2246  *
2247  * example localgroup/localgroup_setinfo.c
2248  ***************************************************************/
2249
2250
2251 NET_API_STATUS NetLocalGroupSetInfo(const char * server_name /* [in] */,
2252                                     const char * group_name /* [in] */,
2253                                     uint32_t level /* [in] */,
2254                                     uint8_t *buf /* [in] [ref] */,
2255                                     uint32_t *parm_err /* [out] [ref] */);
2256
2257 /************************************************************//**
2258  *
2259  * NetLocalGroupEnum
2260  *
2261  * @brief Enumerate local groups on a server
2262  *
2263  * @param[in] server_name The server name to connect to
2264  * @param[in] level The enumeration level used for the query (Currently only
2265  * level 0 is supported)
2266  * @param[out] buffer The returned enumeration buffer
2267  * @param[in] prefmaxlen The requested maximal buffer size
2268  * @param[out] entries_read The number of returned entries
2269  * @param[out] total_entries The number of total entries
2270  * @param[in,out] resume_handle A handle passed in and returned for resuming
2271  * operations
2272  * @return NET_API_STATUS
2273  *
2274  * example localgroup/localgroup_enum.c
2275  ***************************************************************/
2276
2277 NET_API_STATUS NetLocalGroupEnum(const char * server_name /* [in] */,
2278                                  uint32_t level /* [in] */,
2279                                  uint8_t **buffer /* [out] [ref] */,
2280                                  uint32_t prefmaxlen /* [in] */,
2281                                  uint32_t *entries_read /* [out] [ref] */,
2282                                  uint32_t *total_entries /* [out] [ref] */,
2283                                  uint32_t *resume_handle /* [in,out] [ref] */);
2284
2285 /************************************************************//**
2286  *
2287  * NetLocalGroupAddMembers
2288  *
2289  * @brief Add Members to a Local Group
2290  *
2291  * @param[in] server_name The server name to connect to
2292  * @param[in] group_name The name of the group that is going to modified
2293  * @param[in] level The level defining the LOCALGROUP_MEMBERS_INFO_X structure
2294  * @param[in] buffer The buffer containing a LOCALGROUP_MEMBERS_INFO_X structure
2295  * @param[in] total_entries The number of LOCALGROUP_MEMBERS_INFO_X entries in
2296  * the buffer
2297  * @return NET_API_STATUS
2298  *
2299  * example localgroup/localgroup_addmembers.c
2300  ***************************************************************/
2301
2302 NET_API_STATUS NetLocalGroupAddMembers(const char * server_name /* [in] */,
2303                                        const char * group_name /* [in] */,
2304                                        uint32_t level /* [in] */,
2305                                        uint8_t *buffer /* [in] [ref] */,
2306                                        uint32_t total_entries /* [in] */);
2307
2308 /************************************************************//**
2309  *
2310  * NetLocalGroupDelMembers
2311  *
2312  * @brief Delete Members from a Local Group
2313  *
2314  * @param[in] server_name The server name to connect to
2315  * @param[in] group_name The name of the group that is going to modified
2316  * @param[in] level The level defining the LOCALGROUP_MEMBERS_INFO_X structure
2317  * @param[in] buffer The buffer containing a LOCALGROUP_MEMBERS_INFO_X structure
2318  * @param[in] total_entries The number of LOCALGROUP_MEMBERS_INFO_X entries in
2319  * the buffer
2320  * @return NET_API_STATUS
2321  *
2322  * example localgroup/localgroup_delmembers.c
2323  ***************************************************************/
2324
2325 NET_API_STATUS NetLocalGroupDelMembers(const char * server_name /* [in] */,
2326                                        const char * group_name /* [in] */,
2327                                        uint32_t level /* [in] */,
2328                                        uint8_t *buffer /* [in] [ref] */,
2329                                        uint32_t total_entries /* [in] */);
2330
2331 /************************************************************//**
2332  *
2333  * NetLocalGroupGetMembers
2334  *
2335  * @brief Enumerate Members in a local group
2336  *
2337  * @param[in] server_name The server name to connect to
2338  * @param[in] local_group_name The localgroup that is going to be queried
2339  * @param[in] level The level defining the LOCALGROUP_MEMBERS_INFO_X structure
2340  * @param[out] buffer The buffer containing a LOCALGROUP_MEMBERS_INFO_X
2341  * structure
2342  * @param[in] prefmaxlen The requested maximal buffer size
2343  * @param[out] entries_read The number of LOCALGROUP_MEMBERS_INFO_X entries in the buffer
2344  * @param[out] total_entries The total number of LOCALGROUP_MEMBERS_INFO_X entries for that group
2345  * @param[in,out] resume_handle A handle passed in and returned for resuming
2346  * operations
2347  * @return NET_API_STATUS
2348  *
2349  * example localgroup/localgroup_getmembers.c
2350  ***************************************************************/
2351
2352 NET_API_STATUS NetLocalGroupGetMembers(const char * server_name /* [in] */,
2353                                        const char * local_group_name /* [in] */,
2354                                        uint32_t level /* [in] */,
2355                                        uint8_t **buffer /* [out] [ref] */,
2356                                        uint32_t prefmaxlen /* [in] */,
2357                                        uint32_t *entries_read /* [out] [ref] */,
2358                                        uint32_t *total_entries /* [out] [ref] */,
2359                                        uint32_t *resume_handle /* [in,out] [ref] */);
2360
2361 /************************************************************//**
2362  *
2363  * NetLocalGroupSetMembers
2364  *
2365  * @brief Set Members in a Local Group
2366  *
2367  * @param[in] server_name The server name to connect to
2368  * @param[in] group_name The name of the group that is going to modified
2369  * @param[in] level The level defining the LOCALGROUP_MEMBERS_INFO_X structure
2370  * @param[in] buffer The buffer containing a LOCALGROUP_MEMBERS_INFO_X structure
2371  * @param[in] total_entries The number of LOCALGROUP_MEMBERS_INFO_X entries in
2372  * the buffer
2373  * @return NET_API_STATUS
2374  *
2375  * example localgroup/localgroup_setmembers.c
2376  ***************************************************************/
2377
2378 NET_API_STATUS NetLocalGroupSetMembers(const char * server_name /* [in] */,
2379                                        const char * group_name /* [in] */,
2380                                        uint32_t level /* [in] */,
2381                                        uint8_t *buffer /* [in] [ref] */,
2382                                        uint32_t total_entries /* [in] */);
2383
2384 /************************************************************//**
2385  *
2386  * NetRemoteTOD
2387  *
2388  * @brief Query remote Time of Day
2389  *
2390  * @param[in] server_name The server name to connect to
2391  * @param[out] buf The buffer containing a TIME_OF_DAY_INFO structure
2392  * @return NET_API_STATUS
2393  *
2394  * example server/remote_tod.c
2395  ***************************************************************/
2396
2397 NET_API_STATUS NetRemoteTOD(const char * server_name /* [in] */,
2398                             uint8_t **buf /* [out] [ref] */);
2399
2400 /************************************************************//**
2401  *
2402  * NetShareAdd
2403  *
2404  * @brief Add Share
2405  *
2406  * @param[in] server_name The server name to connect to
2407  * @param[in] level The level defining the requested SHARE_INFO_X structure
2408  * @param[in] buffer The buffer containing a SHARE_INFO_X structure
2409  * @param[out] parm_err The returned parameter error number if any
2410  * @return NET_API_STATUS
2411  *
2412  * example share/share_add.c
2413  ***************************************************************/
2414
2415 NET_API_STATUS NetShareAdd(const char * server_name /* [in] */,
2416                            uint32_t level /* [in] */,
2417                            uint8_t *buffer /* [in] [ref] */,
2418                            uint32_t *parm_err /* [out] [ref] */);
2419
2420 /************************************************************//**
2421  *
2422  * NetShareDel
2423  *
2424  * @brief Delete Share
2425  *
2426  * @param[in] server_name The server name to connect to
2427  * @param[in] net_name The name of the share to delete
2428  * @param[in] reserved
2429  * @return NET_API_STATUS
2430  *
2431  * example share/share_del.c
2432  ***************************************************************/
2433
2434 NET_API_STATUS NetShareDel(const char * server_name /* [in] */,
2435                            const char * net_name /* [in] */,
2436                            uint32_t reserved /* [in] */);
2437
2438 /************************************************************//**
2439  *
2440  * NetShareEnum
2441  *
2442  * @brief Enumerate Shares
2443  *
2444  * @param[in] server_name The server name to connect to
2445  * @param[in] level The level defining the SHARE_INFO_X structure
2446  * @param[out] buffer The buffer containing a SHARE_INFO_X structure
2447  * @param[in] prefmaxlen The requested maximal buffer size
2448  * @param[out] entries_read The number of SHARE_INFO_X entries in the buffer
2449  * @param[out] total_entries The total number of SHARE_INFO_X entries
2450  * @param[in,out] resume_handle A handle passed in and returned for resuming
2451  * operations
2452  * @return NET_API_STATUS
2453  *
2454  * example share/share_enum.c
2455  ***************************************************************/
2456
2457 NET_API_STATUS NetShareEnum(const char * server_name /* [in] */,
2458                             uint32_t level /* [in] */,
2459                             uint8_t **buffer /* [out] [ref] */,
2460                             uint32_t prefmaxlen /* [in] */,
2461                             uint32_t *entries_read /* [out] [ref] */,
2462                             uint32_t *total_entries /* [out] [ref] */,
2463                             uint32_t *resume_handle /* [in,out] [ref] */);
2464
2465 /************************************************************//**
2466  *
2467  * NetShareGetInfo
2468  *
2469  * @brief Get Share Info
2470  *
2471  * @param[in] server_name The server name to connect to
2472  * @param[in] net_name The name of the share to query
2473  * @param[in] level The level defining the SHARE_INFO_X structure
2474  * @param[out] buffer The buffer containing a SHARE_INFO_X structure
2475  * @return NET_API_STATUS
2476  *
2477  * example share/share_getinfo.c
2478  ***************************************************************/
2479
2480 NET_API_STATUS NetShareGetInfo(const char * server_name /* [in] */,
2481                                const char * net_name /* [in] */,
2482                                uint32_t level /* [in] */,
2483                                uint8_t **buffer /* [out] [ref] */);
2484
2485 /************************************************************//**
2486  *
2487  * NetShareSetInfo
2488  *
2489  * @brief Set Share Info
2490  *
2491  * @param[in] server_name The server name to connect to
2492  * @param[in] net_name The name of the share to query
2493  * @param[in] level The level defining the SHARE_INFO_X structure
2494  * @param[in] buffer The buffer containing a SHARE_INFO_X structure
2495  * @param[out] parm_err The returned parameter error number if any
2496  * @return NET_API_STATUS
2497  *
2498  * example share/share_setinfo.c
2499  ***************************************************************/
2500
2501 NET_API_STATUS NetShareSetInfo(const char * server_name /* [in] */,
2502                                const char * net_name /* [in] */,
2503                                uint32_t level /* [in] */,
2504                                uint8_t *buffer /* [in] [ref] */,
2505                                uint32_t *parm_err /* [out] [ref] */);
2506
2507 /************************************************************//**
2508  *
2509  * NetFileClose
2510  *
2511  * @brief Close a file
2512  *
2513  * @param[in] server_name The server name to connect to
2514  * @param[in] fileid The fileid of the file that is going to be closed
2515  * @return NET_API_STATUS
2516  *
2517  * example file/file_close.c
2518  ***************************************************************/
2519
2520 NET_API_STATUS NetFileClose(const char * server_name /* [in] */,
2521                             uint32_t fileid /* [in] */);
2522
2523 /************************************************************//**
2524  *
2525  * NetFileGetInfo
2526  *
2527  * @brief Close a file
2528  *
2529  * @param[in] server_name The server name to connect to
2530  * @param[in] fileid The fileid of the file that is going to be closed
2531  * @param[in] level The level of the FILE_INFO_X buffer
2532  * @param[out] buffer The buffer containing a FILE_INFO_X structure
2533  * @return NET_API_STATUS
2534  *
2535  * example file/file_getinfo.c
2536  ***************************************************************/
2537
2538 NET_API_STATUS NetFileGetInfo(const char * server_name /* [in] */,
2539                               uint32_t fileid /* [in] */,
2540                               uint32_t level /* [in] */,
2541                               uint8_t **buffer /* [out] [ref] */);
2542
2543 /************************************************************//**
2544  *
2545  * NetFileEnum
2546  *
2547  * @brief Enumerate Files
2548  *
2549  * @param[in] server_name The server name to connect to
2550  * @param[in] base_path The
2551  * @param[in] user_name The
2552  * @param[in] level The level defining the FILE_INFO_X structure
2553  * @param[out] buffer The buffer containing a FILE_INFO_X structure
2554  * @param[in] prefmaxlen The requested maximal buffer size
2555  * @param[out] entries_read The number of FILE_INFO_X entries in the buffer
2556  * @param[out] total_entries The total number of FILE_INFO_X entries
2557  * @param[in,out] resume_handle A handle passed in and returned for resuming
2558  * operations
2559  * @return NET_API_STATUS
2560  *
2561  * example file/file_enum.c
2562  ***************************************************************/
2563
2564 NET_API_STATUS NetFileEnum(const char * server_name /* [in] */,
2565                            const char * base_path /* [in] */,
2566                            const char * user_name /* [in] */,
2567                            uint32_t level /* [in] */,
2568                            uint8_t **buffer /* [out] [ref] */,
2569                            uint32_t prefmaxlen /* [in] */,
2570                            uint32_t *entries_read /* [out] [ref] */,
2571                            uint32_t *total_entries /* [out] [ref] */,
2572                            uint32_t *resume_handle /* [in,out] [ref] */);
2573
2574 /************************************************************//**
2575  *
2576  * NetShutdownInit
2577  *
2578  * @brief Start a machine shutdown
2579  *
2580  * @param[in] server_name The server name to connect to
2581  * @param[in] message The message that is displayed before the shutdown
2582  * @param[in] timeout The amount of seconds to wait until shutting down
2583  * @param[in] force_apps Whether to close all applications before the shutdown
2584  * @param[in] do_reboot Whether to reboot after the shutdown
2585  * @return NET_API_STATUS
2586  *
2587  * example shutdown/shutdown_init.c
2588  ***************************************************************/
2589
2590 NET_API_STATUS NetShutdownInit(const char * server_name /* [in] */,
2591                                const char * message /* [in] */,
2592                                uint32_t timeout /* [in] */,
2593                                uint8_t force_apps /* [in] */,
2594                                uint8_t do_reboot /* [in] */);
2595
2596 /************************************************************//**
2597  *
2598  * NetShutdownAbort
2599  *
2600  * @brief Abort an initiated machine shutdown
2601  *
2602  * @param[in] server_name The server name to connect to
2603  * @return NET_API_STATUS
2604  *
2605  * example shutdown/shutdown_abort.c
2606  ***************************************************************/
2607
2608 NET_API_STATUS NetShutdownAbort(const char * server_name /* [in] */);
2609
2610 /************************************************************//**
2611  *
2612  * I_NetLogonControl
2613  *
2614  * @brief Control various aspects of the NETLOGON service
2615  *
2616  * @param[in] server_name The server name to connect to
2617  * @param[in] function_code The function code to call on the server
2618  * @param[in] query_level The level of the NETLOGON_INFO structure returned
2619  * @param[out] buffer The returned buffer containing the NETLOGON_INFO structure
2620  * @return NET_API_STATUS
2621  *
2622  * example netlogon/netlogon_control.c
2623  ***************************************************************/
2624
2625 NET_API_STATUS I_NetLogonControl(const char * server_name /* [in] */,
2626                                  uint32_t function_code /* [in] */,
2627                                  uint32_t query_level /* [in] */,
2628                                  uint8_t **buffer /* [out] [ref] */);
2629
2630 /************************************************************//**
2631  *
2632  * I_NetLogonControl2
2633  *
2634  * @brief Control various aspects of the NETLOGON service
2635  *
2636  * @param[in] server_name The server name to connect to
2637  * @param[in] function_code The function code to call on the server
2638  * @param[in] query_level The level of the NETLOGON_INFO structure returned
2639  * @param[in] data The buffer containing information related to the function code
2640  * @param[out] buffer The returned buffer containing the NETLOGON_INFO structure
2641  * @return NET_API_STATUS
2642  *
2643  * example netlogon/netlogon_control2.c
2644  ***************************************************************/
2645
2646 NET_API_STATUS I_NetLogonControl2(const char * server_name /* [in] */,
2647                                   uint32_t function_code /* [in] */,
2648                                   uint32_t query_level /* [in] */,
2649                                   uint8_t *data /* [in] [ref] */,
2650                                   uint8_t **buffer /* [out] [ref] */);
2651
2652 #ifdef __cplusplus
2653 }
2654 #endif /* __cplusplus */
2655
2656 #endif /* __LIB_NETAPI_H__ */