1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 #ifndef SVRAPI_INCLUDED
7 #define SVRAPI_INCLUDED
8 
9 #include <lmcons.h>
10 #include <lmerr.h>
11 
12 #ifndef RC_INVOKED
13 #pragma pack(1)
14 #endif
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 #ifndef _SVRAPI_
21 #define API_FUNCTION DECLSPEC_IMPORT API_RET_TYPE WINAPI
22 #else
23 #define API_FUNCTION API_RET_TYPE WINAPI
24 #endif
25 
26   extern API_FUNCTION NetAccessAdd(const char *pszServer,short sLevel,char *pbBuffer,unsigned short cbBuffer);
27   extern API_FUNCTION NetAccessCheck (char *pszReserved,char *pszUserName,char *pszResource,unsigned short usOperation,unsigned short *pusResult);
28   extern API_FUNCTION NetAccessDel(const char *pszServer,char *pszResource);
29   extern API_FUNCTION NetAccessEnum(const char *pszServer,char *pszBasePath,short fsRecursive,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcEntriesRead,unsigned short *pcTotalAvail);
30   extern API_FUNCTION NetAccessGetInfo(const char *pszServer,char *pszResource,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcbTotalAvail);
31   extern API_FUNCTION NetAccessSetInfo(const char *pszServer,char *pszResource,short sLevel,char *pbBuffer,unsigned short cbBuffer,short sParmNum);
32   extern API_FUNCTION NetAccessGetUserPerms (char *pszServer,char *pszUgName,char *pszResource,unsigned short *pusPerms);
33 
34   struct access_list {
35     char acl_ugname[LM20_UNLEN+1];
36     char acl_ugname_pad_1;
37     short acl_access;
38   };
39 
40   struct access_list_2 {
41     char *acl2_ugname;
42     unsigned short acl2_access;
43   };
44 
45   struct access_list_12 {
46     char *acl12_ugname;
47     unsigned short acl12_access;
48   };
49 
50   struct access_info_0 {
51     char *acc0_resource_name;
52   };
53 
54   struct access_info_1 {
55     char *acc1_resource_name;
56     short acc1_attr;
57     short acc1_count;
58   };
59 
60   struct access_info_2 {
61     char *acc2_resource_name;
62     short acc2_attr;
63     short acc2_count;
64   };
65 
66   struct access_info_10 {
67     char *acc10_resource_name;
68   };
69 
70   struct access_info_12 {
71     char *acc12_resource_name;
72     short acc12_attr;
73     short acc12_count;
74   };
75 
76 #define MAXPERMENTRIES 64
77 
78 #define ACCESS_NONE 0
79 #define ACCESS_ALL (ACCESS_READ|ACCESS_WRITE|ACCESS_CREATE|ACCESS_EXEC|ACCESS_DELETE|ACCESS_ATRIB|ACCESS_PERM|ACCESS_FINDFIRST)
80 
81 #define ACCESS_READ 0x1
82 #define ACCESS_WRITE 0x2
83 #define ACCESS_CREATE 0x4
84 #define ACCESS_EXEC 0x8
85 #define ACCESS_DELETE 0x10
86 #define ACCESS_ATRIB 0x20
87 #define ACCESS_PERM 0x40
88 #define ACCESS_FINDFIRST 0x80
89 #define ACCESS_GROUP 0x8000
90 #define ACCESS_AUDIT 0x1
91 #define ACCESS_ATTR_PARMNUM 2
92 #define ACCESS_LETTERS "RWCXDAP         "
93 
94   extern API_FUNCTION NetShareAdd(const char *pszServer,short sLevel,const char *pbBuffer,unsigned short cbBuffer);
95   extern API_FUNCTION NetShareDel(const char *pszServer,const char *pszNetName,unsigned short usReserved);
96   extern API_FUNCTION NetShareEnum(const char *pszServer,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcEntriesRead,unsigned short *pcTotalAvail);
97   extern API_FUNCTION NetShareGetInfo(const char *pszServer,const char *pszNetName,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcbTotalAvail);
98   extern API_FUNCTION NetShareSetInfo(const char *pszServer,const char *pszNetName,short sLevel,const char *pbBuffer,unsigned short cbBuffer,short sParmNum);
99 
100   struct share_info_0 {
101     char shi0_netname[LM20_NNLEN+1];
102   };
103 
104   struct share_info_1 {
105     char shi1_netname[LM20_NNLEN+1];
106     char shi1_pad1;
107     unsigned short shi1_type;
108     char *shi1_remark;
109   };
110 
111   struct share_info_2 {
112     char shi2_netname[LM20_NNLEN+1];
113     char shi2_pad1;
114     unsigned short shi2_type;
115     char *shi2_remark;
116     unsigned short shi2_permissions;
117     unsigned short shi2_max_uses;
118     unsigned short shi2_current_uses;
119     char *shi2_path;
120     char shi2_passwd[SHPWLEN+1];
121     char shi2_pad2;
122   };
123 
124   struct share_info_50 {
125     char shi50_netname[LM20_NNLEN+1];
126     unsigned char shi50_type;
127     unsigned short shi50_flags;
128     char *shi50_remark;
129     char *shi50_path;
130     char shi50_rw_password[SHPWLEN+1];
131     char shi50_ro_password[SHPWLEN+1];
132   };
133 
134 #define SHI50F_RDONLY 0x0001
135 #define SHI50F_FULL 0x0002
136 #define SHI50F_DEPENDSON (SHI50F_RDONLY|SHI50F_FULL)
137 #define SHI50F_ACCESSMASK (SHI50F_RDONLY|SHI50F_FULL)
138 
139 #define SHI50F_PERSIST 0x0100
140 
141 #define SHI50F_SYSTEM 0x0200
142 
143 #ifndef PARMNUM_ALL
144 #define PARMNUM_ALL 0
145 #endif
146 
147 #define SHI_REMARK_PARMNUM 4
148 #define SHI_PERMISSIONS_PARMNUM 5
149 #define SHI_MAX_USES_PARMNUM 6
150 #define SHI_PASSWD_PARMNUM 9
151 
152 #define SHI1_NUM_ELEMENTS 4
153 #define SHI2_NUM_ELEMENTS 10
154 
155 #define STYPE_DISKTREE 0
156 #define STYPE_PRINTQ 1
157 #define STYPE_DEVICE 2
158 #define STYPE_IPC 3
159 
160 #define SHI_USES_UNLIMITED -1
161 
162   extern API_FUNCTION NetSessionDel(const char *pszServer,const char *pszClientName,short sReserved);
163   extern API_FUNCTION NetSessionEnum(const char *pszServer,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcEntriesRead,unsigned short *pcTotalAvail);
164   extern API_FUNCTION NetSessionGetInfo(const char *pszServer,const char *pszClientName,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcbTotalAvail);
165 
166   struct session_info_0 {
167     char *sesi0_cname;
168   };
169 
170   struct session_info_1 {
171     char *sesi1_cname;
172     char *sesi1_username;
173     unsigned short sesi1_num_conns;
174     unsigned short sesi1_num_opens;
175     unsigned short sesi1_num_users;
176     unsigned __LONG32 sesi1_time;
177     unsigned __LONG32 sesi1_idle_time;
178     unsigned __LONG32 sesi1_user_flags;
179   };
180 
181   struct session_info_2 {
182     char *sesi2_cname;
183     char *sesi2_username;
184     unsigned short sesi2_num_conns;
185     unsigned short sesi2_num_opens;
186     unsigned short sesi2_num_users;
187     unsigned __LONG32 sesi2_time;
188     unsigned __LONG32 sesi2_idle_time;
189     unsigned __LONG32 sesi2_user_flags;
190     char *sesi2_cltype_name;
191   };
192 
193   struct session_info_10 {
194     char *sesi10_cname;
195     char *sesi10_username;
196     unsigned __LONG32 sesi10_time;
197     unsigned __LONG32 sesi10_idle_time;
198   };
199 
200   struct session_info_50 {
201     char *sesi50_cname;
202     char *sesi50_username;
203     unsigned __LONG32 sesi50_key;
204     unsigned short sesi50_num_conns;
205     unsigned short sesi50_num_opens;
206     unsigned __LONG32 sesi50_time;
207     unsigned __LONG32 sesi50_idle_time;
208     unsigned char sesi50_protocol;
209     unsigned char pad1;
210   };
211 
212 #define SESS_GUEST 1
213 #define SESS_NOENCRYPTION 2
214 
215 #define SESI1_NUM_ELEMENTS 8
216 #define SESI2_NUM_ELEMENTS 9
217 
218   extern API_FUNCTION NetConnectionEnum(const char *pszServer,const char *pszQualifier,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcEntriesRead,unsigned short *pcTotalAvail);
219 
220   struct connection_info_0 {
221     unsigned short coni0_id;
222   };
223 
224   struct connection_info_1 {
225     unsigned short coni1_id;
226     unsigned short coni1_type;
227     unsigned short coni1_num_opens;
228     unsigned short coni1_num_users;
229     unsigned __LONG32 coni1_time;
230     char *coni1_username;
231     char *coni1_netname;
232   };
233 
234   struct connection_info_50 {
235     unsigned short coni50_type;
236     unsigned short coni50_num_opens;
237     unsigned __LONG32 coni50_time;
238     char *coni50_netname;
239     char *coni50_username;
240   };
241 
242   extern API_FUNCTION NetFileClose2(const char *pszServer,unsigned __LONG32 ulFileId);
243   extern API_FUNCTION NetFileEnum(const char *pszServer,const char *pszBasePath,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcEntriesRead,unsigned short *pcTotalAvail);
244 
245   struct file_info_0 {
246     unsigned short fi0_id;
247   };
248 
249   struct file_info_1 {
250     unsigned short fi1_id;
251     unsigned short fi1_permissions;
252     unsigned short fi1_num_locks;
253     char *fi1_pathname;
254     char *fi1_username;
255   };
256 
257   struct file_info_2 {
258     unsigned __LONG32 fi2_id;
259   };
260 
261   struct file_info_3 {
262     unsigned __LONG32 fi3_id;
263     unsigned short fi3_permissions;
264     unsigned short fi3_num_locks;
265     char *fi3_pathname;
266     char *fi3_username;
267   };
268 
269   struct file_info_50 {
270     unsigned __LONG32 fi50_id;
271     unsigned short fi50_permissions;
272     unsigned short fi50_num_locks;
273     char *fi50_pathname;
274     char *fi50_username;
275     char *fi50_sharename;
276   };
277 
278   struct res_file_enum_2 {
279     unsigned short res_pad;
280     unsigned short res_fs;
281     unsigned __LONG32 res_pro;
282   };
283 
284 #define PERM_FILE_READ 0x1
285 #define PERM_FILE_WRITE 0x2
286 #define PERM_FILE_CREATE 0x4
287 
288   typedef struct res_file_enum_2 FRK;
289 
290 #define FRK_INIT(f) { (f).res_pad = 0; (f).res_fs = 0; (f).res_pro = 0; }
291 
292   extern API_FUNCTION NetServerGetInfo(const char *pszServer,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcbTotalAvail);
293 
294   struct server_info_0 {
295     char sv0_name[CNLEN + 1];
296   };
297 
298   struct server_info_1 {
299     char sv1_name[CNLEN + 1];
300     unsigned char sv1_version_major;
301     unsigned char sv1_version_minor;
302     unsigned __LONG32 sv1_type;
303     char *sv1_comment;
304   };
305 
306   struct server_info_50 {
307     char sv50_name[CNLEN + 1];
308     unsigned char sv50_version_major;
309     unsigned char sv50_version_minor;
310     unsigned __LONG32 sv50_type;
311     char *sv50_comment;
312     unsigned short sv50_security;
313     unsigned short sv50_auditing;
314     char *sv50_container;
315     char *sv50_ab_server;
316     char *sv50_ab_dll;
317   };
318 
319   struct server_info_2 {
320     char sv2_name[CNLEN + 1];
321     unsigned char sv2_version_major;
322     unsigned char sv2_version_minor;
323     unsigned __LONG32 sv2_type;
324     char *sv2_comment;
325     unsigned __LONG32 sv2_ulist_mtime;
326     unsigned __LONG32 sv2_glist_mtime;
327     unsigned __LONG32 sv2_alist_mtime;
328     unsigned short sv2_users;
329     unsigned short sv2_disc;
330     char *sv2_alerts;
331     unsigned short sv2_security;
332     unsigned short sv2_auditing;
333     unsigned short sv2_numadmin;
334     unsigned short sv2_lanmask;
335     unsigned short sv2_hidden;
336     unsigned short sv2_announce;
337     unsigned short sv2_anndelta;
338     char sv2_guestacct[LM20_UNLEN + 1];
339     unsigned char sv2_pad1;
340     char *sv2_userpath;
341     unsigned short sv2_chdevs;
342     unsigned short sv2_chdevq;
343     unsigned short sv2_chdevjobs;
344     unsigned short sv2_connections;
345     unsigned short sv2_shares;
346     unsigned short sv2_openfiles;
347     unsigned short sv2_sessopens;
348     unsigned short sv2_sessvcs;
349     unsigned short sv2_sessreqs;
350     unsigned short sv2_opensearch;
351     unsigned short sv2_activelocks;
352     unsigned short sv2_numreqbuf;
353     unsigned short sv2_sizreqbuf;
354     unsigned short sv2_numbigbuf;
355     unsigned short sv2_numfiletasks;
356     unsigned short sv2_alertsched;
357     unsigned short sv2_erroralert;
358     unsigned short sv2_logonalert;
359     unsigned short sv2_accessalert;
360     unsigned short sv2_diskalert;
361     unsigned short sv2_netioalert;
362     unsigned short sv2_maxauditsz;
363     char *sv2_srvheuristics;
364   };
365 
366   struct server_info_3 {
367     char sv3_name[CNLEN + 1];
368     unsigned char sv3_version_major;
369     unsigned char sv3_version_minor;
370     unsigned __LONG32 sv3_type;
371     char *sv3_comment;
372     unsigned __LONG32 sv3_ulist_mtime;
373     unsigned __LONG32 sv3_glist_mtime;
374     unsigned __LONG32 sv3_alist_mtime;
375     unsigned short sv3_users;
376     unsigned short sv3_disc;
377     char *sv3_alerts;
378     unsigned short sv3_security;
379     unsigned short sv3_auditing;
380     unsigned short sv3_numadmin;
381     unsigned short sv3_lanmask;
382     unsigned short sv3_hidden;
383     unsigned short sv3_announce;
384     unsigned short sv3_anndelta;
385     char sv3_guestacct[LM20_UNLEN + 1];
386     unsigned char sv3_pad1;
387     char *sv3_userpath;
388     unsigned short sv3_chdevs;
389     unsigned short sv3_chdevq;
390     unsigned short sv3_chdevjobs;
391     unsigned short sv3_connections;
392     unsigned short sv3_shares;
393     unsigned short sv3_openfiles;
394     unsigned short sv3_sessopens;
395     unsigned short sv3_sessvcs;
396     unsigned short sv3_sessreqs;
397     unsigned short sv3_opensearch;
398     unsigned short sv3_activelocks;
399     unsigned short sv3_numreqbuf;
400     unsigned short sv3_sizreqbuf;
401     unsigned short sv3_numbigbuf;
402     unsigned short sv3_numfiletasks;
403     unsigned short sv3_alertsched;
404     unsigned short sv3_erroralert;
405     unsigned short sv3_logonalert;
406     unsigned short sv3_accessalert;
407     unsigned short sv3_diskalert;
408     unsigned short sv3_netioalert;
409     unsigned short sv3_maxauditsz;
410     char *sv3_srvheuristics;
411     unsigned __LONG32 sv3_auditedevents;
412     unsigned short sv3_autoprofile;
413     char *sv3_autopath;
414   };
415 
416 #define MAJOR_VERSION_MASK 0x0F
417 
418 #define SV_TYPE_WORKSTATION 0x00000001
419 #define SV_TYPE_SERVER 0x00000002
420 #define SV_TYPE_SQLSERVER 0x00000004
421 #define SV_TYPE_DOMAIN_CTRL 0x00000008
422 #define SV_TYPE_DOMAIN_BAKCTRL 0x00000010
423 #define SV_TYPE_TIME_SOURCE 0x00000020
424 #define SV_TYPE_AFP 0x00000040
425 #define SV_TYPE_NOVELL 0x00000080
426 #define SV_TYPE_DOMAIN_MEMBER 0x00000100
427 #define SV_TYPE_PRINTQ_SERVER 0x00000200
428 #define SV_TYPE_DIALIN_SERVER 0x00000400
429 #define SV_TYPE_ALL 0xFFFFFFFF
430 
431 #define SV_NODISC 0xFFFF
432 
433 #define SV_USERSECURITY 1
434 #define SV_SHARESECURITY 0
435 
436 #define SV_SECURITY_SHARE 0
437 #define SV_SECURITY_WINNT 1
438 #define SV_SECURITY_WINNTAS 2
439 #define SV_SECURITY_NETWARE 3
440 
441 #define SV_HIDDEN 1
442 #define SV_VISIBLE 0
443 
444 #define SVI1_NUM_ELEMENTS 5
445 #define SVI2_NUM_ELEMENTS 44
446 #define SVI3_NUM_ELEMENTS 45
447 
448 #define SW_AUTOPROF_LOAD_MASK 0x1
449 #define SW_AUTOPROF_SAVE_MASK 0x2
450 
451   extern API_FUNCTION NetSecurityGetInfo(const char *pszServer,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcbTotalAvail);
452 
453   struct security_info_1 {
454     unsigned __LONG32 sec1_security;
455     char *sec1_container;
456     char *sec1_ab_server;
457     char *sec1_ab_dll;
458   };
459 
460 #define SEC_SECURITY_SHARE SV_SECURITY_SHARE
461 #define SEC_SECURITY_WINNT SV_SECURITY_WINNT
462 #define SEC_SECURITY_WINNTAS SV_SECURITY_WINNTAS
463 #define SEC_SECURITY_NETWARE SV_SECURITY_NETWARE
464 
465 #ifdef __cplusplus
466 }
467 #endif
468 
469 #ifndef RC_INVOKED
470 #pragma pack()
471 #endif
472 #endif
473