xref: /illumos-gate/usr/src/uts/common/smbsrv/svrapi.h (revision 2d6eb4a5)
1*da6c28aaSamw /*
2*da6c28aaSamw  * CDDL HEADER START
3*da6c28aaSamw  *
4*da6c28aaSamw  * The contents of this file are subject to the terms of the
5*da6c28aaSamw  * Common Development and Distribution License (the "License").
6*da6c28aaSamw  * You may not use this file except in compliance with the License.
7*da6c28aaSamw  *
8*da6c28aaSamw  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*da6c28aaSamw  * or http://www.opensolaris.org/os/licensing.
10*da6c28aaSamw  * See the License for the specific language governing permissions
11*da6c28aaSamw  * and limitations under the License.
12*da6c28aaSamw  *
13*da6c28aaSamw  * When distributing Covered Code, include this CDDL HEADER in each
14*da6c28aaSamw  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*da6c28aaSamw  * If applicable, add the following below this CDDL HEADER, with the
16*da6c28aaSamw  * fields enclosed by brackets "[]" replaced with your own identifying
17*da6c28aaSamw  * information: Portions Copyright [yyyy] [name of copyright owner]
18*da6c28aaSamw  *
19*da6c28aaSamw  * CDDL HEADER END
20*da6c28aaSamw  */
21*da6c28aaSamw /*
22*da6c28aaSamw  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
23*da6c28aaSamw  * Use is subject to license terms.
24*da6c28aaSamw  */
25*da6c28aaSamw 
26*da6c28aaSamw #ifndef _SMBSRV_SVRAPI_H
27*da6c28aaSamw #define	_SMBSRV_SVRAPI_H
28*da6c28aaSamw 
29*da6c28aaSamw /*
30*da6c28aaSamw  * This file provides definitions for the SMB Net interface. On Windows
31*da6c28aaSamw  * this would be NetAccess, NetConnection, NetFile, NetServer,
32*da6c28aaSamw  * NetSession, NetShare and NetSecurity but here things are a limited.
33*da6c28aaSamw  * This stuff should be described in Windows 9x LanMan documentation.
34*da6c28aaSamw  *
35*da6c28aaSamw  * Notes:
36*da6c28aaSamw  * Lengths of ASCIIZ strings are given as the maximum strlen() value.
37*da6c28aaSamw  * This does not include space for the terminating 0-byte. When
38*da6c28aaSamw  * allocating space for such an item, use the form:
39*da6c28aaSamw  *
40*da6c28aaSamw  *              char username[LM20_UNLEN+1];
41*da6c28aaSamw  *
42*da6c28aaSamw  * An exception to this is PATHLEN, which does include space for the
43*da6c28aaSamw  * terminating 0-byte.
44*da6c28aaSamw  *
45*da6c28aaSamw  * User names, computer names and share names should be upper-cased
46*da6c28aaSamw  * by the caller and drawn from the ANSI character set.
47*da6c28aaSamw  */
48*da6c28aaSamw 
49*da6c28aaSamw #ifdef __cplusplus
50*da6c28aaSamw extern "C" {
51*da6c28aaSamw #endif
52*da6c28aaSamw 
53*da6c28aaSamw 
54*da6c28aaSamw /*
55*da6c28aaSamw  * Server Class (NetServerGetInfo, NetServerEnum2)
56*da6c28aaSamw  */
57*da6c28aaSamw 
58*da6c28aaSamw struct server_info_0 {
59*da6c28aaSamw     char sv0_name[CNLEN + 1]; 	/* Server name */
60*da6c28aaSamw };	 /* server_info_0 */
61*da6c28aaSamw 
62*da6c28aaSamw 
63*da6c28aaSamw struct server_info_1 {
64*da6c28aaSamw     char		sv1_name[CNLEN + 1];	/* Server name */
65*da6c28aaSamw     unsigned char	sv1_version_major;	/* Major version # of net */
66*da6c28aaSamw     unsigned char	sv1_version_minor;	/* Minor version # of net */
67*da6c28aaSamw     uint32_t		sv1_type;		/* Server type */
68*da6c28aaSamw     char		*sv1_comment; 		/* Exported server comment */
69*da6c28aaSamw };	 /* server_info_1 */
70*da6c28aaSamw 
71*da6c28aaSamw 
72*da6c28aaSamw /* NOTE struct prefix must equal server_info_1 format */
73*da6c28aaSamw 
74*da6c28aaSamw struct server_info_50 {
75*da6c28aaSamw     char		sv50_name[CNLEN + 1];
76*da6c28aaSamw     unsigned char	sv50_version_major;	/* Major version # of net */
77*da6c28aaSamw     unsigned char	sv50_version_minor;	/* Minor version # of net */
78*da6c28aaSamw     uint32_t		sv50_type;		/* Server type */
79*da6c28aaSamw     char		*sv50_comment;		/* Exported server comment */
80*da6c28aaSamw     unsigned short	sv50_security;		/* SV_SECURITY_* (see below) */
81*da6c28aaSamw     unsigned short	sv50_auditing;	/* 0 = no auditing; !0 = auditing */
82*da6c28aaSamw     char		*sv50_container;	/* Security server/domain */
83*da6c28aaSamw     char		*sv50_ab_server;	/* Address book server */
84*da6c28aaSamw     char		*sv50_ab_dll;		/* Address book provider DLL */
85*da6c28aaSamw };	/* server_info_50 */
86*da6c28aaSamw 
87*da6c28aaSamw 
88*da6c28aaSamw struct server_info_2 {
89*da6c28aaSamw     char	sv2_name[CNLEN + 1];
90*da6c28aaSamw     unsigned char sv2_version_major;
91*da6c28aaSamw     unsigned char sv2_version_minor;
92*da6c28aaSamw     uint32_t	sv2_type;
93*da6c28aaSamw     char	*sv2_comment;
94*da6c28aaSamw     uint32_t	sv2_ulist_mtime; /* User list, last modification time */
95*da6c28aaSamw     uint32_t	sv2_glist_mtime; /* Group list, last modification time */
96*da6c28aaSamw     uint32_t	sv2_alist_mtime; /* Access list, last modification time */
97*da6c28aaSamw     uint16_t	sv2_users;	/* max number of users allowed */
98*da6c28aaSamw     uint16_t	sv2_disc;	/* auto-disconnect timeout(in minutes) */
99*da6c28aaSamw     char	*sv2_alerts;	/* alert names (semicolon separated) */
100*da6c28aaSamw     uint16_t	sv2_security;	/* SV_USERSECURITY or SV_SHARESECURITY */
101*da6c28aaSamw     uint16_t	sv2_auditing;	/* 0 = no auditing; nonzero = auditing */
102*da6c28aaSamw 
103*da6c28aaSamw     uint16_t	sv2_numadmin;	/* max number of administrators allowed */
104*da6c28aaSamw     uint16_t	sv2_lanmask;	/* bit mask representing the srv'd nets */
105*da6c28aaSamw     uint16_t	sv2_hidden;	/* 0 = visible; nonzero = hidden */
106*da6c28aaSamw     uint16_t	sv2_announce;	/* visible server announce rate (sec) */
107*da6c28aaSamw     uint16_t	sv2_anndelta;	/* announce randomize interval (sec) */
108*da6c28aaSamw 				/* name of guest account */
109*da6c28aaSamw     char	sv2_guestacct[LM20_UNLEN + 1];
110*da6c28aaSamw     unsigned char sv2_pad1;	/* Word alignment pad byte */
111*da6c28aaSamw     char	*sv2_userpath;	/* ASCIIZ path to user directories */
112*da6c28aaSamw     uint16_t	sv2_chdevs;	/* max # shared character devices */
113*da6c28aaSamw     uint16_t	sv2_chdevq;	/* max # character device queues */
114*da6c28aaSamw     uint16_t	sv2_chdevjobs;	/* max # character device jobs */
115*da6c28aaSamw     uint16_t	sv2_connections; /* max # of connections */
116*da6c28aaSamw     uint16_t	sv2_shares;	/* max # of shares */
117*da6c28aaSamw     uint16_t	sv2_openfiles;	/* max # of open files */
118*da6c28aaSamw     uint16_t	sv2_sessopens;	/* max # of open files per session */
119*da6c28aaSamw     uint16_t	sv2_sessvcs;	/* max # of virtual circuits per client */
120*da6c28aaSamw     uint16_t	sv2_sessreqs;	/* max # of simul. reqs. from a client */
121*da6c28aaSamw     uint16_t	sv2_opensearch;	/* max # of open searches */
122*da6c28aaSamw     uint16_t	sv2_activelocks; /* max # of active file locks */
123*da6c28aaSamw     uint16_t	sv2_numreqbuf;	/* number of server (standard) buffers */
124*da6c28aaSamw     uint16_t	sv2_sizreqbuf;	/* size of svr (standard) bufs (bytes) */
125*da6c28aaSamw     uint16_t	sv2_numbigbuf;	/* number of big (64K) buffers */
126*da6c28aaSamw     uint16_t	sv2_numfiletasks; /* number of file worker processes */
127*da6c28aaSamw     uint16_t	sv2_alertsched;	/* alert counting interval (minutes) */
128*da6c28aaSamw     uint16_t	sv2_erroralert;	/* error log alerting threshold */
129*da6c28aaSamw     uint16_t	sv2_logonalert;	/* logon violation alerting threshold */
130*da6c28aaSamw     uint16_t	sv2_accessalert; /* access violation alerting threshold */
131*da6c28aaSamw     uint16_t	sv2_diskalert;	/* low disk space alert threshold (KB) */
132*da6c28aaSamw     uint16_t	sv2_netioalert;	/* net I/O error ratio alert threshold */
133*da6c28aaSamw 				/* (tenths of a percent) */
134*da6c28aaSamw     uint16_t	sv2_maxauditsz;	/* Maximum audit file size (KB) */
135*da6c28aaSamw     char	*sv2_srvheuristics; /* performance related server switches */
136*da6c28aaSamw };	/* server_info_2 */
137*da6c28aaSamw 
138*da6c28aaSamw 
139*da6c28aaSamw struct server_info_3 {
140*da6c28aaSamw     char	sv3_name[CNLEN + 1];
141*da6c28aaSamw     unsigned char sv3_version_major;
142*da6c28aaSamw     unsigned char sv3_version_minor;
143*da6c28aaSamw     uint32_t	sv3_type;
144*da6c28aaSamw     char	*sv3_comment;
145*da6c28aaSamw     uint32_t	sv3_ulist_mtime; /* User list, last modification time */
146*da6c28aaSamw     uint32_t	sv3_glist_mtime; /* Group list, last modification time */
147*da6c28aaSamw     uint32_t	sv3_alist_mtime; /* Access list, last modification time */
148*da6c28aaSamw     uint16_t	sv3_users;	/* max number of users allowed */
149*da6c28aaSamw     uint16_t	sv3_disc;	/* auto-disconnect timeout(in minutes) */
150*da6c28aaSamw     char	*sv3_alerts;	/* alert names (semicolon separated) */
151*da6c28aaSamw     uint16_t	sv3_security;	/* SV_USERSECURITY or SV_SHARESECURITY */
152*da6c28aaSamw     uint16_t	sv3_auditing;	/* 0 = no auditing; nonzero = auditing */
153*da6c28aaSamw 
154*da6c28aaSamw     uint16_t	sv3_numadmin;	/* max number of administrators allowed */
155*da6c28aaSamw     uint16_t	sv3_lanmask;	/* bit mask representing the srv'd nets */
156*da6c28aaSamw     uint16_t	sv3_hidden;	/* 0 = visible; nonzero = hidden */
157*da6c28aaSamw     uint16_t	sv3_announce;	/* visible server announce rate (sec) */
158*da6c28aaSamw     uint16_t	sv3_anndelta;	/* announce randomize interval (sec) */
159*da6c28aaSamw 				/* name of guest account */
160*da6c28aaSamw     char	sv3_guestacct[LM20_UNLEN + 1];
161*da6c28aaSamw     unsigned char sv3_pad1;	/* Word alignment pad byte */
162*da6c28aaSamw     char	*sv3_userpath;	/* ASCIIZ path to user directories */
163*da6c28aaSamw     uint16_t	sv3_chdevs;	/* max # shared character devices */
164*da6c28aaSamw     uint16_t	sv3_chdevq;	/* max # character device queues */
165*da6c28aaSamw     uint16_t	sv3_chdevjobs;	/* max # character device jobs */
166*da6c28aaSamw     uint16_t	sv3_connections; /* max # of connections */
167*da6c28aaSamw     uint16_t	sv3_shares;	/* max # of shares */
168*da6c28aaSamw     uint16_t	sv3_openfiles;	/* max # of open files */
169*da6c28aaSamw     uint16_t	sv3_sessopens;	/* max # of open files per session */
170*da6c28aaSamw     uint16_t	sv3_sessvcs;	/* max # of virtual circuits per client */
171*da6c28aaSamw     uint16_t	sv3_sessreqs;	/* max # of simul. reqs. from a client */
172*da6c28aaSamw     uint16_t	sv3_opensearch;	/* max # of open searches */
173*da6c28aaSamw     uint16_t	sv3_activelocks; /* max # of active file locks */
174*da6c28aaSamw     uint16_t	sv3_numreqbuf;	/* number of server (standard) buffers */
175*da6c28aaSamw     uint16_t	sv3_sizreqbuf;	/* size of svr (standard) bufs (bytes) */
176*da6c28aaSamw     uint16_t	sv3_numbigbuf;	/* number of big (64K) buffers */
177*da6c28aaSamw     uint16_t	sv3_numfiletasks; /* number of file worker processes */
178*da6c28aaSamw     uint16_t	sv3_alertsched;	/* alert counting interval (minutes) */
179*da6c28aaSamw     uint16_t	sv3_erroralert;	/* error log alerting threshold	*/
180*da6c28aaSamw     uint16_t	sv3_logonalert;	/* logon violation alerting threshold */
181*da6c28aaSamw     uint16_t	sv3_accessalert; /* access violation alerting threshold */
182*da6c28aaSamw     uint16_t	sv3_diskalert;	/* low disk space alert threshold (KB) */
183*da6c28aaSamw     uint16_t	sv3_netioalert;	/* net I/O error ratio alert threshold */
184*da6c28aaSamw 				/* (tenths of a percent) */
185*da6c28aaSamw     uint16_t	sv3_maxauditsz;	/* Maximum audit file size (KB)	*/
186*da6c28aaSamw     char	*sv3_srvheuristics; /* performance related server switches */
187*da6c28aaSamw     uint32_t 	sv3_auditedevents; /* Audit event control mask */
188*da6c28aaSamw     uint16_t	sv3_autoprofile; /* (0,1,2,3) = (NONE,LOAD,SAVE,or BOTH) */
189*da6c28aaSamw     char	*sv3_autopath;	/* file pathname (where to load & save) */
190*da6c28aaSamw };	/* server_info_3 */
191*da6c28aaSamw 
192*da6c28aaSamw 
193*da6c28aaSamw /*
194*da6c28aaSamw  *	Mask to be applied to svX_version_major in order to obtain
195*da6c28aaSamw  *	the major version number.
196*da6c28aaSamw  */
197*da6c28aaSamw #define	MAJOR_VERSION_MASK	0x0F
198*da6c28aaSamw 
199*da6c28aaSamw 
200*da6c28aaSamw /*
201*da6c28aaSamw  * Bit-mapped values for svX_type fields. X = 1, 2, 3 etc.
202*da6c28aaSamw  *
203*da6c28aaSamw  * SV_TYPE_WORKSTATION        0x00000001 All workstations
204*da6c28aaSamw  * SV_TYPE_SERVER             0x00000002 All servers
205*da6c28aaSamw  * SV_TYPE_SQLSERVER          0x00000004 Any server running with SQL
206*da6c28aaSamw  *                                       server
207*da6c28aaSamw  * SV_TYPE_DOMAIN_CTRL        0x00000008 Primary domain controller
208*da6c28aaSamw  * SV_TYPE_DOMAIN_BAKCTRL     0x00000010 Backup domain controller
209*da6c28aaSamw  * SV_TYPE_TIME_SOURCE        0x00000020 Server running the timesource
210*da6c28aaSamw  *                                       service
211*da6c28aaSamw  * SV_TYPE_AFP                0x00000040 Apple File Protocol servers
212*da6c28aaSamw  * SV_TYPE_NOVELL             0x00000080 Novell servers
213*da6c28aaSamw  * SV_TYPE_DOMAIN_MEMBER      0x00000100 Domain Member
214*da6c28aaSamw  * SV_TYPE_PRINTQ_SERVER      0x00000200 Server sharing print queue
215*da6c28aaSamw  * SV_TYPE_DIALIN_SERVER      0x00000400 Server running dialin service.
216*da6c28aaSamw  * SV_TYPE_XENIX_SERVER       0x00000800 Xenix server
217*da6c28aaSamw  * SV_TYPE_NT                 0x00001000 NT server
218*da6c28aaSamw  * SV_TYPE_WFW                0x00002000 Server running Windows for
219*da6c28aaSamw  *                                       Workgroups
220*da6c28aaSamw  * SV_TYPE_SERVER_NT          0x00008000 Windows NT non DC server
221*da6c28aaSamw  * SV_TYPE_POTENTIAL_BROWSER  0x00010000 Server that can run the browser
222*da6c28aaSamw  *                                       service
223*da6c28aaSamw  * SV_TYPE_BACKUP_BROWSER     0x00020000 Backup browser server
224*da6c28aaSamw  * SV_TYPE_MASTER_BROWSER     0x00040000 Master browser server
225*da6c28aaSamw  * SV_TYPE_DOMAIN_MASTER      0x00080000 Domain Master Browser server
226*da6c28aaSamw  * SV_TYPE_LOCAL_LIST_ONLY    0x40000000 Enumerate only entries marked
227*da6c28aaSamw  *                                       "local"
228*da6c28aaSamw  * SV_TYPE_DOMAIN_ENUM        0x80000000 Enumerate Domains. The pszDomain
229*da6c28aaSamw  *                                       parameter must be NULL.
230*da6c28aaSamw  */
231*da6c28aaSamw #define	SV_TYPE_WORKSTATION		0x00000001
232*da6c28aaSamw #define	SV_TYPE_SERVER			0x00000002
233*da6c28aaSamw #define	SV_TYPE_SQLSERVER		0x00000004
234*da6c28aaSamw #define	SV_TYPE_DOMAIN_CTRL		0x00000008
235*da6c28aaSamw #define	SV_TYPE_DOMAIN_BAKCTRL		0x00000010
236*da6c28aaSamw #define	SV_TYPE_TIME_SOURCE		0x00000020
237*da6c28aaSamw #define	SV_TYPE_AFP			0x00000040
238*da6c28aaSamw /* Also set by Win95 NWSERVER */
239*da6c28aaSamw #define	SV_TYPE_NOVELL			0x00000080
240*da6c28aaSamw #define	SV_TYPE_DOMAIN_MEMBER		0x00000100
241*da6c28aaSamw #define	SV_TYPE_PRINTQ_SERVER		0x00000200
242*da6c28aaSamw #define	SV_TYPE_DIALIN_SERVER		0x00000400
243*da6c28aaSamw #define	SV_TYPE_XENIX_SERVER		0x00000800
244*da6c28aaSamw #define	SV_TYPE_NT			0x00001000
245*da6c28aaSamw #define	SV_TYPE_WFW			0x00002000
246*da6c28aaSamw #define	SV_TYPE_SERVER_NT		0x00008000
247*da6c28aaSamw #define	SV_TYPE_POTENTIAL_BROWSER	0x00010000
248*da6c28aaSamw #define	SV_TYPE_BACKUP_BROWSER		0x00020000
249*da6c28aaSamw #define	SV_TYPE_MASTER_BROWSER		0x00040000
250*da6c28aaSamw #define	SV_TYPE_DOMAIN_MASTER		0x00080000
251*da6c28aaSamw #define	SV_TYPE_LOCAL_LIST_ONLY		0x40000000
252*da6c28aaSamw #define	SV_TYPE_DOMAIN_ENUM		0x80000000
253*da6c28aaSamw /* Handy for NetServerEnum2 */
254*da6c28aaSamw #define	SV_TYPE_ALL			0xFFFFFFFF
255*da6c28aaSamw 
256*da6c28aaSamw 
257*da6c28aaSamw #ifdef __cplusplus
258*da6c28aaSamw }
259*da6c28aaSamw #endif
260*da6c28aaSamw 
261*da6c28aaSamw #endif /* _SMBSRV_SVRAPI_H */
262