Print this page
NEX-14666 Need to provide SMB 2.1 Client
NEX-17187 panic in smbfs_acl_store
NEX-17231 smbfs create xattr files finds wrong file
NEX-17224 smbfs lookup EINVAL should be ENOENT
NEX-17260 SMB1 client fails to list directory after NEX-14666
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
Reviewed by: Saso Kiselkov <saso.kiselkov@nexenta.com>
Reviewed by: Joyce McIntosh <joyce.mcintosh@nexenta.com>
and: (cleanup)
NEX-16824 SMB client connection setup rework
NEX-17232 SMB client reconnect failures
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
and: (improve debug)
NEX-16818 Add fksmbcl development tool
NEX-17264 SMB client test tp_smbutil_013 fails after NEX-14666
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
and: (fix ref leaks)
SUP-513 Unable to join AD domain (with NtlmMinSeverSec set in the registry)
Implement "Extended Session Security" and "Key Exchange" in NTLMSSP
| Split |
Close |
| Expand all |
| Collapse all |
--- old/usr/src/lib/libsmbfs/netsmb/smb_lib.h
+++ new/usr/src/lib/libsmbfs/netsmb/smb_lib.h
1 1 /*
2 2 * Copyright (c) 2000-2001 Boris Popov
3 3 * All rights reserved.
4 4 *
5 5 * Redistribution and use in source and binary forms, with or without
6 6 * modification, are permitted provided that the following conditions
7 7 * are met:
8 8 * 1. Redistributions of source code must retain the above copyright
9 9 * notice, this list of conditions and the following disclaimer.
10 10 * 2. Redistributions in binary form must reproduce the above copyright
11 11 * notice, this list of conditions and the following disclaimer in the
12 12 * documentation and/or other materials provided with the distribution.
13 13 * 3. All advertising materials mentioning features or use of this software
14 14 * must display the following acknowledgement:
15 15 * This product includes software developed by Boris Popov.
16 16 * 4. Neither the name of the author nor the names of any co-contributors
17 17 * may be used to endorse or promote products derived from this software
18 18 * without specific prior written permission.
19 19 *
20 20 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
21 21 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 23 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
24 24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
↓ open down ↓ |
26 lines elided |
↑ open up ↑ |
27 27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 30 * SUCH DAMAGE.
31 31 *
32 32 * $Id: smb_lib.h,v 1.21.82.2 2005/06/02 00:55:39 lindak Exp $
33 33 */
34 34
35 35 /*
36 36 * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
37 - * Copyright 2013 Nexenta Systems, Inc. All rights reserved.
37 + * Copyright 2018 Nexenta Systems, Inc. All rights reserved.
38 38 */
39 39
40 40 #ifndef _NETSMB_SMB_LIB_H_
41 41 #define _NETSMB_SMB_LIB_H_
42 42
43 43 /*
44 44 * Internal interface exported to our commands in:
45 45 * usr/src/cmd/fs.d/smbclnt/
46 46 */
47 47
48 48 #include <sys/types.h>
49 49 #include <sys/socket.h>
50 50 #include <netinet/in.h>
51 51 #include <arpa/inet.h>
52 52 #include <sys/byteorder.h>
53 53
54 54 #include <netsmb/smbfs_api.h>
55 55 #include <netsmb/smb_dev.h>
56 56
57 57 extern const char smbutil_std_opts[];
58 58 #define STDPARAM_OPT smbutil_std_opts
59 59
60 60 /*
61 61 * bits to indicate the source of error
62 62 */
63 63 #define SMB_ERRTYPE_MASK 0xf0000
64 64 #define SMB_SYS_ERROR 0x00000
65 65 #define SMB_RAP_ERROR 0x10000
66 66 #define SMB_NB_ERROR 0x20000
67 67
68 68 /*
69 69 * Size of all LM/NTLM hashes (16 bytes).
70 70 * The driver needs to know this, so it's
71 71 * defined by smb_dev.h
72 72 */
73 73 #define NTLM_HASH_SZ SMBIOC_HASH_SZ
74 74 #define NTLM_CHAL_SZ 8 /* challenge size */
75 75
76 76 /*
77 77 * This is what goes across the door call to the IOD
78 78 * when asking for a new connection.
79 79 */
80 80 struct smb_iod_ssn {
81 81 struct smbioc_ossn iod_ossn;
82 82 int iod_authflags; /* SMB_AT_x */
83 83 uchar_t iod_nthash[NTLM_HASH_SZ];
84 84 uchar_t iod_lmhash[NTLM_HASH_SZ];
85 85 /* Kerberos cred. cache res. name? */
86 86 };
87 87 typedef struct smb_iod_ssn smb_iod_ssn_t;
88 88
89 89
90 90 /*
91 91 * SMB work context. Used to store all values which are necessary
92 92 * to establish connection to an SMB server.
93 93 */
94 94 struct smb_ctx {
95 95 int ct_flags; /* SMBCF_ */
|
↓ open down ↓ |
48 lines elided |
↑ open up ↑ |
96 96 int ct_dev_fd; /* device handle */
97 97 int ct_door_fd; /* to smbiod */
98 98 int ct_parsedlevel;
99 99 int ct_minlevel;
100 100 int ct_maxlevel;
101 101 char *ct_fullserver; /* orig. server name from cmd line */
102 102 char *ct_srvaddr_s; /* hostname or IP address of server */
103 103 struct addrinfo *ct_addrinfo; /* IP addresses of the server */
104 104 struct nb_ctx *ct_nb; /* NetBIOS info. */
105 105 char *ct_locname; /* local (machine) name */
106 - smb_iod_ssn_t ct_iod_ssn;
107 - /* smbioc_oshare_t ct_sh; XXX */
108 106 int ct_minauth;
109 107 int ct_shtype_req; /* share type wanted */
110 108 char *ct_origshare;
111 109 char *ct_home;
112 110 char *ct_rpath; /* remote file name */
113 111
114 - /* Connection setup SMB stuff. */
115 - /* Strings from the SMB negotiate response. */
116 - char *ct_srv_OS;
117 - char *ct_srv_LM;
118 - uint32_t ct_clnt_caps;
112 + /* See ssp.c */
113 + void *ct_ssp_ctx;
114 + smbioc_ssn_work_t ct_work;
115 + smb_iod_ssn_t ct_iod_ssn;
119 116
120 117 /* NTLM auth. stuff */
121 118 uchar_t ct_clnonce[NTLM_CHAL_SZ];
122 119 uchar_t ct_srv_chal[NTLM_CHAL_SZ];
123 120 char ct_password[SMBIOC_MAX_NAME];
124 -
125 - /* See ssp.c */
126 - void *ct_ssp_ctx;
127 - smbioc_ssn_work_t ct_work;
128 121 };
129 122
130 123
131 124 /*
132 125 * Short-hand for some of the substruct fields above
133 126 */
134 127 #define ct_ssn ct_iod_ssn.iod_ossn
135 128 #define ct_vopt ct_iod_ssn.iod_ossn.ssn_vopt
129 +#define ct_minver ct_iod_ssn.iod_ossn.ssn_minver
130 +#define ct_maxver ct_iod_ssn.iod_ossn.ssn_maxver
136 131 #define ct_owner ct_iod_ssn.iod_ossn.ssn_owner
137 132 #define ct_srvaddr ct_iod_ssn.iod_ossn.ssn_srvaddr
138 133 #define ct_domain ct_iod_ssn.iod_ossn.ssn_domain
139 134 #define ct_user ct_iod_ssn.iod_ossn.ssn_user
140 135 #define ct_srvname ct_iod_ssn.iod_ossn.ssn_srvname
141 136 #define ct_authflags ct_iod_ssn.iod_authflags
142 137 #define ct_nthash ct_iod_ssn.iod_nthash
143 138 #define ct_lmhash ct_iod_ssn.iod_lmhash
144 139
145 -#define ct_sopt ct_work.wk_sopt
146 -#define ct_iods ct_work.wk_iods
147 -#define ct_tran_fd ct_work.wk_iods.is_tran_fd
148 -#define ct_hflags ct_work.wk_iods.is_hflags
149 -#define ct_hflags2 ct_work.wk_iods.is_hflags2
150 -#define ct_vcflags ct_work.wk_iods.is_vcflags
151 -#define ct_ssn_key ct_work.wk_iods.is_ssn_key
152 -#define ct_mac_seqno ct_work.wk_iods.is_next_seq
153 -#define ct_mackeylen ct_work.wk_iods.is_u_maclen
154 -#define ct_mackey ct_work.wk_iods.is_u_mackey.lp_ptr
140 +#define ct_vcflags ct_work.wk_vcflags
141 +#define ct_ssnkey_len ct_work.wk_u_ssnkey_len
142 +#define ct_ssnkey_buf ct_work.wk_u_ssnkey_buf.lp_ptr
155 143
156 144
157 145 /*
158 146 * Bits in smb_ctx_t.ct_flags
159 147 */
160 148 #define SMBCF_NOPWD 0x0001 /* don't ask for a password */
161 149 #define SMBCF_SRIGHTS 0x0002 /* share access rights supplied */
162 150 #define SMBCF_LOCALE 0x0004 /* use current locale */
163 151 #define SMBCF_CMD_DOM 0x0010 /* CMD specified domain */
164 152 #define SMBCF_CMD_USR 0x0020 /* CMD specified user */
165 153 #define SMBCF_CMD_PW 0x0040 /* CMD specified password */
166 154 #define SMBCF_RESOLVED 0x8000 /* structure has been verified */
167 155 #define SMBCF_KCBAD 0x00080000 /* keychain password failed */
168 156 #define SMBCF_KCFOUND 0x00100000 /* password is from keychain */
169 157 #define SMBCF_BROWSEOK 0x00200000 /* browser dialogue may be used */
170 158 #define SMBCF_AUTHREQ 0x00400000 /* auth. dialog requested */
171 159 #define SMBCF_KCSAVE 0x00800000 /* add to keychain requested */
172 -#define SMBCF_XXX 0x01000000 /* mount-all, a very bad thing */
173 -#define SMBCF_SSNACTIVE 0x02000000 /* session setup succeeded */
174 -#define SMBCF_KCDOMAIN 0x04000000 /* use domain in KC lookup */
160 +#define SMBCF_KCDOMAIN 0x01000000 /* use domain in KC lookup */
175 161
176 162
177 163 /*
178 164 * Context management
179 165 */
180 166
181 167 int smb_ctx_init(struct smb_ctx *);
182 168 void smb_ctx_done(struct smb_ctx *);
183 169 int smb_open_driver(void);
170 +int nsmb_ioctl(int, int, void *);
171 +int nsmb_close(int);
184 172
185 173 int smb_ctx_gethandle(struct smb_ctx *);
186 174 int smb_ctx_findvc(struct smb_ctx *);
187 175 int smb_ctx_newvc(struct smb_ctx *);
188 176
189 177 /*
190 178 * I/O daemon stuff
191 179 */
192 180
193 181 #define SMBIOD_RUNDIR "/var/run/smbiod"
194 182 #define SMBIOD_SVC_DOOR SMBIOD_RUNDIR "/.svc"
195 183 #define SMBIOD_USR_DOOR SMBIOD_RUNDIR "/%d"
196 184 #define SMBIOD_START 1
197 185
198 186 int smb_iod_cl_newvc(smb_ctx_t *ctx);
199 187 char *smb_iod_door_path(void);
200 188 int smb_iod_open_door(int *);
|
↓ open down ↓ |
7 lines elided |
↑ open up ↑ |
201 189 int smb_iod_connect(struct smb_ctx *);
202 190 int smb_iod_work(struct smb_ctx *);
203 191
204 192 /*
205 193 * Other stuff
206 194 */
207 195
208 196 int smb_open_rcfile(char *);
209 197 void smb_close_rcfile(void);
210 198
199 +int smb_cf_minauth_from_str(char *);
200 +int smb_cf_version_from_str(char *);
201 +
211 202 void smb_simplecrypt(char *dst, const char *src);
212 203 int smb_simpledecrypt(char *dst, const char *src);
213 204
214 205 int nls_setrecode(const char *, const char *);
215 206 int nls_setlocale(const char *);
216 207 char *nls_str_toext(char *, const char *);
217 208 char *nls_str_toloc(char *, const char *);
218 209 void *nls_mem_toext(void *, const void *, int);
219 210 void *nls_mem_toloc(void *, const void *, int);
220 211 char *nls_str_upper(char *, const char *);
221 212 char *nls_str_lower(char *, const char *);
222 213
223 214 char *smb_getprogname();
224 215 #define __progname smb_getprogname()
225 216
226 217 #endif /* _NETSMB_SMB_LIB_H_ */
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX