16664 Update AMD microcode to 20240710
[illumos-gate.git] / usr / src / uts / common / smbsrv / smbinfo.h
blob052dc956ededebcaec18120ba983cb8871e4a1fb
1 /*
2 * CDDL HEADER START
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]
19 * CDDL HEADER END
22 * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
23 * Copyright 2020 Tintri by DDN, Inc. All rights reserved.
24 * Copyright 2022 RackTop Systems, Inc.
27 #ifndef _SMBSRV_SMBINFO_H
28 #define _SMBSRV_SMBINFO_H
30 #include <sys/types.h>
31 #include <sys/uuid.h>
32 #include <smbsrv/netbios.h>
33 #include <netinet/in.h>
34 #include <smbsrv/smb_inet.h>
35 #include <smbsrv/smb2.h>
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
42 * Native OS types used in SmbSessionSetupX.
44 #ifndef NATIVE_OS_DEFINED
45 #define NATIVE_OS_DEFINED
47 #define NATIVE_OS_UNKNOWN 0x00000000
48 #define NATIVE_OS_WINNT 0x00000001
49 #define NATIVE_OS_WIN95 0x00000002
50 #define NATIVE_OS_MACOS 0x00000003
51 #define NATIVE_OS_WIN2000 0x00000004
53 #endif /* NATIVE_OS_DEFINED */
57 * Native lanman types in SmbSessionSetupX. Note that these values
58 * are not directly related to the negotiated protocol dialect.
60 #ifndef NATIVE_LANMAN_DEFINED
61 #define NATIVE_LANMAN_DEFINED
63 #define NATIVE_LM_NONE 0x00000000
64 #define NATIVE_LM_NT 0x00000001
65 #define NATIVE_LM_WIN2000 0x00000002
67 #endif /* NATIVE_LANMAN_DEFINED */
70 /* PDC types to be used in user authentication process */
72 #define PDC_UNKNOWN 0
73 #define PDC_WINNT 1
74 #define PDC_WIN2000 2
75 #define PDC_WINXP 3
76 #define PDC_SAMBA 4
79 * Please replace the use of MAX_NETWORKS with SMB_PI_MAX_NETWORKS if
80 * you find it used in conjunction with smbparm_info and maybe one day
81 * there will be just a single definition (here) throughout the code.
83 #ifndef MAX_NETWORKS
84 #define MAX_NETWORKS 36
85 #endif /* MAX_NETWORKS */
87 #define SMB_PI_MAX_NETWORKS 36
88 #define SMB_PI_MAX_WINS 2
90 #define SMB_SECMODE_WORKGRP 1
91 #define SMB_SECMODE_DOMAIN 2
93 #define SMB_PI_MAX_HOST 48
94 #define SMB_PI_MAX_DOMAIN 256
95 #define SMB_PI_MAX_SCOPE 16
96 #define SMB_PI_MAX_COMMENT 58
97 #define SMB_PI_MAX_NATIVE_OS 32
98 #define SMB_PI_MAX_LANMAN 32
99 #define SMB_PI_MAX_NEGTOK 256 /* GUID and SMB negotiate token */
101 #define SMB_PI_KEEP_ALIVE_MIN (90 * 60)
103 * Some older clients (Windows 98) only handle the low byte
104 * of the max workers value. If the low byte is less than
105 * SMB_PI_MAX_WORKERS_MIN we set it to SMB_PI_MAX_WORKERS_MIN.
106 * SMB_PI_MAX_WORKERS_MIN must therefore be < 256
108 #define SMB_PI_MAX_WORKERS_MIN 64
109 #define SMB_PI_MAX_WORKERS_DEF 1024
110 #define SMB_PI_MAX_WORKERS_MAX 16384
113 * Min/max initial credit grant and credit limit we allow to be
114 * configured via SMB_CI_INITIAL_CREDITS, SMB_CI_MAXIMUM_CREDITS
116 #define SMB_PI_INITIAL_CREDITS_MIN 16
117 #define SMB_PI_INITIAL_CREDITS_DEF 20
118 #define SMB_PI_INITIAL_CREDITS_MAX 256
120 #define SMB_PI_MAXIMUM_CREDITS_MIN 64
121 #define SMB_PI_MAXIMUM_CREDITS_DEF 1000
122 #define SMB_PI_MAXIMUM_CREDITS_MAX 1024
124 #define SMB_PI_NETLOGON_FLAGS_DEFAULT 0x00000000
127 * sv_size is used by the RPC services and should be set to
128 * sizeof (smb_version_t).
130 typedef struct smb_version {
131 uint32_t sv_size;
132 uint32_t sv_major;
133 uint32_t sv_minor;
134 uint32_t sv_build_number;
135 uint32_t sv_platform_id;
136 } smb_version_t;
138 typedef enum smb_cfg_val {
139 SMB_CONFIG_DISABLED = 0,
140 SMB_CONFIG_ENABLED = 1,
141 SMB_CONFIG_REQUIRED = 2
142 } smb_cfg_val_t;
144 void smb_cfg_set_require(const char *, smb_cfg_val_t *);
146 /* See also: smb_ioc_cfg_t */
147 typedef struct smb_kmod_cfg {
148 uint32_t skc_maxworkers;
149 uint32_t skc_maxconnections;
150 uint32_t skc_keepalive;
151 int32_t skc_restrict_anon;
152 int32_t skc_signing_enable;
153 int32_t skc_signing_required;
154 int32_t skc_oplock_enable;
155 int32_t skc_sync_enable;
156 int32_t skc_secmode;
157 int32_t skc_netbios_enable;
158 int32_t skc_ipv6_enable;
159 int32_t skc_print_enable;
160 int32_t skc_traverse_mounts;
161 int32_t skc_short_names;
162 uint32_t skc_max_protocol; /* SMB_VERS_... */
163 uint32_t skc_min_protocol; /* SMB_VERS_... */
164 smb_cfg_val_t skc_encrypt; /* EncryptData and RejectUnencryptedAccess */
165 uint32_t skc_encrypt_ciphers; /* 3.1.1 encryption ciphers */
166 uint32_t skc_execflags;
167 uint32_t skc_negtok_len;
168 uint32_t skc_max_opens; /* per client */
169 smb_version_t skc_version;
170 uint16_t skc_initial_credits;
171 uint16_t skc_maximum_credits;
172 uuid_t skc_machine_uuid;
173 uchar_t skc_negtok[SMB_PI_MAX_NEGTOK];
174 char skc_native_os[SMB_PI_MAX_NATIVE_OS];
175 char skc_native_lm[SMB_PI_MAX_LANMAN];
176 char skc_nbdomain[NETBIOS_NAME_SZ];
177 char skc_fqdn[SMB_PI_MAX_DOMAIN];
178 char skc_hostname[SMB_PI_MAX_HOST];
179 char skc_system_comment[SMB_PI_MAX_COMMENT];
180 } smb_kmod_cfg_t;
182 #define SMB_EXEC_MAP 0x01
183 #define SMB_EXEC_UNMAP 0x02
184 #define SMB_EXEC_TERM 0x04
186 #define SMB_EXEC_DISP_CONTINUE "continue"
187 #define SMB_EXEC_DISP_TERMINATE "terminate"
190 * Major version numbers
192 #define SMB_MAJOR_NT 4 /* Windows 95/98/Me, Windows NT4.0 */
193 #define SMB_MAJOR_2000 5
194 #define SMB_MAJOR_XP 5
195 #define SMB_MAJOR_2003 5
196 #define SMB_MAJOR_VISTA 6
197 #define SMB_MAJOR_2008 6
198 #define SMB_MAJOR_2008R2 6
199 #define SMB_MAJOR_7 6
202 * Minor version numbers
204 #define SMB_MINOR_NT 0
205 #define SMB_MINOR_2000 0
206 #define SMB_MINOR_XP 1
207 #define SMB_MINOR_2003 2
208 #define SMB_MINOR_VISTA 0
209 #define SMB_MINOR_2008 0
210 #define SMB_MINOR_2008R2 1
211 #define SMB_MINOR_7 1
214 * Max version length in string format
216 #define SMB_VERSTR_LEN 8
218 int smbnative_os_value(const char *);
219 int smbnative_lm_value(const char *);
220 int smbnative_pdc_value(const char *);
221 const char *smbnative_os_str(smb_version_t *);
222 const char *smbnative_lm_str(smb_version_t *);
225 * Support for passthrough authentication.
227 #define AUTH_USER_GRANT 0x00000000
228 #define AUTH_GUEST_GRANT 0x00000001
229 #define AUTH_IPC_ONLY_GRANT 0x00000002
232 * Defined SMB1, SMB2(+) protocol versions, as returned by
233 * smb_config_get_max_protocol()
235 #define SMB_VERS_1 1 /* arbitrary value < 0x200 */
236 #define SMB_VERS_2_BASE 0x200 /* for (SMB2 or higher?) tests */
237 #define SMB_VERS_2_002 0x202 /* "2.002" */
238 #define SMB_VERS_2_1 0x210 /* "2.1" */
239 #define SMB_VERS_3_0 0x300 /* "3.0" */
240 #define SMB_VERS_3_02 0x302 /* "3.02" */
241 #define SMB_VERS_3_11 0x311 /* "3.11" */
244 * Maxiumum currently supported encryption cipher.
246 #define SMB3_CIPHER_MAX SMB3_CIPHER_AES256_GCM
249 * SMB 3.x encryption ciphers bits.
251 #define SMB3_CIPHER_BIT(c) (1 << ((c) - 1))
252 #define SMB3_CIPHER_FLAGS_ALL ((1 << (SMB3_CIPHER_MAX)) - 1)
254 #define SMB3_CIPHER_FLAG_AES128_CCM SMB3_CIPHER_BIT(SMB3_CIPHER_AES128_CCM)
255 #define SMB3_CIPHER_FLAG_AES128_GCM SMB3_CIPHER_BIT(SMB3_CIPHER_AES128_GCM)
256 #define SMB3_CIPHER_FLAG_AES256_CCM SMB3_CIPHER_BIT(SMB3_CIPHER_AES256_CCM)
257 #define SMB3_CIPHER_FLAG_AES256_GCM SMB3_CIPHER_BIT(SMB3_CIPHER_AES256_GCM)
259 #ifdef __cplusplus
261 #endif
263 #endif /* _SMBSRV_SMBINFO_H */