summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/smbsrv/svrapi.h
blob: 4199feb8d7d8f8db104c952bc609b714484dc197 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (the "License").
 * You may not use this file except in compliance with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */
/*
 * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

#ifndef _SMBSRV_SVRAPI_H
#define	_SMBSRV_SVRAPI_H

#pragma ident	"%Z%%M%	%I%	%E% SMI"

/*
 * This file provides definitions for the SMB Net interface. On Windows
 * this would be NetAccess, NetConnection, NetFile, NetServer,
 * NetSession, NetShare and NetSecurity but here things are a limited.
 * This stuff should be described in Windows 9x LanMan documentation.
 *
 * Notes:
 * Lengths of ASCIIZ strings are given as the maximum strlen() value.
 * This does not include space for the terminating 0-byte. When
 * allocating space for such an item, use the form:
 *
 *              char username[LM20_UNLEN+1];
 *
 * An exception to this is PATHLEN, which does include space for the
 * terminating 0-byte.
 *
 * User names, computer names and share names should be upper-cased
 * by the caller and drawn from the ANSI character set.
 */

#ifdef __cplusplus
extern "C" {
#endif


/*
 * Server Class (NetServerGetInfo, NetServerEnum2)
 */

struct server_info_0 {
    char sv0_name[CNLEN + 1]; 	/* Server name */
};	 /* server_info_0 */


struct server_info_1 {
    char		sv1_name[CNLEN + 1];	/* Server name */
    unsigned char	sv1_version_major;	/* Major version # of net */
    unsigned char	sv1_version_minor;	/* Minor version # of net */
    uint32_t		sv1_type;		/* Server type */
    char		*sv1_comment; 		/* Exported server comment */
};	 /* server_info_1 */


/* NOTE struct prefix must equal server_info_1 format */

struct server_info_50 {
    char		sv50_name[CNLEN + 1];
    unsigned char	sv50_version_major;	/* Major version # of net */
    unsigned char	sv50_version_minor;	/* Minor version # of net */
    uint32_t		sv50_type;		/* Server type */
    char		*sv50_comment;		/* Exported server comment */
    unsigned short	sv50_security;		/* SV_SECURITY_* (see below) */
    unsigned short	sv50_auditing;	/* 0 = no auditing; !0 = auditing */
    char		*sv50_container;	/* Security server/domain */
    char		*sv50_ab_server;	/* Address book server */
    char		*sv50_ab_dll;		/* Address book provider DLL */
};	/* server_info_50 */


struct server_info_2 {
    char	sv2_name[CNLEN + 1];
    unsigned char sv2_version_major;
    unsigned char sv2_version_minor;
    uint32_t	sv2_type;
    char	*sv2_comment;
    uint32_t	sv2_ulist_mtime; /* User list, last modification time */
    uint32_t	sv2_glist_mtime; /* Group list, last modification time */
    uint32_t	sv2_alist_mtime; /* Access list, last modification time */
    uint16_t	sv2_users;	/* max number of users allowed */
    uint16_t	sv2_disc;	/* auto-disconnect timeout(in minutes) */
    char	*sv2_alerts;	/* alert names (semicolon separated) */
    uint16_t	sv2_security;	/* SV_USERSECURITY or SV_SHARESECURITY */
    uint16_t	sv2_auditing;	/* 0 = no auditing; nonzero = auditing */

    uint16_t	sv2_numadmin;	/* max number of administrators allowed */
    uint16_t	sv2_lanmask;	/* bit mask representing the srv'd nets */
    uint16_t	sv2_hidden;	/* 0 = visible; nonzero = hidden */
    uint16_t	sv2_announce;	/* visible server announce rate (sec) */
    uint16_t	sv2_anndelta;	/* announce randomize interval (sec) */
				/* name of guest account */
    char	sv2_guestacct[LM20_UNLEN + 1];
    unsigned char sv2_pad1;	/* Word alignment pad byte */
    char	*sv2_userpath;	/* ASCIIZ path to user directories */
    uint16_t	sv2_chdevs;	/* max # shared character devices */
    uint16_t	sv2_chdevq;	/* max # character device queues */
    uint16_t	sv2_chdevjobs;	/* max # character device jobs */
    uint16_t	sv2_connections; /* max # of connections */
    uint16_t	sv2_shares;	/* max # of shares */
    uint16_t	sv2_openfiles;	/* max # of open files */
    uint16_t	sv2_sessopens;	/* max # of open files per session */
    uint16_t	sv2_sessvcs;	/* max # of virtual circuits per client */
    uint16_t	sv2_sessreqs;	/* max # of simul. reqs. from a client */
    uint16_t	sv2_opensearch;	/* max # of open searches */
    uint16_t	sv2_activelocks; /* max # of active file locks */
    uint16_t	sv2_numreqbuf;	/* number of server (standard) buffers */
    uint16_t	sv2_sizreqbuf;	/* size of svr (standard) bufs (bytes) */
    uint16_t	sv2_numbigbuf;	/* number of big (64K) buffers */
    uint16_t	sv2_numfiletasks; /* number of file worker processes */
    uint16_t	sv2_alertsched;	/* alert counting interval (minutes) */
    uint16_t	sv2_erroralert;	/* error log alerting threshold */
    uint16_t	sv2_logonalert;	/* logon violation alerting threshold */
    uint16_t	sv2_accessalert; /* access violation alerting threshold */
    uint16_t	sv2_diskalert;	/* low disk space alert threshold (KB) */
    uint16_t	sv2_netioalert;	/* net I/O error ratio alert threshold */
				/* (tenths of a percent) */
    uint16_t	sv2_maxauditsz;	/* Maximum audit file size (KB) */
    char	*sv2_srvheuristics; /* performance related server switches */
};	/* server_info_2 */


struct server_info_3 {
    char	sv3_name[CNLEN + 1];
    unsigned char sv3_version_major;
    unsigned char sv3_version_minor;
    uint32_t	sv3_type;
    char	*sv3_comment;
    uint32_t	sv3_ulist_mtime; /* User list, last modification time */
    uint32_t	sv3_glist_mtime; /* Group list, last modification time */
    uint32_t	sv3_alist_mtime; /* Access list, last modification time */
    uint16_t	sv3_users;	/* max number of users allowed */
    uint16_t	sv3_disc;	/* auto-disconnect timeout(in minutes) */
    char	*sv3_alerts;	/* alert names (semicolon separated) */
    uint16_t	sv3_security;	/* SV_USERSECURITY or SV_SHARESECURITY */
    uint16_t	sv3_auditing;	/* 0 = no auditing; nonzero = auditing */

    uint16_t	sv3_numadmin;	/* max number of administrators allowed */
    uint16_t	sv3_lanmask;	/* bit mask representing the srv'd nets */
    uint16_t	sv3_hidden;	/* 0 = visible; nonzero = hidden */
    uint16_t	sv3_announce;	/* visible server announce rate (sec) */
    uint16_t	sv3_anndelta;	/* announce randomize interval (sec) */
				/* name of guest account */
    char	sv3_guestacct[LM20_UNLEN + 1];
    unsigned char sv3_pad1;	/* Word alignment pad byte */
    char	*sv3_userpath;	/* ASCIIZ path to user directories */
    uint16_t	sv3_chdevs;	/* max # shared character devices */
    uint16_t	sv3_chdevq;	/* max # character device queues */
    uint16_t	sv3_chdevjobs;	/* max # character device jobs */
    uint16_t	sv3_connections; /* max # of connections */
    uint16_t	sv3_shares;	/* max # of shares */
    uint16_t	sv3_openfiles;	/* max # of open files */
    uint16_t	sv3_sessopens;	/* max # of open files per session */
    uint16_t	sv3_sessvcs;	/* max # of virtual circuits per client */
    uint16_t	sv3_sessreqs;	/* max # of simul. reqs. from a client */
    uint16_t	sv3_opensearch;	/* max # of open searches */
    uint16_t	sv3_activelocks; /* max # of active file locks */
    uint16_t	sv3_numreqbuf;	/* number of server (standard) buffers */
    uint16_t	sv3_sizreqbuf;	/* size of svr (standard) bufs (bytes) */
    uint16_t	sv3_numbigbuf;	/* number of big (64K) buffers */
    uint16_t	sv3_numfiletasks; /* number of file worker processes */
    uint16_t	sv3_alertsched;	/* alert counting interval (minutes) */
    uint16_t	sv3_erroralert;	/* error log alerting threshold	*/
    uint16_t	sv3_logonalert;	/* logon violation alerting threshold */
    uint16_t	sv3_accessalert; /* access violation alerting threshold */
    uint16_t	sv3_diskalert;	/* low disk space alert threshold (KB) */
    uint16_t	sv3_netioalert;	/* net I/O error ratio alert threshold */
				/* (tenths of a percent) */
    uint16_t	sv3_maxauditsz;	/* Maximum audit file size (KB)	*/
    char	*sv3_srvheuristics; /* performance related server switches */
    uint32_t 	sv3_auditedevents; /* Audit event control mask */
    uint16_t	sv3_autoprofile; /* (0,1,2,3) = (NONE,LOAD,SAVE,or BOTH) */
    char	*sv3_autopath;	/* file pathname (where to load & save) */
};	/* server_info_3 */


/*
 *	Mask to be applied to svX_version_major in order to obtain
 *	the major version number.
 */
#define	MAJOR_VERSION_MASK	0x0F


/*
 * Bit-mapped values for svX_type fields. X = 1, 2, 3 etc.
 *
 * SV_TYPE_WORKSTATION        0x00000001 All workstations
 * SV_TYPE_SERVER             0x00000002 All servers
 * SV_TYPE_SQLSERVER          0x00000004 Any server running with SQL
 *                                       server
 * SV_TYPE_DOMAIN_CTRL        0x00000008 Primary domain controller
 * SV_TYPE_DOMAIN_BAKCTRL     0x00000010 Backup domain controller
 * SV_TYPE_TIME_SOURCE        0x00000020 Server running the timesource
 *                                       service
 * SV_TYPE_AFP                0x00000040 Apple File Protocol servers
 * SV_TYPE_NOVELL             0x00000080 Novell servers
 * SV_TYPE_DOMAIN_MEMBER      0x00000100 Domain Member
 * SV_TYPE_PRINTQ_SERVER      0x00000200 Server sharing print queue
 * SV_TYPE_DIALIN_SERVER      0x00000400 Server running dialin service.
 * SV_TYPE_XENIX_SERVER       0x00000800 Xenix server
 * SV_TYPE_NT                 0x00001000 NT server
 * SV_TYPE_WFW                0x00002000 Server running Windows for
 *                                       Workgroups
 * SV_TYPE_SERVER_NT          0x00008000 Windows NT non DC server
 * SV_TYPE_POTENTIAL_BROWSER  0x00010000 Server that can run the browser
 *                                       service
 * SV_TYPE_BACKUP_BROWSER     0x00020000 Backup browser server
 * SV_TYPE_MASTER_BROWSER     0x00040000 Master browser server
 * SV_TYPE_DOMAIN_MASTER      0x00080000 Domain Master Browser server
 * SV_TYPE_LOCAL_LIST_ONLY    0x40000000 Enumerate only entries marked
 *                                       "local"
 * SV_TYPE_DOMAIN_ENUM        0x80000000 Enumerate Domains. The pszDomain
 *                                       parameter must be NULL.
 */
#define	SV_TYPE_WORKSTATION		0x00000001
#define	SV_TYPE_SERVER			0x00000002
#define	SV_TYPE_SQLSERVER		0x00000004
#define	SV_TYPE_DOMAIN_CTRL		0x00000008
#define	SV_TYPE_DOMAIN_BAKCTRL		0x00000010
#define	SV_TYPE_TIME_SOURCE		0x00000020
#define	SV_TYPE_AFP			0x00000040
/* Also set by Win95 NWSERVER */
#define	SV_TYPE_NOVELL			0x00000080
#define	SV_TYPE_DOMAIN_MEMBER		0x00000100
#define	SV_TYPE_PRINTQ_SERVER		0x00000200
#define	SV_TYPE_DIALIN_SERVER		0x00000400
#define	SV_TYPE_XENIX_SERVER		0x00000800
#define	SV_TYPE_NT			0x00001000
#define	SV_TYPE_WFW			0x00002000
#define	SV_TYPE_SERVER_NT		0x00008000
#define	SV_TYPE_POTENTIAL_BROWSER	0x00010000
#define	SV_TYPE_BACKUP_BROWSER		0x00020000
#define	SV_TYPE_MASTER_BROWSER		0x00040000
#define	SV_TYPE_DOMAIN_MASTER		0x00080000
#define	SV_TYPE_LOCAL_LIST_ONLY		0x40000000
#define	SV_TYPE_DOMAIN_ENUM		0x80000000
/* Handy for NetServerEnum2 */
#define	SV_TYPE_ALL			0xFFFFFFFF


#ifdef __cplusplus
}
#endif

#endif /* _SMBSRV_SVRAPI_H */