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