Print this page
NEX-19375 SMB2 durable handle create response missing timeout
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Cleanup duplicated lines from the "Feb merge".
NEX-18748 (Hyper-V 2016) VM goes to poweroff state when smbd is restarted
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Joyce McIntosh <joyce.mcintosh@nexenta.com>
NEX-17589 Get "too high" smbd error when copy big file to cifs share (redo)
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-16943 network outages with thread stuck in smb2_scoreboard_cancel
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-15681 Implement SMB2 ioctl FSCTL_QUERY_FILE_REGIONS
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-9808 SMB3 persistent handles
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-15578 SMB2 durable handle redesign
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-15581 SMB keep-alive feature is just noise
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-5665 SMB2 oplock leases
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
NEX-15555 SMB2 async redesign
NEX-15061 smtorture smb2.lock.cancel.cancel is failed
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
Also follow-up change to:
NEX-1643 dtrace provider for smbsrv (remove "done2" probes,
which don't make sense with the new async design)
NEX-15681 Implement SMB2 ioctl FSCTL_QUERY_FILE_REGIONS
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-9808 SMB3 persistent handles
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-15578 SMB2 durable handle redesign
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-15581 SMB keep-alive feature is just noise
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-5665 SMB2 oplock leases
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
NEX-15555 SMB2 async redesign
NEX-15061 smtorture smb2.lock.cancel.cancel is failed
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
Also follow-up change to:
NEX-1643 dtrace provider for smbsrv (remove "done2" probes,
which don't make sense with the new async design)
NEX-10231 SMB logon fails in fksmbd
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
NEX-9864 Some SMB cancel races remain after NEX-5845
Revert (part of) "NEX-5845 rework SMB immediate cancel"
reverts (part of) commit 7a5da69f6d42b17ebcc95ca3d02925d07a01343e.
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-5273 SMB 3 Encryption
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
NEX-5664 Offload Data Transfer (ODX) support for Hyper-V
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
NEX-6337 COPYCHUNKS should use sparse copy
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
NEX-6276 SMB sparse file support
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-5844 want SMB2 ioctl FSCTL_SRV_COPYCHUNK
NEX-6124 smb_fsop_read/write should allow file != sr->fid_ofile
NEX-6125 smbtorture invalid response with smb2.ioctl
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
NEX-5845 rework SMB immediate cancel
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
NEX-3553 SMB2/3 durable handles
Reviewed by: Gordon Ross <gwr@nexenta.com>
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
NEX-3906 Prefer that SMB change notify not tie up a worker thread
NEX-5278 SMB notify should buffer per file handle
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
Reviewed by: Matt Barden <Matt.Barden@nexenta.com>
NEX-3409 SMB2: OSX - cannot display nested folders in finder
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
Reviewed by: Matt Barden <Matt.Barden@nexenta.com>
NEX-3733 Want SMB2 Apple extensions
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
Reviewed by: Matt Barden <Matt.Barden@nexenta.com>
NEX-3610 CLONE NEX-3591 SMB3 signing
Reviewed by: Gordon Ross <gwr@nexenta.com>
Reviewed by: Dan Fields <dan.fields@nexenta.com>
SMB-55 SMB2 signing
NEX-1059 Shared folder is not available in Windows 7/8/2012 when SMB2 is enabled in Workgroup mode
(Implement "Secure Negotiation")
SMB-122 smbd core dumps in smbd_dc_update / smb_log
SMB-117 Win7 fails to open security properties
SMB-11 SMB2 message parse & dispatch
SMB-12 SMB2 Negotiate Protocol
SMB-13 SMB2 Session Setup
SMB-14 SMB2 Logoff
SMB-15 SMB2 Tree Connect
SMB-16 SMB2 Tree Disconnect
SMB-17 SMB2 Create
SMB-18 SMB2 Close
SMB-19 SMB2 Flush
SMB-20 SMB2 Read
SMB-21 SMB2 Write
SMB-22 SMB2 Lock/Unlock
SMB-23 SMB2 Ioctl
SMB-24 SMB2 Cancel
SMB-25 SMB2 Echo
SMB-26 SMB2 Query Dir
SMB-27 SMB2 Change Notify
SMB-28 SMB2 Query Info
SMB-29 SMB2 Set Info
SMB-30 SMB2 Oplocks
SMB-53 SMB2 Create Context options
(SMB2 code review cleanup 1, 2, 3)
| Split |
Close |
| Expand all |
| Collapse all |
--- old/usr/src/uts/common/smbsrv/smb2_kproto.h
+++ new/usr/src/uts/common/smbsrv/smb2_kproto.h
1 1 /*
2 2 * This file and its contents are supplied under the terms of the
|
↓ open down ↓ |
2 lines elided |
↑ open up ↑ |
3 3 * Common Development and Distribution License ("CDDL"), version 1.0.
4 4 * You may only use this file in accordance with the terms of version
5 5 * 1.0 of the CDDL.
6 6 *
7 7 * A full copy of the text of the CDDL should have accompanied this
8 8 * source. A copy of the CDDL is also available via the Internet at
9 9 * http://www.illumos.org/license/CDDL.
10 10 */
11 11
12 12 /*
13 - * Copyright 2014 Nexenta Systems, Inc. All rights reserved.
13 + * Copyright 2018 Nexenta Systems, Inc. All rights reserved.
14 14 */
15 15
16 16 #ifndef _SMB2_KPROTO_H_
17 17 #define _SMB2_KPROTO_H_
18 18
19 19 #include <smbsrv/smb_kproto.h>
20 20 #include <smbsrv/smb2.h>
21 21
22 22 #ifdef __cplusplus
23 23 extern "C" {
24 24 #endif
25 25
26 26 extern uint32_t smb2_tcp_rcvbuf;
27 27 extern uint32_t smb2_max_rwsize;
28 28 extern uint32_t smb2_max_trans;
29 29
30 +extern int smb2_aapl_use_file_ids;
31 +extern uint32_t smb2_dh_def_timeout;
32 +extern uint32_t smb2_dh_max_timeout;
33 +extern uint32_t smb2_res_def_timeout;
34 +extern uint32_t smb2_res_max_timeout;
35 +extern uint32_t smb2_persist_timeout;
36 +extern int smb2_enable_dh;
37 +
38 +#define SMB2_KEYLEN 16
39 +#define SMB3_KEYLEN 16 /* AES-128 keys */
40 +
41 +#define SMB3_CLIENT_ENCRYPTS(sr) \
42 + ((sr->session->capabilities & SMB2_CAP_ENCRYPTION) != 0)
43 +
30 44 void smb2_dispatch_stats_init(smb_server_t *);
31 45 void smb2_dispatch_stats_fini(smb_server_t *);
32 46 void smb2_dispatch_stats_update(smb_server_t *,
33 47 smb_kstat_req_t *, int, int);
34 48
35 49 int smb2sr_newrq(smb_request_t *);
36 -int smb2sr_newrq_async(smb_request_t *);
37 -int smb2sr_newrq_cancel(smb_request_t *);
38 50 void smb2sr_work(smb_request_t *);
51 +uint32_t smb2sr_go_async(smb_request_t *);
52 +void smb2sr_append_postwork(smb_request_t *, smb_request_t *);
39 53
40 54 int smb2_decode_header(smb_request_t *);
41 55 int smb2_encode_header(smb_request_t *, boolean_t);
56 +int smb3_decode_tform_header(smb_request_t *);
57 +int smb3_encode_tform_header(smb_request_t *, struct mbuf_chain *mbc);
58 +
42 59 void smb2_send_reply(smb_request_t *);
43 60 void smb2sr_put_error(smb_request_t *, uint32_t);
44 61 void smb2sr_put_error_data(smb_request_t *, uint32_t, mbuf_chain_t *);
45 62 void smb2sr_put_errno(struct smb_request *, int);
46 63 uint32_t smb2sr_lookup_fid(smb_request_t *, smb2fid_t *);
47 64
48 65 /* SMB2 signing routines - smb2_signing.c */
49 66 int smb2_sign_check_request(smb_request_t *);
50 67 void smb2_sign_reply(smb_request_t *);
68 +void smb2_sign_init_mech(smb_session_t *);
51 69
52 -uint32_t smb2_fsctl_vneginfo(smb_request_t *, smb_fsctl_t *);
70 +int smb3_encrypt_sr(smb_request_t *, struct mbuf_chain *, struct mbuf_chain *);
71 +int smb3_decrypt_sr(smb_request_t *);
72 +int smb3_encrypt_init_mech(smb_session_t *s);
53 73
74 +uint32_t smb2_fsctl_fs(smb_request_t *, smb_fsctl_t *);
75 +uint32_t smb2_fsctl_netfs(smb_request_t *, smb_fsctl_t *);
76 +uint32_t smb2_fsctl_copychunk(smb_request_t *, smb_fsctl_t *);
77 +uint32_t smb2_fsctl_odx_read(smb_request_t *, smb_fsctl_t *);
78 +uint32_t smb2_fsctl_odx_write(smb_request_t *, smb_fsctl_t *);
79 +uint32_t smb2_fsctl_set_resilient(smb_request_t *, smb_fsctl_t *);
80 +
81 +/* smb2_fsctl_sparse.c */
82 +uint32_t smb2_fsctl_set_sparse(smb_request_t *, smb_fsctl_t *);
83 +uint32_t smb2_fsctl_set_zero_data(smb_request_t *, smb_fsctl_t *);
84 +uint32_t smb2_fsctl_query_alloc_ranges(smb_request_t *, smb_fsctl_t *);
85 +uint32_t smb2_fsctl_query_file_regions(smb_request_t *, smb_fsctl_t *);
86 +uint32_t smb2_sparse_copy(smb_request_t *sr,
87 + smb_ofile_t *src_ofile, smb_ofile_t *dst_ofile,
88 + off64_t src_off, off64_t dst_off, uint32_t *residp,
89 + void *buffer, size_t bufsize);
90 +
91 +uint32_t smb2_nego_validate(smb_request_t *, smb_fsctl_t *);
92 +
54 93 smb_sdrc_t smb2_negotiate(smb_request_t *);
55 94 smb_sdrc_t smb2_session_setup(smb_request_t *);
56 95 smb_sdrc_t smb2_logoff(smb_request_t *);
57 96 smb_sdrc_t smb2_tree_connect(smb_request_t *);
58 97 smb_sdrc_t smb2_tree_disconn(smb_request_t *);
59 98 smb_sdrc_t smb2_create(smb_request_t *);
60 99 smb_sdrc_t smb2_close(smb_request_t *);
61 100 smb_sdrc_t smb2_flush(smb_request_t *);
62 101 smb_sdrc_t smb2_read(smb_request_t *);
63 102 smb_sdrc_t smb2_write(smb_request_t *);
64 103 smb_sdrc_t smb2_lock(smb_request_t *);
65 104 smb_sdrc_t smb2_ioctl(smb_request_t *);
66 -/* No smb2_cancel() - see smb2_dispatch.c */
105 +smb_sdrc_t smb2_cancel(smb_request_t *);
67 106 smb_sdrc_t smb2_echo(smb_request_t *);
68 107 smb_sdrc_t smb2_query_dir(smb_request_t *);
69 108 smb_sdrc_t smb2_change_notify(smb_request_t *);
70 109 smb_sdrc_t smb2_query_info(smb_request_t *);
71 110 smb_sdrc_t smb2_set_info(smb_request_t *);
72 111 smb_sdrc_t smb2_oplock_break_ack(smb_request_t *);
112 +smb_sdrc_t smb2_lease_break_ack(smb_request_t *);
73 113
74 114 int smb2_newrq_negotiate(smb_request_t *);
115 +int smb2_newrq_cancel(smb_request_t *);
75 116
117 +uint32_t smb2_aapl_crctx(smb_request_t *,
118 + mbuf_chain_t *, mbuf_chain_t *);
119 +
76 120 uint32_t smb2_ofile_getattr(smb_request_t *, smb_ofile_t *, smb_attr_t *);
77 121 uint32_t smb2_ofile_getstd(smb_ofile_t *, smb_queryinfo_t *);
78 122 uint32_t smb2_ofile_getname(smb_ofile_t *, smb_queryinfo_t *);
79 123
80 124 uint32_t smb2_qinfo_file(smb_request_t *, smb_queryinfo_t *);
81 125 uint32_t smb2_qinfo_fs(smb_request_t *, smb_queryinfo_t *);
82 126 uint32_t smb2_qinfo_sec(smb_request_t *, smb_queryinfo_t *);
83 127 uint32_t smb2_qinfo_quota(smb_request_t *, smb_queryinfo_t *);
84 128 uint32_t smb2_qinfo_stream(smb_request_t *, smb_queryinfo_t *);
85 129
86 130 uint32_t smb2_setinfo_file(smb_request_t *, smb_setinfo_t *, int);
87 131 uint32_t smb2_setinfo_fs(smb_request_t *, smb_setinfo_t *, int);
88 132 uint32_t smb2_setinfo_sec(smb_request_t *, smb_setinfo_t *, uint32_t);
89 133 uint32_t smb2_setinfo_quota(smb_request_t *, smb_setinfo_t *);
90 134
135 +void smb2_oplock_acquire(smb_request_t *sr);
136 +void smb2_lease_acquire(smb_request_t *sr);
137 +uint32_t smb2_lease_create(smb_request_t *sr, uint8_t *);
138 +void smb2_lease_rele(smb_lease_t *);
139 +void smb2_lease_init(void);
140 +void smb2_lease_fini(void);
141 +void smb2_lease_ofile_close(smb_ofile_t *);
142 +
143 +void smb2_durable_timers(smb_server_t *);
144 +
145 +uint32_t smb2_dh_reconnect(smb_request_t *);
146 +boolean_t smb_dh_should_save(smb_ofile_t *);
147 +extern void smb2_dh_shutdown(smb_server_t *);
148 +int smb2_dh_new_ca_share(smb_server_t *, smb_kshare_t *);
149 +void smb2_dh_close_persistent(smb_ofile_t *);
150 +void smb2_dh_close_my_orphans(smb_request_t *, smb_ofile_t *);
151 +int smb2_dh_make_persistent(smb_request_t *, smb_ofile_t *);
152 +void smb2_dh_setdoc_persistent(smb_ofile_t *);
153 +void smb2_dh_update_nvfile(smb_request_t *);
154 +void smb2_dh_update_oplock(smb_request_t *, smb_ofile_t *);
155 +void smb2_dh_update_locks(smb_request_t *, smb_ofile_t *);
156 +void smb2_dh_update_times(smb_request_t *, smb_ofile_t *, smb_attr_t *);
157 +
91 158 #ifdef __cplusplus
92 159 }
93 160 #endif
94 161
95 162 #endif /* _SMB2_KPROTO_H_ */
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX