2 Unix SMB/CIFS implementation.
4 Copyright (C) Volker Lendecke 2011
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>.
24 struct smbXcli_session;
27 struct tevent_req *smb2cli_logoff_send(TALLOC_CTX *mem_ctx,
28 struct tevent_context *ev,
29 struct cli_state *cli);
30 NTSTATUS smb2cli_logoff_recv(struct tevent_req *req);
31 NTSTATUS smb2cli_logoff(struct cli_state *cli);
33 struct tevent_req *smb2cli_tcon_send(TALLOC_CTX *mem_ctx,
34 struct tevent_context *ev,
35 struct cli_state *cli,
37 NTSTATUS smb2cli_tcon_recv(struct tevent_req *req);
38 NTSTATUS smb2cli_tcon(struct cli_state *cli, const char *share);
40 struct tevent_req *smb2cli_tdis_send(TALLOC_CTX *mem_ctx,
41 struct tevent_context *ev,
42 struct cli_state *cli);
43 NTSTATUS smb2cli_tdis_recv(struct tevent_req *req);
44 NTSTATUS smb2cli_tdis(struct cli_state *cli);
46 struct tevent_req *smb2cli_create_send(
48 struct tevent_context *ev,
49 struct smbXcli_conn *conn,
50 uint32_t timeout_msec,
51 struct smbXcli_session *session,
54 uint8_t oplock_level, /* SMB2_OPLOCK_LEVEL_* */
55 uint32_t impersonation_level, /* SMB2_IMPERSONATION_* */
56 uint32_t desired_access,
57 uint32_t file_attributes,
58 uint32_t share_access,
59 uint32_t create_disposition,
60 uint32_t create_options,
61 struct smb2_create_blobs *blobs);
62 NTSTATUS smb2cli_create_recv(struct tevent_req *req,
63 uint64_t *fid_persistent,
64 uint64_t *fid_volatile);
65 NTSTATUS smb2cli_create(struct smbXcli_conn *conn,
66 uint32_t timeout_msec,
67 struct smbXcli_session *session,
70 uint8_t oplock_level, /* SMB2_OPLOCK_LEVEL_* */
71 uint32_t impersonation_level, /* SMB2_IMPERSONATION_* */
72 uint32_t desired_access,
73 uint32_t file_attributes,
74 uint32_t share_access,
75 uint32_t create_disposition,
76 uint32_t create_options,
77 struct smb2_create_blobs *blobs,
78 uint64_t *fid_persistent,
79 uint64_t *fid_volatile);
81 struct tevent_req *smb2cli_close_send(TALLOC_CTX *mem_ctx,
82 struct tevent_context *ev,
83 struct smbXcli_conn *conn,
84 uint32_t timeout_msec,
85 struct smbXcli_session *session,
88 uint64_t fid_persistent,
89 uint64_t fid_volatile);
90 NTSTATUS smb2cli_close_recv(struct tevent_req *req);
91 NTSTATUS smb2cli_close(struct smbXcli_conn *conn,
92 uint32_t timeout_msec,
93 struct smbXcli_session *session,
96 uint64_t fid_persistent,
97 uint64_t fid_volatile);
99 struct tevent_req *smb2cli_flush_send(TALLOC_CTX *mem_ctx,
100 struct tevent_context *ev,
101 struct smbXcli_conn *conn,
102 uint32_t timeout_msec,
103 struct smbXcli_session *session,
105 uint64_t fid_persistent,
106 uint64_t fid_volatile);
107 NTSTATUS smb2cli_flush_recv(struct tevent_req *req);
108 NTSTATUS smb2cli_flush(struct smbXcli_conn *conn,
109 uint32_t timeout_msec,
110 struct smbXcli_session *session,
112 uint64_t fid_persistent,
113 uint64_t fid_volatile);
115 struct tevent_req *smb2cli_read_send(TALLOC_CTX *mem_ctx,
116 struct tevent_context *ev,
117 struct smbXcli_conn *conn,
118 uint32_t timeout_msec,
119 struct smbXcli_session *session,
123 uint64_t fid_persistent,
124 uint64_t fid_volatile,
125 uint64_t minimum_count,
126 uint64_t remaining_bytes);
127 NTSTATUS smb2cli_read_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
128 uint8_t **data, uint32_t *data_length);
129 NTSTATUS smb2cli_read(struct smbXcli_conn *conn,
130 uint32_t timeout_msec,
131 struct smbXcli_session *session,
135 uint64_t fid_persistent,
136 uint64_t fid_volatile,
137 uint64_t minimum_count,
138 uint64_t remaining_bytes,
141 uint32_t *data_length);
143 struct tevent_req *smb2cli_write_send(TALLOC_CTX *mem_ctx,
144 struct tevent_context *ev,
145 struct smbXcli_conn *conn,
146 uint32_t timeout_msec,
147 struct smbXcli_session *session,
151 uint64_t fid_persistent,
152 uint64_t fid_volatile,
153 uint32_t remaining_bytes,
155 const uint8_t *data);
156 NTSTATUS smb2cli_write_recv(struct tevent_req *req);
157 NTSTATUS smb2cli_write(struct smbXcli_conn *conn,
158 uint32_t timeout_msec,
159 struct smbXcli_session *session,
163 uint64_t fid_persistent,
164 uint64_t fid_volatile,
165 uint32_t remaining_bytes,
167 const uint8_t *data);
169 struct tevent_req *smb2cli_query_directory_send(TALLOC_CTX *mem_ctx,
170 struct tevent_context *ev,
171 struct smbXcli_conn *conn,
172 uint32_t timeout_msec,
173 struct smbXcli_session *session,
178 uint64_t fid_persistent,
179 uint64_t fid_volatile,
181 uint32_t outbuf_len);
182 NTSTATUS smb2cli_query_directory_recv(struct tevent_req *req,
185 uint32_t *data_length);
186 NTSTATUS smb2cli_query_directory(struct smbXcli_conn *conn,
187 uint32_t timeout_msec,
188 struct smbXcli_session *session,
193 uint64_t fid_persistent,
194 uint64_t fid_volatile,
199 uint32_t *data_length);
201 struct tevent_req *smb2cli_ioctl_send(TALLOC_CTX *mem_ctx,
202 struct tevent_context *ev,
203 struct smbXcli_conn *conn,
204 uint32_t timeout_msec,
205 struct smbXcli_session *session,
207 uint64_t in_fid_persistent,
208 uint64_t in_fid_volatile,
209 uint32_t in_ctl_code,
210 uint32_t in_max_input_length,
211 const DATA_BLOB *in_input_buffer,
212 uint32_t in_max_output_length,
213 const DATA_BLOB *in_output_buffer,
215 NTSTATUS smb2cli_ioctl_recv(struct tevent_req *req,
217 DATA_BLOB *out_input_buffer,
218 DATA_BLOB *out_output_buffer);
219 NTSTATUS smb2cli_ioctl(struct smbXcli_conn *conn,
220 uint32_t timeout_msec,
221 struct smbXcli_session *session,
223 uint64_t in_fid_persistent,
224 uint64_t in_fid_volatile,
225 uint32_t in_ctl_code,
226 uint32_t in_max_input_length,
227 const DATA_BLOB *in_input_buffer,
228 uint32_t in_max_output_length,
229 const DATA_BLOB *in_output_buffer,
232 DATA_BLOB *out_input_buffer,
233 DATA_BLOB *out_output_buffer);
235 struct tevent_req *smb2cli_query_info_send(TALLOC_CTX *mem_ctx,
236 struct tevent_context *ev,
237 struct smbXcli_conn *conn,
238 uint32_t timeout_msec,
239 struct smbXcli_session *session,
241 uint8_t in_info_type,
242 uint8_t in_file_info_class,
243 uint32_t in_max_output_length,
244 const DATA_BLOB *in_input_buffer,
245 uint32_t in_additional_info,
247 uint64_t in_fid_persistent,
248 uint64_t in_fid_volatile);
249 NTSTATUS smb2cli_query_info_recv(struct tevent_req *req,
251 DATA_BLOB *out_output_buffer);
252 NTSTATUS smb2cli_query_info(struct smbXcli_conn *conn,
253 uint32_t timeout_msec,
254 struct smbXcli_session *session,
256 uint8_t in_info_type,
257 uint8_t in_file_info_class,
258 uint32_t in_max_output_length,
259 const DATA_BLOB *in_input_buffer,
260 uint32_t in_additional_info,
262 uint64_t in_fid_persistent,
263 uint64_t in_fid_volatile,
265 DATA_BLOB *out_output_buffer);
267 struct tevent_req *smb2cli_set_info_send(TALLOC_CTX *mem_ctx,
268 struct tevent_context *ev,
269 struct smbXcli_conn *conn,
270 uint32_t timeout_msec,
271 struct smbXcli_session *session,
273 uint8_t in_info_type,
274 uint8_t in_file_info_class,
275 const DATA_BLOB *in_input_buffer,
276 uint32_t in_additional_info,
277 uint64_t in_fid_persistent,
278 uint64_t in_fid_volatile);
279 NTSTATUS smb2cli_set_info_recv(struct tevent_req *req);
280 NTSTATUS smb2cli_set_info(struct smbXcli_conn *conn,
281 uint32_t timeout_msec,
282 struct smbXcli_session *session,
284 uint8_t in_info_type,
285 uint8_t in_file_info_class,
286 const DATA_BLOB *in_input_buffer,
287 uint32_t in_additional_info,
288 uint64_t in_fid_persistent,
289 uint64_t in_fid_volatile);
291 #endif /* __SMB2CLI_H__ */