xref: /titanic_51/usr/src/uts/common/smbsrv/smbinfo.h (revision a90cf9f29973990687fa61de9f1f6ea22e924e40)
1da6c28aaSamw /*
2da6c28aaSamw  * CDDL HEADER START
3da6c28aaSamw  *
4da6c28aaSamw  * The contents of this file are subject to the terms of the
5da6c28aaSamw  * Common Development and Distribution License (the "License").
6da6c28aaSamw  * You may not use this file except in compliance with the License.
7da6c28aaSamw  *
8da6c28aaSamw  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9da6c28aaSamw  * or http://www.opensolaris.org/os/licensing.
10da6c28aaSamw  * See the License for the specific language governing permissions
11da6c28aaSamw  * and limitations under the License.
12da6c28aaSamw  *
13da6c28aaSamw  * When distributing Covered Code, include this CDDL HEADER in each
14da6c28aaSamw  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15da6c28aaSamw  * If applicable, add the following below this CDDL HEADER, with the
16da6c28aaSamw  * fields enclosed by brackets "[]" replaced with your own identifying
17da6c28aaSamw  * information: Portions Copyright [yyyy] [name of copyright owner]
18da6c28aaSamw  *
19da6c28aaSamw  * CDDL HEADER END
20da6c28aaSamw  */
21da6c28aaSamw /*
22148c5f43SAlan Wright  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
23*a90cf9f2SGordon Ross  * Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
24da6c28aaSamw  */
25da6c28aaSamw 
26da6c28aaSamw #ifndef	_SMBSRV_SMBINFO_H
27da6c28aaSamw #define	_SMBSRV_SMBINFO_H
28da6c28aaSamw 
29da6c28aaSamw #include <sys/types.h>
3012b65585SGordon Ross #include <sys/uuid.h>
31b89a8333Snatalie li - Sun Microsystems - Irvine United States #include <smbsrv/netbios.h>
327f667e74Sjose borrego #include <netinet/in.h>
337f667e74Sjose borrego #include <smbsrv/smb_inet.h>
34da6c28aaSamw 
35da6c28aaSamw #ifdef __cplusplus
36da6c28aaSamw extern "C" {
37da6c28aaSamw #endif
38da6c28aaSamw 
39da6c28aaSamw /*
40da6c28aaSamw  * Native OS types used in SmbSessionSetupX.
41da6c28aaSamw  */
42da6c28aaSamw #ifndef NATIVE_OS_DEFINED
43da6c28aaSamw #define	NATIVE_OS_DEFINED
44da6c28aaSamw 
45da6c28aaSamw #define	NATIVE_OS_UNKNOWN	0x00000000
46a0aa776eSAlan Wright #define	NATIVE_OS_WINNT		0x00000001
47da6c28aaSamw #define	NATIVE_OS_WIN95		0x00000002
48a0aa776eSAlan Wright #define	NATIVE_OS_MACOS		0x00000003
49a0aa776eSAlan Wright #define	NATIVE_OS_WIN2000	0x00000004
50da6c28aaSamw 
51da6c28aaSamw #endif /* NATIVE_OS_DEFINED */
52da6c28aaSamw 
53da6c28aaSamw 
54da6c28aaSamw /*
55da6c28aaSamw  * Native lanman types in SmbSessionSetupX. Note that these values
56da6c28aaSamw  * are not directly related to the negotiated protocol dialect.
57da6c28aaSamw  */
58da6c28aaSamw #ifndef NATIVE_LANMAN_DEFINED
59da6c28aaSamw #define	NATIVE_LANMAN_DEFINED
60da6c28aaSamw 
61da6c28aaSamw #define	NATIVE_LM_NONE		0x00000000
62da6c28aaSamw #define	NATIVE_LM_NT		0x00000001
63da6c28aaSamw #define	NATIVE_LM_WIN2000	0x00000002
64da6c28aaSamw 
65da6c28aaSamw #endif /* NATIVE_LANMAN_DEFINED */
66da6c28aaSamw 
67da6c28aaSamw 
68da6c28aaSamw /* PDC types to be used in user authentication process */
69da6c28aaSamw 
70da6c28aaSamw #define	PDC_UNKNOWN		0
71da6c28aaSamw #define	PDC_WINNT		1
72da6c28aaSamw #define	PDC_WIN2000		2
73da6c28aaSamw #define	PDC_WINXP		3
74da6c28aaSamw #define	PDC_SAMBA		4
75da6c28aaSamw 
76da6c28aaSamw /*
77da6c28aaSamw  * Please replace the use of MAX_NETWORKS with SMB_PI_MAX_NETWORKS if
78da6c28aaSamw  * you find it used in conjunction with smbparm_info and maybe one day
79da6c28aaSamw  * there will be just a single definition (here) throughout the code.
80da6c28aaSamw  */
81da6c28aaSamw #ifndef MAX_NETWORKS
82da6c28aaSamw #define	MAX_NETWORKS		36
83da6c28aaSamw #endif /* MAX_NETWORKS */
84da6c28aaSamw 
85da6c28aaSamw #define	SMB_PI_MAX_NETWORKS	36
86da6c28aaSamw #define	SMB_PI_MAX_WINS		2
87da6c28aaSamw 
88da6c28aaSamw #define	SMB_SECMODE_WORKGRP	1
89da6c28aaSamw #define	SMB_SECMODE_DOMAIN	2
90da6c28aaSamw 
91da6c28aaSamw #define	SMB_PI_MAX_HOST		48
92b89a8333Snatalie li - Sun Microsystems - Irvine United States #define	SMB_PI_MAX_DOMAIN	256
93da6c28aaSamw #define	SMB_PI_MAX_SCOPE	16
94da6c28aaSamw #define	SMB_PI_MAX_COMMENT	58
95da6c28aaSamw #define	SMB_PI_MAX_NATIVE_OS	32
96da6c28aaSamw #define	SMB_PI_MAX_LANMAN	32
9712b65585SGordon Ross #define	SMB_PI_MAX_NEGTOK	256	/* GUID and SMB negotiate token */
98da6c28aaSamw 
99da6c28aaSamw #define	SMB_PI_KEEP_ALIVE_MIN		(90 * 60)
100eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States /*
101eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States  * Some older clients (Windows 98) only handle the low byte
102eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States  * of the max workers value. If the low byte is less than
103eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States  * SMB_PI_MAX_WORKERS_MIN we set it to SMB_PI_MAX_WORKERS_MIN.
104eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States  * SMB_PI_MAX_WORKERS_MIN must therefore be < 256
105eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States  */
106eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_PI_MAX_WORKERS_MIN		64
107*a90cf9f2SGordon Ross #define	SMB_PI_MAX_WORKERS_DEF		1024
108*a90cf9f2SGordon Ross #define	SMB_PI_MAX_WORKERS_MAX		16384
109*a90cf9f2SGordon Ross 
110*a90cf9f2SGordon Ross /*
111*a90cf9f2SGordon Ross  * Min/max initial credit grant and credit limit we allow to be
112*a90cf9f2SGordon Ross  * configured via SMB_CI_INITIAL_CREDITS, SMB_CI_MAXIMUM_CREDITS
113*a90cf9f2SGordon Ross  */
114*a90cf9f2SGordon Ross #define	SMB_PI_INITIAL_CREDITS_MIN	16
115*a90cf9f2SGordon Ross #define	SMB_PI_INITIAL_CREDITS_DEF	20
116*a90cf9f2SGordon Ross #define	SMB_PI_INITIAL_CREDITS_MAX	256
117*a90cf9f2SGordon Ross 
118*a90cf9f2SGordon Ross #define	SMB_PI_MAXIMUM_CREDITS_MIN	64
119*a90cf9f2SGordon Ross #define	SMB_PI_MAXIMUM_CREDITS_DEF	1000
120*a90cf9f2SGordon Ross #define	SMB_PI_MAXIMUM_CREDITS_MAX	1024
1219fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
122fd9ee8b5Sjoyce mcintosh /*
123fd9ee8b5Sjoyce mcintosh  * sv_size is used by the RPC services and should be set to
124fd9ee8b5Sjoyce mcintosh  * sizeof (smb_version_t).
125fd9ee8b5Sjoyce mcintosh  */
1269fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_version {
127fd9ee8b5Sjoyce mcintosh 	uint32_t	sv_size;
128fd9ee8b5Sjoyce mcintosh 	uint32_t	sv_major;
129fd9ee8b5Sjoyce mcintosh 	uint32_t	sv_minor;
130fd9ee8b5Sjoyce mcintosh 	uint32_t	sv_build_number;
131fd9ee8b5Sjoyce mcintosh 	uint32_t	sv_platform_id;
1329fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_version_t;
133da6c28aaSamw 
13412b65585SGordon Ross /* See also: smb_ioc_cfg_t */
135da6c28aaSamw typedef struct smb_kmod_cfg {
136da6c28aaSamw 	uint32_t skc_maxworkers;
137da6c28aaSamw 	uint32_t skc_maxconnections;
138da6c28aaSamw 	uint32_t skc_keepalive;
139dc20a302Sas200622 	int32_t skc_restrict_anon;
140dc20a302Sas200622 	int32_t skc_signing_enable;
141dc20a302Sas200622 	int32_t skc_signing_required;
142dc20a302Sas200622 	int32_t skc_oplock_enable;
143dc20a302Sas200622 	int32_t skc_sync_enable;
144dc20a302Sas200622 	int32_t skc_secmode;
14583d2dfe6SGordon Ross 	int32_t skc_netbios_enable;
1467f667e74Sjose borrego 	int32_t skc_ipv6_enable;
147cb174861Sjoyce mcintosh 	int32_t skc_print_enable;
1485f1ef25cSAram Hăvărneanu 	int32_t skc_traverse_mounts;
149*a90cf9f2SGordon Ross 	uint32_t skc_max_protocol;	/* SMB_VERS_... */
150148c5f43SAlan Wright 	uint32_t skc_execflags;
15112b65585SGordon Ross 	uint32_t skc_negtok_len;
1529fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	smb_version_t skc_version;
153*a90cf9f2SGordon Ross 	uint16_t skc_initial_credits;
154*a90cf9f2SGordon Ross 	uint16_t skc_maximum_credits;
15512b65585SGordon Ross 	uuid_t skc_machine_uuid;
15612b65585SGordon Ross 	uchar_t skc_negtok[SMB_PI_MAX_NEGTOK];
15712b65585SGordon Ross 	char skc_native_os[SMB_PI_MAX_NATIVE_OS];
15812b65585SGordon Ross 	char skc_native_lm[SMB_PI_MAX_LANMAN];
159b89a8333Snatalie li - Sun Microsystems - Irvine United States 	char skc_nbdomain[NETBIOS_NAME_SZ];
160b89a8333Snatalie li - Sun Microsystems - Irvine United States 	char skc_fqdn[SMB_PI_MAX_DOMAIN];
161da6c28aaSamw 	char skc_hostname[SMB_PI_MAX_HOST];
162da6c28aaSamw 	char skc_system_comment[SMB_PI_MAX_COMMENT];
163da6c28aaSamw } smb_kmod_cfg_t;
164da6c28aaSamw 
165148c5f43SAlan Wright #define	SMB_EXEC_MAP	0x01
166148c5f43SAlan Wright #define	SMB_EXEC_UNMAP	0x02
167148c5f43SAlan Wright #define	SMB_EXEC_TERM	0x04
168148c5f43SAlan Wright 
169148c5f43SAlan Wright #define	SMB_EXEC_DISP_CONTINUE	"continue"
170148c5f43SAlan Wright #define	SMB_EXEC_DISP_TERMINATE	"terminate"
171148c5f43SAlan Wright 
1729fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
1739fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Major version numbers
1749fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
175fd9ee8b5Sjoyce mcintosh #define	SMB_MAJOR_NT		4	/* Windows 95/98/Me, Windows NT4.0 */
1769fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_MAJOR_2000		5
1779fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_MAJOR_XP		5
1789fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_MAJOR_2003		5
1799fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_MAJOR_VISTA		6
1809fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_MAJOR_2008		6
1819fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_MAJOR_2008R2	6
182fd9ee8b5Sjoyce mcintosh #define	SMB_MAJOR_7		6
1839fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
1849fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
1859fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Minor version numbers
1869fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
1879fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_MINOR_NT		0
1889fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_MINOR_2000		0
1899fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_MINOR_XP		1
1909fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_MINOR_2003		2
1919fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_MINOR_VISTA		0
1929fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_MINOR_2008		0
1939fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_MINOR_2008R2	1
194fd9ee8b5Sjoyce mcintosh #define	SMB_MINOR_7		1
1959fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
1969fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
1979fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Max version length in string format
1989fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
1999fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_VERSTR_LEN		8
200da6c28aaSamw 
201fc724630SAlan Wright int smbnative_os_value(const char *);
202fc724630SAlan Wright int smbnative_lm_value(const char *);
203fc724630SAlan Wright int smbnative_pdc_value(const char *);
2049fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States const char *smbnative_os_str(smb_version_t *);
2059fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States const char *smbnative_lm_str(smb_version_t *);
206da6c28aaSamw 
207da6c28aaSamw /*
208da6c28aaSamw  * Support for passthrough authentication.
209da6c28aaSamw  */
210da6c28aaSamw #define	AUTH_USER_GRANT			0x00000000
211da6c28aaSamw #define	AUTH_GUEST_GRANT		0x00000001
212da6c28aaSamw #define	AUTH_IPC_ONLY_GRANT		0x00000002
213da6c28aaSamw 
214*a90cf9f2SGordon Ross /*
215*a90cf9f2SGordon Ross  * Defined SMB1, SMB2(+) protocol versions, as returned by
216*a90cf9f2SGordon Ross  * smb_config_get_max_protocol()
217*a90cf9f2SGordon Ross  */
218*a90cf9f2SGordon Ross #define	SMB_VERS_1		1	/* arbitrary value < 0x200 */
219*a90cf9f2SGordon Ross #define	SMB_VERS_2_BASE		0x200	/* for (SMB2 or higher?) tests */
220*a90cf9f2SGordon Ross #define	SMB_VERS_2_002		0x202	/* "2.002" */
221*a90cf9f2SGordon Ross #define	SMB_VERS_2_1		0x210	/* "2.1" */
222*a90cf9f2SGordon Ross #define	SMB_VERS_3_0		0x300	/* "3.0" */
223*a90cf9f2SGordon Ross 
224da6c28aaSamw #ifdef __cplusplus
225da6c28aaSamw }
226da6c28aaSamw #endif
227da6c28aaSamw 
228da6c28aaSamw #endif /* _SMBSRV_SMBINFO_H */
229