libcli/smb: move smb2cli_create.c from source3 to the toplevel
[metze/samba/wip.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_close_send(TALLOC_CTX *mem_ctx,
41                                       struct tevent_context *ev,
42                                       struct smbXcli_conn *conn,
43                                       uint32_t timeout_msec,
44                                       struct smbXcli_session *session,
45                                       uint32_t tcon_id,
46                                       uint16_t flags,
47                                       uint64_t fid_persistent,
48                                       uint64_t fid_volatile);
49 NTSTATUS smb2cli_close_recv(struct tevent_req *req);
50 NTSTATUS smb2cli_close(struct smbXcli_conn *conn,
51                        uint32_t timeout_msec,
52                        struct smbXcli_session *session,
53                        uint32_t tcon_id,
54                        uint16_t flags,
55                        uint64_t fid_persistent,
56                        uint64_t fid_volatile);
57
58 struct tevent_req *smb2cli_flush_send(TALLOC_CTX *mem_ctx,
59                                       struct tevent_context *ev,
60                                       struct smbXcli_conn *conn,
61                                       uint32_t timeout_msec,
62                                       struct smbXcli_session *session,
63                                       uint32_t tcon_id,
64                                       uint64_t fid_persistent,
65                                       uint64_t fid_volatile);
66 NTSTATUS smb2cli_flush_recv(struct tevent_req *req);
67 NTSTATUS smb2cli_flush(struct smbXcli_conn *conn,
68                        uint32_t timeout_msec,
69                        struct smbXcli_session *session,
70                        uint32_t tcon_id,
71                        uint64_t fid_persistent,
72                        uint64_t fid_volatile);
73
74 struct tevent_req *smb2cli_read_send(TALLOC_CTX *mem_ctx,
75                                      struct tevent_context *ev,
76                                      struct smbXcli_conn *conn,
77                                      uint32_t timeout_msec,
78                                      struct smbXcli_session *session,
79                                      uint32_t tcon_id,
80                                      uint32_t length,
81                                      uint64_t offset,
82                                      uint64_t fid_persistent,
83                                      uint64_t fid_volatile,
84                                      uint64_t minimum_count,
85                                      uint64_t remaining_bytes);
86 NTSTATUS smb2cli_read_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
87                            uint8_t **data, uint32_t *data_length);
88 NTSTATUS smb2cli_read(struct smbXcli_conn *conn,
89                       uint32_t timeout_msec,
90                       struct smbXcli_session *session,
91                       uint32_t tcon_id,
92                       uint32_t length,
93                       uint64_t offset,
94                       uint64_t fid_persistent,
95                       uint64_t fid_volatile,
96                       uint64_t minimum_count,
97                       uint64_t remaining_bytes,
98                       TALLOC_CTX *mem_ctx,
99                       uint8_t **data,
100                       uint32_t *data_length);
101
102 struct tevent_req *smb2cli_write_send(TALLOC_CTX *mem_ctx,
103                                       struct tevent_context *ev,
104                                       struct smbXcli_conn *conn,
105                                       uint32_t timeout_msec,
106                                       struct smbXcli_session *session,
107                                       uint32_t tcon_id,
108                                       uint32_t length,
109                                       uint64_t offset,
110                                       uint64_t fid_persistent,
111                                       uint64_t fid_volatile,
112                                       uint32_t remaining_bytes,
113                                       uint32_t flags,
114                                       const uint8_t *data);
115 NTSTATUS smb2cli_write_recv(struct tevent_req *req);
116 NTSTATUS smb2cli_write(struct smbXcli_conn *conn,
117                        uint32_t timeout_msec,
118                        struct smbXcli_session *session,
119                        uint32_t tcon_id,
120                        uint32_t length,
121                        uint64_t offset,
122                        uint64_t fid_persistent,
123                        uint64_t fid_volatile,
124                        uint32_t remaining_bytes,
125                        uint32_t flags,
126                        const uint8_t *data);
127
128 struct tevent_req *smb2cli_query_directory_send(TALLOC_CTX *mem_ctx,
129                                                 struct tevent_context *ev,
130                                                 struct smbXcli_conn *conn,
131                                                 uint32_t timeout_msec,
132                                                 struct smbXcli_session *session,
133                                                 uint32_t tcon_id,
134                                                 uint8_t level,
135                                                 uint8_t flags,
136                                                 uint32_t file_index,
137                                                 uint64_t fid_persistent,
138                                                 uint64_t fid_volatile,
139                                                 const char *mask,
140                                                 uint32_t outbuf_len);
141 NTSTATUS smb2cli_query_directory_recv(struct tevent_req *req,
142                                       TALLOC_CTX *mem_ctx,
143                                       uint8_t **data,
144                                       uint32_t *data_length);
145 NTSTATUS smb2cli_query_directory(struct smbXcli_conn *conn,
146                                  uint32_t timeout_msec,
147                                  struct smbXcli_session *session,
148                                  uint32_t tcon_id,
149                                  uint8_t level,
150                                  uint8_t flags,
151                                  uint32_t file_index,
152                                  uint64_t fid_persistent,
153                                  uint64_t fid_volatile,
154                                  const char *mask,
155                                  uint32_t outbuf_len,
156                                  TALLOC_CTX *mem_ctx,
157                                  uint8_t **data,
158                                  uint32_t *data_length);
159
160 struct tevent_req *smb2cli_ioctl_send(TALLOC_CTX *mem_ctx,
161                                       struct tevent_context *ev,
162                                       struct smbXcli_conn *conn,
163                                       uint32_t timeout_msec,
164                                       struct smbXcli_session *session,
165                                       uint32_t tcon_id,
166                                       uint64_t in_fid_persistent,
167                                       uint64_t in_fid_volatile,
168                                       uint32_t in_ctl_code,
169                                       uint32_t in_max_input_length,
170                                       const DATA_BLOB *in_input_buffer,
171                                       uint32_t in_max_output_length,
172                                       const DATA_BLOB *in_output_buffer,
173                                       uint32_t in_flags);
174 NTSTATUS smb2cli_ioctl_recv(struct tevent_req *req,
175                             TALLOC_CTX *mem_ctx,
176                             DATA_BLOB *out_input_buffer,
177                             DATA_BLOB *out_output_buffer);
178 NTSTATUS smb2cli_ioctl(struct smbXcli_conn *conn,
179                        uint32_t timeout_msec,
180                        struct smbXcli_session *session,
181                        uint32_t tcon_id,
182                        uint64_t in_fid_persistent,
183                        uint64_t in_fid_volatile,
184                        uint32_t in_ctl_code,
185                        uint32_t in_max_input_length,
186                        const DATA_BLOB *in_input_buffer,
187                        uint32_t in_max_output_length,
188                        const DATA_BLOB *in_output_buffer,
189                        uint32_t in_flags,
190                        TALLOC_CTX *mem_ctx,
191                        DATA_BLOB *out_input_buffer,
192                        DATA_BLOB *out_output_buffer);
193
194 struct tevent_req *smb2cli_query_info_send(TALLOC_CTX *mem_ctx,
195                                            struct tevent_context *ev,
196                                            struct smbXcli_conn *conn,
197                                            uint32_t timeout_msec,
198                                            struct smbXcli_session *session,
199                                            uint32_t tcon_id,
200                                            uint8_t in_info_type,
201                                            uint8_t in_file_info_class,
202                                            uint32_t in_max_output_length,
203                                            const DATA_BLOB *in_input_buffer,
204                                            uint32_t in_additional_info,
205                                            uint32_t in_flags,
206                                            uint64_t in_fid_persistent,
207                                            uint64_t in_fid_volatile);
208 NTSTATUS smb2cli_query_info_recv(struct tevent_req *req,
209                                  TALLOC_CTX *mem_ctx,
210                                  DATA_BLOB *out_output_buffer);
211 NTSTATUS smb2cli_query_info(struct smbXcli_conn *conn,
212                             uint32_t timeout_msec,
213                             struct smbXcli_session *session,
214                             uint32_t tcon_id,
215                             uint8_t in_info_type,
216                             uint8_t in_file_info_class,
217                             uint32_t in_max_output_length,
218                             const DATA_BLOB *in_input_buffer,
219                             uint32_t in_additional_info,
220                             uint32_t in_flags,
221                             uint64_t in_fid_persistent,
222                             uint64_t in_fid_volatile,
223                             TALLOC_CTX *mem_ctx,
224                             DATA_BLOB *out_output_buffer);
225
226 struct tevent_req *smb2cli_set_info_send(TALLOC_CTX *mem_ctx,
227                                          struct tevent_context *ev,
228                                          struct smbXcli_conn *conn,
229                                          uint32_t timeout_msec,
230                                          struct smbXcli_session *session,
231                                          uint32_t tcon_id,
232                                          uint8_t in_info_type,
233                                          uint8_t in_file_info_class,
234                                          const DATA_BLOB *in_input_buffer,
235                                          uint32_t in_additional_info,
236                                          uint64_t in_fid_persistent,
237                                          uint64_t in_fid_volatile);
238 NTSTATUS smb2cli_set_info_recv(struct tevent_req *req);
239 NTSTATUS smb2cli_set_info(struct smbXcli_conn *conn,
240                             uint32_t timeout_msec,
241                             struct smbXcli_session *session,
242                             uint32_t tcon_id,
243                             uint8_t in_info_type,
244                             uint8_t in_file_info_class,
245                             const DATA_BLOB *in_input_buffer,
246                             uint32_t in_additional_info,
247                             uint64_t in_fid_persistent,
248                             uint64_t in_fid_volatile);
249
250 #endif /* __SMB2CLI_H__ */