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.
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.
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]
22 * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
26 #ifndef _SMBSRV_SVRAPI_H
27 #define _SMBSRV_SVRAPI_H
29 #pragma ident "%Z%%M% %I% %E% SMI"
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.
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:
42 * char username[LM20_UNLEN+1];
44 * An exception to this is PATHLEN, which does include space for the
47 * User names, computer names and share names should be upper-cased
48 * by the caller and drawn from the ANSI character set.
57 * Server Class (NetServerGetInfo, NetServerEnum2)
60 struct server_info_0
{
61 char sv0_name
[CNLEN
+ 1]; /* Server name */
62 }; /* server_info_0 */
65 struct 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 */
74 /* NOTE struct prefix must equal server_info_1 format */
76 struct 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 */
90 struct server_info_2
{
91 char sv2_name
[CNLEN
+ 1];
92 unsigned char sv2_version_major
;
93 unsigned char sv2_version_minor
;
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 */
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 */
141 struct server_info_3
{
142 char sv3_name
[CNLEN
+ 1];
143 unsigned char sv3_version_major
;
144 unsigned char sv3_version_minor
;
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 */
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 */
196 * Mask to be applied to svX_version_major in order to obtain
197 * the major version number.
199 #define MAJOR_VERSION_MASK 0x0F
203 * Bit-mapped values for svX_type fields. X = 1, 2, 3 etc.
205 * SV_TYPE_WORKSTATION 0x00000001 All workstations
206 * SV_TYPE_SERVER 0x00000002 All servers
207 * SV_TYPE_SQLSERVER 0x00000004 Any server running with SQL
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
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
222 * SV_TYPE_SERVER_NT 0x00008000 Windows NT non DC server
223 * SV_TYPE_POTENTIAL_BROWSER 0x00010000 Server that can run the browser
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
230 * SV_TYPE_DOMAIN_ENUM 0x80000000 Enumerate Domains. The pszDomain
231 * parameter must be NULL.
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
263 #endif /* _SMBSRV_SVRAPI_H */