libcli/smb: move smb2cli_logoff_* from source3 to the top level
[samba.git] / source3 / libsmb / smb2cli.h
1 /*
2    Unix SMB/CIFS implementation.
3    smb2 client routines
4    Copyright (C) Volker Lendecke 2011
5
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.
10
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.
15
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/>.
18 */
19
20 #ifndef __SMB2CLI_H__
21 #define __SMB2CLI_H__
22
23 struct smbXcli_conn;
24 struct smbXcli_session;
25 struct cli_state;
26
27 struct tevent_req *smb2cli_tcon_send(TALLOC_CTX *mem_ctx,
28                                      struct tevent_context *ev,
29                                      struct cli_state *cli,
30                                      const char *share);
31 NTSTATUS smb2cli_tcon_recv(struct tevent_req *req);
32 NTSTATUS smb2cli_tcon(struct cli_state *cli, const char *share);
33
34 struct tevent_req *smb2cli_tdis_send(TALLOC_CTX *mem_ctx,
35                                      struct tevent_context *ev,
36                                      struct cli_state *cli);
37 NTSTATUS smb2cli_tdis_recv(struct tevent_req *req);
38 NTSTATUS smb2cli_tdis(struct cli_state *cli);
39
40 struct tevent_req *smb2cli_create_send(
41         TALLOC_CTX *mem_ctx,
42         struct tevent_context *ev,
43         struct smbXcli_conn *conn,
44         uint32_t timeout_msec,
45         struct smbXcli_session *session,
46         uint32_t tcon_id,
47         const char *filename,
48         uint8_t  oplock_level,          /* SMB2_OPLOCK_LEVEL_* */
49         uint32_t impersonation_level,   /* SMB2_IMPERSONATION_* */
50         uint32_t desired_access,
51         uint32_t file_attributes,
52         uint32_t share_access,
53         uint32_t create_disposition,
54         uint32_t create_options,
55         struct smb2_create_blobs *blobs);
56 NTSTATUS smb2cli_create_recv(struct tevent_req *req,
57                              uint64_t *fid_persistent,
58                              uint64_t *fid_volatile);
59 NTSTATUS smb2cli_create(struct smbXcli_conn *conn,
60                         uint32_t timeout_msec,
61                         struct smbXcli_session *session,
62                         uint32_t tcon_id,
63                         const char *filename,
64                         uint8_t  oplock_level,       /* SMB2_OPLOCK_LEVEL_* */
65                         uint32_t impersonation_level, /* SMB2_IMPERSONATION_* */
66                         uint32_t desired_access,
67                         uint32_t file_attributes,
68                         uint32_t share_access,
69                         uint32_t create_disposition,
70                         uint32_t create_options,
71                         struct smb2_create_blobs *blobs,
72                         uint64_t *fid_persistent,
73                         uint64_t *fid_volatile);
74
75 struct tevent_req *smb2cli_close_send(TALLOC_CTX *mem_ctx,
76                                       struct tevent_context *ev,
77                                       struct smbXcli_conn *conn,
78                                       uint32_t timeout_msec,
79                                       struct smbXcli_session *session,
80                                       uint32_t tcon_id,
81                                       uint16_t flags,
82                                       uint64_t fid_persistent,
83                                       uint64_t fid_volatile);
84 NTSTATUS smb2cli_close_recv(struct tevent_req *req);
85 NTSTATUS smb2cli_close(struct smbXcli_conn *conn,
86                        uint32_t timeout_msec,
87                        struct smbXcli_session *session,
88                        uint32_t tcon_id,
89                        uint16_t flags,
90                        uint64_t fid_persistent,
91                        uint64_t fid_volatile);
92
93 struct tevent_req *smb2cli_flush_send(TALLOC_CTX *mem_ctx,
94                                       struct tevent_context *ev,
95                                       struct smbXcli_conn *conn,
96                                       uint32_t timeout_msec,
97                                       struct smbXcli_session *session,
98                                       uint32_t tcon_id,
99                                       uint64_t fid_persistent,
100                                       uint64_t fid_volatile);
101 NTSTATUS smb2cli_flush_recv(struct tevent_req *req);
102 NTSTATUS smb2cli_flush(struct smbXcli_conn *conn,
103                        uint32_t timeout_msec,
104                        struct smbXcli_session *session,
105                        uint32_t tcon_id,
106                        uint64_t fid_persistent,
107                        uint64_t fid_volatile);
108
109 struct tevent_req *smb2cli_read_send(TALLOC_CTX *mem_ctx,
110                                      struct tevent_context *ev,
111                                      struct smbXcli_conn *conn,
112                                      uint32_t timeout_msec,
113                                      struct smbXcli_session *session,
114                                      uint32_t tcon_id,
115                                      uint32_t length,
116                                      uint64_t offset,
117                                      uint64_t fid_persistent,
118                                      uint64_t fid_volatile,
119                                      uint64_t minimum_count,
120                                      uint64_t remaining_bytes);
121 NTSTATUS smb2cli_read_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
122                            uint8_t **data, uint32_t *data_length);
123 NTSTATUS smb2cli_read(struct smbXcli_conn *conn,
124                       uint32_t timeout_msec,
125                       struct smbXcli_session *session,
126                       uint32_t tcon_id,
127                       uint32_t length,
128                       uint64_t offset,
129                       uint64_t fid_persistent,
130                       uint64_t fid_volatile,
131                       uint64_t minimum_count,
132                       uint64_t remaining_bytes,
133                       TALLOC_CTX *mem_ctx,
134                       uint8_t **data,
135                       uint32_t *data_length);
136
137 struct tevent_req *smb2cli_write_send(TALLOC_CTX *mem_ctx,
138                                       struct tevent_context *ev,
139                                       struct smbXcli_conn *conn,
140                                       uint32_t timeout_msec,
141                                       struct smbXcli_session *session,
142                                       uint32_t tcon_id,
143                                       uint32_t length,
144                                       uint64_t offset,
145                                       uint64_t fid_persistent,
146                                       uint64_t fid_volatile,
147                                       uint32_t remaining_bytes,
148                                       uint32_t flags,
149                                       const uint8_t *data);
150 NTSTATUS smb2cli_write_recv(struct tevent_req *req);
151 NTSTATUS smb2cli_write(struct smbXcli_conn *conn,
152                        uint32_t timeout_msec,
153                        struct smbXcli_session *session,
154                        uint32_t tcon_id,
155                        uint32_t length,
156                        uint64_t offset,
157                        uint64_t fid_persistent,
158                        uint64_t fid_volatile,
159                        uint32_t remaining_bytes,
160                        uint32_t flags,
161                        const uint8_t *data);
162
163 struct tevent_req *smb2cli_query_directory_send(TALLOC_CTX *mem_ctx,
164                                                 struct tevent_context *ev,
165                                                 struct smbXcli_conn *conn,
166                                                 uint32_t timeout_msec,
167                                                 struct smbXcli_session *session,
168                                                 uint32_t tcon_id,
169                                                 uint8_t level,
170                                                 uint8_t flags,
171                                                 uint32_t file_index,
172                                                 uint64_t fid_persistent,
173                                                 uint64_t fid_volatile,
174                                                 const char *mask,
175                                                 uint32_t outbuf_len);
176 NTSTATUS smb2cli_query_directory_recv(struct tevent_req *req,
177                                       TALLOC_CTX *mem_ctx,
178                                       uint8_t **data,
179                                       uint32_t *data_length);
180 NTSTATUS smb2cli_query_directory(struct smbXcli_conn *conn,
181                                  uint32_t timeout_msec,
182                                  struct smbXcli_session *session,
183                                  uint32_t tcon_id,
184                                  uint8_t level,
185                                  uint8_t flags,
186                                  uint32_t file_index,
187                                  uint64_t fid_persistent,
188                                  uint64_t fid_volatile,
189                                  const char *mask,
190                                  uint32_t outbuf_len,
191                                  TALLOC_CTX *mem_ctx,
192                                  uint8_t **data,
193                                  uint32_t *data_length);
194
195 struct tevent_req *smb2cli_ioctl_send(TALLOC_CTX *mem_ctx,
196                                       struct tevent_context *ev,
197                                       struct smbXcli_conn *conn,
198                                       uint32_t timeout_msec,
199                                       struct smbXcli_session *session,
200                                       uint32_t tcon_id,
201                                       uint64_t in_fid_persistent,
202                                       uint64_t in_fid_volatile,
203                                       uint32_t in_ctl_code,
204                                       uint32_t in_max_input_length,
205                                       const DATA_BLOB *in_input_buffer,
206                                       uint32_t in_max_output_length,
207                                       const DATA_BLOB *in_output_buffer,
208                                       uint32_t in_flags);
209 NTSTATUS smb2cli_ioctl_recv(struct tevent_req *req,
210                             TALLOC_CTX *mem_ctx,
211                             DATA_BLOB *out_input_buffer,
212                             DATA_BLOB *out_output_buffer);
213 NTSTATUS smb2cli_ioctl(struct smbXcli_conn *conn,
214                        uint32_t timeout_msec,
215                        struct smbXcli_session *session,
216                        uint32_t tcon_id,
217                        uint64_t in_fid_persistent,
218                        uint64_t in_fid_volatile,
219                        uint32_t in_ctl_code,
220                        uint32_t in_max_input_length,
221                        const DATA_BLOB *in_input_buffer,
222                        uint32_t in_max_output_length,
223                        const DATA_BLOB *in_output_buffer,
224                        uint32_t in_flags,
225                        TALLOC_CTX *mem_ctx,
226                        DATA_BLOB *out_input_buffer,
227                        DATA_BLOB *out_output_buffer);
228
229 struct tevent_req *smb2cli_query_info_send(TALLOC_CTX *mem_ctx,
230                                            struct tevent_context *ev,
231                                            struct smbXcli_conn *conn,
232                                            uint32_t timeout_msec,
233                                            struct smbXcli_session *session,
234                                            uint32_t tcon_id,
235                                            uint8_t in_info_type,
236                                            uint8_t in_file_info_class,
237                                            uint32_t in_max_output_length,
238                                            const DATA_BLOB *in_input_buffer,
239                                            uint32_t in_additional_info,
240                                            uint32_t in_flags,
241                                            uint64_t in_fid_persistent,
242                                            uint64_t in_fid_volatile);
243 NTSTATUS smb2cli_query_info_recv(struct tevent_req *req,
244                                  TALLOC_CTX *mem_ctx,
245                                  DATA_BLOB *out_output_buffer);
246 NTSTATUS smb2cli_query_info(struct smbXcli_conn *conn,
247                             uint32_t timeout_msec,
248                             struct smbXcli_session *session,
249                             uint32_t tcon_id,
250                             uint8_t in_info_type,
251                             uint8_t in_file_info_class,
252                             uint32_t in_max_output_length,
253                             const DATA_BLOB *in_input_buffer,
254                             uint32_t in_additional_info,
255                             uint32_t in_flags,
256                             uint64_t in_fid_persistent,
257                             uint64_t in_fid_volatile,
258                             TALLOC_CTX *mem_ctx,
259                             DATA_BLOB *out_output_buffer);
260
261 struct tevent_req *smb2cli_set_info_send(TALLOC_CTX *mem_ctx,
262                                          struct tevent_context *ev,
263                                          struct smbXcli_conn *conn,
264                                          uint32_t timeout_msec,
265                                          struct smbXcli_session *session,
266                                          uint32_t tcon_id,
267                                          uint8_t in_info_type,
268                                          uint8_t in_file_info_class,
269                                          const DATA_BLOB *in_input_buffer,
270                                          uint32_t in_additional_info,
271                                          uint64_t in_fid_persistent,
272                                          uint64_t in_fid_volatile);
273 NTSTATUS smb2cli_set_info_recv(struct tevent_req *req);
274 NTSTATUS smb2cli_set_info(struct smbXcli_conn *conn,
275                             uint32_t timeout_msec,
276                             struct smbXcli_session *session,
277                             uint32_t tcon_id,
278                             uint8_t in_info_type,
279                             uint8_t in_file_info_class,
280                             const DATA_BLOB *in_input_buffer,
281                             uint32_t in_additional_info,
282                             uint64_t in_fid_persistent,
283                             uint64_t in_fid_volatile);
284
285 #endif /* __SMB2CLI_H__ */