s4:lib/tevent: rename structs
[ira/wip.git] / source4 / libcli / smb2 / smb2_calls.h
1 /* 
2    Unix SMB/CIFS implementation.
3
4    SMB2 client calls 
5
6    Copyright (C) Andrew Tridgell 2005
7    
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 3 of the License, or
11    (at your option) any later version.
12    
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17    
18    You should have received a copy of the GNU General Public License
19    along with this program.  If not, see <http://www.gnu.org/licenses/>.
20 */
21
22 #include "libcli/raw/interfaces.h"
23
24 struct smb2_negprot {
25         struct {
26                 uint16_t dialect_count;    /* size of dialects array */
27                 uint16_t security_mode;    /* 0==signing disabled   
28                                               1==signing enabled */
29                 uint16_t reserved;
30                 uint32_t capabilities;
31                 struct GUID client_guid;
32                 NTTIME   start_time;
33                 uint16_t *dialects;
34         } in;
35         struct {
36                 /* static body buffer 64 (0x40) bytes */
37                 /* uint16_t buffer_code;  0x41 = 0x40 + 1 */
38                 uint16_t security_mode; /* SMB2_NEGOTIATE_SIGNING_* */
39                 uint16_t dialect_revision;
40                 uint16_t reserved;
41                 struct GUID server_guid;
42                 uint32_t capabilities;
43                 uint32_t max_transact_size;
44                 uint32_t max_read_size;
45                 uint32_t max_write_size;
46                 NTTIME   system_time;
47                 NTTIME   server_start_time;
48                 /* uint16_t secblob_ofs */
49                 /* uint16_t secblob_size */
50                 uint32_t reserved2;
51                 DATA_BLOB secblob;
52         } out;
53 };
54
55 /* getinfo classes */
56 #define SMB2_GETINFO_FILE               0x01
57 #define SMB2_GETINFO_FS                 0x02
58 #define SMB2_GETINFO_SECURITY           0x03
59 #define SMB2_GETINFO_QUOTA              0x04
60
61 #define SMB2_GETINFO_ADD_OWNER_SECURITY 0x01
62 #define SMB2_GETINFO_ADD_GROUP_SECURITY 0x02
63 #define SMB2_GETINFO_ADD_DACL_SECURITY  0x04
64 #define SMB2_GETINFO_ADD_SACL_SECURITY  0x08
65 #define SMB2_GETINFO_ADD_LABEL_SECURITY 0x10
66
67 /* NOTE! the getinfo fs and file levels exactly match up with the
68    'passthru' SMB levels, which are levels >= 1000. The SMB2 client
69    lib uses the names from the libcli/raw/ library */
70
71 struct smb2_getinfo {
72         struct {
73                 /* static body buffer 40 (0x28) bytes */
74                 /* uint16_t buffer_code;  0x29 = 0x28 + 1 */
75                 uint8_t info_type;
76                 uint8_t info_class;
77                 uint32_t output_buffer_length;
78                 /* uint32_t input_buffer_offset; */
79                 uint32_t reserved;
80                 uint32_t input_buffer_length;
81                 uint32_t additional_information; /* SMB2_GETINFO_ADD_* */
82                 uint32_t getinfo_flags; /* level specific */
83                 union smb_handle file;
84                 DATA_BLOB blob;
85         } in;
86
87         struct {
88                 /* static body buffer 8 (0x08) bytes */
89                 /* uint16_t buffer_code; 0x09 = 0x08 + 1 */
90                 /* uint16_t blob_ofs; */
91                 /* uint16_t blob_size; */
92
93                 /* dynamic body */
94                 DATA_BLOB blob;
95         } out;
96 };
97
98 struct smb2_setinfo {
99         struct {
100                 uint16_t level;
101                 uint32_t flags;
102                 union smb_handle file;
103                 DATA_BLOB blob;
104         } in;
105 };
106
107 struct cli_credentials;
108 struct tevent_context;
109 struct resolve_context;
110 struct gensec_settings;
111 #include "libcli/smb2/smb2_proto.h"